@clairejs/client 3.4.8 → 3.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Change Log
2
2
 
3
- #### 3.4.8:
3
+ #### 3.4.9:
4
4
 
5
5
  - refactor http client
6
6
 
@@ -19,7 +19,7 @@ export declare abstract class DefaultHttpClient extends AbstractHttpClient {
19
19
  constructor(apiServerUrl: string, logger?: LogHandler | undefined, maxRetryCount?: number, delayMsBetweenRetry?: number, storage?: AbstractStorage | undefined);
20
20
  protected resolveUrl(url: string): Promise<string>;
21
21
  protected abstract getAuthorizationHeader(): Promise<Record<string, string>>;
22
- protected errorHandler<T = any>(_operation: () => Promise<T>, err: any): Promise<T | undefined>;
22
+ protected abstract errorHandler<T = any>(_operation: () => Promise<T>, err: any): Promise<T | undefined>;
23
23
  protected retry<T = any>(apiCall: () => Promise<T>, retryCount?: number): Promise<T | undefined>;
24
24
  protected performRequest<T = any>(data: RequestData): Promise<T | undefined>;
25
25
  protected doGet<T = any>(url: string, headers?: object, options?: RequestOptions): Promise<T | undefined>;
@@ -53,9 +53,6 @@ export class DefaultHttpClient extends AbstractHttpClient {
53
53
  async resolveUrl(url) {
54
54
  return this.apiServerUrl + url;
55
55
  }
56
- async errorHandler(_operation, err) {
57
- throw err;
58
- }
59
56
  async retry(apiCall, retryCount = 0) {
60
57
  try {
61
58
  return await apiCall();
@@ -14,7 +14,8 @@ export declare abstract class RefreshHttpClient extends DefaultHttpClient {
14
14
  private tokenQueue;
15
15
  constructor(apiServerUrl: string, tokenManager: AbstractTokenManager, logger?: LogHandler | undefined, maxRetryCount?: number, delayMsBetweenRetry?: number, storage?: AbstractStorage | undefined);
16
16
  protected getAuthorization(): Promise<string>;
17
- protected abstract getRefreshedAccessToken(): Promise<AccessToken>;
17
+ protected abstract refreshSession(refreshToken: string): Promise<AccessToken | undefined>;
18
+ protected errorHandler<T = any>(operation: () => Promise<T>, err: any): Promise<T | undefined>;
18
19
  protected getAuthorizationHeader(): Promise<Record<string, string>>;
19
20
  protected refreshToken(token?: AccessToken): Promise<void>;
20
21
  }
@@ -31,6 +31,16 @@ export class RefreshHttpClient extends DefaultHttpClient {
31
31
  return accessToken?.token || "";
32
32
  }
33
33
  }
34
+ async errorHandler(operation, err) {
35
+ if (err.name === Errors.TOKEN_EXPIRED().name) {
36
+ return await this.refreshToken()
37
+ .then(operation)
38
+ .catch((err) => {
39
+ throw err.response.data || err;
40
+ });
41
+ }
42
+ throw err;
43
+ }
34
44
  async getAuthorizationHeader() {
35
45
  return { authorization: await this.getAuthorization() };
36
46
  }
@@ -42,14 +52,16 @@ export class RefreshHttpClient extends DefaultHttpClient {
42
52
  });
43
53
  }
44
54
  token = token || (await this.tokenManager.getAccessToken());
45
- //-- call to api server to refresh token
46
55
  if (!token || !token.refreshToken) {
47
56
  //-- there is no refresh token to refresh
48
57
  throw Errors.SESSION_EXPIRED();
49
58
  }
50
59
  try {
51
60
  this.refreshing = true;
52
- token = await this.getRefreshedAccessToken();
61
+ token = await this.refreshSession(token.refreshToken);
62
+ if (!token) {
63
+ throw Errors.SESSION_EXPIRED();
64
+ }
53
65
  await this.tokenManager.setAccessToken(token);
54
66
  this.logger?.log(LogLevel.DEBUG, "Access token was refreshed");
55
67
  }
@@ -59,7 +71,7 @@ export class RefreshHttpClient extends DefaultHttpClient {
59
71
  resolver();
60
72
  }
61
73
  for (const resolver of this.tokenQueue) {
62
- resolver(token.token);
74
+ resolver(token?.token || "");
63
75
  }
64
76
  //-- clear queue
65
77
  this.refreshQueue = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clairejs/client",
3
- "version": "3.4.8",
3
+ "version": "3.4.9",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",