@clairejs/client 3.3.3 → 3.4.0

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,5 +1,9 @@
1
1
  ## Change Log
2
2
 
3
+ #### 3.4.0:
4
+
5
+ - apply LogHandler to some implementations
6
+
3
7
  #### 3.3.3:
4
8
 
5
9
  - update claire core
@@ -1,5 +1,5 @@
1
1
  import { Method } from "axios";
2
- import { AbstractLogger } from "@clairejs/core";
2
+ import { LogHandler } from "@clairejs/core";
3
3
  import { AbstractHttpClient, RequestOptions } from "./AbstractHttpClient";
4
4
  import { AbstractStorage } from "../system/AbstractStorage";
5
5
  export interface RequestData {
@@ -11,12 +11,12 @@ export interface RequestData {
11
11
  }
12
12
  export declare class DefaultHttpClient extends AbstractHttpClient {
13
13
  protected readonly apiServerUrl: string;
14
- protected readonly logger: AbstractLogger;
14
+ protected readonly logger?: LogHandler | undefined;
15
15
  protected readonly maxRetryCount: number;
16
16
  protected readonly delayMsBetweenRetry: number;
17
17
  protected readonly storage?: AbstractStorage | undefined;
18
18
  private readonly api;
19
- constructor(apiServerUrl: string, logger: AbstractLogger, maxRetryCount?: number, delayMsBetweenRetry?: number, storage?: AbstractStorage | undefined);
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 getAuthorization(): Promise<string>;
22
22
  protected errorHandler<T = any>(_operation: () => Promise<T>, err: any): Promise<T | undefined>;
@@ -1,5 +1,5 @@
1
1
  import axios from "axios";
2
- import { Errors } from "@clairejs/core";
2
+ import { Errors, LogLevel } from "@clairejs/core";
3
3
  import { AbstractHttpClient } from "./AbstractHttpClient";
4
4
  export class DefaultHttpClient extends AbstractHttpClient {
5
5
  apiServerUrl;
@@ -69,7 +69,7 @@ export class DefaultHttpClient extends AbstractHttpClient {
69
69
  err.response.status === 503 ||
70
70
  err.response.data?.message === "Service Unavailable") &&
71
71
  retryCount < this.maxRetryCount) {
72
- this.logger.debug(`unknown error encountered, retrying request ${retryCount + 1}/${this.maxRetryCount} after ${this.delayMsBetweenRetry}ms`);
72
+ this.logger?.log(LogLevel.DEBUG, `unknown error encountered, retrying request ${retryCount + 1}/${this.maxRetryCount} after ${this.delayMsBetweenRetry}ms`);
73
73
  await new Promise((resolve) => setTimeout(resolve, this.delayMsBetweenRetry));
74
74
  return await this.retry(apiCall, retryCount + 1);
75
75
  }
@@ -1,18 +1,18 @@
1
- import { AbstractLogger, AccessToken } from "@clairejs/core";
1
+ import { AccessToken, LogHandler } from "@clairejs/core";
2
2
  import { AbstractStorage } from "../system/AbstractStorage";
3
3
  import { AbstractTokenManager } from "./AbstractTokenManager";
4
4
  import { DefaultHttpClient } from "./DefaultHttpClient";
5
5
  export declare class RefreshHttpClient extends DefaultHttpClient {
6
6
  protected readonly apiServerUrl: string;
7
- protected readonly logger: AbstractLogger;
8
7
  protected readonly tokenManager: AbstractTokenManager;
8
+ protected readonly logger?: LogHandler | undefined;
9
9
  protected readonly maxRetryCount: number;
10
10
  protected readonly delayMsBetweenRetry: number;
11
11
  protected readonly storage?: AbstractStorage | undefined;
12
12
  private refreshing;
13
13
  private refreshQueue;
14
14
  private tokenQueue;
15
- constructor(apiServerUrl: string, logger: AbstractLogger, tokenManager: AbstractTokenManager, maxRetryCount?: number, delayMsBetweenRetry?: number, storage?: AbstractStorage | undefined);
15
+ constructor(apiServerUrl: string, tokenManager: AbstractTokenManager, logger?: LogHandler | undefined, maxRetryCount?: number, delayMsBetweenRetry?: number, storage?: AbstractStorage | undefined);
16
16
  protected getRefreshedAccessToken(): Promise<AccessToken>;
17
17
  protected reauthenticate(): Promise<void>;
18
18
  protected getAuthorization(): Promise<string>;
@@ -1,22 +1,22 @@
1
- import { Errors } from "@clairejs/core";
1
+ import { Errors, LogLevel } from "@clairejs/core";
2
2
  import { DefaultHttpClient } from "./DefaultHttpClient";
3
3
  const tokenExpiredError = Errors.TOKEN_EXPIRED().name;
4
4
  const invalidTokenError = Errors.INVALID_TOKEN().name;
5
5
  export class RefreshHttpClient extends DefaultHttpClient {
6
6
  apiServerUrl;
7
- logger;
8
7
  tokenManager;
8
+ logger;
9
9
  maxRetryCount;
10
10
  delayMsBetweenRetry;
11
11
  storage;
12
12
  refreshing = false;
13
13
  refreshQueue = [];
14
14
  tokenQueue = [];
15
- constructor(apiServerUrl, logger, tokenManager, maxRetryCount = 2, delayMsBetweenRetry = 200, storage) {
15
+ constructor(apiServerUrl, tokenManager, logger, maxRetryCount = 2, delayMsBetweenRetry = 200, storage) {
16
16
  super(apiServerUrl, logger, maxRetryCount, delayMsBetweenRetry, storage);
17
17
  this.apiServerUrl = apiServerUrl;
18
- this.logger = logger;
19
18
  this.tokenManager = tokenManager;
19
+ this.logger = logger;
20
20
  this.maxRetryCount = maxRetryCount;
21
21
  this.delayMsBetweenRetry = delayMsBetweenRetry;
22
22
  this.storage = storage;
@@ -41,7 +41,7 @@ export class RefreshHttpClient extends DefaultHttpClient {
41
41
  }
42
42
  async refreshToken(token) {
43
43
  if (this.refreshing) {
44
- this.logger.debug("Awaiting refresh token, queued");
44
+ this.logger?.log(LogLevel.DEBUG, "Awaiting refresh token, queued");
45
45
  return await new Promise((resolver) => {
46
46
  this.refreshQueue.push(resolver);
47
47
  });
@@ -56,7 +56,7 @@ export class RefreshHttpClient extends DefaultHttpClient {
56
56
  this.refreshing = true;
57
57
  token = await this.getRefreshedAccessToken();
58
58
  await this.tokenManager.setAccessToken(token);
59
- this.logger.debug("Access token was refreshed");
59
+ this.logger?.log(LogLevel.DEBUG, "Access token was refreshed");
60
60
  }
61
61
  finally {
62
62
  this.refreshing = false;
@@ -1,11 +1,11 @@
1
- import { AbstractLogger, DisconnectionHandler, IClientSocket, PlainMessageHandler, ReconnectionHandler } from "@clairejs/core";
1
+ import { DisconnectionHandler, IClientSocket, PlainMessageHandler, ReconnectionHandler, LogHandler } from "@clairejs/core";
2
2
  import { AbstractClientSocketManager } from "./AbstractClientSocketManager";
3
3
  import { SocketConfig } from "./SocketConfig";
4
4
  import { DefaultClientSocket } from "./DefaultClientSocket";
5
5
  import { IWebSocket } from "./IWebSocket";
6
6
  export declare class DefaultClientSocketManager extends AbstractClientSocketManager {
7
7
  private readonly wsProvider;
8
- private readonly logger;
8
+ private readonly logger?;
9
9
  private readonly config?;
10
10
  private socket?;
11
11
  private allSockets;
@@ -22,7 +22,7 @@ export declare class DefaultClientSocketManager extends AbstractClientSocketMana
22
22
  sentTimestamp: number;
23
23
  receivedTimestamp?: number;
24
24
  }[];
25
- constructor(wsProvider: () => Promise<IWebSocket>, logger: AbstractLogger, config?: SocketConfig | undefined);
25
+ constructor(wsProvider: () => Promise<IWebSocket>, logger?: LogHandler | undefined, config?: SocketConfig | undefined);
26
26
  getPingMs(): number;
27
27
  subChannels(socket: IClientSocket, channels: string[]): void;
28
28
  unsubChannels(socket: IClientSocket, channels: string[]): void;
@@ -1,4 +1,4 @@
1
- import { Errors, MessageType, } from "@clairejs/core";
1
+ import { LogLevel, Errors, MessageType, } from "@clairejs/core";
2
2
  import { AbstractClientSocketManager } from "./AbstractClientSocketManager";
3
3
  import { DefaultClientSocket } from "./DefaultClientSocket";
4
4
  const pingpongMaxCount = 10;
@@ -34,7 +34,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
34
34
  subChannels(socket, channels) {
35
35
  const info = this.allSockets.find((s) => s.socket === socket);
36
36
  if (!info) {
37
- this.logger.debug("Socket not found");
37
+ this.logger?.log(LogLevel.DEBUG, "Socket not found");
38
38
  return;
39
39
  }
40
40
  //-- un-connected channels
@@ -53,7 +53,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
53
53
  unsubChannels(socket, channels) {
54
54
  const info = this.allSockets.find((s) => s.socket === socket);
55
55
  if (!info) {
56
- this.logger.debug("Socket not found");
56
+ this.logger?.log(LogLevel.DEBUG, "Socket not found");
57
57
  return;
58
58
  }
59
59
  info.registeredChannels = info.registeredChannels.filter((c) => !channels.includes(c));
@@ -178,10 +178,10 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
178
178
  throw Errors.SYSTEM_ERROR("Socket not available");
179
179
  }
180
180
  this.socket.send(message);
181
- this.logger.debug("Raw send", message);
181
+ this.logger?.log(LogLevel.DEBUG, "Raw send", message);
182
182
  }
183
183
  handleChannelJoin(channels) {
184
- this.logger.debug("Joinning channels", channels);
184
+ this.logger?.log(LogLevel.DEBUG, "Joinning channels", channels);
185
185
  for (const channel of channels) {
186
186
  let foundChannel = this.allChannels.find((c) => c.channel === channel);
187
187
  if (!foundChannel) {
@@ -191,7 +191,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
191
191
  foundChannel.connected = true;
192
192
  //-- flush messages
193
193
  if (foundChannel.pendingMessages.length) {
194
- this.logger.debug(`Flushing ${foundChannel.pendingMessages.length} message`);
194
+ this.logger?.log(LogLevel.DEBUG, `Flushing ${foundChannel.pendingMessages.length} message`);
195
195
  for (const message of foundChannel.pendingMessages) {
196
196
  this.sendPlainMessageToChannel(message, foundChannel.channel);
197
197
  }
@@ -200,7 +200,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
200
200
  }
201
201
  }
202
202
  handleChannelLeave(channels) {
203
- this.logger.debug("Leaving channels", channels);
203
+ this.logger?.log(LogLevel.DEBUG, "Leaving channels", channels);
204
204
  this.allChannels = this.allChannels.filter((c) => !channels.includes(c.channel));
205
205
  }
206
206
  handlePlainMessage(message, channel) {
@@ -209,7 +209,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
209
209
  }
210
210
  }
211
211
  handleConnect() {
212
- this.logger.debug("Socket connected");
212
+ this.logger?.log(LogLevel.DEBUG, "Socket connected");
213
213
  //-- socket open, set interval
214
214
  if (this.pingIntervalId) {
215
215
  clearInterval(this.pingIntervalId);
@@ -242,7 +242,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
242
242
  if (err) {
243
243
  this.intendedDisconnection = true;
244
244
  }
245
- this.logger.debug("Socket connnection closed, error: ", err);
245
+ this.logger?.log(LogLevel.DEBUG, "Socket connnection closed, error: ", err);
246
246
  if (this.pingIntervalId) {
247
247
  clearInterval(this.pingIntervalId);
248
248
  }
@@ -255,7 +255,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
255
255
  //-- remove all channels
256
256
  this.allSockets = [];
257
257
  this.allChannels = [];
258
- this.logger.debug("Socket connection terminated");
258
+ this.logger?.log(LogLevel.DEBUG, "Socket connection terminated");
259
259
  }
260
260
  else {
261
261
  //-- disconnect all channels to be reconnected when the socket is connected again
@@ -267,7 +267,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
267
267
  }
268
268
  }
269
269
  handleMessage(message) {
270
- this.logger.debug("Raw receive", message);
270
+ this.logger?.log(LogLevel.DEBUG, "Raw receive", message);
271
271
  switch (message.type) {
272
272
  case MessageType.READY:
273
273
  this.handleConnect();
@@ -284,7 +284,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
284
284
  break;
285
285
  case MessageType.CHANNEL_JOIN:
286
286
  if (message.data?.error) {
287
- this.logger.error("Join channel error", message.data.error);
287
+ this.logger?.log(LogLevel.ERROR, "Join channel error", message.data.error);
288
288
  }
289
289
  else {
290
290
  this.handleChannelJoin(message.data);
@@ -337,7 +337,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
337
337
  this.socket = socket;
338
338
  this.socket.onopen(() => {
339
339
  this.socketConnected = true;
340
- this.logger.debug("Physic link connected, sending & waiting for READY message");
340
+ this.logger?.log(LogLevel.DEBUG, "Physic link connected, sending & waiting for READY message");
341
341
  this.sendRawMessage({
342
342
  type: MessageType.READY,
343
343
  data: "",
@@ -346,7 +346,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
346
346
  this.socket.onmessage((data) => {
347
347
  const message = JSON.parse(data);
348
348
  if (!message || !message.type) {
349
- this.logger.debug("Invalid mesasge structure", data);
349
+ this.logger?.log(LogLevel.DEBUG, "Invalid mesasge structure", data);
350
350
  return;
351
351
  }
352
352
  this.handleMessage(message);
@@ -357,7 +357,7 @@ export class DefaultClientSocketManager extends AbstractClientSocketManager {
357
357
  });
358
358
  }
359
359
  retry() {
360
- this.logger.debug(`Socket connection retrying in ${this.retryDelay}ms`);
360
+ this.logger?.log(LogLevel.DEBUG, `Socket connection retrying in ${this.retryDelay}ms`);
361
361
  this.physicConnect();
362
362
  this.retryDelay += this.config?.reconnectTimeDeltaMs || 3000;
363
363
  this.retryTimeoutId = setTimeout(() => {
@@ -1,13 +1,13 @@
1
- import { AbstractLogger } from "@clairejs/core";
1
+ import { LogHandler } from "@clairejs/core";
2
2
  export type TranslationObject = Record<string, string>;
3
3
  export type TranslationProvider = Promise<TranslationObject>;
4
4
  export type TranslationData = Record<string, string>;
5
5
  export declare class Translator {
6
- readonly logger: AbstractLogger;
6
+ protected readonly logger?: LogHandler | undefined;
7
7
  private translationProviders?;
8
8
  private translations;
9
9
  private translationLoadings;
10
- constructor(logger: AbstractLogger);
10
+ constructor(logger?: LogHandler | undefined);
11
11
  setTranslations(translationProviders: Record<string, TranslationProvider>): void;
12
12
  awaitingTranslations(lang: string): Promise<void>;
13
13
  translate(lang: string, template: string, data?: TranslationData): string;
@@ -1,15 +1,6 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { AbstractLogger, Injectable } from "@clairejs/core";
1
+ import { LogLevel } from "@clairejs/core";
11
2
  const dataKeyRegex = /{([_a-zA-Z][a-zA-Z0-9_]*)}/g;
12
- let Translator = class Translator {
3
+ export class Translator {
13
4
  logger;
14
5
  translationProviders;
15
6
  translations = {};
@@ -40,7 +31,7 @@ let Translator = class Translator {
40
31
  }
41
32
  catch (err) {
42
33
  //-- error loading translation
43
- this.logger.error("Error loading translation", err);
34
+ this.logger?.log(LogLevel.ERROR, "Error loading translation", err);
44
35
  this.translations[lang] = undefined;
45
36
  }
46
37
  }
@@ -95,9 +86,4 @@ let Translator = class Translator {
95
86
  }
96
87
  return result;
97
88
  }
98
- };
99
- Translator = __decorate([
100
- Injectable(),
101
- __metadata("design:paramtypes", [AbstractLogger])
102
- ], Translator);
103
- export { Translator };
89
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clairejs/client",
3
- "version": "3.3.3",
3
+ "version": "3.4.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -13,7 +13,7 @@
13
13
  "axios": "^1.3.4"
14
14
  },
15
15
  "peerDependencies": {
16
- "@clairejs/core": "^3.6.1"
16
+ "@clairejs/core": "^3.6.5"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/mocha": "^10.0.1",