Skip to content

Commit

Permalink
fix types
Browse files Browse the repository at this point in the history
  • Loading branch information
sokra committed Jun 7, 2023
1 parent 3999f6f commit 4ca568c
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ startOperationStreamHandler(async (renderData: RenderData, respond) => {

const channel = respond({
status: response.status,
// @ts-expect-error Headers is iterable since node.js 18
headers: [...response.headers],
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ async function render(request: NextRequest, event: NextFetchEvent) {
let [, pathname, query] = /^([^?]*)(.*)$/.exec(request.url)!

const result = await renderToHTMLOrFlight(
// @ts-expect-error - TODO renderToHTMLOrFlight types should accept web platform types
request,
response,
pathname,
Expand All @@ -71,12 +72,18 @@ async function render(request: NextRequest, event: NextFetchEvent) {
renderOpt as any as RenderOpts
)

response.headers.append('Content-Type', MIME_TEXT_HTML_UTF8)
response.headers.append(
'Content-Type',
result.contentType() || MIME_TEXT_HTML_UTF8
)
response.headers.append('Vary', RSC_VARY_HEADER)

const writer = tranform.writable.getWriter()
writer.end = writer.close
result.pipe(writer)
result.pipe({
write: (chunk: Uint8Array) => writer.write(chunk),
end: () => writer.close(),
destroy: (reason: Error) => writer.abort(reason),
})

return response
}
Expand Down
3 changes: 1 addition & 2 deletions packages/next-swc/crates/next-core/js/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@
"@vercel/turbopack-next/pages/_app": ["node_modules/next/app"],
"@vercel/turbopack-next/pages/_document": ["node_modules/next/document"],
"@vercel/turbopack-next/pages/_error": ["node_modules/next/error"],
"@vercel/turbopack-next/internal/_error": ["node_modules/next/error"],
"next/*": ["node_modules/next/*"]
"@vercel/turbopack-next/internal/_error": ["node_modules/next/error"]
},
"resolveJsonModule": true,
"types": ["react/next"],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
declare module 'next/dist/compiled/react-server-dom-webpack/client'
declare module 'next/dist/client/app-call-server'
12 changes: 8 additions & 4 deletions packages/next/src/server/render-result.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import type { ServerResponse } from 'http'
import { Writable } from 'stream'

type ContentTypeOption = string | undefined

export type RenderResultMetadata = {
Expand All @@ -12,6 +9,13 @@ export type RenderResultMetadata = {
isRedirect?: boolean
}

export interface PipeTarget {
write: (chunk: Uint8Array) => unknown
end: () => unknown
flush?: () => unknown
destroy: (err?: Error) => unknown
}

export default class RenderResult {
private readonly _response: string | ReadableStream<Uint8Array> | null
private readonly _contentType: ContentTypeOption
Expand Down Expand Up @@ -52,7 +56,7 @@ export default class RenderResult {
return this._response
}

pipe(res: ServerResponse | Writable): Promise<void> {
pipe(res: PipeTarget): Promise<void> {
if (this._response === null) {
throw new Error('invariant: response is null. This is a bug in Next.js')
}
Expand Down

0 comments on commit 4ca568c

Please sign in to comment.