66
77import { isUtf8 } from 'node:buffer' ;
88
9- import type { HTTPRequest , HTTPResponse } from '../third_party/index.js' ;
9+ import {
10+ DevTools ,
11+ type HTTPRequest ,
12+ type HTTPResponse ,
13+ } from '../third_party/index.js' ;
1014
1115const BODY_CONTEXT_SIZE_LIMIT = 10000 ;
1216
@@ -21,6 +25,7 @@ export interface NetworkFormatterOptions {
2125 data : Uint8Array < ArrayBufferLike > ,
2226 filename : string ,
2327 ) => Promise < { filename : string } > ;
28+ redactNetworkHeaders : boolean ;
2429}
2530
2631interface NetworkRequestConcise {
@@ -150,6 +155,20 @@ export class NetworkFormatter {
150155 } ;
151156 }
152157
158+ #redactNetworkHeaders(
159+ headers : Record < string , string > ,
160+ ) : Record < string , string > {
161+ const headersList = Object . entries ( headers ) . map ( item => {
162+ return { name : item [ 0 ] , value : item [ 1 ] } ;
163+ } ) ;
164+ const redacted =
165+ DevTools . NetworkRequestFormatter . sanitizeHeaders ( headersList ) ;
166+ return redacted . reduce < Record < string , string > > ( ( acc , item ) => {
167+ acc [ item . name ] = item . value ;
168+ return acc ;
169+ } , { } ) ;
170+ }
171+
153172 toJSONDetailed ( ) : NetworkRequestDetailed {
154173 const redirectChain = this . #request. redirectChain ( ) ;
155174 const formattedRedirectChain = redirectChain . reverse ( ) . map ( request => {
@@ -159,16 +178,24 @@ export class NetworkFormatter {
159178 const formatter = new NetworkFormatter ( request , {
160179 requestId : id ,
161180 saveFile : this . #options. saveFile ,
181+ redactNetworkHeaders : this . #options. redactNetworkHeaders ,
162182 } ) ;
163183 return formatter . toJSON ( ) ;
164184 } ) ;
165185
186+ const responseHeaders = this . #request. response ( ) ?. headers ( ) ;
187+
166188 return {
167189 ...this . toJSON ( ) ,
168- requestHeaders : this . #request. headers ( ) ,
190+ requestHeaders : this . #options. redactNetworkHeaders
191+ ? this . #redactNetworkHeaders( this . #request. headers ( ) )
192+ : this . #request. headers ( ) ,
169193 requestBody : this . #requestBody,
170194 requestBodyFilePath : this . #requestBodyFilePath,
171- responseHeaders : this . #request. response ( ) ?. headers ( ) ,
195+ responseHeaders :
196+ this . #options. redactNetworkHeaders && responseHeaders
197+ ? this . #redactNetworkHeaders( responseHeaders )
198+ : this . #request. response ( ) ?. headers ( ) ,
172199 responseBody : this . #responseBody,
173200 responseBodyFilePath : this . #responseBodyFilePath,
174201 failure : this . #request. failure ( ) ?. errorText ,
0 commit comments