@@ -51,14 +51,15 @@ export interface ClientConfig {
5151const  toBase64  =  ( str : string ) : string  =>  Buffer . from ( str ) . toString ( 'base64' ) ; 
5252
5353export  class  RestService  { 
54+  private  static  instance : RestService ; 
5455 private  client : AxiosInstance ; 
5556 private  baseURLs : string [ ] ; 
5657 private  oauthClient ?: OAuthClient ; 
5758 private  oauthBearer : boolean  =  false ; 
5859
5960 constructor ( baseURLs : string [ ] ,  isForward ?: boolean ,  axiosDefaults ?: CreateAxiosDefaults , 
60-  basicAuthCredentials ?: BasicAuthCredentials ,  bearerAuthCredentials ?: BearerAuthCredentials , 
61-  maxRetries ?: number ,  retriesWaitMs ?: number ,  retriesMaxWaitMs ?: number )  { 
61+  basicAuthCredentials ?: BasicAuthCredentials ,  bearerAuthCredentials ?: BearerAuthCredentials , 
62+  maxRetries ?: number ,  retriesWaitMs ?: number ,  retriesMaxWaitMs ?: number )  { 
6263 this . client  =  axios . create ( axiosDefaults ) ; 
6364 axiosRetry ( this . client ,  { 
6465 retries : maxRetries  ??  2 , 
@@ -80,6 +81,16 @@ export class RestService {
8081 this . handleBearerAuth ( maxRetries  ??  2 ,  retriesWaitMs  ??  1000 ,  retriesMaxWaitMs  ??  20000 ,  bearerAuthCredentials ) ; 
8182 } 
8283
84+  static  getInstance ( baseURLs : string [ ] ,  isForward ?: boolean ,  axiosDefaults ?: CreateAxiosDefaults , 
85+  basicAuthCredentials ?: BasicAuthCredentials ,  bearerAuthCredentials ?: BearerAuthCredentials , 
86+  maxRetries ?: number ,  retriesWaitMs ?: number ,  retriesMaxWaitMs ?: number ) : RestService  { 
87+  if  ( ! this . instance )  { 
88+  this . instance  =  new  RestService ( baseURLs ,  isForward ,  axiosDefaults ,  basicAuthCredentials ,  bearerAuthCredentials , 
89+  maxRetries ,  retriesWaitMs ,  retriesMaxWaitMs ) ; 
90+  } 
91+  return  this . instance ; 
92+  } 
93+ 8394 handleBasicAuth ( basicAuthCredentials ?: BasicAuthCredentials ) : void { 
8495 if  ( basicAuthCredentials )  { 
8596 switch  ( basicAuthCredentials . credentialsSource )  { 
@@ -111,7 +122,7 @@ export class RestService {
111122 } 
112123 } 
113124
114-  handleBearerAuth ( maxRetries : number , 
125+  handleBearerAuth ( maxRetries : number , 
115126 retriesWaitMs : number ,  retriesMaxWaitMs : number ,  bearerAuthCredentials ?: BearerAuthCredentials ) : void { 
116127 if  ( bearerAuthCredentials )  { 
117128 delete  this . client . defaults . auth ; 
@@ -150,7 +161,7 @@ export class RestService {
150161 } 
151162 const  issuerEndPointUrl  =  new  URL ( bearerAuthCredentials . issuerEndpointUrl ! ) ; 
152163 this . oauthClient  =  new  OAuthClient ( bearerAuthCredentials . clientId ! ,  bearerAuthCredentials . clientSecret ! , 
153-  issuerEndPointUrl . origin ,  issuerEndPointUrl . pathname ,  bearerAuthCredentials . scope ! , 
164+  issuerEndPointUrl . origin ,  issuerEndPointUrl . pathname ,  bearerAuthCredentials . scope ! , 
154165 maxRetries ,  retriesWaitMs ,  retriesMaxWaitMs ) ; 
155166 break ; 
156167 default :
0 commit comments