@microsoft/webui 0.0.24 → 0.0.26

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.
Files changed (54) hide show
  1. package/README.md +74 -30
  2. package/bin/webui +0 -0
  3. package/dist/index.d.ts +115 -42
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +62 -42
  6. package/dist/index.js.map +1 -1
  7. package/dist/install.js.map +1 -1
  8. package/dist/platform.js.map +1 -1
  9. package/dist/projection/adapters/esbuild.d.ts.map +1 -1
  10. package/dist/projection/adapters/esbuild.js +33 -8
  11. package/dist/projection/adapters/esbuild.js.map +1 -1
  12. package/dist/projection/compiler.d.ts.map +1 -1
  13. package/dist/projection/compiler.js +51 -86
  14. package/dist/projection/compiler.js.map +1 -1
  15. package/dist/projection/concurrency.d.ts +8 -0
  16. package/dist/projection/concurrency.d.ts.map +1 -0
  17. package/dist/projection/concurrency.js +44 -0
  18. package/dist/projection/concurrency.js.map +1 -0
  19. package/dist/projection/diagnostics.d.ts.map +1 -1
  20. package/dist/projection/diagnostics.js.map +1 -1
  21. package/dist/projection/fixtures/conformance.d.ts +1 -1
  22. package/dist/projection/fixtures/conformance.js +1 -1
  23. package/dist/projection/fixtures/conformance.js.map +1 -1
  24. package/dist/projection/index.d.ts +1 -1
  25. package/dist/projection/loader.d.ts.map +1 -1
  26. package/dist/projection/loader.js +13 -1
  27. package/dist/projection/loader.js.map +1 -1
  28. package/dist/projection/typescript-api.d.ts +17 -0
  29. package/dist/projection/typescript-api.d.ts.map +1 -0
  30. package/dist/projection/typescript-api.js +185 -0
  31. package/dist/projection/typescript-api.js.map +1 -0
  32. package/dist/projection/typescript-version.d.ts +4 -0
  33. package/dist/projection/typescript-version.d.ts.map +1 -0
  34. package/dist/projection/typescript-version.js +76 -0
  35. package/dist/projection/typescript-version.js.map +1 -0
  36. package/package.json +10 -9
  37. package/wasm/all/README.md +37 -1
  38. package/wasm/all/package.json +1 -1
  39. package/wasm/all/webui_wasm_all.d.ts +34 -38
  40. package/wasm/all/webui_wasm_all.js +78 -97
  41. package/wasm/all/webui_wasm_all_bg.wasm +0 -0
  42. package/wasm/all/webui_wasm_all_bg.wasm.d.ts +4 -7
  43. package/wasm/handler/README.md +37 -1
  44. package/wasm/handler/package.json +1 -1
  45. package/wasm/handler/webui_wasm_handler.d.ts +29 -36
  46. package/wasm/handler/webui_wasm_handler.js +68 -93
  47. package/wasm/handler/webui_wasm_handler_bg.wasm +0 -0
  48. package/wasm/handler/webui_wasm_handler_bg.wasm.d.ts +3 -6
  49. package/wasm/parser/README.md +37 -1
  50. package/wasm/parser/package.json +1 -1
  51. package/wasm/parser/webui_wasm_parser.d.ts +5 -2
  52. package/wasm/parser/webui_wasm_parser.js +10 -4
  53. package/wasm/parser/webui_wasm_parser_bg.wasm +0 -0
  54. package/wasm/parser/webui_wasm_parser_bg.wasm.d.ts +1 -1
