@@ -39,7 +39,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
39
39
}
40
40
writeEarlyHints (
41
41
_hints : Record < string , string | string [ ] > ,
42
- _callback ?: ( ( ) => void ) | undefined ,
42
+ _callback ?: ( ( ) => void ) | undefined
43
43
) : void {
44
44
throw new Error ( CANNOT_BE_USED ) ;
45
45
}
@@ -61,7 +61,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
61
61
throw new Error ( CANNOT_BE_USED ) ;
62
62
}
63
63
addTrailers (
64
- _headers : OutgoingHttpHeaders | readonly [ string , string ] [ ] ,
64
+ _headers : OutgoingHttpHeaders | readonly [ string , string ] [ ]
65
65
) : void {
66
66
throw new Error ( CANNOT_BE_USED ) ;
67
67
}
@@ -71,7 +71,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
71
71
private onEnd : ( headers : OutgoingHttpHeaders ) => Promise < void > ,
72
72
private streamCreator ?: StreamCreator ,
73
73
private initialHeaders ?: OutgoingHttpHeaders ,
74
- statusCode ?: number ,
74
+ statusCode ?: number
75
75
) {
76
76
super ( ) ;
77
77
// We only set the status code if it is not a NaN and it is a number
@@ -171,7 +171,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
171
171
...this . headers ,
172
172
} ;
173
173
const initialCookies = parseSetCookieHeader (
174
- this . initialHeaders [ SET_COOKIE_HEADER ] ?. toString ( ) ,
174
+ this . initialHeaders [ SET_COOKIE_HEADER ] ?. toString ( )
175
175
) ;
176
176
this . _cookies =
177
177
mergeHeadersPriority === "middleware"
@@ -217,16 +217,16 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
217
217
writeHead (
218
218
statusCode : number ,
219
219
statusMessage ?: string | undefined ,
220
- headers ?: OutgoingHttpHeaders | OutgoingHttpHeader [ ] | undefined ,
220
+ headers ?: OutgoingHttpHeaders | OutgoingHttpHeader [ ] | undefined
221
221
) : this;
222
222
writeHead (
223
223
statusCode : number ,
224
- headers ?: OutgoingHttpHeaders | OutgoingHttpHeader [ ] | undefined ,
224
+ headers ?: OutgoingHttpHeaders | OutgoingHttpHeader [ ] | undefined
225
225
) : this;
226
226
writeHead (
227
227
statusCode : unknown ,
228
228
statusMessage ?: unknown ,
229
- headers ?: unknown ,
229
+ headers ?: unknown
230
230
) : this {
231
231
let _headers = headers as
232
232
| OutgoingHttpHeaders
@@ -282,6 +282,14 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
282
282
return Buffer . concat ( this . _chunks ) ;
283
283
}
284
284
285
+ getBodyLength ( ) : number {
286
+ let size = 0 ;
287
+ for ( const chunk of this . _chunks ) {
288
+ size += chunk . length ;
289
+ }
290
+ return size ;
291
+ }
292
+
285
293
private _internalWrite ( chunk : any , encoding : BufferEncoding ) {
286
294
this . _chunks . push ( Buffer . from ( chunk , encoding ) ) ;
287
295
this . push ( chunk , encoding ) ;
@@ -291,7 +299,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
291
299
_transform (
292
300
chunk : any ,
293
301
encoding : BufferEncoding ,
294
- callback : TransformCallback ,
302
+ callback : TransformCallback
295
303
) : void {
296
304
if ( ! this . headersSent ) {
297
305
this . flushHeaders ( ) ;
@@ -310,7 +318,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
310
318
globalThis . __openNextAls
311
319
?. getStore ( )
312
320
?. pendingPromiseRunner . add ( this . onEnd ( this . headers ) ) ;
313
- const bodyLength = this . getBody ( ) . length ;
321
+ const bodyLength = this . getBodyLength ( ) ;
314
322
this . streamCreator ?. onFinish ?.( bodyLength ) ;
315
323
316
324
//This is only here because of aws broken streaming implementation.
@@ -338,7 +346,7 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
338
346
*/
339
347
340
348
setHeaders (
341
- headers : Headers | Map < string , number | string | readonly string [ ] > ,
349
+ headers : Headers | Map < string , number | string | readonly string [ ] >
342
350
) : this {
343
351
headers . forEach ( ( value , key ) => {
344
352
this . setHeader ( key , Array . isArray ( value ) ? value : value . toString ( ) ) ;
@@ -361,13 +369,15 @@ export class OpenNextNodeResponse extends Transform implements ServerResponse {
361
369
if ( values === undefined ) return undefined ;
362
370
363
371
return ( Array . isArray ( values ) ? values : [ values ] ) . map ( ( value ) =>
364
- value . toString ( ) ,
372
+ value . toString ( )
365
373
) ;
366
374
}
367
375
368
376
send ( ) {
369
- const body = this . getBody ( ) ;
370
- this . end ( body ) ;
377
+ for ( const chunk of this . _chunks ) {
378
+ this . write ( chunk ) ;
379
+ }
380
+ this . end ( ) ;
371
381
}
372
382
373
383
body ( value : string ) {
0 commit comments