@@ -68,21 +68,11 @@ const SENSITIVE_VALUE_PATTERNS: Array<{
6868 pattern : / \b ( s k | p k | a p i | k e y ) [ _ - ] [ A - Z a - z 0 - 9 \- . _ ] { 20 , } \b / gi,
6969 replacement : REDACTED_MARKER ,
7070 } ,
71- // JSON-style password fields: password: "value" or password: 'value'
72- {
73- pattern : / p a s s w o r d [ ' " : \s ] * [ ' " ] [ ^ ' " ] + [ ' " ] / gi,
74- replacement : `password: "${ REDACTED_MARKER } "` ,
75- } ,
76- // JSON-style token fields: token: "value" or token: 'value'
77- {
78- pattern : / t o k e n [ ' " : \s ] * [ ' " ] [ ^ ' " ] + [ ' " ] / gi,
79- replacement : `token: "${ REDACTED_MARKER } "` ,
80- } ,
81- // JSON-style api_key fields: api_key: "value" or api-key: "value"
82- {
83- pattern : / a p i [ _ - ] ? k e y [ ' " : \s ] * [ ' " ] [ ^ ' " ] + [ ' " ] / gi,
84- replacement : `api_key: "${ REDACTED_MARKER } "` ,
85- } ,
71+ ]
72+
73+ const STRING_FIELD_PATTERNS = [
74+ / ( ^ | [ { , \s ] ) ( [ " ' ] ? ) ( [ A - Z a - z 0 - 9 _ - ] + ) \2( \s * : \s * ) ( " (?: \\ .| [ ^ " \\ ] ) * " ) / gm,
75+ / ( ^ | [ { , \s ] ) ( [ " ' ] ? ) ( [ A - Z a - z 0 - 9 _ - ] + ) \2( \s * : \s * ) ( ' (?: \\ .| [ ^ ' \\ ] ) * ' ) / gm,
8676]
8777
8878export function isSensitiveKey ( key : string ) : boolean {
@@ -104,6 +94,13 @@ export function redactSensitiveValues(value: string): string {
10494 }
10595
10696 let result = value
97+ for ( const pattern of STRING_FIELD_PATTERNS ) {
98+ result = result . replace ( pattern , ( match , prefix , keyQuote , key , separator , quotedValue ) =>
99+ isSensitiveKey ( key )
100+ ? `${ prefix } ${ keyQuote } ${ key } ${ keyQuote } ${ separator } ${ quotedValue [ 0 ] } ${ REDACTED_MARKER } ${ quotedValue [ 0 ] } `
101+ : match
102+ )
103+ }
107104 for ( const { pattern, replacement } of SENSITIVE_VALUE_PATTERNS ) {
108105 result = result . replace ( pattern , replacement )
109106 }
0 commit comments