@@ -86,27 +86,50 @@ function redactSensitiveFields(obj, recursionDepth = 0, maxDepth = 5, seen = new
8686 }
8787 seen . add ( obj ) ;
8888
89- const redactedObj = Array . isArray ( obj ) ? [ ] : { } ;
90- for ( const key in obj ) {
91- if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) {
92- const lowerKey = key . toLowerCase ( ) ;
93- let isSensitive = false ;
94- for ( const keyword of SENSITIVE_KEYWORDS ) {
95- if ( lowerKey . includes ( keyword ) ) {
96- isSensitive = true ;
97- break ;
89+ if ( Array . isArray ( obj ) ) {
90+ const redactedArray = [ ] ;
91+ for ( let i = 0 ; i < obj . length ; i ++ ) {
92+ const item = obj [ i ] ;
93+ if ( item !== null && typeof item === 'object' ) {
94+ redactedArray [ i ] = redactSensitiveFields ( item , recursionDepth + 1 , maxDepth , seen ) ;
95+ } else if ( typeof item === 'string' ) {
96+ let isItemSensitive = false ;
97+ const lowerItem = item . toLowerCase ( ) ;
98+ for ( const keyword of SENSITIVE_KEYWORDS ) {
99+ if ( lowerItem . includes ( keyword ) ) {
100+ isItemSensitive = true ;
101+ break ;
102+ }
98103 }
99- }
100- if ( isSensitive ) {
101- redactedObj [ key ] = 'REDACTED' ;
102- } else if ( obj [ key ] !== null && typeof obj [ key ] === 'object' ) { // Added obj[key] !== null check
103- redactedObj [ key ] = redactSensitiveFields ( obj [ key ] , recursionDepth + 1 , maxDepth , seen ) ;
104+ redactedArray [ i ] = isItemSensitive ? 'REDACTED' : item ;
104105 } else {
105- redactedObj [ key ] = obj [ key ] ;
106+ redactedArray [ i ] = item ;
107+ }
108+ }
109+ return redactedArray ;
110+ } else {
111+ const redactedObj = { } ;
112+ for ( const key in obj ) {
113+ if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) {
114+ const lowerKey = key . toLowerCase ( ) ;
115+ let isKeySensitive = false ;
116+ for ( const keyword of SENSITIVE_KEYWORDS ) {
117+ if ( lowerKey . includes ( keyword ) ) {
118+ isKeySensitive = true ;
119+ break ;
120+ }
121+ }
122+ if ( isKeySensitive ) {
123+ redactedObj [ key ] = 'REDACTED' ;
124+ } else if ( obj [ key ] !== null && typeof obj [ key ] === 'object' ) {
125+ redactedObj [ key ] = redactSensitiveFields ( obj [ key ] , recursionDepth + 1 , maxDepth , seen ) ;
126+ } else {
127+ redactedObj [ key ] = obj [ key ] ;
128+ }
106129 }
107130 }
131+ return redactedObj ;
108132 }
109- return redactedObj ;
110133}
111134
112135function setPortProxy ( port , proxyTabId ) {
@@ -139,7 +162,7 @@ function setPortProxy(port, proxyTabId) {
139162 port . proxy . postMessage ( msg )
140163 } catch ( e ) {
141164 console . error ( '[background] Error posting message to proxy tab in _portOnMessage:' , e , msg ) ;
142- try { // Attempt to notify the original sender about the failure
165+ try {
143166 port . postMessage ( { error : 'Failed to forward message to target tab. Tab might be closed or an extension error occurred.' } ) ;
144167 } catch ( notifyError ) {
145168 console . error ( '[background] Error sending forwarding failure notification back to original sender:' , notifyError ) ;
@@ -174,11 +197,11 @@ function setPortProxy(port, proxyTabId) {
174197 try { port . onMessage . removeListener ( port . _portOnMessage ) ; }
175198 catch ( e ) { console . warn ( "[background] Error removing _portOnMessage on max retries:" , e ) ; }
176199 }
177- if ( port . _portOnDisconnect ) { // Cleanup _portOnDisconnect as well
200+ if ( port . _portOnDisconnect ) {
178201 try { port . onDisconnect . removeListener ( port . _portOnDisconnect ) ; }
179- catch ( e ) { console . warn ( "[background] Error removing _portOnDisconnect on max retries:" , e ) ; }
202+ catch ( e ) { console . warn ( "[background] Error removing _portOnDisconnect from main port on max retries:" , e ) ; }
180203 }
181- try { // Notify user about final connection failure
204+ try {
182205 port . postMessage ( { error : `Connection to ChatGPT tab lost after ${ RECONNECT_CONFIG . MAX_ATTEMPTS } attempts. Please refresh the page.` } ) ;
183206 } catch ( e ) {
184207 console . warn ( "[background] Error sending final error message on max retries:" , e ) ;
@@ -248,7 +271,6 @@ async function executeApi(session, port, config) {
248271 try {
249272 if ( isUsingCustomModel ( session ) ) {
250273 console . debug ( '[background] Using Custom Model API' )
251- // ... (rest of the logic for custom model remains the same)
252274 if ( ! session . apiMode )
253275 await generateAnswersWithCustomApi (
254276 port ,
@@ -314,7 +336,7 @@ async function executeApi(session, port, config) {
314336 const accessToken = await getChatGptAccessToken ( )
315337 await generateAnswersWithChatgptWebApi ( port , session . question , session , accessToken )
316338 }
317- } else if ( isUsingClaudeWebModel ( session ) ) { // ... other models
339+ } else if ( isUsingClaudeWebModel ( session ) ) {
318340 console . debug ( '[background] Using Claude Web Model' )
319341 const sessionKey = await getClaudeSessionKey ( )
320342 await generateAnswersWithClaudeWebApi ( port , session . question , session , sessionKey )
@@ -466,7 +488,7 @@ Browser.runtime.onMessage.addListener(async (message, sender) => {
466488 try {
467489 const response = await fetch ( message . data . input , message . data . init )
468490 const text = await response . text ( )
469- if ( ! response . ok ) { // Added check for HTTP error statuses
491+ if ( ! response . ok ) {
470492 console . warn ( `[background] FETCH received error status: ${ response . status } for ${ message . data . input } ` ) ;
471493 }
472494 console . debug (
@@ -475,7 +497,7 @@ Browser.runtime.onMessage.addListener(async (message, sender) => {
475497 return [
476498 {
477499 body : text ,
478- ok : response . ok , // Added ok status
500+ ok : response . ok ,
479501 status : response . status ,
480502 statusText : response . statusText ,
481503 headers : Object . fromEntries ( response . headers ) ,
@@ -531,7 +553,7 @@ try {
531553 ) {
532554 console . log ( '[background] Capturing Arkose public_key request:' , details . url )
533555 let formData = new URLSearchParams ( )
534- if ( details . requestBody && details . requestBody . formData ) {
556+ if ( details . requestBody ?. formData ) { // Optional chaining
535557 for ( const k in details . requestBody . formData ) {
536558 formData . append ( k , details . requestBody . formData [ k ] )
537559 }
0 commit comments