@reckona/mreact-server 0.0.181 → 0.0.182
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/boundary.js +1 -1
- package/dist/boundary.js.map +1 -1
- package/dist/flight.js +6 -1
- package/dist/flight.js.map +1 -1
- package/dist/reorder.d.ts.map +1 -1
- package/dist/reorder.js +17 -6
- package/dist/reorder.js.map +1 -1
- package/package.json +3 -3
- package/src/boundary.ts +1 -1
- package/src/flight.ts +9 -1
- package/src/reorder.ts +17 -13
package/dist/boundary.js
CHANGED
|
@@ -261,7 +261,7 @@ export function renderHydrationBoundary(sink, id, render) {
|
|
|
261
261
|
function isPromiseLike(value) {
|
|
262
262
|
return isPromiseLikeUnknown(value);
|
|
263
263
|
}
|
|
264
|
-
const outOfOrderReorderScript = `(()=>{function apply(root){const fragments=Array.from(root.querySelectorAll("template[data-mreact-oob-fragment]"));for(const
|
|
264
|
+
const outOfOrderReorderScript = `(()=>{function apply(root){const fragments=Array.from(root.querySelectorAll("template[data-mreact-oob-fragment]"));const markers=new Map();for(const marker of root.querySelectorAll("[data-mreact-oob-complete]")){const id=marker.getAttribute("data-mreact-oob-complete");if(!markers.has(id))markers.set(id,marker);}const placeholders=new Map();for(const placeholder of root.querySelectorAll("[data-mreact-oob-placeholder]")){const id=placeholder.getAttribute("data-mreact-oob-placeholder");if(!placeholders.has(id))placeholders.set(id,placeholder);}for(const fragment of fragments){const id=fragment.getAttribute("data-mreact-oob-fragment");if(id===null)continue;const marker=markers.get(id);if(marker===undefined)continue;const placeholder=placeholders.get(id);if(placeholder===undefined)continue;placeholder.replaceWith(fragment.content.cloneNode(true));fragment.remove();marker.remove();}}apply(document);new MutationObserver(()=>apply(document)).observe(document.documentElement,{childList:true,subtree:true});})();`;
|
|
265
265
|
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="$";})`;
|
|
266
266
|
/** External script body that reveals a React Suspense segment when loaded. */
|
|
267
267
|
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);})();`;
|
package/dist/boundary.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../src/boundary.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HtmlSink } from \"@reckona/mreact-shared/compiler-contract\";\nimport {\n escapeAttribute,\n isPromiseLikeUnknown,\n renderNonceAttribute,\n serializeScriptJson,\n} from \"./html-internals.js\";\nimport { createStringSink, type StringHtmlSink } from \"./sink.js\";\n\n/** Options shared by async boundaries that render resolved values or caught errors. */\nexport interface AsyncBoundaryOptions {\n catch?: (sink: HtmlSink, error: unknown) => void | PromiseLike<void>;\n hydrationAwaitId?: string;\n}\n\n/** Options for rendering a boundary whose resolved content can arrive out of order. */\nexport interface OutOfOrderBoundaryOptions extends AsyncBoundaryOptions {\n hydration?: boolean;\n placeholder?: (sink: HtmlSink) => void;\n placeholderTag?: string;\n}\n\n/** Options for emitting the out-of-order fragment reorder script. */\nexport interface OutOfOrderReorderScriptOptions {\n nonce?: string;\n src?: string;\n}\n\n/** Options for script tags that hydrate server-rendered data. */\nexport interface HydrationScriptOptions {\n nonce?: string;\n}\n\n/** Options for scripts that reveal React Suspense segments. */\nexport interface ReactSuspenseScriptOptions {\n nonce?: string;\n src?: string;\n}\n\n/** Options for React Suspense boundaries rendered with streamed segments. */\nexport interface ReactSuspenseBoundaryOptions extends AsyncBoundaryOptions {\n fallback?: (sink: HtmlSink) => void | PromiseLike<void>;\n nonce?: string;\n}\n\n/** Error metadata used when forcing a React Suspense boundary to client render. */\nexport interface ReactSuspenseClientRenderOptions {\n message?: string;\n stack?: string;\n}\n\n/** Renderer invoked with an async boundary's resolved value. */\nexport type AsyncBoundaryRender<T> = (\n sink: HtmlSink,\n value: Awaited<T>,\n) => void | PromiseLike<void>;\n\nconst outOfOrderBoundaryInstances = new WeakMap<HtmlSink, Map<string, number>>();\n\n/** Renders a value once it resolves, or renders a configured catch branch on error. */\nexport async function renderAsyncBoundary<T>(\n sink: HtmlSink,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: AsyncBoundaryOptions = {},\n): Promise<void> {\n try {\n const resolved = await value;\n await sink.backpressure?.();\n await render(sink, resolved);\n if (options.hydrationAwaitId !== undefined) {\n appendAwaitHydrationData(sink, options.hydrationAwaitId, resolved);\n }\n } catch (error) {\n if (options.catch === undefined) {\n throw error;\n }\n\n await sink.backpressure?.();\n await options.catch(sink, error);\n }\n}\n\n// Threshold for `<Await>` payload size warnings (UTF-8 byte length of\n// JSON-serialized representation). 100KB warn / 1MB error follow the\n// \"you're sending a lot of data\" hint pattern used by other frameworks.\nconst AWAIT_PAYLOAD_WARN_BYTES = 100 * 1024;\nconst AWAIT_PAYLOAD_ERROR_BYTES = 1024 * 1024;\nconst textEncoder = typeof TextEncoder !== \"undefined\" ? new TextEncoder() : undefined;\n\nfunction isProductionMode(): boolean {\n // `process` may not exist in cross-runtime environments (Cloudflare/Deno).\n // The server tsconfig does not include `@types/node`, so we look it up\n // through `globalThis` with a minimal local typing.\n const globalProcess = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process;\n\n try {\n return globalProcess?.env?.[\"NODE_ENV\"] === \"production\";\n } catch {\n return false;\n }\n}\n\nfunction appendAwaitHydrationData(\n sink: HtmlSink,\n awaitId: string,\n resolved: unknown,\n): void {\n const serialized = serializeAwaitHydrationValue(resolved, awaitId);\n\n if (serialized === undefined) {\n return;\n }\n\n const idLiteral = JSON.stringify(awaitId).replaceAll(\"<\", \"\\\\u003c\");\n sink.append(\n `<script data-mreact-await=\"${escapeAttribute(awaitId)}\">(self.__mreactAwaitData||(self.__mreactAwaitData={}))[${idLiteral}]={value:${serialized}}</script>`,\n );\n}\n\n// Emits a single console.warn in dev when `resolved` contains shapes the\n// wire format will silently drop or coerce (Date / Map / Set / RegExp /\n// class instance / function / Symbol / nested non-POJO).\nfunction warnIfNonSerializableAwaitValue(value: unknown, awaitId: string): void {\n if (isProductionMode()) {\n return;\n }\n\n if (!containsNonSerializableSurface(value)) {\n return;\n }\n\n console.warn(\n `[mreact] <Await value={...}> for \"${awaitId}\" includes non-serializable ` +\n `data (Date / Map / Set / RegExp / class instance / function / Symbol). ` +\n `The wire format uses JSON.stringify, so the client-side renderer may ` +\n `receive a different shape after the JSON round-trip. Convert to plain ` +\n `JSON-serializable data before it reaches <Await>. See ` +\n `https://github.com/t-k/mreact#streaming-loading-and-await.`,\n );\n}\n\nfunction containsNonSerializableSurface(value: unknown): boolean {\n if (value === null || value === undefined || typeof value !== \"object\") {\n return false;\n }\n\n if (value instanceof Date || value instanceof Map || value instanceof Set || value instanceof RegExp) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some((entry) => containsNonSerializableSurface(entry));\n }\n\n const proto = Object.getPrototypeOf(value);\n\n if (proto !== Object.prototype && proto !== null) {\n return true;\n }\n\n for (const entry of Object.values(value as Record<string, unknown>)) {\n if (containsNonSerializableSurface(entry)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction reportAwaitPayloadSize(json: string, awaitId: string): void {\n if (json.length * 3 < AWAIT_PAYLOAD_WARN_BYTES) {\n return;\n }\n\n const byteLength = textEncoder?.encode(json).length ?? json.length;\n\n if (byteLength > AWAIT_PAYLOAD_ERROR_BYTES) {\n console.error(\n `[mreact] <Await> payload for \"${awaitId}\" is ${(byteLength / 1024 / 1024).toFixed(2)}MB, ` +\n `exceeding the 1MB error threshold. Large payloads inflate HTML response size and ` +\n `client memory pressure. Stream the data via loader or split into smaller boundaries.`,\n );\n return;\n }\n\n if (byteLength > AWAIT_PAYLOAD_WARN_BYTES) {\n console.warn(\n `[mreact] large await payload for \"${awaitId}\": ${(byteLength / 1024).toFixed(1)}KB ` +\n `(over the 100KB warning threshold). Consider streaming the data via loader or ` +\n `splitting into smaller boundaries.`,\n );\n }\n}\n\nfunction serializeAwaitHydrationValue(value: unknown, awaitId: string): string | undefined {\n try {\n const json = JSON.stringify(value);\n if (json === undefined) {\n return undefined;\n }\n\n warnIfNonSerializableAwaitValue(value, awaitId);\n reportAwaitPayloadSize(json, awaitId);\n\n // Defuse `</script>` and runaway control characters so the data can be\n // safely embedded inside a `<script>` element.\n return json\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n } catch {\n return undefined;\n }\n}\n\nfunction inheritBackpressure(childSink: StringHtmlSink, parentSink: HtmlSink): StringHtmlSink {\n if (parentSink.backpressure === undefined) {\n return childSink;\n }\n\n return {\n ...childSink,\n backpressure: parentSink.backpressure,\n };\n}\n\n/** Emits a placeholder immediately and defers resolved HTML as an out-of-order fragment. */\nexport function renderOutOfOrderBoundary<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: OutOfOrderBoundaryOptions = {},\n): void {\n const boundaryId = nextOutOfOrderBoundaryInstanceId(sink, id);\n const placeholderSink = createStringSink();\n const placeholderResult = options.placeholder?.(placeholderSink);\n if (!isProductionMode() && isPromiseLikeUnknown(placeholderResult)) {\n throw new Error(\"renderOutOfOrderBoundary placeholder must be synchronous.\");\n }\n const placeholderTag = normalizeOutOfOrderPlaceholderTag(options.placeholderTag);\n const hydrationStart =\n options.hydration === true ? `<!--mreact-h:start:${encodeURIComponent(boundaryId)}-->` : \"\";\n const hydrationEnd =\n options.hydration === true ? `<!--mreact-h:end:${encodeURIComponent(boundaryId)}-->` : \"\";\n sink.append(\n `${hydrationStart}<${placeholderTag} data-mreact-oob-placeholder=\"${escapeAttribute(boundaryId)}\">${placeholderSink.toString()}</${placeholderTag}>${hydrationEnd}`,\n );\n\n const task = renderOutOfOrderFragment(sink, boundaryId, value, render, options);\n\n if (sink.defer === undefined) {\n void task;\n return;\n }\n\n sink.defer(task);\n}\n\nfunction normalizeOutOfOrderPlaceholderTag(tag: unknown): string {\n if (typeof tag !== \"string\") {\n return \"span\";\n }\n\n const normalized = tag.trim().toLowerCase();\n return /^[a-z][a-z0-9-]*$/.test(normalized) ? normalized : \"span\";\n}\n\nasync function renderOutOfOrderFragment<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: OutOfOrderBoundaryOptions,\n): Promise<void> {\n const fragmentSink = inheritBackpressure(createStringSink(), sink);\n let resolvedValue: unknown;\n let hasResolvedValue = false;\n\n await renderAsyncBoundary(\n fragmentSink,\n value,\n async (childSink, resolved) => {\n resolvedValue = resolved;\n hasResolvedValue = true;\n await render(childSink, resolved);\n },\n options.catch === undefined ? {} : { catch: options.catch },\n );\n await fragmentSink.drain();\n\n sink.append(renderOutOfOrderFragmentHtml(id, fragmentSink.toString()));\n\n if (hasResolvedValue && options.hydrationAwaitId !== undefined) {\n appendAwaitHydrationData(sink, options.hydrationAwaitId, resolvedValue);\n }\n}\n\n/** Emits the client script that swaps out-of-order fragments into their placeholders. */\nexport function renderOutOfOrderReorderScript(\n sink: HtmlSink,\n options: OutOfOrderReorderScriptOptions = {},\n): void {\n const nonceAttribute =\n options.nonce === undefined ? \"\" : ` nonce=\"${escapeAttribute(options.nonce)}\"`;\n\n if (options.src !== undefined) {\n sink.append(\n `<script data-mreact-oob-reorder${nonceAttribute} src=\"${escapeAttribute(options.src)}\"></script>`,\n );\n return;\n }\n\n sink.append(\n `<script data-mreact-oob-reorder${nonceAttribute}>${outOfOrderReorderScript}</script>`,\n );\n}\n\nfunction renderOutOfOrderFragmentHtml(id: string, html: string): string {\n const escapedId = escapeAttribute(id);\n return `<template data-mreact-oob-fragment=\"${escapedId}\">${html}</template><mreact-oob-complete hidden data-mreact-oob-complete=\"${escapedId}\"></mreact-oob-complete>`;\n}\n\n/** Wraps streamed content in React Suspense completion markers. */\nexport function renderReactSuspenseBoundary(\n sink: HtmlSink,\n render: (sink: HtmlSink) => void | PromiseLike<void>,\n): void | PromiseLike<void> {\n sink.append(\"<!--$-->\");\n const result = render(sink);\n\n if (isPromiseLike(result)) {\n return result.then(() => {\n sink.append(\"<!--/$-->\");\n });\n }\n\n sink.append(\"<!--/$-->\");\n}\n\n/** Emits a React Suspense fallback and streams the resolved segment out of order. */\nexport function renderReactSuspenseOutOfOrderBoundary<T>(\n sink: HtmlSink,\n boundaryId: string,\n segmentId: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: ReactSuspenseBoundaryOptions = {},\n): void {\n const actualBoundaryId = nextOutOfOrderBoundaryInstanceId(sink, boundaryId);\n const suffix = actualBoundaryId.slice(boundaryId.length);\n const actualSegmentId = `${segmentId}${suffix}`;\n const fallbackSink = createStringSink();\n void options.fallback?.(fallbackSink);\n sink.append(\n `<!--$?--><template id=\"${escapeAttribute(actualBoundaryId)}\"></template>${fallbackSink.toString()}<!--/$-->`,\n );\n\n const task = renderReactSuspenseSegment(\n sink,\n actualBoundaryId,\n actualSegmentId,\n value,\n render,\n options,\n );\n\n if (sink.defer === undefined) {\n void task;\n return;\n }\n\n sink.defer(task);\n}\n\nfunction nextOutOfOrderBoundaryInstanceId(sink: HtmlSink, id: string): string {\n let instances = outOfOrderBoundaryInstances.get(sink);\n\n if (instances === undefined) {\n instances = new Map();\n outOfOrderBoundaryInstances.set(sink, instances);\n }\n\n const count = instances.get(id) ?? 0;\n instances.set(id, count + 1);\n\n return count === 0 ? id : `${id}-${count.toString(36)}`;\n}\n\n/** Emits a React Suspense boundary that instructs the client to render the fallback. */\nexport function renderReactSuspenseClientRenderBoundary(\n sink: HtmlSink,\n fallback: (sink: HtmlSink) => void | PromiseLike<void>,\n options: ReactSuspenseClientRenderOptions = {},\n): void | PromiseLike<void> {\n sink.append(`<!--$!--><template${renderReactSuspenseErrorAttributes(options)}></template>`);\n const result = fallback(sink);\n\n if (isPromiseLike(result)) {\n return result.then(() => {\n sink.append(\"<!--/$-->\");\n });\n }\n\n sink.append(\"<!--/$-->\");\n}\n\nasync function renderReactSuspenseSegment<T>(\n sink: HtmlSink,\n boundaryId: string,\n segmentId: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: ReactSuspenseBoundaryOptions,\n): Promise<void> {\n const segmentSink = inheritBackpressure(createStringSink(), sink);\n\n await renderAsyncBoundary(\n segmentSink,\n value,\n render,\n options.catch === undefined ? {} : { catch: options.catch },\n );\n\n sink.append(\n `<div hidden id=\"${escapeAttribute(segmentId)}\">${segmentSink.toString()}</div>${renderReactSuspenseRevealScript(boundaryId, segmentId, options)}`,\n );\n}\n\nfunction renderReactSuspenseErrorAttributes(options: ReactSuspenseClientRenderOptions): string {\n const message =\n options.message === undefined ? \"\" : ` data-msg=\"${escapeAttribute(options.message)}\"`;\n const stack = options.stack === undefined ? \"\" : ` data-stck=\"${escapeAttribute(options.stack)}\"`;\n\n return `${message}${stack}`;\n}\n\nfunction renderReactSuspenseRevealScript(\n boundaryId: string,\n segmentId: string,\n options: ReactSuspenseScriptOptions = {},\n): string {\n if (options.src !== undefined) {\n 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>`;\n }\n\n return `<script${renderNonceAttribute(options.nonce)}>${reactSuspenseRevealScriptBody};$RC(${serializeScriptJson(boundaryId)},${serializeScriptJson(segmentId)})</script>`;\n}\n\n/** Wraps server-rendered HTML in hydration start and end markers. */\nexport function renderHydrationBoundary(\n sink: HtmlSink,\n id: string,\n render: (sink: HtmlSink) => void | PromiseLike<void>,\n): void | PromiseLike<void> {\n const markerId = encodeURIComponent(id);\n sink.append(`<!--mreact-h:start:${markerId}-->`);\n const result = render(sink);\n\n if (isPromiseLike(result)) {\n return result.then(() => {\n sink.append(`<!--mreact-h:end:${markerId}-->`);\n });\n }\n\n sink.append(`<!--mreact-h:end:${markerId}-->`);\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<void> {\n return isPromiseLikeUnknown(value);\n}\n\nconst 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 markers=Array.from(root.querySelectorAll(\"[data-mreact-oob-complete]\"));const marker=markers.find((candidate)=>candidate.getAttribute(\"data-mreact-oob-complete\")===id);if(marker===undefined)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();marker.remove();}}apply(document);new MutationObserver(()=>apply(document)).observe(document.documentElement,{childList:true,subtree:true});})();`;\n\nconst 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=\"$\";})`;\n\n/** External script body that reveals a React Suspense segment when loaded. */\nexport 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);})();`;\n"]}
|
|
1
|
+
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../src/boundary.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HtmlSink } from \"@reckona/mreact-shared/compiler-contract\";\nimport {\n escapeAttribute,\n isPromiseLikeUnknown,\n renderNonceAttribute,\n serializeScriptJson,\n} from \"./html-internals.js\";\nimport { createStringSink, type StringHtmlSink } from \"./sink.js\";\n\n/** Options shared by async boundaries that render resolved values or caught errors. */\nexport interface AsyncBoundaryOptions {\n catch?: (sink: HtmlSink, error: unknown) => void | PromiseLike<void>;\n hydrationAwaitId?: string;\n}\n\n/** Options for rendering a boundary whose resolved content can arrive out of order. */\nexport interface OutOfOrderBoundaryOptions extends AsyncBoundaryOptions {\n hydration?: boolean;\n placeholder?: (sink: HtmlSink) => void;\n placeholderTag?: string;\n}\n\n/** Options for emitting the out-of-order fragment reorder script. */\nexport interface OutOfOrderReorderScriptOptions {\n nonce?: string;\n src?: string;\n}\n\n/** Options for script tags that hydrate server-rendered data. */\nexport interface HydrationScriptOptions {\n nonce?: string;\n}\n\n/** Options for scripts that reveal React Suspense segments. */\nexport interface ReactSuspenseScriptOptions {\n nonce?: string;\n src?: string;\n}\n\n/** Options for React Suspense boundaries rendered with streamed segments. */\nexport interface ReactSuspenseBoundaryOptions extends AsyncBoundaryOptions {\n fallback?: (sink: HtmlSink) => void | PromiseLike<void>;\n nonce?: string;\n}\n\n/** Error metadata used when forcing a React Suspense boundary to client render. */\nexport interface ReactSuspenseClientRenderOptions {\n message?: string;\n stack?: string;\n}\n\n/** Renderer invoked with an async boundary's resolved value. */\nexport type AsyncBoundaryRender<T> = (\n sink: HtmlSink,\n value: Awaited<T>,\n) => void | PromiseLike<void>;\n\nconst outOfOrderBoundaryInstances = new WeakMap<HtmlSink, Map<string, number>>();\n\n/** Renders a value once it resolves, or renders a configured catch branch on error. */\nexport async function renderAsyncBoundary<T>(\n sink: HtmlSink,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: AsyncBoundaryOptions = {},\n): Promise<void> {\n try {\n const resolved = await value;\n await sink.backpressure?.();\n await render(sink, resolved);\n if (options.hydrationAwaitId !== undefined) {\n appendAwaitHydrationData(sink, options.hydrationAwaitId, resolved);\n }\n } catch (error) {\n if (options.catch === undefined) {\n throw error;\n }\n\n await sink.backpressure?.();\n await options.catch(sink, error);\n }\n}\n\n// Threshold for `<Await>` payload size warnings (UTF-8 byte length of\n// JSON-serialized representation). 100KB warn / 1MB error follow the\n// \"you're sending a lot of data\" hint pattern used by other frameworks.\nconst AWAIT_PAYLOAD_WARN_BYTES = 100 * 1024;\nconst AWAIT_PAYLOAD_ERROR_BYTES = 1024 * 1024;\nconst textEncoder = typeof TextEncoder !== \"undefined\" ? new TextEncoder() : undefined;\n\nfunction isProductionMode(): boolean {\n // `process` may not exist in cross-runtime environments (Cloudflare/Deno).\n // The server tsconfig does not include `@types/node`, so we look it up\n // through `globalThis` with a minimal local typing.\n const globalProcess = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process;\n\n try {\n return globalProcess?.env?.[\"NODE_ENV\"] === \"production\";\n } catch {\n return false;\n }\n}\n\nfunction appendAwaitHydrationData(\n sink: HtmlSink,\n awaitId: string,\n resolved: unknown,\n): void {\n const serialized = serializeAwaitHydrationValue(resolved, awaitId);\n\n if (serialized === undefined) {\n return;\n }\n\n const idLiteral = JSON.stringify(awaitId).replaceAll(\"<\", \"\\\\u003c\");\n sink.append(\n `<script data-mreact-await=\"${escapeAttribute(awaitId)}\">(self.__mreactAwaitData||(self.__mreactAwaitData={}))[${idLiteral}]={value:${serialized}}</script>`,\n );\n}\n\n// Emits a single console.warn in dev when `resolved` contains shapes the\n// wire format will silently drop or coerce (Date / Map / Set / RegExp /\n// class instance / function / Symbol / nested non-POJO).\nfunction warnIfNonSerializableAwaitValue(value: unknown, awaitId: string): void {\n if (isProductionMode()) {\n return;\n }\n\n if (!containsNonSerializableSurface(value)) {\n return;\n }\n\n console.warn(\n `[mreact] <Await value={...}> for \"${awaitId}\" includes non-serializable ` +\n `data (Date / Map / Set / RegExp / class instance / function / Symbol). ` +\n `The wire format uses JSON.stringify, so the client-side renderer may ` +\n `receive a different shape after the JSON round-trip. Convert to plain ` +\n `JSON-serializable data before it reaches <Await>. See ` +\n `https://github.com/t-k/mreact#streaming-loading-and-await.`,\n );\n}\n\nfunction containsNonSerializableSurface(value: unknown): boolean {\n if (value === null || value === undefined || typeof value !== \"object\") {\n return false;\n }\n\n if (value instanceof Date || value instanceof Map || value instanceof Set || value instanceof RegExp) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some((entry) => containsNonSerializableSurface(entry));\n }\n\n const proto = Object.getPrototypeOf(value);\n\n if (proto !== Object.prototype && proto !== null) {\n return true;\n }\n\n for (const entry of Object.values(value as Record<string, unknown>)) {\n if (containsNonSerializableSurface(entry)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction reportAwaitPayloadSize(json: string, awaitId: string): void {\n if (json.length * 3 < AWAIT_PAYLOAD_WARN_BYTES) {\n return;\n }\n\n const byteLength = textEncoder?.encode(json).length ?? json.length;\n\n if (byteLength > AWAIT_PAYLOAD_ERROR_BYTES) {\n console.error(\n `[mreact] <Await> payload for \"${awaitId}\" is ${(byteLength / 1024 / 1024).toFixed(2)}MB, ` +\n `exceeding the 1MB error threshold. Large payloads inflate HTML response size and ` +\n `client memory pressure. Stream the data via loader or split into smaller boundaries.`,\n );\n return;\n }\n\n if (byteLength > AWAIT_PAYLOAD_WARN_BYTES) {\n console.warn(\n `[mreact] large await payload for \"${awaitId}\": ${(byteLength / 1024).toFixed(1)}KB ` +\n `(over the 100KB warning threshold). Consider streaming the data via loader or ` +\n `splitting into smaller boundaries.`,\n );\n }\n}\n\nfunction serializeAwaitHydrationValue(value: unknown, awaitId: string): string | undefined {\n try {\n const json = JSON.stringify(value);\n if (json === undefined) {\n return undefined;\n }\n\n warnIfNonSerializableAwaitValue(value, awaitId);\n reportAwaitPayloadSize(json, awaitId);\n\n // Defuse `</script>` and runaway control characters so the data can be\n // safely embedded inside a `<script>` element.\n return json\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n } catch {\n return undefined;\n }\n}\n\nfunction inheritBackpressure(childSink: StringHtmlSink, parentSink: HtmlSink): StringHtmlSink {\n if (parentSink.backpressure === undefined) {\n return childSink;\n }\n\n return {\n ...childSink,\n backpressure: parentSink.backpressure,\n };\n}\n\n/** Emits a placeholder immediately and defers resolved HTML as an out-of-order fragment. */\nexport function renderOutOfOrderBoundary<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: OutOfOrderBoundaryOptions = {},\n): void {\n const boundaryId = nextOutOfOrderBoundaryInstanceId(sink, id);\n const placeholderSink = createStringSink();\n const placeholderResult = options.placeholder?.(placeholderSink);\n if (!isProductionMode() && isPromiseLikeUnknown(placeholderResult)) {\n throw new Error(\"renderOutOfOrderBoundary placeholder must be synchronous.\");\n }\n const placeholderTag = normalizeOutOfOrderPlaceholderTag(options.placeholderTag);\n const hydrationStart =\n options.hydration === true ? `<!--mreact-h:start:${encodeURIComponent(boundaryId)}-->` : \"\";\n const hydrationEnd =\n options.hydration === true ? `<!--mreact-h:end:${encodeURIComponent(boundaryId)}-->` : \"\";\n sink.append(\n `${hydrationStart}<${placeholderTag} data-mreact-oob-placeholder=\"${escapeAttribute(boundaryId)}\">${placeholderSink.toString()}</${placeholderTag}>${hydrationEnd}`,\n );\n\n const task = renderOutOfOrderFragment(sink, boundaryId, value, render, options);\n\n if (sink.defer === undefined) {\n void task;\n return;\n }\n\n sink.defer(task);\n}\n\nfunction normalizeOutOfOrderPlaceholderTag(tag: unknown): string {\n if (typeof tag !== \"string\") {\n return \"span\";\n }\n\n const normalized = tag.trim().toLowerCase();\n return /^[a-z][a-z0-9-]*$/.test(normalized) ? normalized : \"span\";\n}\n\nasync function renderOutOfOrderFragment<T>(\n sink: HtmlSink,\n id: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: OutOfOrderBoundaryOptions,\n): Promise<void> {\n const fragmentSink = inheritBackpressure(createStringSink(), sink);\n let resolvedValue: unknown;\n let hasResolvedValue = false;\n\n await renderAsyncBoundary(\n fragmentSink,\n value,\n async (childSink, resolved) => {\n resolvedValue = resolved;\n hasResolvedValue = true;\n await render(childSink, resolved);\n },\n options.catch === undefined ? {} : { catch: options.catch },\n );\n await fragmentSink.drain();\n\n sink.append(renderOutOfOrderFragmentHtml(id, fragmentSink.toString()));\n\n if (hasResolvedValue && options.hydrationAwaitId !== undefined) {\n appendAwaitHydrationData(sink, options.hydrationAwaitId, resolvedValue);\n }\n}\n\n/** Emits the client script that swaps out-of-order fragments into their placeholders. */\nexport function renderOutOfOrderReorderScript(\n sink: HtmlSink,\n options: OutOfOrderReorderScriptOptions = {},\n): void {\n const nonceAttribute =\n options.nonce === undefined ? \"\" : ` nonce=\"${escapeAttribute(options.nonce)}\"`;\n\n if (options.src !== undefined) {\n sink.append(\n `<script data-mreact-oob-reorder${nonceAttribute} src=\"${escapeAttribute(options.src)}\"></script>`,\n );\n return;\n }\n\n sink.append(\n `<script data-mreact-oob-reorder${nonceAttribute}>${outOfOrderReorderScript}</script>`,\n );\n}\n\nfunction renderOutOfOrderFragmentHtml(id: string, html: string): string {\n const escapedId = escapeAttribute(id);\n return `<template data-mreact-oob-fragment=\"${escapedId}\">${html}</template><mreact-oob-complete hidden data-mreact-oob-complete=\"${escapedId}\"></mreact-oob-complete>`;\n}\n\n/** Wraps streamed content in React Suspense completion markers. */\nexport function renderReactSuspenseBoundary(\n sink: HtmlSink,\n render: (sink: HtmlSink) => void | PromiseLike<void>,\n): void | PromiseLike<void> {\n sink.append(\"<!--$-->\");\n const result = render(sink);\n\n if (isPromiseLike(result)) {\n return result.then(() => {\n sink.append(\"<!--/$-->\");\n });\n }\n\n sink.append(\"<!--/$-->\");\n}\n\n/** Emits a React Suspense fallback and streams the resolved segment out of order. */\nexport function renderReactSuspenseOutOfOrderBoundary<T>(\n sink: HtmlSink,\n boundaryId: string,\n segmentId: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: ReactSuspenseBoundaryOptions = {},\n): void {\n const actualBoundaryId = nextOutOfOrderBoundaryInstanceId(sink, boundaryId);\n const suffix = actualBoundaryId.slice(boundaryId.length);\n const actualSegmentId = `${segmentId}${suffix}`;\n const fallbackSink = createStringSink();\n void options.fallback?.(fallbackSink);\n sink.append(\n `<!--$?--><template id=\"${escapeAttribute(actualBoundaryId)}\"></template>${fallbackSink.toString()}<!--/$-->`,\n );\n\n const task = renderReactSuspenseSegment(\n sink,\n actualBoundaryId,\n actualSegmentId,\n value,\n render,\n options,\n );\n\n if (sink.defer === undefined) {\n void task;\n return;\n }\n\n sink.defer(task);\n}\n\nfunction nextOutOfOrderBoundaryInstanceId(sink: HtmlSink, id: string): string {\n let instances = outOfOrderBoundaryInstances.get(sink);\n\n if (instances === undefined) {\n instances = new Map();\n outOfOrderBoundaryInstances.set(sink, instances);\n }\n\n const count = instances.get(id) ?? 0;\n instances.set(id, count + 1);\n\n return count === 0 ? id : `${id}-${count.toString(36)}`;\n}\n\n/** Emits a React Suspense boundary that instructs the client to render the fallback. */\nexport function renderReactSuspenseClientRenderBoundary(\n sink: HtmlSink,\n fallback: (sink: HtmlSink) => void | PromiseLike<void>,\n options: ReactSuspenseClientRenderOptions = {},\n): void | PromiseLike<void> {\n sink.append(`<!--$!--><template${renderReactSuspenseErrorAttributes(options)}></template>`);\n const result = fallback(sink);\n\n if (isPromiseLike(result)) {\n return result.then(() => {\n sink.append(\"<!--/$-->\");\n });\n }\n\n sink.append(\"<!--/$-->\");\n}\n\nasync function renderReactSuspenseSegment<T>(\n sink: HtmlSink,\n boundaryId: string,\n segmentId: string,\n value: T,\n render: AsyncBoundaryRender<T>,\n options: ReactSuspenseBoundaryOptions,\n): Promise<void> {\n const segmentSink = inheritBackpressure(createStringSink(), sink);\n\n await renderAsyncBoundary(\n segmentSink,\n value,\n render,\n options.catch === undefined ? {} : { catch: options.catch },\n );\n\n sink.append(\n `<div hidden id=\"${escapeAttribute(segmentId)}\">${segmentSink.toString()}</div>${renderReactSuspenseRevealScript(boundaryId, segmentId, options)}`,\n );\n}\n\nfunction renderReactSuspenseErrorAttributes(options: ReactSuspenseClientRenderOptions): string {\n const message =\n options.message === undefined ? \"\" : ` data-msg=\"${escapeAttribute(options.message)}\"`;\n const stack = options.stack === undefined ? \"\" : ` data-stck=\"${escapeAttribute(options.stack)}\"`;\n\n return `${message}${stack}`;\n}\n\nfunction renderReactSuspenseRevealScript(\n boundaryId: string,\n segmentId: string,\n options: ReactSuspenseScriptOptions = {},\n): string {\n if (options.src !== undefined) {\n 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>`;\n }\n\n return `<script${renderNonceAttribute(options.nonce)}>${reactSuspenseRevealScriptBody};$RC(${serializeScriptJson(boundaryId)},${serializeScriptJson(segmentId)})</script>`;\n}\n\n/** Wraps server-rendered HTML in hydration start and end markers. */\nexport function renderHydrationBoundary(\n sink: HtmlSink,\n id: string,\n render: (sink: HtmlSink) => void | PromiseLike<void>,\n): void | PromiseLike<void> {\n const markerId = encodeURIComponent(id);\n sink.append(`<!--mreact-h:start:${markerId}-->`);\n const result = render(sink);\n\n if (isPromiseLike(result)) {\n return result.then(() => {\n sink.append(`<!--mreact-h:end:${markerId}-->`);\n });\n }\n\n sink.append(`<!--mreact-h:end:${markerId}-->`);\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<void> {\n return isPromiseLikeUnknown(value);\n}\n\nconst outOfOrderReorderScript = `(()=>{function apply(root){const fragments=Array.from(root.querySelectorAll(\"template[data-mreact-oob-fragment]\"));const markers=new Map();for(const marker of root.querySelectorAll(\"[data-mreact-oob-complete]\")){const id=marker.getAttribute(\"data-mreact-oob-complete\");if(!markers.has(id))markers.set(id,marker);}const placeholders=new Map();for(const placeholder of root.querySelectorAll(\"[data-mreact-oob-placeholder]\")){const id=placeholder.getAttribute(\"data-mreact-oob-placeholder\");if(!placeholders.has(id))placeholders.set(id,placeholder);}for(const fragment of fragments){const id=fragment.getAttribute(\"data-mreact-oob-fragment\");if(id===null)continue;const marker=markers.get(id);if(marker===undefined)continue;const placeholder=placeholders.get(id);if(placeholder===undefined)continue;placeholder.replaceWith(fragment.content.cloneNode(true));fragment.remove();marker.remove();}}apply(document);new MutationObserver(()=>apply(document)).observe(document.documentElement,{childList:true,subtree:true});})();`;\n\nconst 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=\"$\";})`;\n\n/** External script body that reveals a React Suspense segment when loaded. */\nexport 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);})();`;\n"]}
|
package/dist/flight.js
CHANGED
|
@@ -1001,7 +1001,7 @@ function parseReactFlightId(value) {
|
|
|
1001
1001
|
async function serializeFlightValue(value, state, depth) {
|
|
1002
1002
|
if (depth > MAX_FLIGHT_DECODE_DEPTH)
|
|
1003
1003
|
flightTooDeep();
|
|
1004
|
-
const awaited = await value;
|
|
1004
|
+
const awaited = isThenable(value) ? await value : value;
|
|
1005
1005
|
if (awaited === null) {
|
|
1006
1006
|
return null;
|
|
1007
1007
|
}
|
|
@@ -1166,6 +1166,11 @@ function isReactCompatElement(value) {
|
|
|
1166
1166
|
value !== null &&
|
|
1167
1167
|
value.$$typeof === REACT_COMPAT_ELEMENT_TYPE);
|
|
1168
1168
|
}
|
|
1169
|
+
function isThenable(value) {
|
|
1170
|
+
return (value !== null &&
|
|
1171
|
+
(typeof value === "object" || typeof value === "function") &&
|
|
1172
|
+
typeof value.then === "function");
|
|
1173
|
+
}
|
|
1169
1174
|
function isFormDataLike(value) {
|
|
1170
1175
|
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
1171
1176
|
}
|
package/dist/flight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight.js","sourceRoot":"","sources":["../src/flight.ts"],"names":[],"mappings":"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","sourcesContent":["import { createCacheScope, runWithCacheScope } from \"@reckona/mreact-compat/internal\";\nimport { getNativeFlight } from \"./native-flight.js\";\n\n/** Symbol tag used to identify client references in serialized Flight values. */\nexport const CLIENT_REFERENCE_TYPE = Symbol.for(\"modular.react.client_reference\");\n/** Symbol tag used to identify server references in serialized Flight values. */\nexport const SERVER_REFERENCE_TYPE = Symbol.for(\"modular.react.server_reference\");\n\nconst REACT_COMPAT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\");\nconst REACT_COMPAT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n\n/** Registered client reference included in a Flight response. */\nexport interface FlightClientReference {\n id: number;\n moduleId: string;\n exportName: string;\n chunks?: string[];\n}\n\n/** Input used to register a client reference before assigning a Flight id. */\nexport interface FlightClientReferenceInput {\n name: string;\n moduleId: string;\n exportName: string;\n}\n\n/** Client manifest entry with resolved module chunks. */\nexport interface FlightClientManifestEntry extends FlightClientReferenceInput {\n chunks: string[];\n}\n\n/** Function that can be invoked through a server action request. */\nexport type ServerAction = (...args: unknown[]) => unknown | Promise<unknown>;\n\n/** Validation result returned by server action guards. */\nexport type ServerActionValidationResult = boolean | string;\n\n/** Server action entry with optional argument validation. */\nexport interface ServerActionDescriptor {\n action: ServerAction;\n validateArgs?: (args: unknown[]) => ServerActionValidationResult;\n}\n\n/** Registry mapping server action keys to handlers. */\nexport type ServerActionRegistry = Record<string, ServerAction | ServerActionDescriptor>;\n\n/** Store used to reject replayed server action nonces. */\nexport interface ServerActionReplayStore {\n has(value: string): boolean;\n add(value: string): void;\n}\n\n/** Module export reference requested by a server action request. */\nexport interface ServerActionRequestReference {\n moduleId: string;\n exportName: string;\n}\n\n/** Security and validation options for createServerActionHandler. */\nexport interface ServerActionHandlerOptions {\n // Issue 076: secure defaults. When undefined, the handler enforces the\n // same-origin policy by comparing `Origin` to the request URL. Pass an\n // explicit array to extend the trust set, or `\"any\"` to disable the\n // check entirely (documented opt-out).\n allowedOrigins?: readonly string[] | \"any\";\n authorize?: (\n request: Request,\n reference: ServerActionRequestReference,\n args: unknown[],\n ) => ServerActionValidationResult | Promise<ServerActionValidationResult>;\n allowedActions?: readonly ServerActionRequestReference[];\n // Issue 076: CSRF is enabled by default. Pass `false` to disable\n // (documented opt-out for embedders that have their own scheme).\n csrf?:\n | boolean\n | {\n cookieName?: string;\n headerName?: string;\n };\n replayProtection?: {\n headerName?: string;\n seen: ServerActionReplayStore;\n };\n // Issue 076: bound by default so a hostile client cannot drive RSS via\n // an unbounded request body. The default is 1 MiB; pass a larger value\n // to allow bigger payloads.\n maxBodyBytes?: number;\n}\n\nconst DEFAULT_MAX_BODY_BYTES = 1024 * 1024;\nconst MAX_SERVER_ACTION_ARGUMENT_DEPTH = 64;\nconst MAX_SERVER_ACTION_ARGUMENT_ARRAY_LENGTH = 2_000;\nconst MAX_SERVER_ACTION_ARGUMENT_OBJECT_KEYS = 200;\nconst SERVER_ACTION_FORBIDDEN_JSON_KEYS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\n/** Options for embedding a serialized Flight response in a script tag. */\nexport interface FlightScriptOptions {\n id?: string;\n nonce?: string;\n}\n\n/** Registered server reference included in a Flight response. */\nexport interface FlightServerReference {\n id: number;\n moduleId: string;\n exportName: string;\n bound?: FlightModel[];\n}\n\n/** Runtime marker object representing a client module export. */\nexport interface ClientReference {\n $$typeof: typeof CLIENT_REFERENCE_TYPE;\n moduleId: string;\n exportName: string;\n chunks?: string[];\n}\n\n/** Runtime marker object representing a server module export. */\nexport interface ServerReference {\n $$typeof: typeof SERVER_REFERENCE_TYPE;\n moduleId: string;\n exportName: string;\n bound?: unknown[];\n}\n\n/** Serializable Flight payload with root model and module references. */\nexport interface FlightResponse {\n version: 1;\n root: FlightModel;\n clientReferences: FlightClientReference[];\n serverReferences: FlightServerReference[];\n}\n\n/** Recursive value model supported by the mreact Flight serializer. */\nexport type FlightModel =\n | null\n | string\n | number\n | boolean\n | FlightModel[]\n | FlightObjectModel\n | FlightElementModel\n | FlightClientReferenceModel\n | FlightServerReferenceModel\n | FlightDateModel\n | FlightBigIntModel\n | FlightNumberModel\n | FlightSymbolModel\n | FlightMapModel\n | FlightSetModel\n | FlightFormDataModel\n | FlightIterableModel\n | FlightErrorModel\n | FlightPromiseModel\n | FlightArrayBufferModel\n | FlightTypedArrayModel\n | FlightDataViewModel\n | { kind: \"undefined\" };\n\n/** Plain object shape inside a Flight model. */\nexport interface FlightObjectModel {\n kind?: never;\n [key: string]: FlightModel | undefined;\n}\n\n/** Serialized React-compatible element inside a Flight model. */\nexport interface FlightElementModel {\n kind: \"element\";\n type: string | FlightClientReferenceModel | { kind: \"fragment\" };\n key: string | null;\n props: Record<string, FlightModel>;\n}\n\n/** Reference to a client module export inside a Flight model. */\nexport interface FlightClientReferenceModel {\n kind: \"client-reference\";\n id: number;\n}\n\n/** Reference to a server module export inside a Flight model. */\nexport interface FlightServerReferenceModel {\n kind: \"server-reference\";\n id: number;\n}\n\n/** Serialized Date value inside a Flight model. */\nexport interface FlightDateModel {\n kind: \"date\";\n value: string;\n}\n\n/** Serialized bigint value inside a Flight model. */\nexport interface FlightBigIntModel {\n kind: \"bigint\";\n value: string;\n}\n\n/** Serialized non-finite or negative-zero number inside a Flight model. */\nexport interface FlightNumberModel {\n kind: \"number\";\n value: \"Infinity\" | \"-Infinity\" | \"NaN\" | \"-0\";\n}\n\n/** Serialized global symbol reference inside a Flight model. */\nexport interface FlightSymbolModel {\n kind: \"symbol\";\n name: string;\n}\n\n/** Serialized Map value inside a Flight model. */\nexport interface FlightMapModel {\n kind: \"map\";\n entries: [FlightModel, FlightModel][];\n}\n\n/** Serialized Set value inside a Flight model. */\nexport interface FlightSetModel {\n kind: \"set\";\n values: FlightModel[];\n}\n\n/** Serialized FormData value inside a Flight model. */\nexport interface FlightFormDataModel {\n kind: \"form-data\";\n entries: [string, FlightModel][];\n}\n\n/** Serialized iterable value inside a Flight model. */\nexport interface FlightIterableModel {\n kind: \"iterable\";\n values: FlightModel[];\n}\n\n/** Serialized Error value inside a Flight model. */\nexport interface FlightErrorModel {\n kind: \"error\";\n name: string;\n message: string;\n digest?: string;\n}\n\n/** Reference to an outlined promise chunk inside a Flight model. */\nexport interface FlightPromiseModel {\n kind: \"promise\";\n id: number;\n}\n\n/** Serialized ArrayBuffer value inside a Flight model. */\nexport interface FlightArrayBufferModel {\n kind: \"array-buffer\";\n bytes: number[];\n}\n\n/** Serialized typed array value inside a Flight model. */\nexport interface FlightTypedArrayModel {\n kind: \"typed-array\";\n arrayType: FlightTypedArrayName;\n bytes: number[];\n}\n\n/** Serialized DataView value inside a Flight model. */\nexport interface FlightDataViewModel {\n kind: \"data-view\";\n bytes: number[];\n}\n\n/** Typed array constructor names supported by the Flight serializer. */\nexport type FlightTypedArrayName =\n | \"Int8Array\"\n | \"Uint8Array\"\n | \"Uint8ClampedArray\"\n | \"Int16Array\"\n | \"Uint16Array\"\n | \"Int32Array\"\n | \"Uint32Array\"\n | \"Float32Array\"\n | \"Float64Array\"\n | \"BigInt64Array\"\n | \"BigUint64Array\";\n\nconst reactFlightBinaryRowTags = [\n \"A\",\n \"O\",\n \"o\",\n \"U\",\n \"S\",\n \"s\",\n \"L\",\n \"l\",\n \"G\",\n \"g\",\n \"M\",\n \"m\",\n \"V\",\n] as const;\nconst reactFlightRowTags = [\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"H\",\n \"I\",\n \"J\",\n \"N\",\n \"P\",\n \"R\",\n \"T\",\n \"W\",\n \"X\",\n \"x\",\n \"r\",\n] as const;\nconst reactFlightModelTokens = [\n \"$\",\n \"$$\",\n \"$@\",\n \"$D\",\n \"$E\",\n \"$F\",\n \"$I\",\n \"$K\",\n \"$L\",\n \"$N\",\n \"$Q\",\n \"$S\",\n \"$W\",\n \"$Y\",\n \"$Z\",\n \"$i\",\n \"$n\",\n \"$u\",\n \"$undefined\",\n] as const;\n\n/** Lists the React Flight row tags and model tokens covered by the serializer. */\nexport interface ReactFlightProtocolCoverage {\n binaryRowTags: string[];\n modelTokens: string[];\n rowTags: string[];\n}\n\n/** Returns the React Flight protocol tags and tokens supported by this package. */\nexport function getReactFlightProtocolCoverage(): ReactFlightProtocolCoverage {\n return {\n binaryRowTags: [...reactFlightBinaryRowTags],\n modelTokens: [...reactFlightModelTokens],\n rowTags: [...reactFlightRowTags],\n };\n}\n\ninterface ReactCompatElementLike {\n $$typeof: symbol;\n type: unknown;\n key: string | null;\n props: Record<string, unknown>;\n}\n\ninterface FlightSerializationState {\n clientReferences: FlightClientReference[];\n clientReferenceIndexes: Map<string, number>;\n serverReferences: FlightServerReference[];\n serverReferenceIndexes: Map<string, number>;\n}\n\n/** Creates a runtime client reference marker for a module export. */\nexport function createClientReference(\n moduleId: string,\n exportName = \"default\",\n chunks?: string[],\n): ClientReference {\n return {\n $$typeof: CLIENT_REFERENCE_TYPE,\n moduleId,\n exportName,\n ...(chunks === undefined ? {} : { chunks }),\n };\n}\n\n/** Creates a runtime server reference marker for a module export. */\nexport function createServerReference(\n moduleId: string,\n exportName = \"default\",\n bound?: unknown[],\n): ServerReference {\n return {\n $$typeof: SERVER_REFERENCE_TYPE,\n moduleId,\n exportName,\n ...(bound === undefined ? {} : { bound }),\n };\n}\n\n/** Returns true when a value is a runtime client reference marker. */\nexport function isClientReference(value: unknown): value is ClientReference {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === CLIENT_REFERENCE_TYPE\n );\n}\n\n/** Returns true when a value is a runtime server reference marker. */\nexport function isServerReference(value: unknown): value is ServerReference {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === SERVER_REFERENCE_TYPE\n );\n}\n\n/** Serializes a renderable value into a structured Flight response. */\nexport async function renderToFlightResponse<P extends Record<string, unknown>>(\n renderable: ((props: P) => unknown) | unknown,\n props = {} as P,\n): Promise<FlightResponse> {\n return runWithFlightCacheScope(async () => {\n const state: FlightSerializationState = {\n clientReferences: [],\n clientReferenceIndexes: new Map(),\n serverReferences: [],\n serverReferenceIndexes: new Map(),\n };\n const rootValue =\n typeof renderable === \"function\"\n ? await (renderable as (props: P) => unknown)(props)\n : renderable;\n\n return {\n version: 1,\n root: await serializeFlightValue(rootValue, state, 0),\n clientReferences: state.clientReferences,\n serverReferences: state.serverReferences,\n };\n });\n}\n\n/** Serializes a Flight response to JSON text. */\nexport function stringifyFlightResponse(response: FlightResponse): string {\n return JSON.stringify(response);\n}\n\n/** Renders a Flight response as an HTML script tag. */\nexport function renderFlightResponseScript(\n response: FlightResponse,\n options: FlightScriptOptions = {},\n): string {\n const idAttribute = options.id === undefined ? \"\" : ` id=\"${escapeAttribute(options.id)}\"`;\n const nonceAttribute =\n options.nonce === undefined ? \"\" : ` nonce=\"${escapeAttribute(options.nonce)}\"`;\n\n return `<script type=\"application/json\" data-mreact-flight${idAttribute}${nonceAttribute}>${serializeJsonForHtml(response)}</script>`;\n}\n\n/** Creates a request handler that validates and invokes registered server actions. */\nexport function createServerActionHandler(\n actions: ServerActionRegistry,\n options: ServerActionHandlerOptions = {},\n) {\n const allowedActionKeys = options.allowedActions?.map((reference) =>\n serverActionKey(reference.moduleId, reference.exportName),\n );\n const allowedActionSet = allowedActionKeys === undefined ? undefined : new Set(allowedActionKeys);\n\n return async (request: Request): Promise<Response> => {\n if (request.method !== \"POST\") {\n return jsonResponse({ ok: false, error: \"Method not allowed.\" }, 405);\n }\n\n const originResponse = validateRequestOrigin(request, options.allowedOrigins);\n\n if (originResponse !== undefined) {\n return originResponse;\n }\n\n const csrfResponse = validateCsrfToken(request, options.csrf);\n\n if (csrfResponse !== undefined) {\n return csrfResponse;\n }\n\n // Issue 076: mark the nonce as used only after the action runs.\n // The validator now just reads + checks; the commit happens in a\n // try/finally below.\n const nonceCheck = validateServerActionNonce(request, options.replayProtection);\n\n if (nonceCheck.response !== undefined) {\n return nonceCheck.response;\n }\n\n const payload = await readServerActionPayload(\n request,\n options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES,\n );\n\n if (payload instanceof Response) {\n return payload;\n }\n\n if (typeof payload.moduleId !== \"string\" || typeof payload.exportName !== \"string\") {\n return jsonResponse({ ok: false, error: \"Invalid server action reference.\" }, 400);\n }\n\n const reference = {\n moduleId: payload.moduleId,\n exportName: payload.exportName,\n };\n\n if (!isAllowedServerAction(reference, allowedActionSet)) {\n return jsonResponse({ ok: false, error: \"Unknown server action.\" }, 404);\n }\n\n const actionEntry = actions[serverActionKey(payload.moduleId, payload.exportName)];\n\n if (actionEntry === undefined) {\n return jsonResponse({ ok: false, error: \"Unknown server action.\" }, 404);\n }\n\n const action = getServerAction(actionEntry);\n const validateArgs = getServerActionArgsValidator(actionEntry);\n const boundArgs = Array.isArray(payload.bound) ? payload.bound : [];\n const extraArgs = Array.isArray(payload.args) ? payload.args : [];\n const argsStructure = validateServerActionJsonArgumentStructure(boundArgs, extraArgs);\n\n if (!argsStructure.valid) {\n return jsonResponse(\n {\n ok: false,\n error: \"Invalid server action argument structure.\",\n },\n 400,\n );\n }\n\n const args = [...boundArgs, ...extraArgs];\n const validationResult = validateArgs?.(args);\n\n if (validationResult !== undefined && validationResult !== true) {\n return jsonResponse(\n {\n ok: false,\n error:\n typeof validationResult === \"string\"\n ? validationResult\n : \"Invalid server action arguments.\",\n },\n 400,\n );\n }\n\n const authorizationResult = await options.authorize?.(request, reference, args);\n\n if (authorizationResult !== undefined && authorizationResult !== true) {\n return jsonResponse(\n {\n ok: false,\n error:\n typeof authorizationResult === \"string\"\n ? authorizationResult\n : \"Server action not authorized.\",\n },\n 403,\n );\n }\n\n try {\n const value = await action(...args);\n // Only commit the nonce on a successful run -- a flaky network\n // retry can otherwise lose the request permanently (Issue 076).\n if (nonceCheck.commit) nonceCheck.commit();\n return jsonResponse({ ok: true, value }, 200);\n } catch (error) {\n return jsonResponse(\n {\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n },\n 500,\n );\n }\n };\n}\n\n/** Encodes a structured Flight response into React Flight row text. */\nexport function toReactFlightRows(response: FlightResponse): string {\n // Issue 081 note: a native encoder exists in\n // `packages/router-native/src/flight.rs::encode_flight_response`\n // but is intentionally *not* wired here. Microbenchmarking on\n // 2026-05-13 showed the JS-stringify -> napi -> Rust-parse ->\n // Rust-stringify round-trip dominates and produces a 7-9x\n // regression vs. the pure JS path. Re-wiring it requires\n // accepting a `napi::JsObject` directly to avoid the double JSON\n // pass; tracked as a follow-up.\n const rows: string[] = [];\n const clientWireIds = new Map<number, number>();\n const serverWireIds = new Map<number, number>();\n let nextWireId = 1;\n\n for (const reference of response.clientReferences) {\n const wireId = nextWireId;\n nextWireId += 1;\n clientWireIds.set(reference.id, wireId);\n rows.push(\n `${formatReactFlightId(wireId)}:I${JSON.stringify([\n reference.moduleId,\n reference.chunks ?? [],\n reference.exportName,\n ])}`,\n );\n }\n\n const state: ReactFlightEncodingState = {\n clientWireIds,\n serverWireIds,\n outlineRows: rows,\n nextWireId,\n };\n\n for (const reference of response.serverReferences) {\n const wireId = state.nextWireId;\n state.nextWireId += 1;\n serverWireIds.set(reference.id, wireId);\n rows.push(\n `${formatReactFlightId(wireId)}:F${JSON.stringify({\n id: serverActionKey(reference.moduleId, reference.exportName),\n bound:\n reference.bound === undefined\n ? null\n : reference.bound.map((value) => encodeReactFlightModel(value, state)),\n name: reference.exportName,\n })}`,\n );\n }\n\n if (isFlightErrorModel(response.root)) {\n rows.push(`0:E${JSON.stringify(encodeReactFlightError(response.root))}`);\n } else {\n rows.push(`0:${JSON.stringify(encodeReactFlightModel(response.root, state))}`);\n }\n return rows.join(\"\\n\");\n}\n\n/** Decodes React Flight row text into a structured Flight response. */\nexport function fromReactFlightRows(rows: string): FlightResponse {\n // Issue 081 note: a native decoder exists in\n // `packages/router-native/src/flight.rs::decode_flight_rows`\n // but is intentionally *not* wired here. Benchmarking on\n // 2026-05-13 showed 4-14x regression vs. the pure JS walker —\n // V8's JSON.parse is already extremely optimized and the\n // napi -> serde_json::parse -> walk -> serde_json::serialize ->\n // JS.parse round-trip multiplies the work. Wiring it requires\n // returning a `napi::JsObject` directly (avoiding the double\n // JSON pass); see `docs/benchmarks/2026-05-13-flight-rust-port.md`.\n const lines = rows.split(/\\r?\\n/).filter(Boolean);\n const metadataLine = lines.find((line) => line.startsWith(\"M0:\"));\n const rootLine = lines.find((line) => line.startsWith(\"J0:\"));\n\n if (metadataLine !== undefined && rootLine !== undefined) {\n const metadata = JSON.parse(metadataLine.slice(3)) as Omit<FlightResponse, \"root\">;\n\n return {\n version: metadata.version,\n clientReferences: metadata.clientReferences,\n serverReferences: metadata.serverReferences,\n root: JSON.parse(rootLine.slice(3)) as FlightModel,\n };\n }\n\n const clientReferences: FlightClientReference[] = [];\n const serverReferences: FlightServerReference[] = [];\n const modelChunks = new Map<number, unknown>();\n const errorChunks = new Map<number, FlightErrorModel>();\n let root: FlightModel | undefined;\n\n for (const line of lines) {\n const row = parseReactFlightRow(line);\n\n if (row.tag === \"I\") {\n clientReferences.push(parseReactFlightClientReference(row.id, row.payload));\n continue;\n }\n\n if (row.tag === \"F\") {\n serverReferences.push(\n parseReactFlightServerReference(row.id, row.payload, modelChunks, errorChunks),\n );\n continue;\n }\n\n if (row.tag === \"E\") {\n const error = parseReactFlightError(row.payload);\n errorChunks.set(row.id, error);\n\n if (row.id === 0) {\n root = error;\n }\n continue;\n }\n\n if (row.tag === \"T\") {\n modelChunks.set(row.id, parseReactFlightTextChunk(row.payload));\n continue;\n }\n\n if (isReactFlightBinaryRowTag(row.tag)) {\n modelChunks.set(row.id, parseReactFlightBinaryChunk(row.tag, row.payload));\n continue;\n }\n\n if (isReactFlightMetadataTag(row.tag)) {\n continue;\n }\n\n if (row.tag === undefined && row.payload !== \"\") {\n modelChunks.set(row.id, JSON.parse(row.payload));\n }\n }\n\n if (root === undefined && modelChunks.has(0)) {\n root = decodeReactFlightModel(modelChunks.get(0), modelChunks, errorChunks);\n }\n\n if (root === undefined) {\n throw new Error(\"Invalid React Flight rows.\");\n }\n\n return {\n version: 1,\n root,\n clientReferences,\n serverReferences,\n };\n}\n\n/** Merges additional React Flight row text into an existing Flight response. */\nexport function mergeReactFlightRows(response: FlightResponse, rows: string): FlightResponse {\n // Issue 081 note: same finding as `fromReactFlightRows` — the native\n // merge path is slower than the JS one given the double-JSON tax.\n const modelChunks = new Map<number, unknown>();\n const errorChunks = new Map<number, FlightErrorModel>();\n const clientReferences = [...response.clientReferences];\n const serverReferences = [...response.serverReferences];\n\n for (const line of rows.split(/\\r?\\n/).filter(Boolean)) {\n const row = parseReactFlightRow(line);\n\n if (row.tag === \"I\") {\n clientReferences.push(parseReactFlightClientReference(row.id, row.payload));\n continue;\n }\n\n if (row.tag === \"F\") {\n serverReferences.push(\n parseReactFlightServerReference(row.id, row.payload, modelChunks, errorChunks),\n );\n continue;\n }\n\n if (row.tag === \"E\") {\n errorChunks.set(row.id, parseReactFlightError(row.payload));\n continue;\n }\n\n if (row.tag === \"T\") {\n modelChunks.set(row.id, parseReactFlightTextChunk(row.payload));\n continue;\n }\n\n if (isReactFlightBinaryRowTag(row.tag)) {\n modelChunks.set(row.id, parseReactFlightBinaryChunk(row.tag, row.payload));\n continue;\n }\n\n if (isReactFlightMetadataTag(row.tag)) {\n continue;\n }\n\n if (row.tag === undefined && row.payload !== \"\") {\n modelChunks.set(row.id, JSON.parse(row.payload));\n }\n }\n\n return {\n ...response,\n clientReferences,\n serverReferences,\n root: resolveFlightPromiseChunks(response.root, modelChunks, errorChunks),\n };\n}\n\n/** Builds a Flight client manifest from client references and chunk resolution. */\nexport function createFlightClientManifest(\n references: readonly FlightClientReferenceInput[],\n resolveChunks: (reference: FlightClientReferenceInput) => string[],\n): FlightClientManifestEntry[] {\n return references.map((reference) => ({\n ...reference,\n chunks: resolveChunks(reference),\n }));\n}\n\n/** Renders modulepreload links for client chunks referenced by a Flight response. */\nexport function renderFlightPreloadLinks(\n response: FlightResponse,\n options: { nonce?: string } = {},\n): string {\n const seen = new Set<string>();\n const nonceAttribute =\n options.nonce === undefined ? \"\" : ` nonce=\"${escapeAttribute(options.nonce)}\"`;\n\n return response.clientReferences\n .flatMap((reference) => reference.chunks ?? [])\n .filter((chunk) => {\n if (seen.has(chunk)) {\n return false;\n }\n\n seen.add(chunk);\n return true;\n })\n .map((chunk) => `<link rel=\"modulepreload\" href=\"${escapeAttribute(chunk)}\"${nonceAttribute}>`)\n .join(\"\");\n}\n\nfunction resolveFlightPromiseChunks(\n model: FlightModel,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth = 0,\n context: FlightDecodeContext = createFlightDecodeContext(),\n): FlightModel {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n\n if (\n model === null ||\n typeof model === \"string\" ||\n typeof model === \"number\" ||\n typeof model === \"boolean\"\n ) {\n return model;\n }\n\n if (Array.isArray(model)) {\n return model.map((item) =>\n resolveFlightPromiseChunks(item, modelChunks, errorChunks, depth + 1, context),\n );\n }\n\n if (model.kind === \"promise\") {\n const error = errorChunks.get(model.id);\n\n if (error !== undefined) {\n return error;\n }\n\n if (modelChunks.has(model.id)) {\n if (context.inProgressChunkIds.has(model.id)) {\n flightCycle(model.id);\n }\n\n context.inProgressChunkIds.add(model.id);\n try {\n return decodeReactFlightModel(\n modelChunks.get(model.id),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n } finally {\n context.inProgressChunkIds.delete(model.id);\n }\n }\n\n return model;\n }\n\n if (model.kind === \"element\") {\n return {\n ...model,\n props: Object.fromEntries(\n Object.entries(model.props).map(([key, value]) => [\n key,\n resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ]),\n ),\n };\n }\n\n if (model.kind === \"map\") {\n return {\n ...model,\n entries: model.entries.map(([key, value]): [FlightModel, FlightModel] => [\n resolveFlightPromiseChunks(key, modelChunks, errorChunks, depth + 1, context),\n resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ]),\n };\n }\n\n if (model.kind === \"set\") {\n return {\n ...model,\n values: model.values.map((value) =>\n resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ),\n };\n }\n\n if (\"kind\" in model) {\n return model;\n }\n\n return Object.fromEntries(\n Object.entries(model).map(([key, value]) => [\n key,\n value === undefined\n ? undefined\n : resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ]),\n );\n}\n\ninterface ReactFlightEncodingState {\n clientWireIds: ReadonlyMap<number, number>;\n serverWireIds: ReadonlyMap<number, number>;\n outlineRows: string[];\n nextWireId: number;\n}\n\nfunction encodeReactFlightModel(model: FlightModel, state: ReactFlightEncodingState): unknown {\n if (model === null || typeof model === \"number\" || typeof model === \"boolean\") {\n return model;\n }\n\n if (typeof model === \"string\") {\n return model.startsWith(\"$\") ? `$${model}` : model;\n }\n\n if (Array.isArray(model)) {\n return model.map((item) => encodeReactFlightModel(item, state));\n }\n\n if (model.kind === \"undefined\") {\n return \"$u\";\n }\n\n if (model.kind === \"date\") {\n return `$D${model.value}`;\n }\n\n if (model.kind === \"bigint\") {\n return `$n${model.value}`;\n }\n\n if (model.kind === \"number\") {\n if (model.value === \"Infinity\") {\n return \"$I\";\n }\n\n if (model.value === \"NaN\") {\n return \"$N\";\n }\n\n return `$${model.value}`;\n }\n\n if (model.kind === \"symbol\") {\n return `$S${model.name}`;\n }\n\n if (model.kind === \"map\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.entries.map(([key, value]) => [\n encodeReactFlightModel(key, state),\n encodeReactFlightModel(value, state),\n ]),\n );\n return `$Q${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"set\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.values.map((value) => encodeReactFlightModel(value, state)),\n );\n return `$W${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"form-data\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.entries.map(([key, value]) => [key, encodeReactFlightModel(value, state)]),\n );\n return `$K${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"iterable\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.values.map((value) => encodeReactFlightModel(value, state)),\n );\n return `$i${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"error\") {\n const id = state.nextWireId;\n state.nextWireId += 1;\n state.outlineRows.push(\n `${formatReactFlightId(id)}:E${JSON.stringify(encodeReactFlightError(model))}`,\n );\n return `$Z${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"promise\") {\n return `$@${formatReactFlightId(model.id)}`;\n }\n\n if (model.kind === \"server-reference\") {\n return `$F${state.serverWireIds.get(model.id) ?? model.id}`;\n }\n\n if (model.kind === \"client-reference\") {\n return `$L${state.clientWireIds.get(model.id) ?? model.id}`;\n }\n\n if (model.kind === \"element\") {\n return [\n \"$\",\n encodeReactFlightElementType(model.type, state.clientWireIds),\n model.key,\n encodeReactFlightProps(model.props, state),\n ];\n }\n\n if (isReactFlightBinaryModel(model)) {\n return model;\n }\n\n return encodeReactFlightProps(model, state);\n}\n\nfunction allocateReactFlightOutlineRow(state: ReactFlightEncodingState, payload: unknown): number {\n const id = state.nextWireId;\n state.nextWireId += 1;\n state.outlineRows.push(`${formatReactFlightId(id)}:${JSON.stringify(payload)}`);\n return id;\n}\n\nfunction encodeReactFlightElementType(\n type: FlightElementModel[\"type\"],\n clientWireIds: ReadonlyMap<number, number>,\n): string {\n if (typeof type === \"string\") {\n return type;\n }\n\n if (type.kind === \"fragment\") {\n return \"$Sreact.fragment\";\n }\n\n return `$L${clientWireIds.get(type.id) ?? type.id}`;\n}\n\nfunction encodeReactFlightProps(\n props: Record<string, FlightModel | undefined>,\n state: ReactFlightEncodingState,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(props)\n .filter((entry): entry is [string, FlightModel] => entry[1] !== undefined)\n .map(([key, value]) => [key, encodeReactFlightModel(value, state)]),\n );\n}\n\ninterface ReactFlightRow {\n id: number;\n tag?: string;\n payload: string;\n}\n\ntype ReactFlightBinaryRowTag =\n | \"A\"\n | \"O\"\n | \"o\"\n | \"U\"\n | \"S\"\n | \"s\"\n | \"L\"\n | \"l\"\n | \"G\"\n | \"g\"\n | \"M\"\n | \"m\"\n | \"V\";\n\nfunction parseReactFlightRow(line: string): ReactFlightRow {\n const separator = line.indexOf(\":\");\n\n if (separator < 0) {\n throw new Error(\"Invalid React Flight row.\");\n }\n\n const id = separator === 0 ? 0 : parseReactFlightId(line.slice(0, separator));\n const body = line.slice(separator + 1);\n const first = body[0];\n const hasTag = first !== undefined && isReactFlightRowTag(first, body);\n\n if (first !== undefined && !hasTag && looksLikeUnsupportedReactFlightTag(first, body)) {\n throw new Error(`Unsupported React Flight row tag: ${first}`);\n }\n\n return {\n id,\n ...(hasTag ? { tag: first } : {}),\n payload: hasTag ? body.slice(1) : body,\n };\n}\n\nfunction looksLikeUnsupportedReactFlightTag(tag: string, body: string): boolean {\n return /^[A-Z]$/.test(tag) && (body[1] === \"{\" || body[1] === \"[\" || body[1] === '\"');\n}\n\nfunction parseReactFlightTextChunk(payload: string): string {\n const separator = payload.indexOf(\",\");\n\n if (separator < 0) {\n throw new Error(\"Invalid React Flight text row.\");\n }\n\n return payload.slice(separator + 1);\n}\n\nfunction parseReactFlightBinaryChunk(\n tag: ReactFlightBinaryRowTag,\n payload: string,\n): FlightArrayBufferModel | FlightTypedArrayModel | FlightDataViewModel {\n const separator = payload.indexOf(\",\");\n\n if (separator < 0) {\n throw new Error(\"Invalid React Flight binary row.\");\n }\n\n const byteLength = parseReactFlightId(payload.slice(0, separator));\n const bytes = decodeBase64Bytes(payload.slice(separator + 1));\n\n if (bytes.length !== byteLength) {\n throw new Error(\"React Flight binary row length did not match declared payload length.\");\n }\n\n return createReactFlightBinaryModel(tag, bytes);\n}\n\nfunction isReactFlightMetadataTag(tag: string | undefined): boolean {\n return (\n tag === \"H\" ||\n tag === \"N\" ||\n tag === \"P\" ||\n tag === \"D\" ||\n tag === \"J\" ||\n tag === \"W\" ||\n tag === \"R\" ||\n tag === \"r\" ||\n tag === \"X\" ||\n tag === \"x\" ||\n tag === \"C\"\n );\n}\n\nfunction isReactFlightRowTag(tag: string, body: string): boolean {\n if (\n tag === \"I\" ||\n tag === \"F\" ||\n tag === \"E\" ||\n tag === \"T\" ||\n tag === \"H\" ||\n tag === \"N\" ||\n tag === \"P\" ||\n tag === \"D\" ||\n tag === \"J\" ||\n tag === \"W\" ||\n tag === \"R\" ||\n tag === \"r\" ||\n tag === \"X\" ||\n tag === \"x\" ||\n tag === \"C\"\n ) {\n return true;\n }\n\n return isReactFlightBinaryRowTag(tag) && /^[AOoUSsLlGgMmV][0-9a-f]+,/i.test(body);\n}\n\nfunction isReactFlightBinaryRowTag(tag: string | undefined): tag is ReactFlightBinaryRowTag {\n return (\n tag === \"A\" ||\n tag === \"O\" ||\n tag === \"o\" ||\n tag === \"U\" ||\n tag === \"S\" ||\n tag === \"s\" ||\n tag === \"L\" ||\n tag === \"l\" ||\n tag === \"G\" ||\n tag === \"g\" ||\n tag === \"M\" ||\n tag === \"m\" ||\n tag === \"V\"\n );\n}\n\nfunction createReactFlightBinaryModel(\n tag: ReactFlightBinaryRowTag,\n bytes: Uint8Array,\n): FlightArrayBufferModel | FlightTypedArrayModel | FlightDataViewModel {\n const byteValues = Array.from(bytes);\n\n if (tag === \"A\") {\n return {\n kind: \"array-buffer\",\n bytes: byteValues,\n };\n }\n\n if (tag === \"V\") {\n return {\n kind: \"data-view\",\n bytes: byteValues,\n };\n }\n\n return {\n kind: \"typed-array\",\n arrayType: getReactFlightTypedArrayName(tag),\n bytes: byteValues,\n };\n}\n\nfunction getReactFlightTypedArrayName(\n tag: Exclude<ReactFlightBinaryRowTag, \"A\" | \"V\">,\n): FlightTypedArrayName {\n switch (tag) {\n case \"O\":\n return \"Int8Array\";\n case \"o\":\n return \"Uint8Array\";\n case \"U\":\n return \"Uint8ClampedArray\";\n case \"S\":\n return \"Int16Array\";\n case \"s\":\n return \"Uint16Array\";\n case \"L\":\n return \"Int32Array\";\n case \"l\":\n return \"Uint32Array\";\n case \"G\":\n return \"Float32Array\";\n case \"g\":\n return \"Float64Array\";\n case \"M\":\n return \"BigInt64Array\";\n case \"m\":\n return \"BigUint64Array\";\n default:\n throw new Error(`Unsupported React Flight typed array row tag: ${tag}`);\n }\n}\n\nfunction decodeBase64Bytes(value: string): Uint8Array {\n // Issue 081: route through the native binding when available. The\n // native implementation accepts both URL-safe and standard alphabets\n // and tolerates missing padding, matching the JS fallback below.\n const native = getNativeFlight()?.decodeFlightBase64;\n\n if (native !== undefined) {\n const result = native(value);\n // napi-rs returns a Buffer which is a Uint8Array subclass; the\n // callsite types it as Uint8Array so this is structurally fine.\n return result instanceof Uint8Array ? result : new Uint8Array(result);\n }\n\n const normalized = value.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, \"=\");\n const binary = globalThis.atob(padded);\n const bytes = new Uint8Array(binary.length);\n\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n\n return bytes;\n}\n\nfunction parseReactFlightClientReference(id: number, payload: string): FlightClientReference {\n const value = JSON.parse(payload) as unknown;\n\n if (Array.isArray(value)) {\n return {\n id,\n moduleId: String(value[0]),\n chunks: Array.isArray(value[1]) ? value[1].map(String) : [],\n exportName: String(value[2] ?? \"default\"),\n };\n }\n\n const object = valueIsObject(value) ? value : {};\n\n return {\n id,\n moduleId: String(object.id ?? object.moduleId ?? \"\"),\n chunks: Array.isArray(object.chunks) ? object.chunks.map(String) : [],\n exportName: String(object.name ?? object.exportName ?? \"default\"),\n };\n}\n\nfunction parseReactFlightServerReference(\n id: number,\n payload: string,\n modelChunks: ReadonlyMap<number, unknown> = new Map(),\n errorChunks: ReadonlyMap<number, FlightErrorModel> = new Map(),\n): FlightServerReference {\n const value = JSON.parse(payload) as unknown;\n const object = valueIsObject(value) ? value : {};\n const actionId = String(object.id ?? \"\");\n const separator = actionId.lastIndexOf(\"#\");\n const bound = Array.isArray(object.bound)\n ? object.bound.map((entry) => decodeReactFlightModel(entry, modelChunks, errorChunks))\n : undefined;\n\n return {\n id,\n moduleId: separator < 0 ? actionId : actionId.slice(0, separator),\n exportName:\n typeof object.name === \"string\"\n ? object.name\n : separator < 0\n ? \"default\"\n : actionId.slice(separator + 1),\n ...(bound === undefined ? {} : { bound }),\n };\n}\n\n// Issue 079: hard cap on Flight tree depth to prevent stack-exhaustion\n// DoS from a deeply-nested payload. The cap is far higher than any\n// legitimate component tree.\nconst MAX_FLIGHT_DECODE_DEPTH = 256;\n\nclass FlightDecodeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"FlightDecodeError\";\n }\n}\n\nfunction flightTooDeep(): never {\n throw new FlightDecodeError(\n `MR_FLIGHT_TOO_DEEP: nested deeper than ${MAX_FLIGHT_DECODE_DEPTH} levels`,\n );\n}\n\nfunction flightCycle(id: number): never {\n throw new FlightDecodeError(`MR_FLIGHT_CYCLE: cyclic chunk reference ${id}`);\n}\n\ninterface FlightDecodeContext {\n inProgressChunkIds: Set<number>;\n}\n\nfunction createFlightDecodeContext(): FlightDecodeContext {\n return {\n inProgressChunkIds: new Set(),\n };\n}\n\nfunction decodeReactFlightModel(\n value: unknown,\n modelChunks: ReadonlyMap<number, unknown> = new Map(),\n errorChunks: ReadonlyMap<number, FlightErrorModel> = new Map(),\n depth = 0,\n context: FlightDecodeContext = createFlightDecodeContext(),\n): FlightModel {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n if (value === null || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n return decodeReactFlightString(value, modelChunks, errorChunks, depth, context);\n }\n\n if (Array.isArray(value)) {\n if (value[0] === \"$\") {\n return {\n kind: \"element\",\n type: decodeReactFlightElementType(value[1]),\n key: typeof value[2] === \"string\" ? value[2] : null,\n props: decodeReactFlightProps(\n valueIsObject(value[3]) ? value[3] : {},\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n ),\n };\n }\n\n return value.map((item) =>\n decodeReactFlightModel(item, modelChunks, errorChunks, depth + 1, context),\n );\n }\n\n if (isReactFlightBinaryModel(value)) {\n return value;\n }\n\n if (valueIsObject(value)) {\n return decodeReactFlightProps(value, modelChunks, errorChunks, depth + 1, context);\n }\n\n return { kind: \"undefined\" };\n}\n\nfunction decodeReactFlightString(\n value: string,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth: number,\n context: FlightDecodeContext,\n): FlightModel {\n if (value === \"$undefined\" || value === \"$u\") {\n return { kind: \"undefined\" };\n }\n\n if (value.startsWith(\"$$\")) {\n return value.slice(1);\n }\n\n if (value === \"$I\") {\n return { kind: \"number\", value: \"Infinity\" };\n }\n\n if (value === \"$-Infinity\") {\n return { kind: \"number\", value: \"-Infinity\" };\n }\n\n if (value === \"$-0\") {\n return { kind: \"number\", value: \"-0\" };\n }\n\n if (value === \"$N\") {\n return { kind: \"number\", value: \"NaN\" };\n }\n\n if (value.startsWith(\"$D\")) {\n return { kind: \"date\", value: value.slice(2) };\n }\n\n if (value.startsWith(\"$n\")) {\n return { kind: \"bigint\", value: value.slice(2) };\n }\n\n if (/^\\$[AOoUSsLlGgMmV][0-9a-f]+$/.test(value)) {\n return decodeReactFlightChunk(value.slice(2), modelChunks, errorChunks, depth + 1, context);\n }\n\n if (value.startsWith(\"$S\")) {\n return { kind: \"symbol\", name: value.slice(2) };\n }\n\n if (/^\\$F[0-9a-f]+$/i.test(value)) {\n return {\n kind: \"server-reference\",\n id: parseReactFlightId(value.slice(2)),\n };\n }\n\n if (/^\\$L[0-9a-f]+$/i.test(value)) {\n return {\n kind: \"client-reference\",\n id: parseReactFlightId(value.slice(2)),\n };\n }\n\n if (/^\\$@[0-9a-f]*$/i.test(value)) {\n return {\n kind: \"promise\",\n id: value.length === 2 ? 0 : parseReactFlightId(value.slice(2)),\n };\n }\n\n if (/^\\$Q[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n const entries = Array.isArray(decoded)\n ? decoded.map((entry): [FlightModel, FlightModel] =>\n Array.isArray(entry)\n ? [entry[0] ?? { kind: \"undefined\" }, entry[1] ?? { kind: \"undefined\" }]\n : [entry, { kind: \"undefined\" }],\n )\n : [];\n\n return {\n kind: \"map\",\n entries,\n };\n }\n\n if (/^\\$W[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n\n return {\n kind: \"set\",\n values: Array.isArray(decoded) ? decoded : [],\n };\n }\n\n if (/^\\$K[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n const entries = Array.isArray(decoded)\n ? decoded.flatMap((entry): [string, FlightModel][] =>\n Array.isArray(entry) && typeof entry[0] === \"string\"\n ? [[entry[0], entry[1] ?? { kind: \"undefined\" }]]\n : [],\n )\n : [];\n\n return {\n kind: \"form-data\",\n entries,\n };\n }\n\n if (/^\\$i[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n\n return {\n kind: \"iterable\",\n values: Array.isArray(decoded) ? decoded : [],\n };\n }\n\n if (/^\\$Z[0-9a-f]+$/i.test(value)) {\n return (\n errorChunks.get(parseReactFlightId(value.slice(2))) ?? {\n kind: \"error\",\n name: \"Error\",\n message: \"Unknown React Flight error.\",\n }\n );\n }\n\n if (value === \"$Y\" || value.startsWith(\"$E\")) {\n return { kind: \"undefined\" };\n }\n\n if (/^\\$[0-9a-f]+$/i.test(value)) {\n return decodeReactFlightChunk(value.slice(1), modelChunks, errorChunks, depth + 1, context);\n }\n\n return value;\n}\n\nfunction decodeReactFlightChunk(\n id: string,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth: number,\n context: FlightDecodeContext,\n): FlightModel {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n const numericId = parseReactFlightId(id);\n const error = errorChunks.get(numericId);\n\n if (error !== undefined) {\n return error;\n }\n\n if (!modelChunks.has(numericId)) {\n return {\n kind: \"promise\",\n id: numericId,\n };\n }\n\n if (context.inProgressChunkIds.has(numericId)) {\n flightCycle(numericId);\n }\n\n context.inProgressChunkIds.add(numericId);\n try {\n return decodeReactFlightModel(\n modelChunks.get(numericId),\n modelChunks,\n errorChunks,\n depth,\n context,\n );\n } finally {\n context.inProgressChunkIds.delete(numericId);\n }\n}\n\nfunction decodeReactFlightElementType(value: unknown): FlightElementModel[\"type\"] {\n if (value === \"$Sreact.fragment\") {\n return { kind: \"fragment\" };\n }\n\n if (typeof value === \"string\" && /^\\$L[0-9a-f]+$/i.test(value)) {\n return {\n kind: \"client-reference\",\n id: parseReactFlightId(value.slice(2)),\n };\n }\n\n return typeof value === \"string\" ? value : String(value);\n}\n\nfunction decodeReactFlightProps(\n value: Record<string, unknown>,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth = 0,\n context: FlightDecodeContext = createFlightDecodeContext(),\n): Record<string, FlightModel> {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n return Object.fromEntries(\n Object.entries(value).map(([key, child]) => [\n key,\n decodeReactFlightModel(child, modelChunks, errorChunks, depth + 1, context),\n ]),\n );\n}\n\nfunction isReactFlightBinaryModel(\n value: unknown,\n): value is FlightArrayBufferModel | FlightTypedArrayModel | FlightDataViewModel {\n return (\n valueIsObject(value) &&\n (value.kind === \"array-buffer\" || value.kind === \"typed-array\" || value.kind === \"data-view\")\n );\n}\n\nfunction parseReactFlightError(payload: string): FlightErrorModel {\n const value = JSON.parse(payload) as unknown;\n const object = valueIsObject(value) ? value : {};\n const digest = typeof object.digest === \"string\" ? object.digest : undefined;\n\n return {\n kind: \"error\",\n name: typeof object.name === \"string\" ? object.name : \"Error\",\n message: typeof object.message === \"string\" ? object.message : \"React Flight error.\",\n ...(digest === undefined ? {} : { digest }),\n };\n}\n\nfunction encodeReactFlightError(model: FlightErrorModel): Record<string, unknown> {\n return {\n digest: model.digest ?? \"\",\n name: model.name,\n message: model.message,\n stack: [],\n env: \"Server\",\n };\n}\n\nfunction isFlightErrorModel(model: FlightModel): model is FlightErrorModel {\n return (\n typeof model === \"object\" && model !== null && !Array.isArray(model) && model.kind === \"error\"\n );\n}\n\nfunction valueIsObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction formatReactFlightId(id: number): string {\n return id.toString(16);\n}\n\nfunction parseReactFlightId(value: string): number {\n return Number.parseInt(value, 16);\n}\n\nasync function serializeFlightValue(\n value: unknown,\n state: FlightSerializationState,\n depth: number,\n): Promise<FlightModel> {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n\n const awaited = await value;\n\n if (awaited === null) {\n return null;\n }\n\n if (awaited === undefined) {\n return { kind: \"undefined\" };\n }\n\n if (typeof awaited === \"string\" || typeof awaited === \"boolean\") {\n return awaited;\n }\n\n if (typeof awaited === \"number\") {\n if (Number.isNaN(awaited)) {\n return { kind: \"number\", value: \"NaN\" };\n }\n\n if (awaited === Infinity) {\n return { kind: \"number\", value: \"Infinity\" };\n }\n\n if (awaited === -Infinity) {\n return { kind: \"number\", value: \"-Infinity\" };\n }\n\n if (Object.is(awaited, -0)) {\n return { kind: \"number\", value: \"-0\" };\n }\n\n return awaited;\n }\n\n if (typeof awaited === \"bigint\") {\n return { kind: \"bigint\", value: awaited.toString() };\n }\n\n if (typeof awaited === \"symbol\") {\n return { kind: \"symbol\", name: Symbol.keyFor(awaited) ?? awaited.description ?? \"\" };\n }\n\n if (Array.isArray(awaited)) {\n return await Promise.all(awaited.map((item) => serializeFlightValue(item, state, depth + 1)));\n }\n\n if (isServerReference(awaited)) {\n return {\n kind: \"server-reference\",\n id: await getServerReferenceId(awaited, state),\n };\n }\n\n if (isReactCompatElement(awaited)) {\n return await serializeElement(awaited, state, depth + 1);\n }\n\n if (awaited instanceof Date) {\n return { kind: \"date\", value: awaited.toJSON() };\n }\n\n if (awaited instanceof Map) {\n return {\n kind: \"map\",\n entries: await Promise.all(\n Array.from(awaited.entries()).map(\n async ([key, value]) =>\n [\n await serializeFlightValue(key, state, depth + 1),\n await serializeFlightValue(value, state, depth + 1),\n ] as [FlightModel, FlightModel],\n ),\n ),\n };\n }\n\n if (awaited instanceof Set) {\n return {\n kind: \"set\",\n values: await Promise.all(\n Array.from(awaited.values()).map((value) => serializeFlightValue(value, state, depth + 1)),\n ),\n };\n }\n\n if (isFormDataLike(awaited)) {\n return {\n kind: \"form-data\",\n entries: await Promise.all(\n Array.from(awaited.entries()).map(\n async ([key, value]) =>\n [key, await serializeFlightValue(value, state, depth + 1)] as [string, FlightModel],\n ),\n ),\n };\n }\n\n if (isIterableObject(awaited)) {\n return {\n kind: \"iterable\",\n values: await Promise.all(\n Array.from(awaited).map((value) => serializeFlightValue(value, state, depth + 1)),\n ),\n };\n }\n\n if (awaited instanceof Error) {\n return {\n kind: \"error\",\n name: awaited.name,\n message: awaited.message,\n };\n }\n\n if (typeof awaited === \"object\") {\n return await serializeObject(awaited as Record<string, unknown>, state, depth + 1);\n }\n\n throw new TypeError(`Unsupported Flight value: ${typeof awaited}`);\n}\n\nasync function serializeElement(\n element: ReactCompatElementLike,\n state: FlightSerializationState,\n depth: number,\n): Promise<FlightElementModel | FlightModel> {\n if (typeof element.type === \"function\") {\n return await serializeFlightValue(element.type(element.props), state, depth + 1);\n }\n\n if (isClientReference(element.type)) {\n return {\n kind: \"element\",\n type: {\n kind: \"client-reference\",\n id: getClientReferenceId(element.type, state),\n },\n key: element.key,\n props: await serializeProps(element.props, state, depth + 1),\n };\n }\n\n if (typeof element.type === \"string\") {\n return {\n kind: \"element\",\n type: element.type,\n key: element.key,\n props: await serializeProps(element.props, state, depth + 1),\n };\n }\n\n if (element.type === REACT_COMPAT_FRAGMENT_TYPE) {\n return {\n kind: \"element\",\n type: { kind: \"fragment\" },\n key: element.key,\n props: await serializeProps(element.props, state, depth + 1),\n };\n }\n\n throw new TypeError(\"Unsupported Flight element type.\");\n}\n\nasync function serializeProps(\n props: Record<string, unknown>,\n state: FlightSerializationState,\n depth: number,\n): Promise<Record<string, FlightModel>> {\n const entries = await Promise.all(\n Object.entries(props).map(\n async ([key, value]) => [key, await serializeFlightValue(value, state, depth + 1)] as const,\n ),\n );\n\n return Object.fromEntries(entries);\n}\n\nasync function serializeObject(\n object: Record<string, unknown>,\n state: FlightSerializationState,\n depth: number,\n): Promise<FlightObjectModel> {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(object).map(\n async ([key, value]) => [key, await serializeFlightValue(value, state, depth + 1)] as const,\n ),\n ),\n ) as FlightObjectModel;\n}\n\nfunction getClientReferenceId(reference: ClientReference, state: FlightSerializationState): number {\n const key = `${reference.moduleId}:${reference.exportName}`;\n const existing = state.clientReferenceIndexes.get(key);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const id = state.clientReferences.length;\n state.clientReferences.push({\n id,\n moduleId: reference.moduleId,\n exportName: reference.exportName,\n ...(reference.chunks === undefined ? {} : { chunks: reference.chunks }),\n });\n state.clientReferenceIndexes.set(key, id);\n return id;\n}\n\nasync function getServerReferenceId(\n reference: ServerReference,\n state: FlightSerializationState,\n): Promise<number> {\n const serializedBound =\n reference.bound === undefined\n ? undefined\n : await Promise.all(reference.bound.map((value) => serializeFlightValue(value, state, 0)));\n const key = `${reference.moduleId}:${reference.exportName}:${JSON.stringify(serializedBound ?? null)}`;\n const existing = state.serverReferenceIndexes.get(key);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const id = state.serverReferences.length;\n state.serverReferences.push({\n id,\n moduleId: reference.moduleId,\n exportName: reference.exportName,\n ...(serializedBound === undefined ? {} : { bound: serializedBound }),\n });\n state.serverReferenceIndexes.set(key, id);\n return id;\n}\n\nfunction isReactCompatElement(value: unknown): value is ReactCompatElementLike {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_ELEMENT_TYPE\n );\n}\n\nfunction isFormDataLike(value: unknown): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nfunction isIterableObject(value: unknown): value is Iterable<unknown> {\n return typeof value === \"object\" && value !== null && Symbol.iterator in value;\n}\n\nfunction serverActionKey(moduleId: string, exportName: string): string {\n return `${moduleId}#${exportName}`;\n}\n\nasync function readServerActionPayload(\n request: Request,\n maxBodyBytes: number,\n): Promise<\n | {\n moduleId?: unknown;\n exportName?: unknown;\n bound?: unknown;\n args?: unknown;\n }\n | Response\n> {\n // Issue 076: bound the body before JSON.parse. The Content-Length\n // header (when present) is the cheap pre-check; the streaming reader\n // catches chunked / missing-length bodies too.\n const declaredLength = Number(request.headers.get(\"content-length\") ?? \"NaN\");\n if (Number.isFinite(declaredLength) && declaredLength > maxBodyBytes) {\n return jsonResponse({ ok: false, error: \"Payload too large.\" }, 413);\n }\n\n const body = request.body;\n let text = \"\";\n if (body !== null) {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let total = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n total += value.byteLength;\n if (total > maxBodyBytes) {\n await reader.cancel();\n return jsonResponse({ ok: false, error: \"Payload too large.\" }, 413);\n }\n text += decoder.decode(value, { stream: true });\n }\n text += decoder.decode();\n } finally {\n reader.releaseLock?.();\n }\n } else {\n text = await request.text();\n }\n\n try {\n return JSON.parse(text) as {\n moduleId?: unknown;\n exportName?: unknown;\n bound?: unknown;\n args?: unknown;\n };\n } catch {\n return jsonResponse({ ok: false, error: \"Invalid JSON payload.\" }, 400);\n }\n}\n\nfunction validateServerActionJsonArgumentStructure(\n boundArgs: readonly unknown[],\n args: readonly unknown[],\n): { valid: true } | { valid: false } {\n const stack: { depth: number; value: unknown }[] = [\n { depth: 0, value: boundArgs },\n { depth: 0, value: args },\n ];\n const seen = new WeakSet<object>();\n\n while (stack.length > 0) {\n const current = stack.pop();\n if (current === undefined) {\n continue;\n }\n\n if (current.depth > MAX_SERVER_ACTION_ARGUMENT_DEPTH) {\n return { valid: false };\n }\n\n if (current.value === null || typeof current.value !== \"object\") {\n continue;\n }\n\n if (seen.has(current.value)) {\n continue;\n }\n seen.add(current.value);\n\n if (Array.isArray(current.value)) {\n if (current.value.length > MAX_SERVER_ACTION_ARGUMENT_ARRAY_LENGTH) {\n return { valid: false };\n }\n\n for (const item of current.value) {\n stack.push({ depth: current.depth + 1, value: item });\n }\n continue;\n }\n\n const entries = Object.entries(current.value);\n if (entries.length > MAX_SERVER_ACTION_ARGUMENT_OBJECT_KEYS) {\n return { valid: false };\n }\n\n for (const [key, value] of entries) {\n if (SERVER_ACTION_FORBIDDEN_JSON_KEYS.has(key)) {\n return { valid: false };\n }\n stack.push({ depth: current.depth + 1, value });\n }\n }\n\n return { valid: true };\n}\n\nfunction getServerAction(entry: ServerAction | ServerActionDescriptor): ServerAction {\n return typeof entry === \"function\" ? entry : entry.action;\n}\n\nfunction isAllowedServerAction(\n reference: ServerActionRequestReference,\n allowedActionSet: ReadonlySet<string> | undefined,\n): boolean {\n if (allowedActionSet === undefined) {\n return true;\n }\n\n return allowedActionSet.has(serverActionKey(reference.moduleId, reference.exportName));\n}\n\nfunction getServerActionArgsValidator(\n entry: ServerAction | ServerActionDescriptor,\n): ServerActionDescriptor[\"validateArgs\"] {\n return typeof entry === \"function\" ? undefined : entry.validateArgs;\n}\n\nfunction runWithFlightCacheScope<T>(callback: () => T): T {\n const scope = createCacheScope();\n scope.ownerStack.push(\"renderToFlightResponse\");\n return runWithCacheScope(scope, callback);\n}\n\nfunction validateRequestOrigin(\n request: Request,\n allowedOrigins: ServerActionHandlerOptions[\"allowedOrigins\"],\n): Response | undefined {\n // Issue 076: secure default. `\"any\"` disables the check (explicit\n // opt-out for embedders behind their own auth boundary). Otherwise we\n // enforce same-origin by default and extend with the array if given.\n if (allowedOrigins === \"any\") return undefined;\n\n const origin = request.headers.get(\"origin\");\n // Browsers omit `Origin` on same-origin GETs but include it on\n // cross-site POSTs. Missing Origin therefore signals same-origin\n // (or non-browser traffic) and is allowed.\n if (origin === null) return undefined;\n\n let expected: string | undefined;\n try {\n expected = new URL(request.url).origin;\n } catch {\n expected = undefined;\n }\n\n if (expected !== undefined && origin === expected) return undefined;\n if (allowedOrigins !== undefined && allowedOrigins.includes(origin)) {\n return undefined;\n }\n return jsonResponse({ ok: false, error: \"Origin not allowed.\" }, 403);\n}\n\nfunction validateCsrfToken(\n request: Request,\n csrf: ServerActionHandlerOptions[\"csrf\"],\n): Response | undefined {\n // Issue 076: CSRF check is on by default. `false` disables it\n // (documented opt-out); `true` / object override the names.\n if (csrf === false) return undefined;\n\n const config = typeof csrf === \"object\" ? csrf : {};\n const headerName = config.headerName ?? \"x-mreact-csrf\";\n const cookieName = config.cookieName ?? \"mreact.csrf\";\n const headerToken = request.headers.get(headerName);\n const cookieToken = readCookie(request.headers.get(\"cookie\"), cookieName);\n\n return headerToken !== null &&\n cookieToken !== undefined &&\n constantTimeStringEqual(headerToken, cookieToken)\n ? undefined\n : jsonResponse({ ok: false, error: \"Invalid CSRF token.\" }, 403);\n}\n\nfunction constantTimeStringEqual(left: string, right: string): boolean {\n const length = Math.max(left.length, right.length);\n let diff = left.length ^ right.length;\n\n for (let index = 0; index < length; index += 1) {\n diff |= (left.charCodeAt(index) || 0) ^ (right.charCodeAt(index) || 0);\n }\n\n return diff === 0;\n}\n\nfunction validateServerActionNonce(\n request: Request,\n replayProtection: ServerActionHandlerOptions[\"replayProtection\"],\n): { response?: Response; commit?: () => void } {\n if (replayProtection === undefined) {\n return {};\n }\n\n const headerName = replayProtection.headerName ?? \"x-mreact-action-nonce\";\n const nonce = request.headers.get(headerName);\n\n if (nonce === null || nonce.length === 0) {\n return {\n response: jsonResponse({ ok: false, error: \"Missing server action nonce.\" }, 400),\n };\n }\n\n if (replayProtection.seen.has(nonce)) {\n return {\n response: jsonResponse({ ok: false, error: \"Server action nonce was already used.\" }, 409),\n };\n }\n\n // Issue 076: defer the .add() until the action succeeds so a failed\n // run does not consume a replay slot. The caller invokes `commit()`\n // on the success path only.\n return {\n commit: () => replayProtection.seen.add(nonce),\n };\n}\n\nfunction readCookie(cookieHeader: string | null, name: string): string | undefined {\n if (cookieHeader === null) {\n return undefined;\n }\n\n for (const part of cookieHeader.split(\";\")) {\n const [rawKey, ...rawValue] = part.trim().split(\"=\");\n\n if (rawKey === name) {\n const raw = rawValue.join(\"=\");\n if (raw.indexOf(\"%\") === -1) {\n return raw;\n }\n\n // Issue 076 / 072: malformed `%`-escapes raise URIError; treat\n // the cookie as absent so a bogus cookie cannot abort the handler.\n try {\n return decodeURIComponent(raw);\n } catch {\n return undefined;\n }\n }\n }\n\n return undefined;\n}\n\nfunction jsonResponse(value: unknown, status: number): Response {\n return new Response(JSON.stringify(value), {\n status,\n headers: { \"content-type\": \"application/json\" },\n });\n}\n\nfunction serializeJsonForHtml(value: unknown): string {\n return JSON.stringify(value)\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n}\n\nfunction escapeAttribute(value: string): string {\n return value\n .replaceAll(\"&\", \"&\")\n .replaceAll('\"', \""\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"flight.js","sourceRoot":"","sources":["../src/flight.ts"],"names":[],"mappings":"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","sourcesContent":["import { createCacheScope, runWithCacheScope } from \"@reckona/mreact-compat/internal\";\nimport { getNativeFlight } from \"./native-flight.js\";\n\n/** Symbol tag used to identify client references in serialized Flight values. */\nexport const CLIENT_REFERENCE_TYPE = Symbol.for(\"modular.react.client_reference\");\n/** Symbol tag used to identify server references in serialized Flight values. */\nexport const SERVER_REFERENCE_TYPE = Symbol.for(\"modular.react.server_reference\");\n\nconst REACT_COMPAT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\");\nconst REACT_COMPAT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n\n/** Registered client reference included in a Flight response. */\nexport interface FlightClientReference {\n id: number;\n moduleId: string;\n exportName: string;\n chunks?: string[];\n}\n\n/** Input used to register a client reference before assigning a Flight id. */\nexport interface FlightClientReferenceInput {\n name: string;\n moduleId: string;\n exportName: string;\n}\n\n/** Client manifest entry with resolved module chunks. */\nexport interface FlightClientManifestEntry extends FlightClientReferenceInput {\n chunks: string[];\n}\n\n/** Function that can be invoked through a server action request. */\nexport type ServerAction = (...args: unknown[]) => unknown | Promise<unknown>;\n\n/** Validation result returned by server action guards. */\nexport type ServerActionValidationResult = boolean | string;\n\n/** Server action entry with optional argument validation. */\nexport interface ServerActionDescriptor {\n action: ServerAction;\n validateArgs?: (args: unknown[]) => ServerActionValidationResult;\n}\n\n/** Registry mapping server action keys to handlers. */\nexport type ServerActionRegistry = Record<string, ServerAction | ServerActionDescriptor>;\n\n/** Store used to reject replayed server action nonces. */\nexport interface ServerActionReplayStore {\n has(value: string): boolean;\n add(value: string): void;\n}\n\n/** Module export reference requested by a server action request. */\nexport interface ServerActionRequestReference {\n moduleId: string;\n exportName: string;\n}\n\n/** Security and validation options for createServerActionHandler. */\nexport interface ServerActionHandlerOptions {\n // Issue 076: secure defaults. When undefined, the handler enforces the\n // same-origin policy by comparing `Origin` to the request URL. Pass an\n // explicit array to extend the trust set, or `\"any\"` to disable the\n // check entirely (documented opt-out).\n allowedOrigins?: readonly string[] | \"any\";\n authorize?: (\n request: Request,\n reference: ServerActionRequestReference,\n args: unknown[],\n ) => ServerActionValidationResult | Promise<ServerActionValidationResult>;\n allowedActions?: readonly ServerActionRequestReference[];\n // Issue 076: CSRF is enabled by default. Pass `false` to disable\n // (documented opt-out for embedders that have their own scheme).\n csrf?:\n | boolean\n | {\n cookieName?: string;\n headerName?: string;\n };\n replayProtection?: {\n headerName?: string;\n seen: ServerActionReplayStore;\n };\n // Issue 076: bound by default so a hostile client cannot drive RSS via\n // an unbounded request body. The default is 1 MiB; pass a larger value\n // to allow bigger payloads.\n maxBodyBytes?: number;\n}\n\nconst DEFAULT_MAX_BODY_BYTES = 1024 * 1024;\nconst MAX_SERVER_ACTION_ARGUMENT_DEPTH = 64;\nconst MAX_SERVER_ACTION_ARGUMENT_ARRAY_LENGTH = 2_000;\nconst MAX_SERVER_ACTION_ARGUMENT_OBJECT_KEYS = 200;\nconst SERVER_ACTION_FORBIDDEN_JSON_KEYS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\n/** Options for embedding a serialized Flight response in a script tag. */\nexport interface FlightScriptOptions {\n id?: string;\n nonce?: string;\n}\n\n/** Registered server reference included in a Flight response. */\nexport interface FlightServerReference {\n id: number;\n moduleId: string;\n exportName: string;\n bound?: FlightModel[];\n}\n\n/** Runtime marker object representing a client module export. */\nexport interface ClientReference {\n $$typeof: typeof CLIENT_REFERENCE_TYPE;\n moduleId: string;\n exportName: string;\n chunks?: string[];\n}\n\n/** Runtime marker object representing a server module export. */\nexport interface ServerReference {\n $$typeof: typeof SERVER_REFERENCE_TYPE;\n moduleId: string;\n exportName: string;\n bound?: unknown[];\n}\n\n/** Serializable Flight payload with root model and module references. */\nexport interface FlightResponse {\n version: 1;\n root: FlightModel;\n clientReferences: FlightClientReference[];\n serverReferences: FlightServerReference[];\n}\n\n/** Recursive value model supported by the mreact Flight serializer. */\nexport type FlightModel =\n | null\n | string\n | number\n | boolean\n | FlightModel[]\n | FlightObjectModel\n | FlightElementModel\n | FlightClientReferenceModel\n | FlightServerReferenceModel\n | FlightDateModel\n | FlightBigIntModel\n | FlightNumberModel\n | FlightSymbolModel\n | FlightMapModel\n | FlightSetModel\n | FlightFormDataModel\n | FlightIterableModel\n | FlightErrorModel\n | FlightPromiseModel\n | FlightArrayBufferModel\n | FlightTypedArrayModel\n | FlightDataViewModel\n | { kind: \"undefined\" };\n\n/** Plain object shape inside a Flight model. */\nexport interface FlightObjectModel {\n kind?: never;\n [key: string]: FlightModel | undefined;\n}\n\n/** Serialized React-compatible element inside a Flight model. */\nexport interface FlightElementModel {\n kind: \"element\";\n type: string | FlightClientReferenceModel | { kind: \"fragment\" };\n key: string | null;\n props: Record<string, FlightModel>;\n}\n\n/** Reference to a client module export inside a Flight model. */\nexport interface FlightClientReferenceModel {\n kind: \"client-reference\";\n id: number;\n}\n\n/** Reference to a server module export inside a Flight model. */\nexport interface FlightServerReferenceModel {\n kind: \"server-reference\";\n id: number;\n}\n\n/** Serialized Date value inside a Flight model. */\nexport interface FlightDateModel {\n kind: \"date\";\n value: string;\n}\n\n/** Serialized bigint value inside a Flight model. */\nexport interface FlightBigIntModel {\n kind: \"bigint\";\n value: string;\n}\n\n/** Serialized non-finite or negative-zero number inside a Flight model. */\nexport interface FlightNumberModel {\n kind: \"number\";\n value: \"Infinity\" | \"-Infinity\" | \"NaN\" | \"-0\";\n}\n\n/** Serialized global symbol reference inside a Flight model. */\nexport interface FlightSymbolModel {\n kind: \"symbol\";\n name: string;\n}\n\n/** Serialized Map value inside a Flight model. */\nexport interface FlightMapModel {\n kind: \"map\";\n entries: [FlightModel, FlightModel][];\n}\n\n/** Serialized Set value inside a Flight model. */\nexport interface FlightSetModel {\n kind: \"set\";\n values: FlightModel[];\n}\n\n/** Serialized FormData value inside a Flight model. */\nexport interface FlightFormDataModel {\n kind: \"form-data\";\n entries: [string, FlightModel][];\n}\n\n/** Serialized iterable value inside a Flight model. */\nexport interface FlightIterableModel {\n kind: \"iterable\";\n values: FlightModel[];\n}\n\n/** Serialized Error value inside a Flight model. */\nexport interface FlightErrorModel {\n kind: \"error\";\n name: string;\n message: string;\n digest?: string;\n}\n\n/** Reference to an outlined promise chunk inside a Flight model. */\nexport interface FlightPromiseModel {\n kind: \"promise\";\n id: number;\n}\n\n/** Serialized ArrayBuffer value inside a Flight model. */\nexport interface FlightArrayBufferModel {\n kind: \"array-buffer\";\n bytes: number[];\n}\n\n/** Serialized typed array value inside a Flight model. */\nexport interface FlightTypedArrayModel {\n kind: \"typed-array\";\n arrayType: FlightTypedArrayName;\n bytes: number[];\n}\n\n/** Serialized DataView value inside a Flight model. */\nexport interface FlightDataViewModel {\n kind: \"data-view\";\n bytes: number[];\n}\n\n/** Typed array constructor names supported by the Flight serializer. */\nexport type FlightTypedArrayName =\n | \"Int8Array\"\n | \"Uint8Array\"\n | \"Uint8ClampedArray\"\n | \"Int16Array\"\n | \"Uint16Array\"\n | \"Int32Array\"\n | \"Uint32Array\"\n | \"Float32Array\"\n | \"Float64Array\"\n | \"BigInt64Array\"\n | \"BigUint64Array\";\n\nconst reactFlightBinaryRowTags = [\n \"A\",\n \"O\",\n \"o\",\n \"U\",\n \"S\",\n \"s\",\n \"L\",\n \"l\",\n \"G\",\n \"g\",\n \"M\",\n \"m\",\n \"V\",\n] as const;\nconst reactFlightRowTags = [\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"H\",\n \"I\",\n \"J\",\n \"N\",\n \"P\",\n \"R\",\n \"T\",\n \"W\",\n \"X\",\n \"x\",\n \"r\",\n] as const;\nconst reactFlightModelTokens = [\n \"$\",\n \"$$\",\n \"$@\",\n \"$D\",\n \"$E\",\n \"$F\",\n \"$I\",\n \"$K\",\n \"$L\",\n \"$N\",\n \"$Q\",\n \"$S\",\n \"$W\",\n \"$Y\",\n \"$Z\",\n \"$i\",\n \"$n\",\n \"$u\",\n \"$undefined\",\n] as const;\n\n/** Lists the React Flight row tags and model tokens covered by the serializer. */\nexport interface ReactFlightProtocolCoverage {\n binaryRowTags: string[];\n modelTokens: string[];\n rowTags: string[];\n}\n\n/** Returns the React Flight protocol tags and tokens supported by this package. */\nexport function getReactFlightProtocolCoverage(): ReactFlightProtocolCoverage {\n return {\n binaryRowTags: [...reactFlightBinaryRowTags],\n modelTokens: [...reactFlightModelTokens],\n rowTags: [...reactFlightRowTags],\n };\n}\n\ninterface ReactCompatElementLike {\n $$typeof: symbol;\n type: unknown;\n key: string | null;\n props: Record<string, unknown>;\n}\n\ninterface FlightSerializationState {\n clientReferences: FlightClientReference[];\n clientReferenceIndexes: Map<string, number>;\n serverReferences: FlightServerReference[];\n serverReferenceIndexes: Map<string, number>;\n}\n\n/** Creates a runtime client reference marker for a module export. */\nexport function createClientReference(\n moduleId: string,\n exportName = \"default\",\n chunks?: string[],\n): ClientReference {\n return {\n $$typeof: CLIENT_REFERENCE_TYPE,\n moduleId,\n exportName,\n ...(chunks === undefined ? {} : { chunks }),\n };\n}\n\n/** Creates a runtime server reference marker for a module export. */\nexport function createServerReference(\n moduleId: string,\n exportName = \"default\",\n bound?: unknown[],\n): ServerReference {\n return {\n $$typeof: SERVER_REFERENCE_TYPE,\n moduleId,\n exportName,\n ...(bound === undefined ? {} : { bound }),\n };\n}\n\n/** Returns true when a value is a runtime client reference marker. */\nexport function isClientReference(value: unknown): value is ClientReference {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === CLIENT_REFERENCE_TYPE\n );\n}\n\n/** Returns true when a value is a runtime server reference marker. */\nexport function isServerReference(value: unknown): value is ServerReference {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === SERVER_REFERENCE_TYPE\n );\n}\n\n/** Serializes a renderable value into a structured Flight response. */\nexport async function renderToFlightResponse<P extends Record<string, unknown>>(\n renderable: ((props: P) => unknown) | unknown,\n props = {} as P,\n): Promise<FlightResponse> {\n return runWithFlightCacheScope(async () => {\n const state: FlightSerializationState = {\n clientReferences: [],\n clientReferenceIndexes: new Map(),\n serverReferences: [],\n serverReferenceIndexes: new Map(),\n };\n const rootValue =\n typeof renderable === \"function\"\n ? await (renderable as (props: P) => unknown)(props)\n : renderable;\n\n return {\n version: 1,\n root: await serializeFlightValue(rootValue, state, 0),\n clientReferences: state.clientReferences,\n serverReferences: state.serverReferences,\n };\n });\n}\n\n/** Serializes a Flight response to JSON text. */\nexport function stringifyFlightResponse(response: FlightResponse): string {\n return JSON.stringify(response);\n}\n\n/** Renders a Flight response as an HTML script tag. */\nexport function renderFlightResponseScript(\n response: FlightResponse,\n options: FlightScriptOptions = {},\n): string {\n const idAttribute = options.id === undefined ? \"\" : ` id=\"${escapeAttribute(options.id)}\"`;\n const nonceAttribute =\n options.nonce === undefined ? \"\" : ` nonce=\"${escapeAttribute(options.nonce)}\"`;\n\n return `<script type=\"application/json\" data-mreact-flight${idAttribute}${nonceAttribute}>${serializeJsonForHtml(response)}</script>`;\n}\n\n/** Creates a request handler that validates and invokes registered server actions. */\nexport function createServerActionHandler(\n actions: ServerActionRegistry,\n options: ServerActionHandlerOptions = {},\n) {\n const allowedActionKeys = options.allowedActions?.map((reference) =>\n serverActionKey(reference.moduleId, reference.exportName),\n );\n const allowedActionSet = allowedActionKeys === undefined ? undefined : new Set(allowedActionKeys);\n\n return async (request: Request): Promise<Response> => {\n if (request.method !== \"POST\") {\n return jsonResponse({ ok: false, error: \"Method not allowed.\" }, 405);\n }\n\n const originResponse = validateRequestOrigin(request, options.allowedOrigins);\n\n if (originResponse !== undefined) {\n return originResponse;\n }\n\n const csrfResponse = validateCsrfToken(request, options.csrf);\n\n if (csrfResponse !== undefined) {\n return csrfResponse;\n }\n\n // Issue 076: mark the nonce as used only after the action runs.\n // The validator now just reads + checks; the commit happens in a\n // try/finally below.\n const nonceCheck = validateServerActionNonce(request, options.replayProtection);\n\n if (nonceCheck.response !== undefined) {\n return nonceCheck.response;\n }\n\n const payload = await readServerActionPayload(\n request,\n options.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES,\n );\n\n if (payload instanceof Response) {\n return payload;\n }\n\n if (typeof payload.moduleId !== \"string\" || typeof payload.exportName !== \"string\") {\n return jsonResponse({ ok: false, error: \"Invalid server action reference.\" }, 400);\n }\n\n const reference = {\n moduleId: payload.moduleId,\n exportName: payload.exportName,\n };\n\n if (!isAllowedServerAction(reference, allowedActionSet)) {\n return jsonResponse({ ok: false, error: \"Unknown server action.\" }, 404);\n }\n\n const actionEntry = actions[serverActionKey(payload.moduleId, payload.exportName)];\n\n if (actionEntry === undefined) {\n return jsonResponse({ ok: false, error: \"Unknown server action.\" }, 404);\n }\n\n const action = getServerAction(actionEntry);\n const validateArgs = getServerActionArgsValidator(actionEntry);\n const boundArgs = Array.isArray(payload.bound) ? payload.bound : [];\n const extraArgs = Array.isArray(payload.args) ? payload.args : [];\n const argsStructure = validateServerActionJsonArgumentStructure(boundArgs, extraArgs);\n\n if (!argsStructure.valid) {\n return jsonResponse(\n {\n ok: false,\n error: \"Invalid server action argument structure.\",\n },\n 400,\n );\n }\n\n const args = [...boundArgs, ...extraArgs];\n const validationResult = validateArgs?.(args);\n\n if (validationResult !== undefined && validationResult !== true) {\n return jsonResponse(\n {\n ok: false,\n error:\n typeof validationResult === \"string\"\n ? validationResult\n : \"Invalid server action arguments.\",\n },\n 400,\n );\n }\n\n const authorizationResult = await options.authorize?.(request, reference, args);\n\n if (authorizationResult !== undefined && authorizationResult !== true) {\n return jsonResponse(\n {\n ok: false,\n error:\n typeof authorizationResult === \"string\"\n ? authorizationResult\n : \"Server action not authorized.\",\n },\n 403,\n );\n }\n\n try {\n const value = await action(...args);\n // Only commit the nonce on a successful run -- a flaky network\n // retry can otherwise lose the request permanently (Issue 076).\n if (nonceCheck.commit) nonceCheck.commit();\n return jsonResponse({ ok: true, value }, 200);\n } catch (error) {\n return jsonResponse(\n {\n ok: false,\n error: error instanceof Error ? error.message : String(error),\n },\n 500,\n );\n }\n };\n}\n\n/** Encodes a structured Flight response into React Flight row text. */\nexport function toReactFlightRows(response: FlightResponse): string {\n // Issue 081 note: a native encoder exists in\n // `packages/router-native/src/flight.rs::encode_flight_response`\n // but is intentionally *not* wired here. Microbenchmarking on\n // 2026-05-13 showed the JS-stringify -> napi -> Rust-parse ->\n // Rust-stringify round-trip dominates and produces a 7-9x\n // regression vs. the pure JS path. Re-wiring it requires\n // accepting a `napi::JsObject` directly to avoid the double JSON\n // pass; tracked as a follow-up.\n const rows: string[] = [];\n const clientWireIds = new Map<number, number>();\n const serverWireIds = new Map<number, number>();\n let nextWireId = 1;\n\n for (const reference of response.clientReferences) {\n const wireId = nextWireId;\n nextWireId += 1;\n clientWireIds.set(reference.id, wireId);\n rows.push(\n `${formatReactFlightId(wireId)}:I${JSON.stringify([\n reference.moduleId,\n reference.chunks ?? [],\n reference.exportName,\n ])}`,\n );\n }\n\n const state: ReactFlightEncodingState = {\n clientWireIds,\n serverWireIds,\n outlineRows: rows,\n nextWireId,\n };\n\n for (const reference of response.serverReferences) {\n const wireId = state.nextWireId;\n state.nextWireId += 1;\n serverWireIds.set(reference.id, wireId);\n rows.push(\n `${formatReactFlightId(wireId)}:F${JSON.stringify({\n id: serverActionKey(reference.moduleId, reference.exportName),\n bound:\n reference.bound === undefined\n ? null\n : reference.bound.map((value) => encodeReactFlightModel(value, state)),\n name: reference.exportName,\n })}`,\n );\n }\n\n if (isFlightErrorModel(response.root)) {\n rows.push(`0:E${JSON.stringify(encodeReactFlightError(response.root))}`);\n } else {\n rows.push(`0:${JSON.stringify(encodeReactFlightModel(response.root, state))}`);\n }\n return rows.join(\"\\n\");\n}\n\n/** Decodes React Flight row text into a structured Flight response. */\nexport function fromReactFlightRows(rows: string): FlightResponse {\n // Issue 081 note: a native decoder exists in\n // `packages/router-native/src/flight.rs::decode_flight_rows`\n // but is intentionally *not* wired here. Benchmarking on\n // 2026-05-13 showed 4-14x regression vs. the pure JS walker —\n // V8's JSON.parse is already extremely optimized and the\n // napi -> serde_json::parse -> walk -> serde_json::serialize ->\n // JS.parse round-trip multiplies the work. Wiring it requires\n // returning a `napi::JsObject` directly (avoiding the double\n // JSON pass); see `docs/benchmarks/2026-05-13-flight-rust-port.md`.\n const lines = rows.split(/\\r?\\n/).filter(Boolean);\n const metadataLine = lines.find((line) => line.startsWith(\"M0:\"));\n const rootLine = lines.find((line) => line.startsWith(\"J0:\"));\n\n if (metadataLine !== undefined && rootLine !== undefined) {\n const metadata = JSON.parse(metadataLine.slice(3)) as Omit<FlightResponse, \"root\">;\n\n return {\n version: metadata.version,\n clientReferences: metadata.clientReferences,\n serverReferences: metadata.serverReferences,\n root: JSON.parse(rootLine.slice(3)) as FlightModel,\n };\n }\n\n const clientReferences: FlightClientReference[] = [];\n const serverReferences: FlightServerReference[] = [];\n const modelChunks = new Map<number, unknown>();\n const errorChunks = new Map<number, FlightErrorModel>();\n let root: FlightModel | undefined;\n\n for (const line of lines) {\n const row = parseReactFlightRow(line);\n\n if (row.tag === \"I\") {\n clientReferences.push(parseReactFlightClientReference(row.id, row.payload));\n continue;\n }\n\n if (row.tag === \"F\") {\n serverReferences.push(\n parseReactFlightServerReference(row.id, row.payload, modelChunks, errorChunks),\n );\n continue;\n }\n\n if (row.tag === \"E\") {\n const error = parseReactFlightError(row.payload);\n errorChunks.set(row.id, error);\n\n if (row.id === 0) {\n root = error;\n }\n continue;\n }\n\n if (row.tag === \"T\") {\n modelChunks.set(row.id, parseReactFlightTextChunk(row.payload));\n continue;\n }\n\n if (isReactFlightBinaryRowTag(row.tag)) {\n modelChunks.set(row.id, parseReactFlightBinaryChunk(row.tag, row.payload));\n continue;\n }\n\n if (isReactFlightMetadataTag(row.tag)) {\n continue;\n }\n\n if (row.tag === undefined && row.payload !== \"\") {\n modelChunks.set(row.id, JSON.parse(row.payload));\n }\n }\n\n if (root === undefined && modelChunks.has(0)) {\n root = decodeReactFlightModel(modelChunks.get(0), modelChunks, errorChunks);\n }\n\n if (root === undefined) {\n throw new Error(\"Invalid React Flight rows.\");\n }\n\n return {\n version: 1,\n root,\n clientReferences,\n serverReferences,\n };\n}\n\n/** Merges additional React Flight row text into an existing Flight response. */\nexport function mergeReactFlightRows(response: FlightResponse, rows: string): FlightResponse {\n // Issue 081 note: same finding as `fromReactFlightRows` — the native\n // merge path is slower than the JS one given the double-JSON tax.\n const modelChunks = new Map<number, unknown>();\n const errorChunks = new Map<number, FlightErrorModel>();\n const clientReferences = [...response.clientReferences];\n const serverReferences = [...response.serverReferences];\n\n for (const line of rows.split(/\\r?\\n/).filter(Boolean)) {\n const row = parseReactFlightRow(line);\n\n if (row.tag === \"I\") {\n clientReferences.push(parseReactFlightClientReference(row.id, row.payload));\n continue;\n }\n\n if (row.tag === \"F\") {\n serverReferences.push(\n parseReactFlightServerReference(row.id, row.payload, modelChunks, errorChunks),\n );\n continue;\n }\n\n if (row.tag === \"E\") {\n errorChunks.set(row.id, parseReactFlightError(row.payload));\n continue;\n }\n\n if (row.tag === \"T\") {\n modelChunks.set(row.id, parseReactFlightTextChunk(row.payload));\n continue;\n }\n\n if (isReactFlightBinaryRowTag(row.tag)) {\n modelChunks.set(row.id, parseReactFlightBinaryChunk(row.tag, row.payload));\n continue;\n }\n\n if (isReactFlightMetadataTag(row.tag)) {\n continue;\n }\n\n if (row.tag === undefined && row.payload !== \"\") {\n modelChunks.set(row.id, JSON.parse(row.payload));\n }\n }\n\n return {\n ...response,\n clientReferences,\n serverReferences,\n root: resolveFlightPromiseChunks(response.root, modelChunks, errorChunks),\n };\n}\n\n/** Builds a Flight client manifest from client references and chunk resolution. */\nexport function createFlightClientManifest(\n references: readonly FlightClientReferenceInput[],\n resolveChunks: (reference: FlightClientReferenceInput) => string[],\n): FlightClientManifestEntry[] {\n return references.map((reference) => ({\n ...reference,\n chunks: resolveChunks(reference),\n }));\n}\n\n/** Renders modulepreload links for client chunks referenced by a Flight response. */\nexport function renderFlightPreloadLinks(\n response: FlightResponse,\n options: { nonce?: string } = {},\n): string {\n const seen = new Set<string>();\n const nonceAttribute =\n options.nonce === undefined ? \"\" : ` nonce=\"${escapeAttribute(options.nonce)}\"`;\n\n return response.clientReferences\n .flatMap((reference) => reference.chunks ?? [])\n .filter((chunk) => {\n if (seen.has(chunk)) {\n return false;\n }\n\n seen.add(chunk);\n return true;\n })\n .map((chunk) => `<link rel=\"modulepreload\" href=\"${escapeAttribute(chunk)}\"${nonceAttribute}>`)\n .join(\"\");\n}\n\nfunction resolveFlightPromiseChunks(\n model: FlightModel,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth = 0,\n context: FlightDecodeContext = createFlightDecodeContext(),\n): FlightModel {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n\n if (\n model === null ||\n typeof model === \"string\" ||\n typeof model === \"number\" ||\n typeof model === \"boolean\"\n ) {\n return model;\n }\n\n if (Array.isArray(model)) {\n return model.map((item) =>\n resolveFlightPromiseChunks(item, modelChunks, errorChunks, depth + 1, context),\n );\n }\n\n if (model.kind === \"promise\") {\n const error = errorChunks.get(model.id);\n\n if (error !== undefined) {\n return error;\n }\n\n if (modelChunks.has(model.id)) {\n if (context.inProgressChunkIds.has(model.id)) {\n flightCycle(model.id);\n }\n\n context.inProgressChunkIds.add(model.id);\n try {\n return decodeReactFlightModel(\n modelChunks.get(model.id),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n } finally {\n context.inProgressChunkIds.delete(model.id);\n }\n }\n\n return model;\n }\n\n if (model.kind === \"element\") {\n return {\n ...model,\n props: Object.fromEntries(\n Object.entries(model.props).map(([key, value]) => [\n key,\n resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ]),\n ),\n };\n }\n\n if (model.kind === \"map\") {\n return {\n ...model,\n entries: model.entries.map(([key, value]): [FlightModel, FlightModel] => [\n resolveFlightPromiseChunks(key, modelChunks, errorChunks, depth + 1, context),\n resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ]),\n };\n }\n\n if (model.kind === \"set\") {\n return {\n ...model,\n values: model.values.map((value) =>\n resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ),\n };\n }\n\n if (\"kind\" in model) {\n return model;\n }\n\n return Object.fromEntries(\n Object.entries(model).map(([key, value]) => [\n key,\n value === undefined\n ? undefined\n : resolveFlightPromiseChunks(value, modelChunks, errorChunks, depth + 1, context),\n ]),\n );\n}\n\ninterface ReactFlightEncodingState {\n clientWireIds: ReadonlyMap<number, number>;\n serverWireIds: ReadonlyMap<number, number>;\n outlineRows: string[];\n nextWireId: number;\n}\n\nfunction encodeReactFlightModel(model: FlightModel, state: ReactFlightEncodingState): unknown {\n if (model === null || typeof model === \"number\" || typeof model === \"boolean\") {\n return model;\n }\n\n if (typeof model === \"string\") {\n return model.startsWith(\"$\") ? `$${model}` : model;\n }\n\n if (Array.isArray(model)) {\n return model.map((item) => encodeReactFlightModel(item, state));\n }\n\n if (model.kind === \"undefined\") {\n return \"$u\";\n }\n\n if (model.kind === \"date\") {\n return `$D${model.value}`;\n }\n\n if (model.kind === \"bigint\") {\n return `$n${model.value}`;\n }\n\n if (model.kind === \"number\") {\n if (model.value === \"Infinity\") {\n return \"$I\";\n }\n\n if (model.value === \"NaN\") {\n return \"$N\";\n }\n\n return `$${model.value}`;\n }\n\n if (model.kind === \"symbol\") {\n return `$S${model.name}`;\n }\n\n if (model.kind === \"map\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.entries.map(([key, value]) => [\n encodeReactFlightModel(key, state),\n encodeReactFlightModel(value, state),\n ]),\n );\n return `$Q${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"set\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.values.map((value) => encodeReactFlightModel(value, state)),\n );\n return `$W${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"form-data\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.entries.map(([key, value]) => [key, encodeReactFlightModel(value, state)]),\n );\n return `$K${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"iterable\") {\n const id = allocateReactFlightOutlineRow(\n state,\n model.values.map((value) => encodeReactFlightModel(value, state)),\n );\n return `$i${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"error\") {\n const id = state.nextWireId;\n state.nextWireId += 1;\n state.outlineRows.push(\n `${formatReactFlightId(id)}:E${JSON.stringify(encodeReactFlightError(model))}`,\n );\n return `$Z${formatReactFlightId(id)}`;\n }\n\n if (model.kind === \"promise\") {\n return `$@${formatReactFlightId(model.id)}`;\n }\n\n if (model.kind === \"server-reference\") {\n return `$F${state.serverWireIds.get(model.id) ?? model.id}`;\n }\n\n if (model.kind === \"client-reference\") {\n return `$L${state.clientWireIds.get(model.id) ?? model.id}`;\n }\n\n if (model.kind === \"element\") {\n return [\n \"$\",\n encodeReactFlightElementType(model.type, state.clientWireIds),\n model.key,\n encodeReactFlightProps(model.props, state),\n ];\n }\n\n if (isReactFlightBinaryModel(model)) {\n return model;\n }\n\n return encodeReactFlightProps(model, state);\n}\n\nfunction allocateReactFlightOutlineRow(state: ReactFlightEncodingState, payload: unknown): number {\n const id = state.nextWireId;\n state.nextWireId += 1;\n state.outlineRows.push(`${formatReactFlightId(id)}:${JSON.stringify(payload)}`);\n return id;\n}\n\nfunction encodeReactFlightElementType(\n type: FlightElementModel[\"type\"],\n clientWireIds: ReadonlyMap<number, number>,\n): string {\n if (typeof type === \"string\") {\n return type;\n }\n\n if (type.kind === \"fragment\") {\n return \"$Sreact.fragment\";\n }\n\n return `$L${clientWireIds.get(type.id) ?? type.id}`;\n}\n\nfunction encodeReactFlightProps(\n props: Record<string, FlightModel | undefined>,\n state: ReactFlightEncodingState,\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(props)\n .filter((entry): entry is [string, FlightModel] => entry[1] !== undefined)\n .map(([key, value]) => [key, encodeReactFlightModel(value, state)]),\n );\n}\n\ninterface ReactFlightRow {\n id: number;\n tag?: string;\n payload: string;\n}\n\ntype ReactFlightBinaryRowTag =\n | \"A\"\n | \"O\"\n | \"o\"\n | \"U\"\n | \"S\"\n | \"s\"\n | \"L\"\n | \"l\"\n | \"G\"\n | \"g\"\n | \"M\"\n | \"m\"\n | \"V\";\n\nfunction parseReactFlightRow(line: string): ReactFlightRow {\n const separator = line.indexOf(\":\");\n\n if (separator < 0) {\n throw new Error(\"Invalid React Flight row.\");\n }\n\n const id = separator === 0 ? 0 : parseReactFlightId(line.slice(0, separator));\n const body = line.slice(separator + 1);\n const first = body[0];\n const hasTag = first !== undefined && isReactFlightRowTag(first, body);\n\n if (first !== undefined && !hasTag && looksLikeUnsupportedReactFlightTag(first, body)) {\n throw new Error(`Unsupported React Flight row tag: ${first}`);\n }\n\n return {\n id,\n ...(hasTag ? { tag: first } : {}),\n payload: hasTag ? body.slice(1) : body,\n };\n}\n\nfunction looksLikeUnsupportedReactFlightTag(tag: string, body: string): boolean {\n return /^[A-Z]$/.test(tag) && (body[1] === \"{\" || body[1] === \"[\" || body[1] === '\"');\n}\n\nfunction parseReactFlightTextChunk(payload: string): string {\n const separator = payload.indexOf(\",\");\n\n if (separator < 0) {\n throw new Error(\"Invalid React Flight text row.\");\n }\n\n return payload.slice(separator + 1);\n}\n\nfunction parseReactFlightBinaryChunk(\n tag: ReactFlightBinaryRowTag,\n payload: string,\n): FlightArrayBufferModel | FlightTypedArrayModel | FlightDataViewModel {\n const separator = payload.indexOf(\",\");\n\n if (separator < 0) {\n throw new Error(\"Invalid React Flight binary row.\");\n }\n\n const byteLength = parseReactFlightId(payload.slice(0, separator));\n const bytes = decodeBase64Bytes(payload.slice(separator + 1));\n\n if (bytes.length !== byteLength) {\n throw new Error(\"React Flight binary row length did not match declared payload length.\");\n }\n\n return createReactFlightBinaryModel(tag, bytes);\n}\n\nfunction isReactFlightMetadataTag(tag: string | undefined): boolean {\n return (\n tag === \"H\" ||\n tag === \"N\" ||\n tag === \"P\" ||\n tag === \"D\" ||\n tag === \"J\" ||\n tag === \"W\" ||\n tag === \"R\" ||\n tag === \"r\" ||\n tag === \"X\" ||\n tag === \"x\" ||\n tag === \"C\"\n );\n}\n\nfunction isReactFlightRowTag(tag: string, body: string): boolean {\n if (\n tag === \"I\" ||\n tag === \"F\" ||\n tag === \"E\" ||\n tag === \"T\" ||\n tag === \"H\" ||\n tag === \"N\" ||\n tag === \"P\" ||\n tag === \"D\" ||\n tag === \"J\" ||\n tag === \"W\" ||\n tag === \"R\" ||\n tag === \"r\" ||\n tag === \"X\" ||\n tag === \"x\" ||\n tag === \"C\"\n ) {\n return true;\n }\n\n return isReactFlightBinaryRowTag(tag) && /^[AOoUSsLlGgMmV][0-9a-f]+,/i.test(body);\n}\n\nfunction isReactFlightBinaryRowTag(tag: string | undefined): tag is ReactFlightBinaryRowTag {\n return (\n tag === \"A\" ||\n tag === \"O\" ||\n tag === \"o\" ||\n tag === \"U\" ||\n tag === \"S\" ||\n tag === \"s\" ||\n tag === \"L\" ||\n tag === \"l\" ||\n tag === \"G\" ||\n tag === \"g\" ||\n tag === \"M\" ||\n tag === \"m\" ||\n tag === \"V\"\n );\n}\n\nfunction createReactFlightBinaryModel(\n tag: ReactFlightBinaryRowTag,\n bytes: Uint8Array,\n): FlightArrayBufferModel | FlightTypedArrayModel | FlightDataViewModel {\n const byteValues = Array.from(bytes);\n\n if (tag === \"A\") {\n return {\n kind: \"array-buffer\",\n bytes: byteValues,\n };\n }\n\n if (tag === \"V\") {\n return {\n kind: \"data-view\",\n bytes: byteValues,\n };\n }\n\n return {\n kind: \"typed-array\",\n arrayType: getReactFlightTypedArrayName(tag),\n bytes: byteValues,\n };\n}\n\nfunction getReactFlightTypedArrayName(\n tag: Exclude<ReactFlightBinaryRowTag, \"A\" | \"V\">,\n): FlightTypedArrayName {\n switch (tag) {\n case \"O\":\n return \"Int8Array\";\n case \"o\":\n return \"Uint8Array\";\n case \"U\":\n return \"Uint8ClampedArray\";\n case \"S\":\n return \"Int16Array\";\n case \"s\":\n return \"Uint16Array\";\n case \"L\":\n return \"Int32Array\";\n case \"l\":\n return \"Uint32Array\";\n case \"G\":\n return \"Float32Array\";\n case \"g\":\n return \"Float64Array\";\n case \"M\":\n return \"BigInt64Array\";\n case \"m\":\n return \"BigUint64Array\";\n default:\n throw new Error(`Unsupported React Flight typed array row tag: ${tag}`);\n }\n}\n\nfunction decodeBase64Bytes(value: string): Uint8Array {\n // Issue 081: route through the native binding when available. The\n // native implementation accepts both URL-safe and standard alphabets\n // and tolerates missing padding, matching the JS fallback below.\n const native = getNativeFlight()?.decodeFlightBase64;\n\n if (native !== undefined) {\n const result = native(value);\n // napi-rs returns a Buffer which is a Uint8Array subclass; the\n // callsite types it as Uint8Array so this is structurally fine.\n return result instanceof Uint8Array ? result : new Uint8Array(result);\n }\n\n const normalized = value.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, \"=\");\n const binary = globalThis.atob(padded);\n const bytes = new Uint8Array(binary.length);\n\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n\n return bytes;\n}\n\nfunction parseReactFlightClientReference(id: number, payload: string): FlightClientReference {\n const value = JSON.parse(payload) as unknown;\n\n if (Array.isArray(value)) {\n return {\n id,\n moduleId: String(value[0]),\n chunks: Array.isArray(value[1]) ? value[1].map(String) : [],\n exportName: String(value[2] ?? \"default\"),\n };\n }\n\n const object = valueIsObject(value) ? value : {};\n\n return {\n id,\n moduleId: String(object.id ?? object.moduleId ?? \"\"),\n chunks: Array.isArray(object.chunks) ? object.chunks.map(String) : [],\n exportName: String(object.name ?? object.exportName ?? \"default\"),\n };\n}\n\nfunction parseReactFlightServerReference(\n id: number,\n payload: string,\n modelChunks: ReadonlyMap<number, unknown> = new Map(),\n errorChunks: ReadonlyMap<number, FlightErrorModel> = new Map(),\n): FlightServerReference {\n const value = JSON.parse(payload) as unknown;\n const object = valueIsObject(value) ? value : {};\n const actionId = String(object.id ?? \"\");\n const separator = actionId.lastIndexOf(\"#\");\n const bound = Array.isArray(object.bound)\n ? object.bound.map((entry) => decodeReactFlightModel(entry, modelChunks, errorChunks))\n : undefined;\n\n return {\n id,\n moduleId: separator < 0 ? actionId : actionId.slice(0, separator),\n exportName:\n typeof object.name === \"string\"\n ? object.name\n : separator < 0\n ? \"default\"\n : actionId.slice(separator + 1),\n ...(bound === undefined ? {} : { bound }),\n };\n}\n\n// Issue 079: hard cap on Flight tree depth to prevent stack-exhaustion\n// DoS from a deeply-nested payload. The cap is far higher than any\n// legitimate component tree.\nconst MAX_FLIGHT_DECODE_DEPTH = 256;\n\nclass FlightDecodeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"FlightDecodeError\";\n }\n}\n\nfunction flightTooDeep(): never {\n throw new FlightDecodeError(\n `MR_FLIGHT_TOO_DEEP: nested deeper than ${MAX_FLIGHT_DECODE_DEPTH} levels`,\n );\n}\n\nfunction flightCycle(id: number): never {\n throw new FlightDecodeError(`MR_FLIGHT_CYCLE: cyclic chunk reference ${id}`);\n}\n\ninterface FlightDecodeContext {\n inProgressChunkIds: Set<number>;\n}\n\nfunction createFlightDecodeContext(): FlightDecodeContext {\n return {\n inProgressChunkIds: new Set(),\n };\n}\n\nfunction decodeReactFlightModel(\n value: unknown,\n modelChunks: ReadonlyMap<number, unknown> = new Map(),\n errorChunks: ReadonlyMap<number, FlightErrorModel> = new Map(),\n depth = 0,\n context: FlightDecodeContext = createFlightDecodeContext(),\n): FlightModel {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n if (value === null || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n return decodeReactFlightString(value, modelChunks, errorChunks, depth, context);\n }\n\n if (Array.isArray(value)) {\n if (value[0] === \"$\") {\n return {\n kind: \"element\",\n type: decodeReactFlightElementType(value[1]),\n key: typeof value[2] === \"string\" ? value[2] : null,\n props: decodeReactFlightProps(\n valueIsObject(value[3]) ? value[3] : {},\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n ),\n };\n }\n\n return value.map((item) =>\n decodeReactFlightModel(item, modelChunks, errorChunks, depth + 1, context),\n );\n }\n\n if (isReactFlightBinaryModel(value)) {\n return value;\n }\n\n if (valueIsObject(value)) {\n return decodeReactFlightProps(value, modelChunks, errorChunks, depth + 1, context);\n }\n\n return { kind: \"undefined\" };\n}\n\nfunction decodeReactFlightString(\n value: string,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth: number,\n context: FlightDecodeContext,\n): FlightModel {\n if (value === \"$undefined\" || value === \"$u\") {\n return { kind: \"undefined\" };\n }\n\n if (value.startsWith(\"$$\")) {\n return value.slice(1);\n }\n\n if (value === \"$I\") {\n return { kind: \"number\", value: \"Infinity\" };\n }\n\n if (value === \"$-Infinity\") {\n return { kind: \"number\", value: \"-Infinity\" };\n }\n\n if (value === \"$-0\") {\n return { kind: \"number\", value: \"-0\" };\n }\n\n if (value === \"$N\") {\n return { kind: \"number\", value: \"NaN\" };\n }\n\n if (value.startsWith(\"$D\")) {\n return { kind: \"date\", value: value.slice(2) };\n }\n\n if (value.startsWith(\"$n\")) {\n return { kind: \"bigint\", value: value.slice(2) };\n }\n\n if (/^\\$[AOoUSsLlGgMmV][0-9a-f]+$/.test(value)) {\n return decodeReactFlightChunk(value.slice(2), modelChunks, errorChunks, depth + 1, context);\n }\n\n if (value.startsWith(\"$S\")) {\n return { kind: \"symbol\", name: value.slice(2) };\n }\n\n if (/^\\$F[0-9a-f]+$/i.test(value)) {\n return {\n kind: \"server-reference\",\n id: parseReactFlightId(value.slice(2)),\n };\n }\n\n if (/^\\$L[0-9a-f]+$/i.test(value)) {\n return {\n kind: \"client-reference\",\n id: parseReactFlightId(value.slice(2)),\n };\n }\n\n if (/^\\$@[0-9a-f]*$/i.test(value)) {\n return {\n kind: \"promise\",\n id: value.length === 2 ? 0 : parseReactFlightId(value.slice(2)),\n };\n }\n\n if (/^\\$Q[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n const entries = Array.isArray(decoded)\n ? decoded.map((entry): [FlightModel, FlightModel] =>\n Array.isArray(entry)\n ? [entry[0] ?? { kind: \"undefined\" }, entry[1] ?? { kind: \"undefined\" }]\n : [entry, { kind: \"undefined\" }],\n )\n : [];\n\n return {\n kind: \"map\",\n entries,\n };\n }\n\n if (/^\\$W[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n\n return {\n kind: \"set\",\n values: Array.isArray(decoded) ? decoded : [],\n };\n }\n\n if (/^\\$K[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n const entries = Array.isArray(decoded)\n ? decoded.flatMap((entry): [string, FlightModel][] =>\n Array.isArray(entry) && typeof entry[0] === \"string\"\n ? [[entry[0], entry[1] ?? { kind: \"undefined\" }]]\n : [],\n )\n : [];\n\n return {\n kind: \"form-data\",\n entries,\n };\n }\n\n if (/^\\$i[0-9a-f]+$/i.test(value)) {\n const decoded = decodeReactFlightChunk(\n value.slice(2),\n modelChunks,\n errorChunks,\n depth + 1,\n context,\n );\n\n return {\n kind: \"iterable\",\n values: Array.isArray(decoded) ? decoded : [],\n };\n }\n\n if (/^\\$Z[0-9a-f]+$/i.test(value)) {\n return (\n errorChunks.get(parseReactFlightId(value.slice(2))) ?? {\n kind: \"error\",\n name: \"Error\",\n message: \"Unknown React Flight error.\",\n }\n );\n }\n\n if (value === \"$Y\" || value.startsWith(\"$E\")) {\n return { kind: \"undefined\" };\n }\n\n if (/^\\$[0-9a-f]+$/i.test(value)) {\n return decodeReactFlightChunk(value.slice(1), modelChunks, errorChunks, depth + 1, context);\n }\n\n return value;\n}\n\nfunction decodeReactFlightChunk(\n id: string,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth: number,\n context: FlightDecodeContext,\n): FlightModel {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n const numericId = parseReactFlightId(id);\n const error = errorChunks.get(numericId);\n\n if (error !== undefined) {\n return error;\n }\n\n if (!modelChunks.has(numericId)) {\n return {\n kind: \"promise\",\n id: numericId,\n };\n }\n\n if (context.inProgressChunkIds.has(numericId)) {\n flightCycle(numericId);\n }\n\n context.inProgressChunkIds.add(numericId);\n try {\n return decodeReactFlightModel(\n modelChunks.get(numericId),\n modelChunks,\n errorChunks,\n depth,\n context,\n );\n } finally {\n context.inProgressChunkIds.delete(numericId);\n }\n}\n\nfunction decodeReactFlightElementType(value: unknown): FlightElementModel[\"type\"] {\n if (value === \"$Sreact.fragment\") {\n return { kind: \"fragment\" };\n }\n\n if (typeof value === \"string\" && /^\\$L[0-9a-f]+$/i.test(value)) {\n return {\n kind: \"client-reference\",\n id: parseReactFlightId(value.slice(2)),\n };\n }\n\n return typeof value === \"string\" ? value : String(value);\n}\n\nfunction decodeReactFlightProps(\n value: Record<string, unknown>,\n modelChunks: ReadonlyMap<number, unknown>,\n errorChunks: ReadonlyMap<number, FlightErrorModel>,\n depth = 0,\n context: FlightDecodeContext = createFlightDecodeContext(),\n): Record<string, FlightModel> {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n return Object.fromEntries(\n Object.entries(value).map(([key, child]) => [\n key,\n decodeReactFlightModel(child, modelChunks, errorChunks, depth + 1, context),\n ]),\n );\n}\n\nfunction isReactFlightBinaryModel(\n value: unknown,\n): value is FlightArrayBufferModel | FlightTypedArrayModel | FlightDataViewModel {\n return (\n valueIsObject(value) &&\n (value.kind === \"array-buffer\" || value.kind === \"typed-array\" || value.kind === \"data-view\")\n );\n}\n\nfunction parseReactFlightError(payload: string): FlightErrorModel {\n const value = JSON.parse(payload) as unknown;\n const object = valueIsObject(value) ? value : {};\n const digest = typeof object.digest === \"string\" ? object.digest : undefined;\n\n return {\n kind: \"error\",\n name: typeof object.name === \"string\" ? object.name : \"Error\",\n message: typeof object.message === \"string\" ? object.message : \"React Flight error.\",\n ...(digest === undefined ? {} : { digest }),\n };\n}\n\nfunction encodeReactFlightError(model: FlightErrorModel): Record<string, unknown> {\n return {\n digest: model.digest ?? \"\",\n name: model.name,\n message: model.message,\n stack: [],\n env: \"Server\",\n };\n}\n\nfunction isFlightErrorModel(model: FlightModel): model is FlightErrorModel {\n return (\n typeof model === \"object\" && model !== null && !Array.isArray(model) && model.kind === \"error\"\n );\n}\n\nfunction valueIsObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction formatReactFlightId(id: number): string {\n return id.toString(16);\n}\n\nfunction parseReactFlightId(value: string): number {\n return Number.parseInt(value, 16);\n}\n\nasync function serializeFlightValue(\n value: unknown,\n state: FlightSerializationState,\n depth: number,\n): Promise<FlightModel> {\n if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();\n\n const awaited = isThenable(value) ? await value : value;\n\n if (awaited === null) {\n return null;\n }\n\n if (awaited === undefined) {\n return { kind: \"undefined\" };\n }\n\n if (typeof awaited === \"string\" || typeof awaited === \"boolean\") {\n return awaited;\n }\n\n if (typeof awaited === \"number\") {\n if (Number.isNaN(awaited)) {\n return { kind: \"number\", value: \"NaN\" };\n }\n\n if (awaited === Infinity) {\n return { kind: \"number\", value: \"Infinity\" };\n }\n\n if (awaited === -Infinity) {\n return { kind: \"number\", value: \"-Infinity\" };\n }\n\n if (Object.is(awaited, -0)) {\n return { kind: \"number\", value: \"-0\" };\n }\n\n return awaited;\n }\n\n if (typeof awaited === \"bigint\") {\n return { kind: \"bigint\", value: awaited.toString() };\n }\n\n if (typeof awaited === \"symbol\") {\n return { kind: \"symbol\", name: Symbol.keyFor(awaited) ?? awaited.description ?? \"\" };\n }\n\n if (Array.isArray(awaited)) {\n return await Promise.all(awaited.map((item) => serializeFlightValue(item, state, depth + 1)));\n }\n\n if (isServerReference(awaited)) {\n return {\n kind: \"server-reference\",\n id: await getServerReferenceId(awaited, state),\n };\n }\n\n if (isReactCompatElement(awaited)) {\n return await serializeElement(awaited, state, depth + 1);\n }\n\n if (awaited instanceof Date) {\n return { kind: \"date\", value: awaited.toJSON() };\n }\n\n if (awaited instanceof Map) {\n return {\n kind: \"map\",\n entries: await Promise.all(\n Array.from(awaited.entries()).map(\n async ([key, value]) =>\n [\n await serializeFlightValue(key, state, depth + 1),\n await serializeFlightValue(value, state, depth + 1),\n ] as [FlightModel, FlightModel],\n ),\n ),\n };\n }\n\n if (awaited instanceof Set) {\n return {\n kind: \"set\",\n values: await Promise.all(\n Array.from(awaited.values()).map((value) => serializeFlightValue(value, state, depth + 1)),\n ),\n };\n }\n\n if (isFormDataLike(awaited)) {\n return {\n kind: \"form-data\",\n entries: await Promise.all(\n Array.from(awaited.entries()).map(\n async ([key, value]) =>\n [key, await serializeFlightValue(value, state, depth + 1)] as [string, FlightModel],\n ),\n ),\n };\n }\n\n if (isIterableObject(awaited)) {\n return {\n kind: \"iterable\",\n values: await Promise.all(\n Array.from(awaited).map((value) => serializeFlightValue(value, state, depth + 1)),\n ),\n };\n }\n\n if (awaited instanceof Error) {\n return {\n kind: \"error\",\n name: awaited.name,\n message: awaited.message,\n };\n }\n\n if (typeof awaited === \"object\") {\n return await serializeObject(awaited as Record<string, unknown>, state, depth + 1);\n }\n\n throw new TypeError(`Unsupported Flight value: ${typeof awaited}`);\n}\n\nasync function serializeElement(\n element: ReactCompatElementLike,\n state: FlightSerializationState,\n depth: number,\n): Promise<FlightElementModel | FlightModel> {\n if (typeof element.type === \"function\") {\n return await serializeFlightValue(element.type(element.props), state, depth + 1);\n }\n\n if (isClientReference(element.type)) {\n return {\n kind: \"element\",\n type: {\n kind: \"client-reference\",\n id: getClientReferenceId(element.type, state),\n },\n key: element.key,\n props: await serializeProps(element.props, state, depth + 1),\n };\n }\n\n if (typeof element.type === \"string\") {\n return {\n kind: \"element\",\n type: element.type,\n key: element.key,\n props: await serializeProps(element.props, state, depth + 1),\n };\n }\n\n if (element.type === REACT_COMPAT_FRAGMENT_TYPE) {\n return {\n kind: \"element\",\n type: { kind: \"fragment\" },\n key: element.key,\n props: await serializeProps(element.props, state, depth + 1),\n };\n }\n\n throw new TypeError(\"Unsupported Flight element type.\");\n}\n\nasync function serializeProps(\n props: Record<string, unknown>,\n state: FlightSerializationState,\n depth: number,\n): Promise<Record<string, FlightModel>> {\n const entries = await Promise.all(\n Object.entries(props).map(\n async ([key, value]) => [key, await serializeFlightValue(value, state, depth + 1)] as const,\n ),\n );\n\n return Object.fromEntries(entries);\n}\n\nasync function serializeObject(\n object: Record<string, unknown>,\n state: FlightSerializationState,\n depth: number,\n): Promise<FlightObjectModel> {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(object).map(\n async ([key, value]) => [key, await serializeFlightValue(value, state, depth + 1)] as const,\n ),\n ),\n ) as FlightObjectModel;\n}\n\nfunction getClientReferenceId(reference: ClientReference, state: FlightSerializationState): number {\n const key = `${reference.moduleId}:${reference.exportName}`;\n const existing = state.clientReferenceIndexes.get(key);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const id = state.clientReferences.length;\n state.clientReferences.push({\n id,\n moduleId: reference.moduleId,\n exportName: reference.exportName,\n ...(reference.chunks === undefined ? {} : { chunks: reference.chunks }),\n });\n state.clientReferenceIndexes.set(key, id);\n return id;\n}\n\nasync function getServerReferenceId(\n reference: ServerReference,\n state: FlightSerializationState,\n): Promise<number> {\n const serializedBound =\n reference.bound === undefined\n ? undefined\n : await Promise.all(reference.bound.map((value) => serializeFlightValue(value, state, 0)));\n const key = `${reference.moduleId}:${reference.exportName}:${JSON.stringify(serializedBound ?? null)}`;\n const existing = state.serverReferenceIndexes.get(key);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const id = state.serverReferences.length;\n state.serverReferences.push({\n id,\n moduleId: reference.moduleId,\n exportName: reference.exportName,\n ...(serializedBound === undefined ? {} : { bound: serializedBound }),\n });\n state.serverReferenceIndexes.set(key, id);\n return id;\n}\n\nfunction isReactCompatElement(value: unknown): value is ReactCompatElementLike {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_ELEMENT_TYPE\n );\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n typeof (value as { then?: unknown }).then === \"function\"\n );\n}\n\nfunction isFormDataLike(value: unknown): value is FormData {\n return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n\nfunction isIterableObject(value: unknown): value is Iterable<unknown> {\n return typeof value === \"object\" && value !== null && Symbol.iterator in value;\n}\n\nfunction serverActionKey(moduleId: string, exportName: string): string {\n return `${moduleId}#${exportName}`;\n}\n\nasync function readServerActionPayload(\n request: Request,\n maxBodyBytes: number,\n): Promise<\n | {\n moduleId?: unknown;\n exportName?: unknown;\n bound?: unknown;\n args?: unknown;\n }\n | Response\n> {\n // Issue 076: bound the body before JSON.parse. The Content-Length\n // header (when present) is the cheap pre-check; the streaming reader\n // catches chunked / missing-length bodies too.\n const declaredLength = Number(request.headers.get(\"content-length\") ?? \"NaN\");\n if (Number.isFinite(declaredLength) && declaredLength > maxBodyBytes) {\n return jsonResponse({ ok: false, error: \"Payload too large.\" }, 413);\n }\n\n const body = request.body;\n let text = \"\";\n if (body !== null) {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let total = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n total += value.byteLength;\n if (total > maxBodyBytes) {\n await reader.cancel();\n return jsonResponse({ ok: false, error: \"Payload too large.\" }, 413);\n }\n text += decoder.decode(value, { stream: true });\n }\n text += decoder.decode();\n } finally {\n reader.releaseLock?.();\n }\n } else {\n text = await request.text();\n }\n\n try {\n return JSON.parse(text) as {\n moduleId?: unknown;\n exportName?: unknown;\n bound?: unknown;\n args?: unknown;\n };\n } catch {\n return jsonResponse({ ok: false, error: \"Invalid JSON payload.\" }, 400);\n }\n}\n\nfunction validateServerActionJsonArgumentStructure(\n boundArgs: readonly unknown[],\n args: readonly unknown[],\n): { valid: true } | { valid: false } {\n const stack: { depth: number; value: unknown }[] = [\n { depth: 0, value: boundArgs },\n { depth: 0, value: args },\n ];\n const seen = new WeakSet<object>();\n\n while (stack.length > 0) {\n const current = stack.pop();\n if (current === undefined) {\n continue;\n }\n\n if (current.depth > MAX_SERVER_ACTION_ARGUMENT_DEPTH) {\n return { valid: false };\n }\n\n if (current.value === null || typeof current.value !== \"object\") {\n continue;\n }\n\n if (seen.has(current.value)) {\n continue;\n }\n seen.add(current.value);\n\n if (Array.isArray(current.value)) {\n if (current.value.length > MAX_SERVER_ACTION_ARGUMENT_ARRAY_LENGTH) {\n return { valid: false };\n }\n\n for (const item of current.value) {\n stack.push({ depth: current.depth + 1, value: item });\n }\n continue;\n }\n\n const entries = Object.entries(current.value);\n if (entries.length > MAX_SERVER_ACTION_ARGUMENT_OBJECT_KEYS) {\n return { valid: false };\n }\n\n for (const [key, value] of entries) {\n if (SERVER_ACTION_FORBIDDEN_JSON_KEYS.has(key)) {\n return { valid: false };\n }\n stack.push({ depth: current.depth + 1, value });\n }\n }\n\n return { valid: true };\n}\n\nfunction getServerAction(entry: ServerAction | ServerActionDescriptor): ServerAction {\n return typeof entry === \"function\" ? entry : entry.action;\n}\n\nfunction isAllowedServerAction(\n reference: ServerActionRequestReference,\n allowedActionSet: ReadonlySet<string> | undefined,\n): boolean {\n if (allowedActionSet === undefined) {\n return true;\n }\n\n return allowedActionSet.has(serverActionKey(reference.moduleId, reference.exportName));\n}\n\nfunction getServerActionArgsValidator(\n entry: ServerAction | ServerActionDescriptor,\n): ServerActionDescriptor[\"validateArgs\"] {\n return typeof entry === \"function\" ? undefined : entry.validateArgs;\n}\n\nfunction runWithFlightCacheScope<T>(callback: () => T): T {\n const scope = createCacheScope();\n scope.ownerStack.push(\"renderToFlightResponse\");\n return runWithCacheScope(scope, callback);\n}\n\nfunction validateRequestOrigin(\n request: Request,\n allowedOrigins: ServerActionHandlerOptions[\"allowedOrigins\"],\n): Response | undefined {\n // Issue 076: secure default. `\"any\"` disables the check (explicit\n // opt-out for embedders behind their own auth boundary). Otherwise we\n // enforce same-origin by default and extend with the array if given.\n if (allowedOrigins === \"any\") return undefined;\n\n const origin = request.headers.get(\"origin\");\n // Browsers omit `Origin` on same-origin GETs but include it on\n // cross-site POSTs. Missing Origin therefore signals same-origin\n // (or non-browser traffic) and is allowed.\n if (origin === null) return undefined;\n\n let expected: string | undefined;\n try {\n expected = new URL(request.url).origin;\n } catch {\n expected = undefined;\n }\n\n if (expected !== undefined && origin === expected) return undefined;\n if (allowedOrigins !== undefined && allowedOrigins.includes(origin)) {\n return undefined;\n }\n return jsonResponse({ ok: false, error: \"Origin not allowed.\" }, 403);\n}\n\nfunction validateCsrfToken(\n request: Request,\n csrf: ServerActionHandlerOptions[\"csrf\"],\n): Response | undefined {\n // Issue 076: CSRF check is on by default. `false` disables it\n // (documented opt-out); `true` / object override the names.\n if (csrf === false) return undefined;\n\n const config = typeof csrf === \"object\" ? csrf : {};\n const headerName = config.headerName ?? \"x-mreact-csrf\";\n const cookieName = config.cookieName ?? \"mreact.csrf\";\n const headerToken = request.headers.get(headerName);\n const cookieToken = readCookie(request.headers.get(\"cookie\"), cookieName);\n\n return headerToken !== null &&\n cookieToken !== undefined &&\n constantTimeStringEqual(headerToken, cookieToken)\n ? undefined\n : jsonResponse({ ok: false, error: \"Invalid CSRF token.\" }, 403);\n}\n\nfunction constantTimeStringEqual(left: string, right: string): boolean {\n const length = Math.max(left.length, right.length);\n let diff = left.length ^ right.length;\n\n for (let index = 0; index < length; index += 1) {\n diff |= (left.charCodeAt(index) || 0) ^ (right.charCodeAt(index) || 0);\n }\n\n return diff === 0;\n}\n\nfunction validateServerActionNonce(\n request: Request,\n replayProtection: ServerActionHandlerOptions[\"replayProtection\"],\n): { response?: Response; commit?: () => void } {\n if (replayProtection === undefined) {\n return {};\n }\n\n const headerName = replayProtection.headerName ?? \"x-mreact-action-nonce\";\n const nonce = request.headers.get(headerName);\n\n if (nonce === null || nonce.length === 0) {\n return {\n response: jsonResponse({ ok: false, error: \"Missing server action nonce.\" }, 400),\n };\n }\n\n if (replayProtection.seen.has(nonce)) {\n return {\n response: jsonResponse({ ok: false, error: \"Server action nonce was already used.\" }, 409),\n };\n }\n\n // Issue 076: defer the .add() until the action succeeds so a failed\n // run does not consume a replay slot. The caller invokes `commit()`\n // on the success path only.\n return {\n commit: () => replayProtection.seen.add(nonce),\n };\n}\n\nfunction readCookie(cookieHeader: string | null, name: string): string | undefined {\n if (cookieHeader === null) {\n return undefined;\n }\n\n for (const part of cookieHeader.split(\";\")) {\n const [rawKey, ...rawValue] = part.trim().split(\"=\");\n\n if (rawKey === name) {\n const raw = rawValue.join(\"=\");\n if (raw.indexOf(\"%\") === -1) {\n return raw;\n }\n\n // Issue 076 / 072: malformed `%`-escapes raise URIError; treat\n // the cookie as absent so a bogus cookie cannot abort the handler.\n try {\n return decodeURIComponent(raw);\n } catch {\n return undefined;\n }\n }\n }\n\n return undefined;\n}\n\nfunction jsonResponse(value: unknown, status: number): Response {\n return new Response(JSON.stringify(value), {\n status,\n headers: { \"content-type\": \"application/json\" },\n });\n}\n\nfunction serializeJsonForHtml(value: unknown): string {\n return JSON.stringify(value)\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\"\\u2028\", \"\\\\u2028\")\n .replaceAll(\"\\u2029\", \"\\\\u2029\");\n}\n\nfunction escapeAttribute(value: string): string {\n return value\n .replaceAll(\"&\", \"&\")\n .replaceAll('\"', \""\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\");\n}\n"]}
|
package/dist/reorder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,UAAqB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,UAAqB,GAAG,IAAI,CA0C1E"}
|
package/dist/reorder.js
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
/** Moves out-of-order fragments into their matching placeholders within a DOM root. */
|
|
2
2
|
export function applyOutOfOrderFragments(root = document) {
|
|
3
3
|
const fragments = Array.from(root.querySelectorAll("template[data-mreact-oob-fragment]"));
|
|
4
|
+
const completionMarkers = new Map();
|
|
5
|
+
for (const marker of root.querySelectorAll("[data-mreact-oob-complete]")) {
|
|
6
|
+
const id = marker.getAttribute("data-mreact-oob-complete");
|
|
7
|
+
if (!completionMarkers.has(id)) {
|
|
8
|
+
completionMarkers.set(id, marker);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const placeholders = new Map();
|
|
12
|
+
for (const placeholder of root.querySelectorAll("[data-mreact-oob-placeholder]")) {
|
|
13
|
+
const id = placeholder.getAttribute("data-mreact-oob-placeholder");
|
|
14
|
+
if (!placeholders.has(id)) {
|
|
15
|
+
placeholders.set(id, placeholder);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
4
18
|
for (const fragment of fragments) {
|
|
5
19
|
const id = fragment.dataset.mreactOobFragment;
|
|
6
20
|
if (id === undefined) {
|
|
7
21
|
continue;
|
|
8
22
|
}
|
|
9
|
-
const completionMarker =
|
|
23
|
+
const completionMarker = completionMarkers.get(id);
|
|
10
24
|
if (completionMarker === undefined) {
|
|
11
25
|
continue;
|
|
12
26
|
}
|
|
13
|
-
const placeholder =
|
|
14
|
-
if (placeholder ===
|
|
27
|
+
const placeholder = placeholders.get(id);
|
|
28
|
+
if (placeholder === undefined) {
|
|
15
29
|
continue;
|
|
16
30
|
}
|
|
17
31
|
placeholder.replaceWith(fragment.content.cloneNode(true));
|
|
@@ -19,7 +33,4 @@ export function applyOutOfOrderFragments(root = document) {
|
|
|
19
33
|
completionMarker.remove();
|
|
20
34
|
}
|
|
21
35
|
}
|
|
22
|
-
function cssEscape(value) {
|
|
23
|
-
return value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"");
|
|
24
|
-
}
|
|
25
36
|
//# sourceMappingURL=reorder.js.map
|
package/dist/reorder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.js","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,OAAmB,QAAQ;IAClE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,IAAI,CAAC,gBAAgB,CACnB,oCAAoC,CACrC,CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"reorder.js","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,OAAmB,QAAQ;IAClE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,IAAI,CAAC,gBAAgB,CACnB,oCAAoC,CACrC,CACF,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAU,4BAA4B,CAAC,EAAE,CAAC;QAClF,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;IACvD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAU,+BAA+B,CAAC,EAAE,CAAC;QAC1F,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAE9C,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC","sourcesContent":["/** Moves out-of-order fragments into their matching placeholders within a DOM root. */\nexport function applyOutOfOrderFragments(root: ParentNode = document): void {\n const fragments = Array.from(\n root.querySelectorAll<HTMLTemplateElement>(\n \"template[data-mreact-oob-fragment]\",\n ),\n );\n const completionMarkers = new Map<string | null, Element>();\n for (const marker of root.querySelectorAll<Element>(\"[data-mreact-oob-complete]\")) {\n const id = marker.getAttribute(\"data-mreact-oob-complete\");\n if (!completionMarkers.has(id)) {\n completionMarkers.set(id, marker);\n }\n }\n const placeholders = new Map<string | null, Element>();\n for (const placeholder of root.querySelectorAll<Element>(\"[data-mreact-oob-placeholder]\")) {\n const id = placeholder.getAttribute(\"data-mreact-oob-placeholder\");\n if (!placeholders.has(id)) {\n placeholders.set(id, placeholder);\n }\n }\n\n for (const fragment of fragments) {\n const id = fragment.dataset.mreactOobFragment;\n\n if (id === undefined) {\n continue;\n }\n\n const completionMarker = completionMarkers.get(id);\n if (completionMarker === undefined) {\n continue;\n }\n\n const placeholder = placeholders.get(id);\n if (placeholder === undefined) {\n continue;\n }\n\n placeholder.replaceWith(fragment.content.cloneNode(true));\n fragment.remove();\n completionMarker.remove();\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reckona/mreact-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.182",
|
|
4
4
|
"description": "Server rendering, streaming, hydration, and Flight primitives for mreact.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"flight",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"access": "public"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@reckona/mreact-
|
|
65
|
-
"@reckona/mreact-
|
|
64
|
+
"@reckona/mreact-compat": "0.0.182",
|
|
65
|
+
"@reckona/mreact-shared": "0.0.182"
|
|
66
66
|
}
|
|
67
67
|
}
|
package/src/boundary.ts
CHANGED
|
@@ -472,7 +472,7 @@ function isPromiseLike(value: unknown): value is PromiseLike<void> {
|
|
|
472
472
|
return isPromiseLikeUnknown(value);
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
-
const outOfOrderReorderScript = `(()=>{function apply(root){const fragments=Array.from(root.querySelectorAll("template[data-mreact-oob-fragment]"));for(const
|
|
475
|
+
const outOfOrderReorderScript = `(()=>{function apply(root){const fragments=Array.from(root.querySelectorAll("template[data-mreact-oob-fragment]"));const markers=new Map();for(const marker of root.querySelectorAll("[data-mreact-oob-complete]")){const id=marker.getAttribute("data-mreact-oob-complete");if(!markers.has(id))markers.set(id,marker);}const placeholders=new Map();for(const placeholder of root.querySelectorAll("[data-mreact-oob-placeholder]")){const id=placeholder.getAttribute("data-mreact-oob-placeholder");if(!placeholders.has(id))placeholders.set(id,placeholder);}for(const fragment of fragments){const id=fragment.getAttribute("data-mreact-oob-fragment");if(id===null)continue;const marker=markers.get(id);if(marker===undefined)continue;const placeholder=placeholders.get(id);if(placeholder===undefined)continue;placeholder.replaceWith(fragment.content.cloneNode(true));fragment.remove();marker.remove();}}apply(document);new MutationObserver(()=>apply(document)).observe(document.documentElement,{childList:true,subtree:true});})();`;
|
|
476
476
|
|
|
477
477
|
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="$";})`;
|
|
478
478
|
|
package/src/flight.ts
CHANGED
|
@@ -1711,7 +1711,7 @@ async function serializeFlightValue(
|
|
|
1711
1711
|
): Promise<FlightModel> {
|
|
1712
1712
|
if (depth > MAX_FLIGHT_DECODE_DEPTH) flightTooDeep();
|
|
1713
1713
|
|
|
1714
|
-
const awaited = await value;
|
|
1714
|
+
const awaited = isThenable(value) ? await value : value;
|
|
1715
1715
|
|
|
1716
1716
|
if (awaited === null) {
|
|
1717
1717
|
return null;
|
|
@@ -1955,6 +1955,14 @@ function isReactCompatElement(value: unknown): value is ReactCompatElementLike {
|
|
|
1955
1955
|
);
|
|
1956
1956
|
}
|
|
1957
1957
|
|
|
1958
|
+
function isThenable(value: unknown): value is PromiseLike<unknown> {
|
|
1959
|
+
return (
|
|
1960
|
+
value !== null &&
|
|
1961
|
+
(typeof value === "object" || typeof value === "function") &&
|
|
1962
|
+
typeof (value as { then?: unknown }).then === "function"
|
|
1963
|
+
);
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1958
1966
|
function isFormDataLike(value: unknown): value is FormData {
|
|
1959
1967
|
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
1960
1968
|
}
|
package/src/reorder.ts
CHANGED
|
@@ -5,6 +5,20 @@ export function applyOutOfOrderFragments(root: ParentNode = document): void {
|
|
|
5
5
|
"template[data-mreact-oob-fragment]",
|
|
6
6
|
),
|
|
7
7
|
);
|
|
8
|
+
const completionMarkers = new Map<string | null, Element>();
|
|
9
|
+
for (const marker of root.querySelectorAll<Element>("[data-mreact-oob-complete]")) {
|
|
10
|
+
const id = marker.getAttribute("data-mreact-oob-complete");
|
|
11
|
+
if (!completionMarkers.has(id)) {
|
|
12
|
+
completionMarkers.set(id, marker);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const placeholders = new Map<string | null, Element>();
|
|
16
|
+
for (const placeholder of root.querySelectorAll<Element>("[data-mreact-oob-placeholder]")) {
|
|
17
|
+
const id = placeholder.getAttribute("data-mreact-oob-placeholder");
|
|
18
|
+
if (!placeholders.has(id)) {
|
|
19
|
+
placeholders.set(id, placeholder);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
8
22
|
|
|
9
23
|
for (const fragment of fragments) {
|
|
10
24
|
const id = fragment.dataset.mreactOobFragment;
|
|
@@ -13,19 +27,13 @@ export function applyOutOfOrderFragments(root: ParentNode = document): void {
|
|
|
13
27
|
continue;
|
|
14
28
|
}
|
|
15
29
|
|
|
16
|
-
const completionMarker =
|
|
17
|
-
root.querySelectorAll<Element>("[data-mreact-oob-complete]"),
|
|
18
|
-
).find((candidate) => candidate.getAttribute("data-mreact-oob-complete") === id);
|
|
19
|
-
|
|
30
|
+
const completionMarker = completionMarkers.get(id);
|
|
20
31
|
if (completionMarker === undefined) {
|
|
21
32
|
continue;
|
|
22
33
|
}
|
|
23
34
|
|
|
24
|
-
const placeholder =
|
|
25
|
-
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
if (placeholder === null) {
|
|
35
|
+
const placeholder = placeholders.get(id);
|
|
36
|
+
if (placeholder === undefined) {
|
|
29
37
|
continue;
|
|
30
38
|
}
|
|
31
39
|
|
|
@@ -34,7 +42,3 @@ export function applyOutOfOrderFragments(root: ParentNode = document): void {
|
|
|
34
42
|
completionMarker.remove();
|
|
35
43
|
}
|
|
36
44
|
}
|
|
37
|
-
|
|
38
|
-
function cssEscape(value: string): string {
|
|
39
|
-
return value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"");
|
|
40
|
-
}
|