Skip to content

Commit d49dfb6

Browse files
committed
[Incomplete] Hook up temporary references
1 parent 6a5db87 commit d49dfb6

File tree

7 files changed

+33
-10
lines changed

7 files changed

+33
-10
lines changed

packages/next/src/server/app-render/action-handler.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,9 @@ export async function handleAction({
398398
type: 'done'
399399
result: RenderResult | undefined
400400
formState?: any
401-
temporaryReferences: unknown
401+
temporaryReferences:
402+
| import('react-dom/server.edge').TemporaryReferencesSet
403+
| undefined
402404
}
403405
> {
404406
const contentType = req.headers['content-type']
@@ -561,6 +563,9 @@ export async function handleAction({
561563
}
562564
}
563565

566+
let temporaryReferences:
567+
| import('react-dom/server.edge').TemporaryReferencesSet
568+
| undefined
564569
try {
565570
await actionAsyncStorage.run({ isAction: true }, async () => {
566571
if (
@@ -579,7 +584,7 @@ export async function handleAction({
579584
if (!req.body) {
580585
throw new Error('invariant: Missing request body.')
581586
}
582-
const temporaryReferences = createTemporaryReferenceSet()
587+
temporaryReferences = createTemporaryReferenceSet()
583588

584589
// TODO: add body limit
585590

@@ -651,7 +656,7 @@ export async function handleAction({
651656
decodeAction,
652657
decodeFormState,
653658
} = require(`./react-server.node`)
654-
const temporaryReferences = createTemporaryReferenceSet()
659+
temporaryReferences = createTemporaryReferenceSet()
655660

656661
const { Transform } =
657662
require('node:stream') as typeof import('node:stream')
@@ -822,7 +827,7 @@ export async function handleAction({
822827
type: 'done',
823828
result: actionResult,
824829
formState,
825-
temporaryReferences: undefined,
830+
temporaryReferences,
826831
}
827832
} catch (err) {
828833
if (isRedirectError(err)) {
@@ -895,7 +900,7 @@ export async function handleAction({
895900
actionResult: promise,
896901
asNotFound: true,
897902
}),
898-
temporaryReferences: undefined,
903+
temporaryReferences,
899904
}
900905
}
901906
return {
@@ -930,7 +935,7 @@ export async function handleAction({
930935
skipFlight:
931936
!staticGenerationStore.pathWasRevalidated || actionWasForwarded,
932937
}),
933-
temporaryReferences: undefined,
938+
temporaryReferences,
934939
}
935940
}
936941

packages/next/src/server/app-render/app-render.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,9 @@ type RenderToStreamOptions = {
388388
asNotFound: boolean
389389
tree: LoaderTree
390390
formState: any
391-
temporaryReferences: unknown
391+
temporaryReferences:
392+
| import('react-dom/server.edge').TemporaryReferencesSet
393+
| undefined
392394
}
393395

394396
/**
@@ -919,6 +921,7 @@ async function renderToHTMLOrFlightImpl(
919921
asNotFound,
920922
tree,
921923
formState,
924+
temporaryReferences,
922925
}: RenderToStreamOptions): Promise<RenderToStreamResult> => {
923926
const tracingMetadata = getTracedMetadata(
924927
getTracer().getTracePropagationData(),
@@ -960,6 +963,7 @@ async function renderToHTMLOrFlightImpl(
960963
{
961964
onError: serverComponentsErrorHandler,
962965
nonce,
966+
temporaryReferences,
963967
}
964968
)
965969

@@ -1292,6 +1296,7 @@ async function renderToHTMLOrFlightImpl(
12921296
{
12931297
onError: serverComponentsErrorHandler,
12941298
nonce,
1299+
temporaryReferences,
12951300
}
12961301
)
12971302

@@ -1311,6 +1316,7 @@ async function renderToHTMLOrFlightImpl(
13111316
// Include hydration scripts in the HTML
13121317
bootstrapScripts: [errorBootstrapScript],
13131318
formState,
1319+
temporaryReferences,
13141320
},
13151321
})
13161322

packages/next/src/server/app-render/make-get-server-inserted-html.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ export function makeGetServerInsertedHTML({
110110
// Larger chunk because this isn't sent over the network.
111111
// Let's set it to 1MB.
112112
progressiveChunkSize: 1024 * 1024,
113+
temporaryReferences: undefined,
113114
}
114115
)
115116

packages/next/src/server/app-render/static/static-renderer.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@ export class ServerRenderer implements Renderer {
4949
private readonly renderToReadableStream = require('react-dom/server.edge')
5050
.renderToReadableStream as (typeof import('react-dom/server.edge'))['renderToReadableStream']
5151

52-
constructor(private readonly options: RenderToReadableStreamOptions) {}
52+
constructor(
53+
private readonly options: Omit<
54+
RenderToReadableStreamOptions,
55+
'temporaryReferences'
56+
>
57+
) {}
5358

5459
public async render(children: JSX.Element): Promise<RenderResult> {
5560
const stream = await this.renderToReadableStream(children, this.options)

packages/next/src/server/app-render/use-flight-response.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export async function flightRenderComplete(
9090
export function createInlinedDataReadableStream(
9191
flightStream: ReadableStream<Uint8Array>,
9292
nonce: string | undefined,
93-
formState: unknown | null
93+
formState: unknown | null,
9494
): ReadableStream<Uint8Array> {
9595
const startScriptTag = nonce
9696
? `<script nonce=${JSON.stringify(nonce)}>`

packages/next/src/server/stream-utils/node-web-streams-helper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ export function renderToInitialFizzStream({
168168
}: {
169169
ReactDOMServer: typeof import('react-dom/server.edge')
170170
element: React.ReactElement
171-
streamOptions?: any
171+
streamOptions?: import('react-dom/server.edge').Options
172172
}): Promise<ReactReadableStream> {
173173
return getTracer().trace(AppRenderSpan.renderToReadableStream, async () =>
174174
ReactDOMServer.renderToReadableStream(element, streamOptions)

packages/next/types/react-dom.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ declare module 'react-dom/server.edge' {
3131
}
3232
): Promise<ReadableStream<Uint8Array>>
3333

34+
const REACT_TEMPORARY_REFERENCES_SIGIL: unique symbol
35+
export interface TemporaryReferencesSet {
36+
[REACT_TEMPORARY_REFERENCES_SIGIL]: never
37+
}
38+
3439
/**
3540
* Options for `renderToReadableStream`.
3641
*
@@ -61,6 +66,7 @@ declare module 'react-dom/server.edge' {
6166
formState?: unknown
6267
onHeaders?: (headers: Headers) => void
6368
maxHeadersLength?: number
69+
temporaryReferences?: TemporaryReferencesSet | undefined
6470
}
6571

6672
export function renderToReadableStream(

0 commit comments

Comments
 (0)