@@ -12,10 +12,12 @@ import { WorkerAdapterOptions, WorkerMessageSubject } from '../types/workers';
1212import  {  AxiosError ,  RawAxiosResponseHeaders ,  isAxiosError  }  from  'axios' ; 
1313import  {  getCircularReplacer  }  from  '../common/helpers' ; 
1414import  {  EventContext  }  from  '../types/extraction' ; 
15+ import  {  INTERNAL_CHANNEL ,  verificationToken  }  from  './private_logger' ; 
1516
1617export  class  Logger  extends  Console  { 
1718  private  options ?: WorkerAdapterOptions ; 
1819  private  tags : EventContext  &  {  dev_oid : string  } ; 
20+   private  isVerifiedChannel : boolean  =  false ;  // false = unverified (default), true = verified 
1921
2022  constructor ( {  event,  options } : LoggerFactoryInterface )  { 
2123    super ( process . stdout ,  process . stderr ) ; 
@@ -26,6 +28,33 @@ export class Logger extends Console {
2628    } ; 
2729  } 
2830
31+   // Internal method to create a verified logger 
32+   private  [ INTERNAL_CHANNEL ] ( token : string ) : Logger  { 
33+     if  ( token  ===  verificationToken )  { 
34+       const  verifiedLogger  =  Object . create ( this ) ; 
35+       verifiedLogger . isVerifiedChannel  =  true ; 
36+       // Ensure the verified logger retains the internal channel method 
37+       verifiedLogger [ INTERNAL_CHANNEL ]  =  this [ INTERNAL_CHANNEL ] . bind ( this ) ; 
38+       // Override the logFn method to use the verified logger's context 
39+       verifiedLogger . logFn  =  this . logFn . bind ( verifiedLogger ) ; 
40+       // Override the logging methods to use the custom logFn 
41+       verifiedLogger . log  =  ( ...args : unknown [ ] ) : void =>  { 
42+         verifiedLogger . logFn ( args ,  LogLevel . INFO ) ; 
43+       } ; 
44+       verifiedLogger . info  =  ( ...args : unknown [ ] ) : void =>  { 
45+         verifiedLogger . logFn ( args ,  LogLevel . INFO ) ; 
46+       } ; 
47+       verifiedLogger . warn  =  ( ...args : unknown [ ] ) : void =>  { 
48+         verifiedLogger . logFn ( args ,  LogLevel . WARN ) ; 
49+       } ; 
50+       verifiedLogger . error  =  ( ...args : unknown [ ] ) : void =>  { 
51+         verifiedLogger . logFn ( args ,  LogLevel . ERROR ) ; 
52+       } ; 
53+       return  verifiedLogger ; 
54+     } 
55+     throw  new  Error ( 'Unauthorized access to internal channel' ) ; 
56+   } 
57+   
2958  private  valueToString ( value : unknown ) : string  { 
3059    if  ( typeof  value  ===  'string' )  { 
3160      return  value ; 
@@ -39,20 +68,25 @@ export class Logger extends Console {
3968  } 
4069
4170  logFn ( args : unknown [ ] ,  level : LogLevel ) : void { 
71+     // Always add prefix based on verification status 
72+     // false = unverified ([USER] prefix), true = verified ([SDK] prefix) 
73+     const  prefix  =  this . isVerifiedChannel  ? '[SDK]'  : '[USER]' ; 
74+     const  processedArgs  =  [ prefix ,  ...args ] ; 
75+ 
4276    if  ( isMainThread )  { 
4377      if  ( this . options ?. isLocalDevelopment )  { 
44-         console [ level ] ( ...args ) ; 
78+         console [ level ] ( ...processedArgs ) ; 
4579      }  else  { 
4680        let  message : string ; 
47-         if  ( args . length  ===  1  &&  typeof  args [ 0 ]  ===  'string' )  { 
81+         if  ( processedArgs . length  ===  1  &&  typeof  processedArgs [ 0 ]  ===  'string' )  { 
4882          // Single string argument - use directly 
49-           message  =  args [ 0 ] ; 
50-         }  else  if  ( args . length  ===  1 )  { 
83+           message  =  processedArgs [ 0 ] ; 
84+         }  else  if  ( processedArgs . length  ===  1 )  { 
5185          // Single non-string argument - convert to string properly 
52-           message  =  this . valueToString ( args [ 0 ] ) ; 
86+           message  =  this . valueToString ( processedArgs [ 0 ] ) ; 
5387        }  else  { 
5488          // Multiple arguments - create a readable format 
55-           message  =  args . map ( ( arg )  =>  this . valueToString ( arg ) ) . join ( ' ' ) ; 
89+           message  =  processedArgs . map ( ( arg )  =>  this . valueToString ( arg ) ) . join ( ' ' ) ; 
5690        } 
5791
5892        const  logObject  =  { 
@@ -66,7 +100,7 @@ export class Logger extends Console {
66100      parentPort ?. postMessage ( { 
67101        subject : WorkerMessageSubject . WorkerMessageLog , 
68102        payload : { 
69-           args : args . map ( ( arg )  =>  this . valueToString ( arg ) ) , 
103+           args : processedArgs . map ( ( arg )  =>  this . valueToString ( arg ) ) , 
70104          level, 
71105        } , 
72106      } ) ; 
0 commit comments