1- export const REDACTED_STATE = {
2- data : '[REDACTED_STATE]' ,
3- _$REDACTED$_ : true ,
4- } ;
1+ // This specifies which keys of an event payload to potentially redact
2+ // if they are too big
3+ const KEYS_TO_VERIFY = [ 'state' , 'final_state' , 'log' ] ;
54
6- export const REDACTED_LOG = {
7- message : [ '[REDACTED: Message length exceeds payload limit]' ] ,
8- _$REDACTED$_ : true ,
5+ const replacements : Record < string , any > = {
6+ log : {
7+ message : [ '[REDACTED: Message length exceeds payload limit]' ] ,
8+ } ,
9+ default : {
10+ data : '[REDACTED]' ,
11+ } ,
912} ;
1013
1114export const verify = ( value : any , limit_mb : number = 10 ) => {
@@ -32,19 +35,14 @@ export const verify = (value: any, limit_mb: number = 10) => {
3235export default ( payload : any , limit_mb : number = 10 ) => {
3336 const newPayload = { ...payload } ;
3437
35- // The payload could be any of the runtime events
36- // The bits we might want to redact are state and message
37- try {
38- verify ( payload . state , limit_mb ) ;
39- } catch ( e ) {
40- newPayload . state = REDACTED_STATE ;
41- newPayload . redacted = true ;
42- }
43- try {
44- verify ( payload . log , limit_mb ) ;
45- } catch ( e ) {
46- Object . assign ( newPayload . log , REDACTED_LOG ) ;
47- newPayload . redacted = true ;
38+ for ( const key of KEYS_TO_VERIFY ) {
39+ try {
40+ verify ( payload [ key ] , limit_mb ) ;
41+ } catch ( e ) {
42+ Object . assign ( newPayload [ key ] , replacements [ key ] ?? replacements . default ) ;
43+ newPayload . redacted = true ;
44+ }
4845 }
46+
4947 return newPayload ;
5048} ;
0 commit comments