Skip to content

Commit

Permalink
refactor(server): pass Uint8Array inside vm
Browse files Browse the repository at this point in the history
  • Loading branch information
Kikobeats committed Sep 22, 2022
1 parent e062f7b commit 0f4e39c
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
5 changes: 4 additions & 1 deletion packages/next/server/body-streams.ts
Expand Up @@ -3,11 +3,14 @@ import { PassThrough, Readable } from 'stream'

export function requestToBodyStream(
context: { ReadableStream: typeof ReadableStream },
KUint8Array: typeof Uint8Array,
stream: Readable
) {
return new context.ReadableStream({
start(controller) {
stream.on('data', (chunk) => controller.enqueue(chunk))
stream.on('data', (chunk) =>
controller.enqueue(new KUint8Array([...new Uint8Array(chunk)]))
)
stream.on('end', () => controller.close())
stream.on('error', (err) => controller.error(err))
},
Expand Down
2 changes: 1 addition & 1 deletion packages/next/server/web/sandbox/fetch-inline-assets.ts
Expand Up @@ -34,7 +34,7 @@ export async function fetchInlineAsset(options: {
if (fileIsReadable) {
const readStream = createReadStream(filePath)
return new options.context.Response(
requestToBodyStream(options.context, readStream)
requestToBodyStream(options.context, Uint8Array, readStream)
)
}
}
5 changes: 4 additions & 1 deletion packages/next/server/web/sandbox/sandbox.ts
Expand Up @@ -92,11 +92,14 @@ export const run = withTaggedErrors(async (params) => {
? params.request.body?.cloneBodyStream()
: undefined

const KUint8Array = runtime.evaluate('Uint8Array')

try {
const result = await edgeFunction({
request: {
...params.request,
body: cloned && requestToBodyStream(runtime.context, cloned),
body:
cloned && requestToBodyStream(runtime.context, KUint8Array, cloned),
},
})
for (const headerName of FORBIDDEN_HEADERS) {
Expand Down

0 comments on commit 0f4e39c

Please sign in to comment.