@oomfware/jsx 0.1.4 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime-CpxZaJu6.d.mts","names":[],"sources":["../src/lib/types.ts","../src/lib/intrinsic-elements.ts","../src/jsx-runtime.ts"],"sourcesContent":[],"mappings":"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ACI;QACN;SACC;aACI;SACJ;YACG;SACH;QACD;QACA;QACA;WACG;cACG;gBACE;YACJ;YACA;UACF;QACF;QACA;QACA;QACA;QACA;QACA;UACE;YACE;YACA;QACJ;UACE;OACH;YACK;SACH;WACE;SACF;SACA;YACG;WACD;YACC;QACJ;UACE;UACA;SACD;UACC;UACA;cACI;UACJ;WACC;SACF;aACI;cACC;YACF;QACJ;cACM;YACF;YACA;OACL;WACI;aACE;SACJ;cACK;OACP;QACC;QACA;UACE;OACH;UACG;YACE;UACF;YACE;aACC;YACD;WACD;YACC;UACF;YACE;WACD;SACF;aACI;SACJ;WACE;cACG;WACH;QACH;cACM;WACH;QACH;WACG;UACD;WACC;QACH;WACG;OACJ;QACC;SACC;WACE;SACF;aACI;SAGJ;aAEI;mBACM;sBACG;YACV;cACE;UACJ;UACA;aACG;aACA;mBACM;yBACM;iBACR;sBACK;uBACC;uBACA;oBACH;kBACF;aACL;aACA;aACA;aACA;aACA;oBACO;aACP;aACA;iBACI;kBACC;cACJ;kBACI;wBACM;iBACP;YACL;kBACM;YACN;mBACO;OACZ;WACI;UACD;oBACU;YACR;UACF;cACI;WACH;UACD;aACG;aACA;cACC;oBACM;UACV;SACD;UACC;YACE;YACA;UACF;cACI;WACH;SACF;UACC;;;;;;;ADvjDR;AAGA;AAWA;;AAAsF,iBEbtE,GFasE,CAAA,CAAA,EAAA,UAAA,MAAA,GEb5C,SFa4C,CAAA,GAAA,CAAA,CAAA,CAAA,IAAA,EEbtB,CFasB,EAAA,KAAA,EEbZ,CFaY,CAAA,EEbR,UFaQ,CEbG,CFaH,EEbM,CFaN,CAAA;AAE9E,iBETQ,QAAA,CFSR,KAAA,EAAA;EAAC,QAAA,CAAA,EEToC,OFSpC;AAWT,CAAA,CAAA,EEpByD,OFoB7C"}
1
+ {"version":3,"file":"jsx-runtime-CcUWZKzW.d.mts","names":[],"sources":["../src/lib/types.ts","../src/lib/intrinsic-elements.ts","../src/jsx-runtime.ts"],"sourcesContent":[],"mappings":"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ACJ;cACI;QACN;SACC;aACI;SACJ;YACG;SACH;QACD;QACA;QACA;WACG;cACG;gBACE;YACJ;YACA;UACF;QACF;QACA;QACA;QACA;QACA;QACA;UACE;YACE;YACA;QACJ;UACE;OACH;YACK;SACH;WACE;SACF;SACA;YACG;WACD;YACC;QACJ;UACE;UACA;SACD;UACC;UACA;cACI;UACJ;WACC;SACF;aACI;cACC;YACF;QACJ;cACM;YACF;YACA;OACL;WACI;aACE;SACJ;cACK;OACP;QACC;QACA;UACE;OACH;UACG;YACE;UACF;YACE;aACC;YACD;WACD;YACC;UACF;YACE;WACD;SACF;aACI;SACJ;WACE;cACG;WACH;QACH;cACM;WACH;QACH;WACG;UACD;WACC;QACH;WACG;OACJ;QACC;SACC;WACE;SACF;aACI;SAGJ;aAEI;mBACM;sBACG;YACV;cACE;UACJ;UACA;aACG;aACA;mBACM;yBACM;iBACR;sBACK;uBACC;uBACA;oBACH;kBACF;aACL;aACA;aACA;aACA;aACA;oBACO;aACP;aACA;iBACI;kBACC;cACJ;kBACI;wBACM;iBACP;YACL;kBACM;YACN;mBACO;OACZ;WACI;UACD;oBACU;YACR;UACF;cACI;WACH;UACD;aACG;aACA;cACC;oBACM;UACV;SACD;UACC;YACE;YACA;UACF;cACI;WACH;SACF;UACC;;;;;;;ADvjDR;AAGA;AAWA;;AAAsF,iBEbtE,GFasE,CAAA,CAAA,EAAA,UAAA,MAAA,GEb5C,SFa4C,CAAA,GAAA,CAAA,CAAA,CAAA,IAAA,EEbtB,CFasB,EAAA,KAAA,EEbZ,CFaY,CAAA,EEbR,UFaQ,CEbG,CFaH,EEbM,CFaN,CAAA;AAE9E,iBETQ,QAAA,CFSR,KAAA,EAAA;EAAC,QAAA,CAAA,EEToC,OFSpC;AAWT,CAAA,CAAA,EEpByD,OFoB7C"}
@@ -1,2 +1,2 @@
1
- import { n as jsx, r as JSX, t as Fragment } from "./jsx-runtime-CpxZaJu6.mjs";
1
+ import { i as JSX, n as jsx, t as Fragment } from "./jsx-runtime-CcUWZKzW.mjs";
2
2
  export { Fragment, JSX, jsx, jsx as jsxs };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oomfware/jsx",