package/README.md CHANGED
@@ -41,7 +41,8 @@ const result = build({
41
41
  appDir: "./src", // Path to the template directory
42
42
  entry: "index.html", // Entry file (default: "index.html")
43
43
  css: "link", // CSS strategy: "link", "style", or "module"
44
- dom: "shadow", // DOM strategy: "shadow" or "light"
44
+ dom: "light", // Optional: global Light + authored Shadow islands
45
+ cssBundle: true, // Merge component stylesheets into shared chunks
45
46
  plugin: "webui", // Parser plugin name
46
47
  components: [], // Additional component sources
47
48
  componentAssetRoots: ["settings-dialog"], // Static .webui.js asset roots
@@ -59,6 +60,13 @@ const result = build({
59
60
  // result.stats - { durationMs, fragmentCount, componentCount, cssFileCount, protocolSizeBytes, tokenCount }
60
61
  ```
61
62
 
63
+ Unwrapped components default to generated open Shadow roots. Set `dom: "light"`
64
+ to render unwrapped components as global Light DOM. A sole bare `<template>` is
65
+ also an explicit Light wrapper and is unwrapped; a sole
66
+ `<template shadowrootmode="open">` remains Shadow in either mode. Light CSS uses
67
+ ordinary selectors; `:host`, `:host-context`, and `::slotted` fail with
68
+ `unsupported-light-css`.
69
+
62
70
  Static component assets use a root/chunk graph. Entry-reachable dependencies
63
71
  remain external, dependencies used by one root stay inline, and dependencies
64
72
  with an identical multi-root consumer set are emitted once as dynamic chunks.
@@ -105,13 +113,16 @@ const result = build({
105
113
  esbuild runs once and emits both browser chunks and
106
114
  `webui-projection.json`; WebUI then embeds the exact initial/navigation
107
115
  surfaces into `protocol.bin`. The adapter uses esbuild's resolved graph and
108
- emitted output membership, so code splitting, dynamic imports, output hashes,
109
- and external bundles remain application-owned.
116
+ emitted output membership. Source inputs and outputs receive exact hashes;
117
+ opaque inputs rely on their emitted output proof. Code splitting, dynamic
118
+ imports, output hashes, and external bundles remain application-owned.
110
119
 
111
120
  Other bundler adapters can use the exported `AdapterContext`,
112
121
  `compileProjection()`, and conformance fixtures without importing esbuild. The
113
122
  package currently ships and supports `esbuildProjection()` as its official
114
- adapter.
123
+ adapter. Custom adapters provide a normalized JavaScript/TypeScript source
124
+ graph and exact emitted output bytes. Non-source bundler inputs stay outside
125
+ the semantic graph, so projection does not decode or hash their input bodies.
115
126
 
116
127
  With no manifest, WebUI performs no JavaScript analysis and preserves full
117
128
  state. Once any manifest is supplied, coverage is strict: every scripted
@@ -148,6 +159,26 @@ response.end(protocol.render({ title: "Hello" }));
148
159
  Call `.toString("utf8")` explicitly when JavaScript string operations are
149
160
  required.
150
161
 
162
+ ### `protocol.prepareState(state)` / `protocol.renderPrepared(state, options?)`
163
+
164
+ Use an immutable prepared state only when the same snapshot will be rendered
165
+ repeatedly, such as a cached page shell or fan-out response:
166
+
167
+ ```js
168
+ const state = protocol.prepareState({ title: "Cached" });
169
+ response.end(protocol.renderPrepared(state));
170
+ ```
171
+
172
+ Preparation performs object serialization and native JSON parsing once.
173
+ `renderPrepared()` reuses the parsed native tree and returns bytes identical to
174
+ `render()` for the same state and options. The opaque handle is process-local,
175
+ cannot be serialized, and does not observe later mutations to the source object.
176
+
177
+ A prepared state retains its native tree until the handle is garbage-collected.
178
+ This trades resident native memory for avoiding repeated stringify/parse work.
179
+ Prepare a new snapshot whenever request state changes, and continue to use
180
+ `render()` for ordinary per-request state.
181
+
151
182
  ### `protocol.renderStream(state, onChunk, options?): void`
152
183
 
153
184
  Renders with streaming output. Internal handler writes are coalesced around a
@@ -165,23 +196,34 @@ protocol.renderStream(state, (chunk) => {
165
196
 
166
197
  ### `protocol.streamResponse(options?): StreamingSession`
167
198
 
168
- Opens a progressive streaming session for an entry that declares `<boundary>`
169
- directives. Unlike `renderStream`, the session **returns** each chunk, so your
170
- server keeps the socket, the write order, and the backpressure contract.
199
+ Opens a runtime-discovered progressive session. Unlike `renderStream`, each
200
+ session call returns bytes so your server keeps the socket and backpressure.
171
201
 
172
202
  ```js
173
- import { once } from 'node:events';
174
-
175
- const session = protocol.streamResponse({ entry: 'index.html', requestPath: '/' });
176
- const status = session.boundary('job-status'); // resolve names once
203
+ const session = protocol.streamResponse({
204
+ entry: 'index.html',
205
+ requestPath: '/',
206
+ });
177
207
 
178
208
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
179
- await write(res, session.writeShell(baseState));
180
- await write(res, session.writeBoundary(status, statusState, 'updatable'));
181
-
182
- // Patches an already-hydrated island on this same response.
183
- await write(res, session.update(status, { jobState: 'succeeded' }));
184
- res.end(session.finish({}));
209
+ let step = session.start(initialState);
210
+ await write(res, step.bytes);
211
+
212
+ while (!step.done) {
213
+ const boundary = step.boundary;
214
+ if (boundary) {
215
+ const state = await loadBoundaryState(
216
+ boundary.owner,
217
+ boundary.name,
218
+ boundary.key,
219
+ );
220
+ step = session.resume(boundary.instanceId, state, 'final');
221
+ } else {
222
+ step = session.advance();
223
+ }
224
+ await write(res, step.bytes);
225
+ }
226
+ res.end();
185
227
 
186
228
  async function write(res, chunk) {
187
229
  if (res.write(chunk)) return;
@@ -204,17 +246,19 @@ async function write(res, chunk) {
204
246
 
205
247
  | Member | Returns | Description |
206
248
  |--------|---------|-------------|
207
- | `boundary(name)` | `number` | Integer handle for an authored boundary name |
208
- | `boundaryCount` | `number` | Boundaries declared by the entry |
209
- | `finished` | `boolean` | Whether `finish()` has been called |
210
- | `writeShell(state)` | `Buffer` | Document prefix through the first semantic flush |
211
- | `writeBoundary(id, state, mode?)` | `Buffer` | One boundary's markup and checkpoint (`'final'` \| `'updatable'`) |
212
- | `update(id, state)` | `Buffer` | Projected state patch to an updatable boundary |
213
- | `finish(state)` | `Buffer` | Tail checkpoint, terminal record, and document suffix |
214
-
215
- Ordering is enforced. A rejected call throws and leaves the session usable, so
216
- invalid state does not cost you the response. Sessions are independent — hold
217
- one per in-flight request.
249
+ | `start(state)` | `StreamStep` | Bytes through the first occurrence or terminal |
250
+ | `resume(instanceId, state, mode?)` | `StreamStep` | Only the pending occurrence's bytes through its checkpoint (`'final'` \| `'updatable'`) |
251
+ | `advance()` | `StreamStep` | Following parent bytes through the next occurrence or terminal |
252
+ | `update(instanceId, patch)` | `Buffer` | Projected state for a committed updatable occurrence |
253
+
254
+ `StreamStep` contains `bytes`, `done`, and optional
255
+ `{ instanceId, declarationId, owner, name, key }`. A descriptor requires
256
+ `resume`; no descriptor with `done: false` requires `advance`; `done: true`
257
+ means complete. `resume` is boundary-only, while `advance` carries following
258
+ parent or tail bytes. No sibling boundary workaround is required. The completed
259
+ step already contains tail and terminal bytes. Updates are valid between
260
+ `resume` and `advance`, insert no markup, and never rerun hydration. Sessions
261
+ are single-driver and independent; hold one per request.
218
262
 
219
263
  ### `inspect(protocol: Buffer): string`
220
264
 
@@ -231,11 +275,11 @@ Produces a JSON partial response for client-side navigation, including state, te
231
275
 
232
276
  ### `protocol.renderComponentTemplates(componentTags, inventoryHex): string`
233
277
 
234
- Renders templates and styles for on-demand component loading (used by `Router.ensureLoaded()`). Returns a JSON string with `templateStyles`, `templates`, `templateFunctions`, and `inventory`. Uses the same inventory bitfield as partial navigation to avoid sending duplicates.
278
+ Renders templates and styles for on-demand component loading (used by `Router.ensureLoaded()`). Returns a JSON string with `componentStyles`, `templates`, `templateFunctions`, and `inventory`. Uses the same inventory bitfield as partial navigation to avoid sending duplicates.
235
279
 
236
280
  ```js
237
281
  const json = protocol.renderComponentTemplates(["settings-dialog"], inventoryHex);
238
- const { templates, templateFunctions, templateStyles, inventory } = JSON.parse(json);
282
+ const { templates, templateFunctions, componentStyles, inventory } = JSON.parse(json);
239
283
  ```
240
284
 
241
285
  ## CLI
package/bin/webui CHANGED
Binary file
package/dist/index.d.ts CHANGED
@@ -6,8 +6,19 @@ export interface BuildOptions {
6
6
  entry?: string;
7
7
  /** CSS delivery strategy: "link" (default), "style", or "module". */
8
8
  css?: "link" | "style" | "module";
9
- /** DOM strategy for component rendering: "shadow" (default) or "light". */
9
+ /** Fallback DOM strategy for unwrapped components: "shadow" (default) or "light". */
10
10
  dom?: "shadow" | "light";
11
+ /**
12
+ * Merge component stylesheets into shared bundled chunks.
13
+ *
14
+ * Composes with `css`: bundling decides how stylesheets are grouped, `css`
15
+ * decides how they reach the page. Stylesheets reached from more than one CSS
16
+ * tree are split into their own chunk so they are downloaded and cached once.
17
+ *
18
+ * Rejected with `css: "module"`, which already inlines every stylesheet as a
19
+ * data URI.
20
+ */
21
+ cssBundle?: boolean;
11
22
  /** Parser plugin name. */
12
23
  plugin?: string;
13
24
  /** Additional component sources (npm packages or local paths). */
@@ -80,6 +91,48 @@ export interface ProtocolOptions {
80
91
  * so use it only for boundaries you actually intend to patch.
81
92
  */
82
93
  export type BoundaryMode = "final" | "updatable";
94
+ export type ComponentStyleResource = ({
95
+ kind: "link";
96
+ href: string;
97
+ } | {
98
+ kind: "style";
99
+ css: string;
100
+ } | {
101
+ kind: "module";
102
+ specifier: string;
103
+ css: string;
104
+ }) & {
105
+ /** Component resource IDs whose rules this bundled resource covers. */
106
+ members?: string[];
107
+ };
108
+ export interface ComponentStyles {
109
+ version: 1;
110
+ strategy: "link" | "style" | "module";
111
+ resources: Record<string, ComponentStyleResource>;
112
+ closures: Record<string, string[]>;
113
+ }
114
+ /** A runtime-discovered boundary occurrence waiting to be resumed. */
115
+ export interface BoundaryDescriptor {
116
+ /** Gapless response-local occurrence ID passed to `resume()` and `update()`. */
117
+ instanceId: number;
118
+ /** Stable build-local ID for the authored boundary declaration. */
119
+ declarationId: number;
120
+ /** Entry or component template that owns the declaration. */
121
+ owner: string;
122
+ /** Free-form authored boundary name. */
123
+ name: string;
124
+ /** Evaluated boundary key, preserving its authored JSON type. */
125
+ key?: string | number;
126
+ }
127
+ /** Bytes and continuation state produced by a streaming session step. */
128
+ export interface StreamStep {
129
+ /** Complete bytes produced by this semantic step. */
130
+ bytes: Buffer;
131
+ /** Whether the document tail and terminal record have been emitted. */
132
+ done: boolean;
133
+ /** Runtime occurrence waiting for `resume()`, present only at a boundary. */
134
+ boundary?: BoundaryDescriptor;
135
+ }
83
136
  /** Per-response settings for a host-driven streaming session. */
84
137
  export interface StreamOptions {
85
138
  /** Fragment ID to start rendering from (default: "index.html"). */
@@ -95,8 +148,8 @@ export interface StreamOptions {
95
148
  }
96
149
  /** Response from `renderComponentTemplates()` for on-demand component loading. */
97
150
  export interface ComponentTemplatesResponse {
98
- /** Module CSS `<style>` strings for the requested components. */
99
- templateStyles: string[];
151
+ /** Versioned component style definitions and ordered closures. */
152
+ componentStyles: ComponentStyles;
100
153
  /** JSON-safe component template metadata keyed by tag name. */
101
154
  templates: Record<string, unknown>;
102
155
  /** JavaScript condition closure arrays keyed by tag name. */
@@ -112,6 +165,8 @@ export interface PartialResponse {
112
165
  templates: Record<string, unknown>;
113
166
  /** JavaScript condition closure arrays keyed by tag name. */
114
167
  templateFunctions?: Record<string, string>;
168
+ /** Versioned component style definitions and ordered closures. */
169
+ componentStyles: ComponentStyles;
115
170
  /** Updated hex bitmask of loaded component templates. */
116
171
  inventory: string;
117
172
  /** The request path. */
@@ -124,14 +179,33 @@ export interface PartialResponse {
124
179
  exact?: boolean;
125
180
  }>;
126
181
  }
182
+ declare const preparedStateBrand: unique symbol;
183
+ /**
184
+ * An immutable, process-local native state snapshot.
185
+ *
186
+ * The snapshot retains its parsed native state until this handle is garbage
187
+ * collected. Create snapshots only for state that will be rendered repeatedly.
188
+ */
189
+ export interface PreparedState {
190
+ readonly [preparedStateBrand]: never;
191
+ }
127
192
  interface NativeStreamingSession {
128
- readonly boundaryCount: number;
129
- readonly finished: boolean;
130
- boundary(name: string): number;
131
- writeShell(stateJson: string): Buffer;
132
- writeBoundary(boundary: number, stateJson: string, mode?: BoundaryMode): Buffer;
133
- update(boundary: number, stateJson: string): Buffer;
134
- finish(stateJson: string): Buffer;
193
+ start(stateJson: string): NativeStreamStep;
194
+ resume(instanceId: number, stateJson: string, mode?: BoundaryMode): NativeStreamStep;
195
+ advance(): NativeStreamStep;
196
+ update(instanceId: number, patchJson: string): Buffer;
197
+ }
198
+ interface NativeBoundaryDescriptor {
199
+ instanceId: number;
200
+ declarationId: number;
201
+ owner: string;
202
+ name: string;
203
+ key?: string | number | null;
204
+ }
205
+ interface NativeStreamStep {
206
+ bytes: Buffer;
207
+ done: boolean;
208
+ boundary?: NativeBoundaryDescriptor | null;
135
209
  }
136
210
  /** Build a WebUI application from an app directory. */
137
211
  export declare function build(options: BuildOptions): BuildResult;
@@ -146,6 +220,15 @@ export declare class Protocol {
146
220
  constructor(protocolData: Buffer, options?: ProtocolOptions);
147
221
  /** Render a complete HTML response as a UTF-8 Node.js buffer. */
148
222
  render(state: object | string, options?: RenderOptions): Buffer;
223
+ /**
224
+ * Parse state once for repeated rendering.
225
+ *
226
+ * The returned snapshot is immutable and does not observe later mutations to
227
+ * the source object. Prepare a new snapshot when request state changes.
228
+ */
229
+ prepareState(state: object | string): PreparedState;
230
+ /** Render a prepared state snapshot without serializing or parsing it again. */
231
+ renderPrepared(state: PreparedState, options?: RenderOptions): Buffer;
149
232
  /** Stream a complete HTML response in chunks around 16 KiB. */
150
233
  renderStream(state: object | string, onChunk: (html: string) => void, options?: RenderOptions): void;
151
234
  /** Produce a complete JSON partial-navigation response. */
@@ -170,49 +253,39 @@ export declare class Protocol {
170
253
  * caller decides when they reach the socket and can await `drain` between
171
254
  * chunks. The session holds no transport and never blocks on one.
172
255
  *
173
- * Ordering is enforced: the shell first, then each boundary exactly once in
174
- * declaration order, `update()` only after its boundary commits as
175
- * `updatable`, and `finish()` last. A violation throws before any byte is
176
- * produced.
256
+ * `start()` discovers the first runtime occurrence. Each `resume()` commits
257
+ * only the pending occurrence. An optional `update()` may follow for an
258
+ * `updatable` occurrence, then `advance()` discovers the next occurrence or
259
+ * returns the document tail and terminal record.
177
260
  *
178
261
  * ```js
179
262
  * const session = protocol.streamResponse({ requestPath: req.url });
180
- * const weather = session.boundary("weather-shell");
263
+ * let step = session.start(shellState);
264
+ * res.write(step.bytes);
181
265
  *
182
- * res.write(session.writeShell(shellState));
183
- * res.write(session.writeBoundary(weather, weatherShell, "updatable"));
184
- *
185
- * const forecast = await forecastReady;
186
- * if (!res.write(session.update(weather, forecast))) {
187
- * await once(res, "drain");
266
+ * while (!step.done) {
267
+ * const boundary = step.boundary;
268
+ * const state = await loadBoundary(boundary.owner, boundary.name, boundary.key);
269
+ * step = session.resume(boundary.instanceId, state);
270
+ * res.write(step.bytes);
271
+ * step = session.advance();
272
+ * res.write(step.bytes);
188
273
  * }
189
- *
190
- * res.end(session.finish({}));
274
+ * res.end();
191
275
  * ```
192
276
  */
193
277
  export declare class StreamingSession {
194
278
  #private;
195
279
  /** @internal Created by {@link Protocol.streamResponse}. */
196
280
  constructor(native: NativeStreamingSession);
197
- /** Number of compile-time boundaries declared by this entry. */
198
- get boundaryCount(): number;
199
- /** Whether the terminal record has been written. */
200
- get finished(): boolean;
201
- /**
202
- * Resolve an authored boundary name to a stable integer handle.
203
- *
204
- * Resolve once outside the write loop; reusing the handle costs nothing.
205
- * An unknown name throws with the valid names and a suggestion.
206
- */
207
- boundary(name: string): number;
208
- /** Render everything before the first boundary. */
209
- writeShell(state: object | string): Buffer;
210
- /** Render and commit the next boundary in declaration order. */
211
- writeBoundary(boundary: number, state: object | string, mode?: BoundaryMode): Buffer;
212
- /** Push a projected state patch to a committed `updatable` boundary. */
213
- update(boundary: number, state: object | string): Buffer;
214
- /** Render the document tail and emit the terminal record. */
215
- finish(state?: object | string): Buffer;
281
+ /** Render until the first runtime boundary occurrence or terminal. */
282
+ start(state: object | string): StreamStep;
283
+ /** Commit the pending occurrence through its checkpoint, then stop. */
284
+ resume(instanceId: number, state: object | string, mode?: BoundaryMode): StreamStep;
285
+ /** Write following parent bytes and discover the next boundary or terminal. */
286
+ advance(): StreamStep;
287
+ /** Push a projected state patch to a committed `updatable` occurrence. */
288
+ update(instanceId: number, patch: object | string): Buffer;
216
289
  }
217
290
  /** Inspect protocol bytes and return JSON representation. */
218
291
  export declare function inspect(protocolData: Buffer): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -74,6 +74,19 @@ export class Protocol {
74
74
  const stateJson = typeof state === "string" ? state : JSON.stringify(state);
75
75
  return this.#native.render(stateJson, options?.entry ?? "index.html", options?.requestPath ?? "/");
76
76
  }
77
+ /**
78
+ * Parse state once for repeated rendering.
79
+ *
80
+ * The returned snapshot is immutable and does not observe later mutations to
81
+ * the source object. Prepare a new snapshot when request state changes.
82
+ */
83
+ prepareState(state) {
84
+ return this.#native.prepareState(typeof state === "string" ? state : JSON.stringify(state));
85
+ }
86
+ /** Render a prepared state snapshot without serializing or parsing it again. */
87
+ renderPrepared(state, options) {
88
+ return this.#native.renderPrepared(state, options?.entry ?? "index.html", options?.requestPath ?? "/");
89
+ }
77
90
  /** Stream a complete HTML response in chunks around 16 KiB. */
78
91
  renderStream(state, onChunk, options) {
79
92
  const stateJson = typeof state === "string" ? state : JSON.stringify(state);
@@ -114,24 +127,25 @@ export class Protocol {
114
127
  * caller decides when they reach the socket and can await `drain` between
115
128
  * chunks. The session holds no transport and never blocks on one.
116
129
  *
117
- * Ordering is enforced: the shell first, then each boundary exactly once in
118
- * declaration order, `update()` only after its boundary commits as
119
- * `updatable`, and `finish()` last. A violation throws before any byte is
120
- * produced.
130
+ * `start()` discovers the first runtime occurrence. Each `resume()` commits
131
+ * only the pending occurrence. An optional `update()` may follow for an
132
+ * `updatable` occurrence, then `advance()` discovers the next occurrence or
133
+ * returns the document tail and terminal record.
121
134
  *
122
135
  * ```js
123
136
  * const session = protocol.streamResponse({ requestPath: req.url });
124
- * const weather = session.boundary("weather-shell");
125
- *
126
- * res.write(session.writeShell(shellState));
127
- * res.write(session.writeBoundary(weather, weatherShell, "updatable"));
137
+ * let step = session.start(shellState);
138
+ * res.write(step.bytes);
128
139
  *
129
- * const forecast = await forecastReady;
130
- * if (!res.write(session.update(weather, forecast))) {
131
- * await once(res, "drain");
140
+ * while (!step.done) {
141
+ * const boundary = step.boundary;
142
+ * const state = await loadBoundary(boundary.owner, boundary.name, boundary.key);
143
+ * step = session.resume(boundary.instanceId, state);
144
+ * res.write(step.bytes);
145
+ * step = session.advance();
146
+ * res.write(step.bytes);
132
147
  * }
133
- *
134
- * res.end(session.finish({}));
148
+ * res.end();
135
149
  * ```
136
150
  */
137
151
  export class StreamingSession {
@@ -140,40 +154,46 @@ export class StreamingSession {
140
154
  constructor(native) {
141
155
  this.#native = native;
142
156
  }
143
- /** Number of compile-time boundaries declared by this entry. */
144
- get boundaryCount() {
145
- return this.#native.boundaryCount;
157
+ /** Render until the first runtime boundary occurrence or terminal. */
158
+ start(state) {
159
+ return toStreamStep(this.#native.start(toStateJson(state)));
146
160
  }
147
- /** Whether the terminal record has been written. */
148
- get finished() {
149
- return this.#native.finished;
161
+ /** Commit the pending occurrence through its checkpoint, then stop. */
162
+ resume(instanceId, state, mode = "final") {
163
+ return toStreamStep(this.#native.resume(instanceId, toStateJson(state), mode));
150
164
  }
151
- /**
152
- * Resolve an authored boundary name to a stable integer handle.
153
- *
154
- * Resolve once outside the write loop; reusing the handle costs nothing.
155
- * An unknown name throws with the valid names and a suggestion.
156
- */
157
- boundary(name) {
158
- return this.#native.boundary(name);
159
- }
160
- /** Render everything before the first boundary. */
161
- writeShell(state) {
162
- return this.#native.writeShell(toStateJson(state));
163
- }
164
- /** Render and commit the next boundary in declaration order. */
165
- writeBoundary(boundary, state, mode = "final") {
166
- return this.#native.writeBoundary(boundary, toStateJson(state), mode);
165
+ /** Write following parent bytes and discover the next boundary or terminal. */
166
+ advance() {
167
+ return toStreamStep(this.#native.advance());
167
168
  }
168
- /** Push a projected state patch to a committed `updatable` boundary. */
169
- update(boundary, state) {
170
- return this.#native.update(boundary, toStateJson(state));
171
- }
172
- /** Render the document tail and emit the terminal record. */
173
- finish(state = {}) {
174
- return this.#native.finish(toStateJson(state));
169
+ /** Push a projected state patch to a committed `updatable` occurrence. */
170
+ update(instanceId, patch) {
171
+ return this.#native.update(instanceId, toStateJson(patch));
175
172
  }
176
173
  }
174
+ function toStreamStep(step) {
175
+ const boundary = step.boundary;
176
+ if (!boundary) {
177
+ return { bytes: step.bytes, done: step.done };
178
+ }
179
+ return {
180
+ bytes: step.bytes,
181
+ done: step.done,
182
+ boundary: toBoundaryDescriptor(boundary),
183
+ };
184
+ }
185
+ function toBoundaryDescriptor(boundary) {
186
+ const descriptor = {
187
+ instanceId: boundary.instanceId,
188
+ declarationId: boundary.declarationId,
189
+ owner: boundary.owner,
190
+ name: boundary.name,
191
+ };
192
+ if (boundary.key !== undefined && boundary.key !== null) {
193
+ descriptor.key = boundary.key;
194
+ }
195
+ return descriptor;
196
+ }
177
197
  function toStateJson(state) {
178
198
  return typeof state === "string" ? state : JSON.stringify(state);
179
199
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAkM/C,IAAI,KAA8B,CAAC;AAEnC,SAAS,SAAS;IAChB,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sCAAsC,WAAW,EAAE,KAAK,gBAAgB,EAAE,GAAG;YAC3E,8FAA8F,CACjG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,2EAA2E;QAC3E,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAgB,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAA6B,EAAE,OAAO,EAAE,EAAiB,EAAE,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC7B,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,0CAA0C,SAAS,KAAK,gBAAgB,EAAE,EAAE,EAC5E,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,OAAO,aAAa,WAAW,EAAE,iDAAiD,CAAC;IACrF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,OAAO,GAAG,aAAa,8CAA8C,CAAC;IACxE,CAAC;AACH,CAAC;AAED,wEAAwE;AAExE,uDAAuD;AACvD,MAAM,UAAU,KAAK,CAAC,OAAqB;IACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,8DAA8D,gBAAgB,EAAE,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,yBAAyB,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAChE,OAAO,MAAM,CAAC,KAAK,CAAC;QAClB,GAAG,aAAa;QAChB,yBAAyB,EAAE,yBAAyB,EAAE,GAAG,CACvD,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAC/B,CAAC,CACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,OAAO,QAAQ;IACV,OAAO,CAAiB;IAEjC,YAAY,YAAoB,EAAE,OAAyB;QACzD,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,+DAA+D,gBAAgB,EAAE,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,KAAsB,EAAE,OAAuB;QACpD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,SAAS,EACT,OAAO,EAAE,KAAK,IAAI,YAAY,EAC9B,OAAO,EAAE,WAAW,IAAI,GAAG,CAC5B,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,YAAY,CACV,KAAsB,EACtB,OAA+B,EAC/B,OAAuB;QAEvB,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,SAAS,EACT,OAAO,EAAE,KAAK,IAAI,YAAY,EAC9B,OAAO,EAAE,WAAW,IAAI,GAAG,EAC3B,OAAO,CACR,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,aAAa,CACX,KAAsB,EACtB,OAAe,EACf,WAAmB,EACnB,YAAoB;QAEpB,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC;IAED,mEAAmE;IACnE,wBAAwB,CACtB,aAAuB,EACvB,YAAoB;QAEpB,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED,6CAA6C;IAC7C,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAuB;QACpC,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,OAAO,CAAC,cAAc,CACzB,OAAO,EAAE,KAAK,IAAI,YAAY,EAC9B,OAAO,EAAE,WAAW,IAAI,GAAG,EAC3B;YACE,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,UAAU,EAAE,OAAO,EAAE,UAAU;SAChC,CACF,CACF,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAyB;IAEzC,4DAA4D;IAC5D,YAAY,MAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gEAAgE;IAChE,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,oDAAoD;IACpD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,mDAAmD;IACnD,UAAU,CAAC,KAAsB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,gEAAgE;IAChE,aAAa,CACX,QAAgB,EAChB,KAAsB,EACtB,OAAqB,OAAO;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,QAAgB,EAAE,KAAsB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,QAAyB,EAAE;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;CACF;AAED,SAAS,WAAW,CAAC,KAAsB;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,OAAO,CAAC,YAAoB;IAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,gEAAgE,gBAAgB,EAAE,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,wEAAwE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,uEAAuE;AACvE,kDAAkD;AAClD,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAAC,MAAM,CAAC;IACP,2BAA2B;AAC7B,CAAC;AAED,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;AAC1B,IAAI,GAAuB,CAAC;AAC5B,IAAI,CAAC;IACH,GAAG,GAAG,WAAW,EAAE,CAAC;AACtB,CAAC;AAAC,MAAM,CAAC;IACP,OAAO,CAAC,IAAI,CACV,yCAAyC,GAAG,IAAI;QAC9C,uCAAuC;QACvC,+CAA+C,CAClD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,IAAI,CACV,qCAAqC,GAAI,sBAAsB;IAC7D,sEAAsE;IACtE,yDAAyD;IACzD,oEAAoE,CACvE,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAElE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,uEAAuE;AACvE,kDAAkD;AAClD,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAAC,MAAM,CAAC;IACP,2BAA2B;AAC7B,CAAC;AAED,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;AAC1B,IAAI,GAAuB,CAAC;AAC5B,IAAI,CAAC;IACH,GAAG,GAAG,WAAW,EAAE,CAAC;AACtB,CAAC;AAAC,MAAM,CAAC;IACP,OAAO,CAAC,IAAI,CACV,yCAAyC,GAAG,IAAI;QAC9C,uCAAuC;QACvC,+CAA+C,CAClD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,IAAI,CACV,qCAAqC,GAAI,sBAAsB;IAC7D,sEAAsE;IACtE,yDAAyD;IACzD,oEAAoE,CACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../../src/projection/adapters/esbuild.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAIV,MAAM,EAEP,MAAM,SAAS,CAAC;AAqBjB,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAYD,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAgCR"}
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../../src/projection/adapters/esbuild.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAIV,MAAM,EAEP,MAAM,SAAS,CAAC;AAsBjB,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAuBD,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAgCR"}