@reckona/mreact-server 0.0.1

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/index.js ADDED
@@ -0,0 +1,618 @@
1
+ import { Fragment, Suspense as ReactCompatSuspense, createElement, isValidElement, } from "@reckona/mreact-compat";
2
+ import { isDangerousHtmlAttribute, isDangerousHtmlOptIn, isUnsafeMetaRefreshContent, isUnsafeUrlAttribute, } from "./url-safety.js";
3
+ import { escapeHtmlText as escapeHtml } from "@reckona/mreact-shared/html-escape";
4
+ import { createStreamingBufferSink } from "./buffer-sink.js";
5
+ export { Fragment } from "@reckona/mreact-compat";
6
+ export { CLIENT_REFERENCE_TYPE, SERVER_REFERENCE_TYPE, createClientReference, createFlightClientManifest, createServerReference, createServerActionHandler, fromReactFlightRows, getReactFlightProtocolCoverage, isClientReference, isServerReference, mergeReactFlightRows, renderFlightPreloadLinks, renderFlightResponseScript, renderToFlightResponse, stringifyFlightResponse, toReactFlightRows, } from "./flight.js";
7
+ export function Suspense(props) {
8
+ const config = {};
9
+ if (props.fallback !== undefined) {
10
+ config.fallback = props.fallback;
11
+ }
12
+ return createElement(ReactCompatSuspense, config, props.children);
13
+ }
14
+ export function createStringSink(options = {}) {
15
+ // Default to "concat" — V8 rope flattening yields 2-6x throughput over
16
+ // `Array#join("")` across all measured fixture sizes (see
17
+ // docs/benchmarks/2026-05-12-server-sink-strategy.md). "array-join" stays
18
+ // available as opt-in for scenarios that need lower peak memory.
19
+ const requestedStrategy = options.strategy ?? "concat";
20
+ const arrayJoinThreshold = options.arrayJoinThreshold ?? 256;
21
+ const deferredTasks = [];
22
+ let strategy = requestedStrategy === "auto"
23
+ ? "concat"
24
+ : requestedStrategy;
25
+ let writeCount = 0;
26
+ let text = "";
27
+ const chunks = [];
28
+ const switchConcatToArrayJoin = () => {
29
+ if (strategy !== "concat") {
30
+ return;
31
+ }
32
+ if (text !== "") {
33
+ chunks.push(text);
34
+ text = "";
35
+ }
36
+ strategy = "array-join";
37
+ };
38
+ return {
39
+ append(chunk) {
40
+ writeCount += 1;
41
+ if (requestedStrategy === "auto" && strategy === "concat" && writeCount > arrayJoinThreshold) {
42
+ switchConcatToArrayJoin();
43
+ }
44
+ if (strategy === "concat") {
45
+ text += chunk;
46
+ return;
47
+ }
48
+ chunks.push(chunk);
49
+ },
50
+ bufferStrategy() {
51
+ return strategy;
52
+ },
53
+ defer(task) {
54
+ deferredTasks.push(task);
55
+ },
56
+ async drain() {
57
+ await Promise.all(deferredTasks);
58
+ },
59
+ toString() {
60
+ if (strategy === "concat") {
61
+ return text;
62
+ }
63
+ return chunks.join("");
64
+ },
65
+ };
66
+ }
67
+ export async function renderAsyncBoundary(sink, value, render, options = {}) {
68
+ try {
69
+ const resolved = await value;
70
+ await render(sink, resolved);
71
+ if (options.hydrationAwaitId !== undefined) {
72
+ appendAwaitHydrationData(sink, options.hydrationAwaitId, resolved);
73
+ }
74
+ }
75
+ catch (error) {
76
+ if (options.catch === undefined) {
77
+ throw error;
78
+ }
79
+ await options.catch(sink, error);
80
+ }
81
+ }
82
+ // Threshold for `<Await>` payload size warnings (UTF-8 byte length of
83
+ // JSON-serialized representation). 100KB warn / 1MB error follow the
84
+ // "you're sending a lot of data" hint pattern used by other frameworks.
85
+ const AWAIT_PAYLOAD_WARN_BYTES = 100 * 1024;
86
+ const AWAIT_PAYLOAD_ERROR_BYTES = 1024 * 1024;
87
+ function isProductionMode() {
88
+ // `process` may not exist in cross-runtime environments (Cloudflare/Deno).
89
+ // The server tsconfig does not include `@types/node`, so we look it up
90
+ // through `globalThis` with a minimal local typing.
91
+ const globalProcess = globalThis
92
+ .process;
93
+ try {
94
+ return globalProcess?.env?.["NODE_ENV"] === "production";
95
+ }
96
+ catch {
97
+ return false;
98
+ }
99
+ }
100
+ function appendAwaitHydrationData(sink, awaitId, resolved) {
101
+ const serialized = serializeAwaitHydrationValue(resolved, awaitId);
102
+ if (serialized === undefined) {
103
+ return;
104
+ }
105
+ const idLiteral = JSON.stringify(awaitId).replaceAll("<", "\\u003c");
106
+ sink.append(`<script data-mreact-await=${idLiteral}>(self.__mreactAwaitData||(self.__mreactAwaitData={}))[${idLiteral}]={value:${serialized}}</script>`);
107
+ }
108
+ // Emits a single console.warn in dev when `resolved` contains shapes the
109
+ // wire format will silently drop or coerce (Date / Map / Set / RegExp /
110
+ // class instance / function / Symbol / nested non-POJO). See
111
+ // docs/mreact_router.md `## <Await> value の制約`.
112
+ function warnIfNonSerializableAwaitValue(value, awaitId) {
113
+ if (isProductionMode()) {
114
+ return;
115
+ }
116
+ if (!containsNonSerializableSurface(value)) {
117
+ return;
118
+ }
119
+ console.warn(`[mreact] <Await value={...}> for "${awaitId}" includes non-serializable ` +
120
+ `data (Date / Map / Set / RegExp / class instance / function / Symbol). ` +
121
+ `The wire format uses JSON.stringify, so the client-side renderer may ` +
122
+ `receive a different shape after the JSON round-trip. Convert to plain ` +
123
+ `JSON-serializable data (or restore via a reviver in the renderer) — ` +
124
+ `see docs/mreact_router.md "<Await> value の制約".`);
125
+ }
126
+ function containsNonSerializableSurface(value) {
127
+ if (value === null || value === undefined || typeof value !== "object") {
128
+ return false;
129
+ }
130
+ if (value instanceof Date || value instanceof Map || value instanceof Set || value instanceof RegExp) {
131
+ return true;
132
+ }
133
+ if (Array.isArray(value)) {
134
+ return value.some((entry) => containsNonSerializableSurface(entry));
135
+ }
136
+ const proto = Object.getPrototypeOf(value);
137
+ if (proto !== Object.prototype && proto !== null) {
138
+ return true;
139
+ }
140
+ for (const entry of Object.values(value)) {
141
+ if (containsNonSerializableSurface(entry)) {
142
+ return true;
143
+ }
144
+ }
145
+ return false;
146
+ }
147
+ function reportAwaitPayloadSize(json, awaitId) {
148
+ const byteLength = typeof TextEncoder !== "undefined" ? new TextEncoder().encode(json).length : json.length;
149
+ if (byteLength > AWAIT_PAYLOAD_ERROR_BYTES) {
150
+ console.error(`[mreact] <Await> payload for "${awaitId}" is ${(byteLength / 1024 / 1024).toFixed(2)}MB, ` +
151
+ `exceeding the 1MB error threshold. Large payloads inflate HTML response size and ` +
152
+ `client memory pressure. Stream the data via loader or split into smaller boundaries.`);
153
+ return;
154
+ }
155
+ if (byteLength > AWAIT_PAYLOAD_WARN_BYTES) {
156
+ console.warn(`[mreact] large await payload for "${awaitId}": ${(byteLength / 1024).toFixed(1)}KB ` +
157
+ `(over the 100KB warning threshold). Consider streaming the data via loader or ` +
158
+ `splitting into smaller boundaries.`);
159
+ }
160
+ }
161
+ function serializeAwaitHydrationValue(value, awaitId) {
162
+ try {
163
+ const json = JSON.stringify(value);
164
+ if (json === undefined) {
165
+ return undefined;
166
+ }
167
+ warnIfNonSerializableAwaitValue(value, awaitId);
168
+ reportAwaitPayloadSize(json, awaitId);
169
+ // Defuse `</script>` and runaway control characters so the data can be
170
+ // safely embedded inside a `<script>` element.
171
+ return json
172
+ .replaceAll("<", "\\u003c")
173
+ .replaceAll("
", "\\u2028")
174
+ .replaceAll("
", "\\u2029");
175
+ }
176
+ catch {
177
+ return undefined;
178
+ }
179
+ }
180
+ export function renderOutOfOrderBoundary(sink, id, value, render, options = {}) {
181
+ const placeholderSink = createStringSink();
182
+ void options.placeholder?.(placeholderSink);
183
+ const hydrationStart = options.hydration === true ? `<!--mreact-h:start:${encodeURIComponent(id)}-->` : "";
184
+ const hydrationEnd = options.hydration === true ? `<!--mreact-h:end:${encodeURIComponent(id)}-->` : "";
185
+ sink.append(`${hydrationStart}<template data-mreact-oob-placeholder="${escapeAttribute(id)}">${placeholderSink.toString()}</template>${hydrationEnd}`);
186
+ const task = renderOutOfOrderFragment(sink, id, value, render, options);
187
+ if (sink.defer === undefined) {
188
+ void task;
189
+ return;
190
+ }
191
+ sink.defer(task);
192
+ }
193
+ async function renderOutOfOrderFragment(sink, id, value, render, options) {
194
+ const fragmentSink = createStringSink();
195
+ let resolvedValue;
196
+ let hasResolvedValue = false;
197
+ await renderAsyncBoundary(fragmentSink, value, async (childSink, resolved) => {
198
+ resolvedValue = resolved;
199
+ hasResolvedValue = true;
200
+ await render(childSink, resolved);
201
+ }, options.catch === undefined ? {} : { catch: options.catch });
202
+ sink.append(`<template data-mreact-oob-fragment="${escapeAttribute(id)}">${fragmentSink.toString()}</template>`);
203
+ if (hasResolvedValue && options.hydrationAwaitId !== undefined) {
204
+ appendAwaitHydrationData(sink, options.hydrationAwaitId, resolvedValue);
205
+ }
206
+ }
207
+ export function renderOutOfOrderReorderScript(sink, options = {}) {
208
+ const nonceAttribute = options.nonce === undefined ? "" : ` nonce="${escapeAttribute(options.nonce)}"`;
209
+ if (options.src !== undefined) {
210
+ sink.append(`<script data-mreact-oob-reorder${nonceAttribute} src="${escapeAttribute(options.src)}"></script>`);
211
+ return;
212
+ }
213
+ sink.append(`<script data-mreact-oob-reorder${nonceAttribute}>${outOfOrderReorderScript}</script>`);
214
+ }
215
+ export function renderReactSuspenseBoundary(sink, render) {
216
+ sink.append("<!--$-->");
217
+ const result = render(sink);
218
+ if (isPromiseLike(result)) {
219
+ return result.then(() => {
220
+ sink.append("<!--/$-->");
221
+ });
222
+ }
223
+ sink.append("<!--/$-->");
224
+ }
225
+ export function renderReactSuspenseOutOfOrderBoundary(sink, boundaryId, segmentId, value, render, options = {}) {
226
+ const fallbackSink = createStringSink();
227
+ void options.fallback?.(fallbackSink);
228
+ sink.append(`<!--$?--><template id="${escapeAttribute(boundaryId)}"></template>${fallbackSink.toString()}<!--/$-->`);
229
+ const task = renderReactSuspenseSegment(sink, boundaryId, segmentId, value, render, options);
230
+ if (sink.defer === undefined) {
231
+ void task;
232
+ return;
233
+ }
234
+ sink.defer(task);
235
+ }
236
+ export function renderReactSuspenseClientRenderBoundary(sink, fallback, options = {}) {
237
+ sink.append(`<!--$!--><template${renderReactSuspenseErrorAttributes(options)}></template>`);
238
+ const result = fallback(sink);
239
+ if (isPromiseLike(result)) {
240
+ return result.then(() => {
241
+ sink.append("<!--/$-->");
242
+ });
243
+ }
244
+ sink.append("<!--/$-->");
245
+ }
246
+ async function renderReactSuspenseSegment(sink, boundaryId, segmentId, value, render, options) {
247
+ const segmentSink = createStringSink();
248
+ await renderAsyncBoundary(segmentSink, value, render, options.catch === undefined ? {} : { catch: options.catch });
249
+ sink.append(`<div hidden id="${escapeAttribute(segmentId)}">${segmentSink.toString()}</div>${renderReactSuspenseRevealScript(boundaryId, segmentId, options)}`);
250
+ }
251
+ function renderReactSuspenseErrorAttributes(options) {
252
+ const message = options.message === undefined ? "" : ` data-msg="${escapeAttribute(options.message)}"`;
253
+ const stack = options.stack === undefined ? "" : ` data-stck="${escapeAttribute(options.stack)}"`;
254
+ return `${message}${stack}`;
255
+ }
256
+ function renderReactSuspenseRevealScript(boundaryId, segmentId, options = {}) {
257
+ if (options.src !== undefined) {
258
+ return `<script data-mreact-react-suspense-reveal${renderNonceAttribute(options.nonce)} src="${escapeAttribute(options.src)}" data-boundary-id="${escapeAttribute(boundaryId)}" data-segment-id="${escapeAttribute(segmentId)}"></script>`;
259
+ }
260
+ return `<script${renderNonceAttribute(options.nonce)}>${reactSuspenseRevealScriptBody};$RC(${JSON.stringify(boundaryId)},${JSON.stringify(segmentId)})</script>`;
261
+ }
262
+ export function renderHydrationBoundary(sink, id, render) {
263
+ const markerId = encodeURIComponent(id);
264
+ sink.append(`<!--mreact-h:start:${markerId}-->`);
265
+ const result = render(sink);
266
+ if (isPromiseLike(result)) {
267
+ return result.then(() => {
268
+ sink.append(`<!--mreact-h:end:${markerId}-->`);
269
+ });
270
+ }
271
+ sink.append(`<!--mreact-h:end:${markerId}-->`);
272
+ }
273
+ export function serializeSsrState(value) {
274
+ return JSON.stringify(value)
275
+ .replaceAll("<", "\\u003c")
276
+ .replaceAll("\u2028", "\\u2028")
277
+ .replaceAll("\u2029", "\\u2029");
278
+ }
279
+ export function renderSsrState(sink, value, options = {}) {
280
+ sink.append(`<script type="application/json" data-mreact-ssr-state${renderNonceAttribute(options.nonce)}>${serializeSsrState(value)}</script>`);
281
+ }
282
+ export function createEventHydrationManifest(events) {
283
+ return {
284
+ version: 1,
285
+ events: events.map((event) => ({ ...event })),
286
+ };
287
+ }
288
+ export function renderEventHydrationManifest(sink, manifest, options = {}) {
289
+ sink.append(`<script type="application/json" data-mreact-event-manifest${renderNonceAttribute(options.nonce)}>${serializeSsrState(manifest)}</script>`);
290
+ }
291
+ export function renderScriptAsset(sink, options) {
292
+ const integrityAttribute = options.integrity === undefined ? "" : ` integrity="${escapeAttribute(options.integrity)}"`;
293
+ const crossOrigin = options.integrity === undefined ? options.crossOrigin : (options.crossOrigin ?? "anonymous");
294
+ const crossOriginAttribute = crossOrigin === undefined ? "" : ` crossorigin="${escapeAttribute(crossOrigin)}"`;
295
+ sink.append(`<script src="${escapeAttribute(options.src)}"${renderNonceAttribute(options.nonce)}${integrityAttribute}${crossOriginAttribute}></script>`);
296
+ }
297
+ export function html(node, options = {}) {
298
+ const headers = new Headers(options.headers);
299
+ const responseOptions = { headers };
300
+ if (!headers.has("content-type")) {
301
+ headers.set("content-type", "text/html; charset=utf-8");
302
+ }
303
+ if (options.status !== undefined) {
304
+ responseOptions.status = options.status;
305
+ }
306
+ if (options.statusText !== undefined) {
307
+ responseOptions.statusText = options.statusText;
308
+ }
309
+ return new Response(renderToReadableStream((sink) => {
310
+ const state = { suspenseId: 0 };
311
+ return appendReactNode(sink, node, state);
312
+ }), responseOptions);
313
+ }
314
+ export async function renderToString(render) {
315
+ const sink = createStringSink();
316
+ await render(sink);
317
+ await sink.drain();
318
+ return sink.toString();
319
+ }
320
+ function appendReactNode(sink, node, state) {
321
+ if (isPromiseLikeNode(node)) {
322
+ return node.then((resolved) => appendReactNode(sink, resolved, state));
323
+ }
324
+ if (node === null || node === undefined || typeof node === "boolean") {
325
+ return;
326
+ }
327
+ if (typeof node === "string" || typeof node === "number") {
328
+ sink.append(escapeHtml(node));
329
+ return;
330
+ }
331
+ if (Array.isArray(node)) {
332
+ return appendReactNodeList(sink, node, state);
333
+ }
334
+ if (!isValidElement(node)) {
335
+ return;
336
+ }
337
+ return appendReactElement(sink, node, state);
338
+ }
339
+ function appendReactNodeList(sink, nodes, state) {
340
+ let chain;
341
+ for (const node of nodes) {
342
+ if (chain !== undefined) {
343
+ chain = chain.then(() => appendReactNode(sink, node, state));
344
+ continue;
345
+ }
346
+ const result = appendReactNode(sink, node, state);
347
+ if (isPromiseLike(result)) {
348
+ chain = result;
349
+ }
350
+ }
351
+ return chain;
352
+ }
353
+ function appendReactElement(sink, element, state) {
354
+ if (typeof element.type === "string") {
355
+ return appendHostElement(sink, element, state);
356
+ }
357
+ if (element.type === Fragment) {
358
+ return appendReactNode(sink, element.props.children, state);
359
+ }
360
+ if (element.type === ReactCompatSuspense) {
361
+ return appendSuspenseElement(sink, element, state);
362
+ }
363
+ if (isClassComponentType(element.type)) {
364
+ const instance = new element.type(element.props);
365
+ return appendReactNode(sink, instance.render(), state);
366
+ }
367
+ if (typeof element.type === "function") {
368
+ return appendReactNode(sink, element.type(element.props), state);
369
+ }
370
+ }
371
+ function isClassComponentType(value) {
372
+ return typeof value === "function" && value.prototype?.render !== undefined;
373
+ }
374
+ function appendHostElement(sink, element, state) {
375
+ const tagName = element.type;
376
+ const innerHtml = element.props
377
+ .dangerouslySetInnerHTML;
378
+ sink.append(`<${tagName}${renderHtmlAttributes(element.props)}>`);
379
+ if (innerHtml !== undefined) {
380
+ sink.append(String(innerHtml.__html ?? ""));
381
+ sink.append(`</${tagName}>`);
382
+ return;
383
+ }
384
+ const result = appendReactNode(sink, element.props.children, state);
385
+ if (isPromiseLike(result)) {
386
+ return result.then(() => {
387
+ sink.append(`</${tagName}>`);
388
+ });
389
+ }
390
+ sink.append(`</${tagName}>`);
391
+ }
392
+ function appendSuspenseElement(sink, element, state) {
393
+ const rendered = renderReactNodeToString(element.props.children, state);
394
+ if (!isPromiseLikeString(rendered)) {
395
+ renderReactSuspenseBoundary(sink, (boundarySink) => {
396
+ boundarySink.append(rendered);
397
+ });
398
+ return;
399
+ }
400
+ const id = state.suspenseId;
401
+ state.suspenseId += 1;
402
+ renderReactSuspenseOutOfOrderBoundary(sink, `B:${id}`, `S:${id}`, rendered, (boundarySink, renderedHtml) => {
403
+ boundarySink.append(renderedHtml);
404
+ }, {
405
+ fallback(boundarySink) {
406
+ const fallback = renderReactNodeToString(element.props.fallback, state);
407
+ if (isPromiseLikeString(fallback)) {
408
+ return fallback.then((html) => {
409
+ boundarySink.append(html);
410
+ });
411
+ }
412
+ boundarySink.append(fallback);
413
+ },
414
+ });
415
+ }
416
+ function renderReactNodeToString(node, state) {
417
+ const sink = createStringSink();
418
+ const result = appendReactNode(sink, node, state);
419
+ if (isPromiseLike(result)) {
420
+ return result.then(() => sink.toString());
421
+ }
422
+ return sink.toString();
423
+ }
424
+ function renderHtmlAttributes(props) {
425
+ // Issue 078: <meta http-equiv="refresh" content="0;url=javascript:...">
426
+ // is URL-bearing only when http-equiv is "refresh", so we need both
427
+ // attributes in scope to make the call. Strip the unsafe content
428
+ // before per-attribute rendering.
429
+ const sanitizedProps = sanitizeMetaRefreshProps(props);
430
+ return Object.entries(sanitizedProps)
431
+ .map(([name, value]) => renderHtmlAttribute(name, value))
432
+ .filter((attribute) => attribute !== "")
433
+ .join("");
434
+ }
435
+ function sanitizeMetaRefreshProps(props) {
436
+ const httpEquiv = props["http-equiv"] ?? props.httpEquiv;
437
+ const content = props["content"];
438
+ if (typeof httpEquiv !== "string" || typeof content !== "string")
439
+ return props;
440
+ if (!isUnsafeMetaRefreshContent(httpEquiv, content))
441
+ return props;
442
+ // Drop only `content`; keep http-equiv so the developer's intent is
443
+ // still visible in the rendered HTML (debugging hint).
444
+ const sanitized = { ...props };
445
+ delete sanitized["content"];
446
+ return sanitized;
447
+ }
448
+ // Mirrors `isAttributeNameSafe` in react-dom: an attribute name must start with
449
+ // an ASCII letter (or underscore) and contain only word chars, dot, hyphen, or
450
+ // colon. Anything else is dropped to prevent SSR XSS via spread props
451
+ // (`<div {...userControlled} />`). See docs/issues/resolved Issue 060.
452
+ const VALID_ATTRIBUTE_NAME = /^[A-Za-z_][\w.\-:]*$/;
453
+ // URL scheme allow/block list is shared with the compiler emit paths
454
+ // (Issues 062 / 073). See packages/server/src/url-safety.ts.
455
+ function renderHtmlAttribute(name, value) {
456
+ if (name === "children" ||
457
+ name === "dangerouslySetInnerHTML" ||
458
+ name === "key" ||
459
+ name === "ref" ||
460
+ value === false ||
461
+ value === null ||
462
+ value === undefined ||
463
+ typeof value === "function") {
464
+ return "";
465
+ }
466
+ const attributeName = toHtmlAttributeName(name);
467
+ if (!VALID_ATTRIBUTE_NAME.test(attributeName)) {
468
+ return "";
469
+ }
470
+ // Issue 077: HTML-bearing attributes (`srcdoc`) require the explicit
471
+ // `{ __html: "..." }` opt-in. A plain string value -- even if escaped
472
+ // for the attribute syntax -- decodes back to executable HTML inside
473
+ // the iframe document with the parent's origin.
474
+ if (isDangerousHtmlAttribute(attributeName)) {
475
+ if (!isDangerousHtmlOptIn(value)) {
476
+ return "";
477
+ }
478
+ return ` ${attributeName}="${escapeAttribute(value.__html)}"`;
479
+ }
480
+ if (value === true) {
481
+ return ` ${attributeName}`;
482
+ }
483
+ const stringValue = String(value);
484
+ if (isUnsafeUrlAttribute(attributeName, stringValue)) {
485
+ return "";
486
+ }
487
+ return ` ${attributeName}="${escapeAttribute(stringValue)}"`;
488
+ }
489
+ function toHtmlAttributeName(name) {
490
+ return HTML_ATTRIBUTE_ALIASES[name] ?? name;
491
+ }
492
+ const HTML_ATTRIBUTE_ALIASES = {
493
+ acceptCharset: "accept-charset",
494
+ autoFocus: "autofocus",
495
+ autoPlay: "autoplay",
496
+ charSet: "charset",
497
+ className: "class",
498
+ colSpan: "colspan",
499
+ contentEditable: "contenteditable",
500
+ crossOrigin: "crossorigin",
501
+ encType: "enctype",
502
+ formAction: "formaction",
503
+ frameBorder: "frameborder",
504
+ htmlFor: "for",
505
+ httpEquiv: "http-equiv",
506
+ maxLength: "maxlength",
507
+ minLength: "minlength",
508
+ noValidate: "novalidate",
509
+ playsInline: "playsinline",
510
+ readOnly: "readonly",
511
+ rowSpan: "rowspan",
512
+ spellCheck: "spellcheck",
513
+ srcDoc: "srcdoc",
514
+ srcSet: "srcset",
515
+ tabIndex: "tabindex",
516
+ useMap: "usemap",
517
+ };
518
+ function isPromiseLikeNode(value) {
519
+ return isPromiseLikeUnknown(value);
520
+ }
521
+ function isPromiseLikeString(value) {
522
+ return isPromiseLikeUnknown(value);
523
+ }
524
+ function isPromiseLike(value) {
525
+ return isPromiseLikeUnknown(value);
526
+ }
527
+ function isPromiseLikeUnknown(value) {
528
+ return (typeof value === "object" &&
529
+ value !== null &&
530
+ "then" in value &&
531
+ typeof value.then === "function");
532
+ }
533
+ function renderNonceAttribute(nonce) {
534
+ return nonce === undefined ? "" : ` nonce="${escapeAttribute(nonce)}"`;
535
+ }
536
+ export function renderToReadableStream(render) {
537
+ // Issue 084: append calls go into a coalescing Node Buffer sink. The
538
+ // previous implementation called `controller.enqueue(encoder.encode(chunk))`
539
+ // per `sink.append` — one TextEncoder allocation + one WHATWG queue trip
540
+ // per call. Now we emit one chunk per flush boundary:
541
+ // 1. After the sync portion of `render` returns — the "shell"
542
+ // pre-flush. Done synchronously so it lands before any deferred
543
+ // task body fires in a microtask.
544
+ // 2. Whenever the accumulated buffer crosses the flushThreshold
545
+ // mid-render (e.g. a single very large list rendering).
546
+ // 3. Each `sink.append` made during the deferred phase flushes
547
+ // immediately — gives each OOB fragment its own HTTP chunk so
548
+ // the browser can swap it in as soon as it arrives.
549
+ // 4. End of stream — any tail bytes.
550
+ return new ReadableStream({
551
+ async start(controller) {
552
+ const sink = createStreamingBufferSink({
553
+ onFlush(buffer) {
554
+ controller.enqueue(buffer);
555
+ },
556
+ });
557
+ const deferredTasks = [];
558
+ let inDeferredPhase = false;
559
+ let renderResult;
560
+ try {
561
+ renderResult = render({
562
+ append(chunk) {
563
+ sink.append(chunk);
564
+ if (inDeferredPhase) {
565
+ // OOB pattern: each deferred task ends with exactly one
566
+ // `sink.append("<template ...>...")`. Flushing here
567
+ // promotes that single append to its own chunk so the
568
+ // browser's MutationObserver can apply it without
569
+ // waiting for other deferred fragments.
570
+ sink.flush();
571
+ }
572
+ },
573
+ defer(task) {
574
+ deferredTasks.push(task);
575
+ },
576
+ });
577
+ }
578
+ catch (error) {
579
+ controller.error(error);
580
+ return;
581
+ }
582
+ // Shell pre-flush — synchronous, BEFORE we yield to microtasks.
583
+ // If we awaited render first the deferred tasks' bodies would
584
+ // already have appended their bytes to the same buffer and we
585
+ // would emit one merged chunk.
586
+ sink.flush();
587
+ try {
588
+ if (renderResult !== undefined && renderResult !== null) {
589
+ await renderResult;
590
+ // Async render may have written more before its tail returned.
591
+ // That tail is also "shell" — flush it before entering the
592
+ // deferred phase.
593
+ sink.flush();
594
+ }
595
+ inDeferredPhase = true;
596
+ await Promise.all(deferredTasks);
597
+ // Tail flush in case the render closure (or a deferred task)
598
+ // somehow left bytes in the buffer past the per-append flushes.
599
+ sink.flush();
600
+ controller.close();
601
+ }
602
+ catch (error) {
603
+ controller.error(error);
604
+ }
605
+ },
606
+ });
607
+ }
608
+ function escapeAttribute(value) {
609
+ return value
610
+ .replaceAll("&", "&amp;")
611
+ .replaceAll('"', "&quot;")
612
+ .replaceAll("<", "&lt;")
613
+ .replaceAll(">", "&gt;");
614
+ }
615
+ const outOfOrderReorderScript = `(()=>{function apply(root){const fragments=Array.from(root.querySelectorAll("template[data-mreact-oob-fragment]"));for(const fragment of fragments){const id=fragment.getAttribute("data-mreact-oob-fragment");if(id===null)continue;const placeholders=Array.from(root.querySelectorAll("[data-mreact-oob-placeholder]"));const placeholder=placeholders.find((candidate)=>candidate.getAttribute("data-mreact-oob-placeholder")===id);if(placeholder===undefined)continue;placeholder.replaceWith(fragment.content.cloneNode(true));fragment.remove();}}apply(document);new MutationObserver(()=>apply(document)).observe(document.documentElement,{childList:true,subtree:true});})();`;
616
+ const reactSuspenseRevealScriptBody = `(self.$RC=self.$RC||function(bid,sid){var b=document.getElementById(bid);var s=document.getElementById(sid);if(!b||!s)return;var p=b.parentNode;var e=b.nextSibling;var d=0;var r=[];for(var n=e;n;n=n.nextSibling){if(n.nodeType===8){if(n.data==="$"||n.data==="$?"||n.data==="$!")d++;else if(n.data==="/$"){if(d===0){e=n;break;}d--;}}r.push(n);}for(var i=0;r[i];i++)p.removeChild(r[i]);while(s.firstChild)p.insertBefore(s.firstChild,e);s.remove();b.data="$";})`;
617
+ export const reactSuspenseRevealExternalScript = `(()=>{${reactSuspenseRevealScriptBody};var s=document.currentScript;if(!s)return;var b=s.getAttribute("data-boundary-id");var seg=s.getAttribute("data-segment-id");if(b!==null&&seg!==null)self.$RC(b,seg);})();`;
618
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface NativeFlightModule {
2
+ decodeFlightBase64?: (value: string) => Uint8Array;
3
+ encodeFlightResponse?: (responseJson: string) => string;
4
+ decodeFlightRows?: (rows: string) => string;
5
+ mergeFlightRows?: (previousJson: string, rows: string) => string;
6
+ }
7
+ export declare function getNativeFlight(): NativeFlightModule | undefined;
8
+ export {};
9
+ //# sourceMappingURL=native-flight.d.ts.map