4
- "version": "0.1.4",
4
+ "version": "0.1.5",
5
5
  "description": "server-side JSX renderer",
6
6
  "license": "0BSD",
7
7
  "repository": {
@@ -37,6 +37,9 @@
37
37
  "tsdown": "^0.18.1",
38
38
  "typescript": "^5.9.3"
39
39
  },
40
+ "dependencies": {
41
+ "@atcute/uint8array": "^1.0.6"
42
+ },
40
43
  "scripts": {
41
44
  "build": "tsdown",
42
45
  "dev": "tsdown --watch",
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export type { Component, FC, JSXElement, JSXNode } from './lib/types.js';
2
+ export type { HTMLAttributes, JSX, SVGAttributes } from './lib/intrinsic-elements.js';
2
3
 
3
4
  export { Fragment } from './jsx-runtime.js';
4
5
 
@@ -6,6 +7,12 @@ export { cloneElement, createElement, createElement as h } from './lib/create-el
6
7
 
7
8
  export { createContext, type Context } from './lib/context.js';
8
9
 
9
- export { Suspense, use, type SuspenseProps } from './lib/suspense.js';
10
+ export {
11
+ ErrorBoundary,
12
+ type ErrorBoundaryProps,
13
+ Suspense,
14
+ type SuspenseProps,
15
+ use,
16
+ } from './lib/suspense.js';
10
17
 
11
18
  export { render, renderToStream, renderToString, type RenderOptions } from './lib/render.js';
@@ -1,5 +1,6 @@
1
1
  import { Fragment, jsx } from '../jsx-runtime.ts';
2
2
 
3
+ import { provide } from './render-context.ts';
3
4
  import type { JSXElement, JSXNode } from './types.ts';
4
5
 
5
6
  /** context object returned by createContext() */
@@ -46,53 +47,3 @@ export function createContext<T>(defaultValue?: T): Context<T | undefined> {
46
47
 
47
48
  return context;
48
49
  }
49
-
50
- /** stack of context frames */
51
- type ContextFrame = Map<Context<unknown>, unknown>;
52
- const contextStack: ContextFrame[] = [];
53
-
54
- /** current frame being built (lazily initialized on first provide) */
55
- export let currentFrame: ContextFrame | null = null;
56
-
57
- /**
58
- * provides a value for the context during the current component's render
59
- * @param context context key from createContext()
60
- * @param value value to provide
61
- */
62
- export function provide<T>(context: Context<T>, value: T): void {
63
- if (!currentFrame) {
64
- // lazily create frame, copying from previous
65
- const prev = contextStack[contextStack.length - 1];
66
- currentFrame = prev ? new Map(prev) : new Map();
67
- }
68
- currentFrame.set(context as Context<unknown>, value);
69
- }
70
-
71
- /**
72
- * returns current provided value, or the default value
73
- * @param context context key from createContext()
74
- */
75
- export function inject<T>(context: Context<T>): T {
76
- // check current frame first, then stack
77
- const frame = currentFrame ?? contextStack[contextStack.length - 1];
78
- if (frame?.has(context as Context<unknown>)) {
79
- return frame.get(context as Context<unknown>) as T;
80
- }
81
- return context.defaultValue;
82
- }
83
-
84
- /** push current frame to stack (called before rendering children) */
85
- export function pushContextFrame(): void {
86
- if (currentFrame) {
87
- contextStack.push(currentFrame);
88
- currentFrame = null;
89
- }
90
- }
91
-
92
- /** pop context frame (called after rendering children) */
93
- export function popContextFrame(hadFrame: boolean): void {
94
- if (hadFrame) {
95
- contextStack.pop();
96
- }
97
- currentFrame = null;
98
- }
@@ -449,7 +449,7 @@ type AriaRole =
449
449
  | 'treeitem'
450
450
  | (string & {});
451
451
 
452
- interface HTMLAttributes extends AriaAttributes, DOMAttributes {
452
+ export interface HTMLAttributes extends AriaAttributes, DOMAttributes {
453
453
  // Standard HTML Attributes
454
454
  accesskey?: string | undefined;
455
455
  autocapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined | (string & {});
@@ -1094,7 +1094,7 @@ interface VideoHTMLAttributes extends MediaHTMLAttributes {
1094
1094
  // - "number | string"
1095
1095
  // - "string"
1096
1096
  // - union of string literals
1097
- interface SVGAttributes extends AriaAttributes, DOMAttributes {
1097
+ export interface SVGAttributes extends AriaAttributes, DOMAttributes {
1098
1098
  // Attributes which also defined in HTMLAttributes
1099
1099
  class?: string | undefined;
1100
1100
  color?: string | undefined;
@@ -0,0 +1,115 @@
1
+ import type { Context } from './context.ts';
2
+ import type { JSXNode } from './types.ts';
3
+
4
+ /** stack of context frames */
5
+ type ContextFrame = Map<Context<unknown>, unknown>;
6
+
7
+ // #region Segment types
8
+
9
+ export type Segment =
10
+ | {
11
+ readonly kind: 'static';
12
+ readonly html: string;
13
+ }
14
+ | {
15
+ readonly kind: 'composite';
16
+ readonly parts: readonly Segment[];
17
+ }
18
+ | {
19
+ readonly kind: 'suspense';
20
+ readonly id: string;
21
+ readonly fallback: Segment;
22
+ pending?: Promise<void>;
23
+ content: Segment | null;
24
+ }
25
+ | {
26
+ readonly kind: 'error-boundary';
27
+ readonly children: Segment;
28
+ readonly fallbackFn: (error: unknown) => JSXNode;
29
+ readonly renderContext: RenderContext;
30
+ readonly path: string;
31
+ fallbackSegment: Segment | null;
32
+ };
33
+
34
+ // #endregion
35
+
36
+ /** render context passed through the render tree */
37
+ export interface RenderContext {
38
+ contextStack: ContextFrame[];
39
+ currentFrame: ContextFrame | null;
40
+ headElements: string[];
41
+ idsByPath: Map<string, number>;
42
+ insideHead: boolean;
43
+ insideSvg: boolean;
44
+ onError: (error: unknown) => void;
45
+ pendingSuspense: Array<{ id: string; promise: Promise<Segment> }>;
46
+ }
47
+
48
+ /** active render context (set by renderer) */
49
+ let activeRenderContext: RenderContext | null = null;
50
+
51
+ /**
52
+ * sets the active render context
53
+ * @param ctx render context to activate, or null to clear
54
+ * @returns the previous render context
55
+ */
56
+ export function setActiveRenderContext(ctx: RenderContext | null): RenderContext | null {
57
+ const prev = activeRenderContext;
58
+ activeRenderContext = ctx;
59
+ return prev;
60
+ }
61
+
62
+ /**
63
+ * provides a value for the context during the current component's render
64
+ * @param context context key from createContext()
65
+ * @param value value to provide
66
+ */
67
+ export function provide<T>(context: Context<T>, value: T): void {
68
+ const ctx = activeRenderContext!;
69
+ if (!ctx.currentFrame) {
70
+ // lazily create frame, copying from previous
71
+ const prev = ctx.contextStack[ctx.contextStack.length - 1];
72
+ ctx.currentFrame = prev ? new Map(prev) : new Map();
73
+ }
74
+ ctx.currentFrame.set(context as Context<unknown>, value);
75
+ }
76
+
77
+ /**
78
+ * returns current provided value, or the default value
79
+ * @param context context key from createContext()
80
+ */
81
+ export function inject<T>(context: Context<T>): T {
82
+ const ctx = activeRenderContext!;
83
+ // check current frame first, then stack
84
+ const frame = ctx.currentFrame ?? ctx.contextStack[ctx.contextStack.length - 1];
85
+ if (frame?.has(context as Context<unknown>)) {
86
+ return frame.get(context as Context<unknown>) as T;
87
+ }
88
+ return context.defaultValue;
89
+ }
90
+
91
+ /**
92
+ * pushes current frame to stack (called before rendering children)
93
+ * @returns whether a frame was pushed (needed for popContextFrame)
94
+ */
95
+ export function pushContextFrame(): boolean {
96
+ const ctx = activeRenderContext!;
97
+ if (ctx.currentFrame) {
98
+ ctx.contextStack.push(ctx.currentFrame);
99
+ ctx.currentFrame = null;
100
+ return true;
101
+ }
102
+ return false;
103
+ }
104
+
105
+ /**
106
+ * pops context frame (called after rendering children)
107
+ * @param hadFrame whether pushContextFrame returned true
108
+ */
109
+ export function popContextFrame(hadFrame: boolean): void {
110
+ const ctx = activeRenderContext!;
111
+ if (hadFrame) {
112
+ ctx.contextStack.pop();
113
+ }
114
+ ctx.currentFrame = null;
115
+ }
package/src/lib/render.ts CHANGED
@@ -10,13 +10,22 @@
10
10
  * collected and injected into <head> during finalization
11
11
  */
12
12
 
13
+ import { decodeUtf8From, encodeUtf8 } from '@atcute/uint8array';
14
+
13
15
  import { Fragment } from '../jsx-runtime.ts';
14
16
 
15
- import { currentFrame, popContextFrame, pushContextFrame } from './context.ts';
16
- import { Suspense, type SuspenseProps } from './suspense.ts';
17
+ import {
18
+ popContextFrame,
19
+ pushContextFrame,
20
+ type RenderContext,
21
+ type Segment,
22
+ setActiveRenderContext,
23
+ } from './render-context.ts';
24
+ import { ErrorBoundary, type ErrorBoundaryProps, Suspense, type SuspenseProps } from './suspense.ts';
17
25
  import type { Component, JSXElement, JSXNode } from './types.ts';
18
26
 
19
27
  const HEAD_ELEMENTS = new Set(['title', 'meta', 'link', 'style']);
28
+ const MAX_SUSPENSE_ATTEMPTS = 20;
20
29
  const SELF_CLOSING_TAGS = new Set([
21
30
  'area',
22
31
  'base',
@@ -36,24 +45,7 @@ const SELF_CLOSING_TAGS = new Set([
36
45
  /** props that shouldn't be rendered as HTML attributes */
37
46
  const FRAMEWORK_PROPS = new Set(['children', 'dangerouslySetInnerHTML']);
38
47
 
39
- // #region Segment types
40
-
41
- type Segment =
42
- | {
43
- readonly kind: 'static';
44
- readonly html: string;
45
- }
46
- | {
47
- readonly kind: 'composite';
48
- readonly parts: readonly Segment[];
49
- }
50
- | {
51
- readonly kind: 'suspense';
52
- readonly id: string;
53
- readonly fallback: Segment;
54
- pending?: Promise<void>;
55
- content: Segment | null;
56
- };
48
+ // #region Segment helpers
57
49
 
58
50
  function staticSeg(html: string): Segment {
59
51
  return { kind: 'static', html };
@@ -71,15 +63,6 @@ export interface RenderOptions {
71
63
  onError?: (error: unknown) => void;
72
64
  }
73
65
 
74
- interface RenderContext {
75
- headElements: string[];
76
- idsByPath: Map<string, number>;
77
- insideHead: boolean;
78
- insideSvg: boolean;
79
- onError: (error: unknown) => void;
80
- pendingSuspense: Array<{ id: string; promise: Promise<Segment> }>;
81
- }
82
-
83
66
  /**
84
67
  * renders JSX to a readable stream
85
68
  * @param node JSX node to render
@@ -87,9 +70,10 @@ interface RenderContext {
87
70
  * @returns readable stream of UTF-8 encoded HTML
88
71
  */
89
72
  export function renderToStream(node: JSXNode, options?: RenderOptions): ReadableStream<Uint8Array> {
90
- const encoder = new TextEncoder();
91
73
  const onError = options?.onError ?? ((error) => console.error(error));
92
74
  const context: RenderContext = {
75
+ contextStack: [],
76
+ currentFrame: null,
93
77
  headElements: [],
94
78
  idsByPath: new Map(),
95
79
  insideHead: false,
@@ -97,18 +81,22 @@ export function renderToStream(node: JSXNode, options?: RenderOptions): Readable
97
81
  onError,
98
82
  pendingSuspense: [],
99
83
  };
84
+
100
85
  return new ReadableStream({
101
86
  async start(controller) {
102
87
  try {
103
88
  const root = buildSegment(node, context, '');
104
89
  await resolveBlocking(root);
90
+
105
91
  const html = serializeSegment(root);
106
92
  const finalHtml = finalizeHtml(html, context);
107
- controller.enqueue(encoder.encode(finalHtml));
93
+ controller.enqueue(encodeUtf8(finalHtml));
94
+
108
95
  // stream pending suspense boundaries as they resolve
109
96
  if (context.pendingSuspense.length > 0) {
110
- await streamPendingSuspense(context, controller, encoder);
97
+ await streamPendingSuspense(context, controller);
111
98
  }
99
+
112
100
  controller.close();
113
101
  } catch (error) {
114
102
  onError(error);
@@ -127,13 +115,17 @@ export function renderToStream(node: JSXNode, options?: RenderOptions): Readable
127
115
  export async function renderToString(node: JSXNode, options?: RenderOptions): Promise<string> {
128
116
  const stream = renderToStream(node, options);
129
117
  const reader = stream.getReader();
130
- const decoder = new TextDecoder();
118
+
131
119
  let html = '';
132
120
  while (true) {
133
121
  const { done, value } = await reader.read();
134
- if (done) break;
135
- html += decoder.decode(value);
122
+ if (done) {
123
+ break;
124
+ }
125
+
126
+ html += decodeUtf8From(value);
136
127
  }
128
+
137
129
  return html;
138
130
  }
139
131
 
@@ -165,7 +157,16 @@ function isHeadElement(tag: string): boolean {
165
157
  return HEAD_ELEMENTS.has(tag);
166
158
  }
167
159
 
168
- function buildSegment(node: JSXNode, context: RenderContext, path: string): Segment {
160
+ function buildSegment(node: JSXNode, ctx: RenderContext, path: string): Segment {
161
+ const prev = setActiveRenderContext(ctx);
162
+ try {
163
+ return buildSegmentInner(node, ctx, path);
164
+ } finally {
165
+ setActiveRenderContext(prev);
166
+ }
167
+ }
168
+
169
+ function buildSegmentInner(node: JSXNode, context: RenderContext, path: string): Segment {
169
170
  // primitives
170
171
  if (typeof node === 'string' || typeof node === 'number' || typeof node === 'bigint') {
171
172
  return staticSeg(escapeHtml(node, false));
@@ -177,7 +178,7 @@ function buildSegment(node: JSXNode, context: RenderContext, path: string): Segm
177
178
  if (typeof node === 'object' && Symbol.iterator in node) {
178
179
  const parts: Segment[] = [];
179
180
  for (const child of node) {
180
- parts.push(buildSegment(child, context, path));
181
+ parts.push(buildSegmentInner(child, context, path));
181
182
  }
182
183
  return compositeSeg(parts);
183
184
  }
@@ -187,7 +188,7 @@ function buildSegment(node: JSXNode, context: RenderContext, path: string): Segm
187
188
  // Fragment
188
189
  if (type === Fragment) {
189
190
  const children = (props as { children?: JSXNode }).children;
190
- return children != null ? buildSegment(children, context, path) : EMPTY_SEGMENT;
191
+ return children != null ? buildSegmentInner(children, context, path) : EMPTY_SEGMENT;
191
192
  }
192
193
  // intrinsic elements (HTML tags)
193
194
  if (typeof type === 'string') {
@@ -212,6 +213,10 @@ function buildSegment(node: JSXNode, context: RenderContext, path: string): Segm
212
213
  if (type === Suspense) {
213
214
  return buildSuspenseSegment(props as unknown as SuspenseProps, context, path);
214
215
  }
216
+ // ErrorBoundary
217
+ if (type === ErrorBoundary) {
218
+ return buildErrorBoundarySegment(props as unknown as ErrorBoundaryProps, context, path);
219
+ }
215
220
  return buildComponentSegment(type, props as Record<string, unknown>, context, path);
216
221
  }
217
222
  }
@@ -313,10 +318,9 @@ function buildComponentSegment(
313
318
  // call component
314
319
  const result = type(props);
315
320
  // if component called provide(), push frame before rendering children
316
- const hadFrame = currentFrame !== null;
317
- pushContextFrame();
321
+ const hadFrame = pushContextFrame();
318
322
  try {
319
- return buildSegment(result, ctx, path);
323
+ return buildSegmentInner(result, ctx, path);
320
324
  } finally {
321
325
  popContextFrame(hadFrame);
322
326
  }
@@ -348,18 +352,40 @@ function buildSuspenseSegment(props: SuspenseProps, ctx: RenderContext, path: st
348
352
  content: null,
349
353
  };
350
354
 
355
+ // snapshot context stack for async re-render (parent frames will be popped
356
+ // by the time the promise resolves)
357
+ const asyncCtx: RenderContext = {
358
+ ...ctx,
359
+ contextStack: [...ctx.contextStack],
360
+ currentFrame: null,
361
+ };
362
+
363
+ // re-render function that handles subsequent promise throws
364
+ const rerender = (attempt: number): Promise<void> | void => {
365
+ if (attempt >= MAX_SUSPENSE_ATTEMPTS) {
366
+ throw new Error(
367
+ `suspense boundary exceeded maximum retry attempts (${MAX_SUSPENSE_ATTEMPTS})`,
368
+ );
369
+ }
370
+ try {
371
+ seg.content = buildSegment(props.children, asyncCtx, suspenseId);
372
+ } catch (err) {
373
+ if (err instanceof Promise) {
374
+ // component threw another promise - wait and retry
375
+ return err.then(() => rerender(attempt + 1));
376
+ }
377
+ throw err;
378
+ }
379
+ };
380
+
351
381
  // set up promise to re-render children when resolved
352
- const pending = thrown.then(() => {
353
- // re-render children after promise resolves
354
- seg.content = buildSegment(props.children, ctx, suspenseId);
355
- });
382
+ const pending = thrown.then(() => rerender(1));
356
383
  seg.pending = pending;
357
384
 
358
385
  // track for streaming
359
- ctx.pendingSuspense.push({
360
- id: suspenseId,
361
- promise: pending.then(() => seg.content!),
362
- });
386
+ const tracked = pending.then(() => seg.content!);
387
+ tracked.catch(() => {}); // prevent unhandled rejection if resolveBlocking catches first
388
+ ctx.pendingSuspense.push({ id: suspenseId, promise: tracked });
363
389
 
364
390
  return seg;
365
391
  }
@@ -368,11 +394,42 @@ function buildSuspenseSegment(props: SuspenseProps, ctx: RenderContext, path: st
368
394
  }
369
395
  }
370
396
 
397
+ function buildErrorBoundarySegment(
398
+ props: ErrorBoundaryProps,
399
+ ctx: RenderContext,
400
+ path: string,
401
+ ): Segment {
402
+ // snapshot context for potential async fallback rendering
403
+ const asyncCtx: RenderContext = {
404
+ ...ctx,
405
+ contextStack: [...ctx.contextStack],
406
+ currentFrame: null,
407
+ };
408
+
409
+ try {
410
+ const children = buildSegment(props.children, ctx, path);
411
+ return {
412
+ kind: 'error-boundary',
413
+ children,
414
+ fallbackFn: props.fallback,
415
+ renderContext: asyncCtx,
416
+ path,
417
+ fallbackSegment: null,
418
+ };
419
+ } catch (error) {
420
+ if (error instanceof Promise) {
421
+ throw error; // let Suspense handle it
422
+ }
423
+ // sync error - render fallback immediately
424
+ return buildSegment(props.fallback(error), ctx, path);
425
+ }
426
+ }
427
+
371
428
  // #endregion
372
429
 
373
430
  // #region Serialization
374
431
 
375
- /** resolve all blocking suspense boundaries */
432
+ /** resolve all blocking suspense boundaries and error boundaries */
376
433
  async function resolveBlocking(segment: Segment): Promise<void> {
377
434
  if (segment.kind === 'suspense') {
378
435
  if (segment.pending) {
@@ -384,6 +441,18 @@ async function resolveBlocking(segment: Segment): Promise<void> {
384
441
  }
385
442
  return;
386
443
  }
444
+ if (segment.kind === 'error-boundary') {
445
+ try {
446
+ await resolveBlocking(segment.children);
447
+ } catch (error) {
448
+ segment.fallbackSegment = buildSegment(
449
+ segment.fallbackFn(error),
450
+ segment.renderContext,
451
+ segment.path,
452
+ );
453
+ }
454
+ return;
455
+ }
387
456
  if (segment.kind === 'composite') {
388
457
  for (const part of segment.parts) {
389
458
  await resolveBlocking(part);
@@ -399,6 +468,9 @@ function serializeSegment(seg: Segment): string {
399
468
  if (seg.kind === 'composite') {
400
469
  return seg.parts.map(serializeSegment).join('');
401
470
  }
471
+ if (seg.kind === 'error-boundary') {
472
+ return serializeSegment(seg.fallbackSegment ?? seg.children);
473
+ }
402
474
  // suspense - always render fallback; resolved content streams in template
403
475
  return `<!--$s:${seg.id}-->${serializeSegment(seg.fallback)}<!--/$s:${seg.id}-->`;
404
476
  }
@@ -415,27 +487,34 @@ const SUSPENSE_RUNTIME = `<script>${SR}=(t,i,s,e)=>{i="$s:"+t.dataset.suspense;s
415
487
  async function streamPendingSuspense(
416
488
  context: RenderContext,
417
489
  controller: ReadableStreamDefaultController<Uint8Array>,
418
- encoder: TextEncoder,
419
490
  ): Promise<void> {
420
- let runtimeInjected = false;
421
- const processed = new Set<string>();
491
+ controller.enqueue(encodeUtf8(SUSPENSE_RUNTIME));
492
+
422
493
  while (true) {
423
- const batch = context.pendingSuspense.filter(({ id }) => !processed.has(id));
424
- if (batch.length === 0) break;
494
+ const batch = context.pendingSuspense;
495
+ if (batch.length === 0) {
496
+ break;
497
+ }
498
+ context.pendingSuspense = [];
499
+
425
500
  await Promise.all(
426
501
  batch.map(async ({ id, promise }) => {
427
- processed.add(id);
502
+ let resolvedSegment: Segment;
503
+ try {
504
+ resolvedSegment = await promise;
505
+ } catch {
506
+ // promise rejected - error was caught by an error boundary
507
+ return;
508
+ }
509
+
428
510
  try {
429
- const resolvedSegment = await promise;
430
511
  await resolveBlocking(resolvedSegment);
512
+
431
513
  const html = serializeSegment(resolvedSegment);
432
- // inject runtime once before first resolution
433
- const runtime = runtimeInjected ? '' : SUSPENSE_RUNTIME;
434
- runtimeInjected = true;
435
- // stream template + call to swap function
514
+
436
515
  controller.enqueue(
437
- encoder.encode(
438
- `${runtime}<template data-suspense="${id}">${html}</template>` +
516
+ encodeUtf8(
517
+ `<template data-suspense="${id}">${html}</template>` +
439
518
  `<script>${SR}(document.currentScript.previousElementSibling)</script>`,
440
519
  ),
441
520
  );