@onekeyfe/hd-shared 0.1.11 → 0.1.14

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.
@@ -52,9 +52,13 @@ export declare const HardwareErrorCode: {
52
52
  readonly PinCancelled: 802;
53
53
  readonly ActionCancelled: 803;
54
54
  readonly FirmwareError: 804;
55
+ readonly ResponseUnexpectTypeError: 805;
56
+ readonly BridgeNetworkError: 806;
57
+ readonly BridgeTimeoutError: 807;
55
58
  };
56
59
  export declare const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping;
57
60
  export declare const TypedError: (hardwareError: ErrorCodeUnion | string, message?: string | undefined) => HardwareError;
58
61
  export declare const serializeError: (payload: any) => any;
62
+ export declare const CreateErrorByMessage: (message: string) => HardwareError;
59
63
  export {};
60
64
  //# sourceMappingURL=HardwareError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,aAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,aAAK,+BAA+B,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,OAAO,iBAAiB,CAAC,GAAG,MAAM;CAAE,CAAC;AAE5F,aAAK,cAAc,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMxD,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,EAAE,cAAc,CAAkC;IAE3D,OAAO,SAAM;gBAED,aAAa,EAAE,cAAc,GAAG,MAAM;CAkBnD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgKpB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,+BAuE7B,CAAC;AAEX,eAAO,MAAM,UAAU,kBAAmB,cAAc,GAAG,MAAM,gDAKhE,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,GAAG,QAQ1C,CAAC"}
1
+ {"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,aAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,aAAK,+BAA+B,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,OAAO,iBAAiB,CAAC,GAAG,MAAM;CAAE,CAAC;AAE5F,aAAK,cAAc,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMxD,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,EAAE,cAAc,CAAkC;IAE3D,OAAO,SAAM;gBAED,aAAa,EAAE,cAAc,GAAG,MAAM;CAkBnD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+KpB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,+BA0E7B,CAAC;AAEX,eAAO,MAAM,UAAU,kBAAmB,cAAc,GAAG,MAAM,gDAKhE,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,GAAG,QAQ1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,aAOtD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -61,10 +61,14 @@ declare const HardwareErrorCode: {
61
61
  readonly PinCancelled: 802;
62
62
  readonly ActionCancelled: 803;
63
63
  readonly FirmwareError: 804;
64
+ readonly ResponseUnexpectTypeError: 805;
65
+ readonly BridgeNetworkError: 806;
66
+ readonly BridgeTimeoutError: 807;
64
67
  };
65
68
  declare const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping;
66
69
  declare const TypedError: (hardwareError: ErrorCodeUnion | string, message?: string | undefined) => HardwareError;
67
70
  declare const serializeError: (payload: any) => any;
71
+ declare const CreateErrorByMessage: (message: string) => HardwareError;
68
72
 
69
73
  type HardwareError$1_IHardwareError = IHardwareError;
70
74
  type HardwareError$1_HardwareError = HardwareError;
@@ -73,6 +77,7 @@ declare const HardwareError$1_HardwareErrorCode: typeof HardwareErrorCode;
73
77
  declare const HardwareError$1_HardwareErrorCodeMessage: typeof HardwareErrorCodeMessage;
74
78
  declare const HardwareError$1_TypedError: typeof TypedError;
75
79
  declare const HardwareError$1_serializeError: typeof serializeError;
80
+ declare const HardwareError$1_CreateErrorByMessage: typeof CreateErrorByMessage;
76
81
  declare namespace HardwareError$1 {
77
82
  export {
78
83
  HardwareError$1_IHardwareError as IHardwareError,
@@ -81,7 +86,40 @@ declare namespace HardwareError$1 {
81
86
  HardwareError$1_HardwareErrorCodeMessage as HardwareErrorCodeMessage,
82
87
  HardwareError$1_TypedError as TypedError,
83
88
  HardwareError$1_serializeError as serializeError,
89
+ HardwareError$1_CreateErrorByMessage as CreateErrorByMessage,
84
90
  };
85
91
  }
86
92
 
87
- export { Deferred, HardwareError$1 as ERRORS, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, TypedError, createDeferred, serializeError };
93
+ declare type LogMessage = {
94
+ level: string;
95
+ prefix: string;
96
+ message: any[];
97
+ timestamp: number;
98
+ };
99
+ declare type LoggerFn = (...data: any[]) => void;
100
+ declare type LoggerMoreParams = (message?: any, ...optionalParams: any[]) => void;
101
+ declare type Logger = {
102
+ debug: LoggerFn | LoggerMoreParams;
103
+ info: LoggerFn | LoggerMoreParams;
104
+ warn: LoggerFn | LoggerMoreParams;
105
+ error: LoggerFn | LoggerMoreParams;
106
+ };
107
+ declare class Log {
108
+ prefix: string;
109
+ enabled: boolean;
110
+ messages: LogMessage[];
111
+ logger?: Logger;
112
+ constructor(prefix: string, enabled: boolean, logger?: Logger);
113
+ addMessage(level: string, prefix: string, ...args: any[]): void;
114
+ log(...args: any[]): void;
115
+ error(...args: any[]): void;
116
+ warn(...args: any[]): void;
117
+ debug(...args: any[]): void;
118
+ }
119
+ declare const initLog: (prefix: string, enabled?: boolean | undefined, logger?: Logger | undefined) => Log;
120
+ declare const enableLog: (enabled?: boolean | undefined) => void;
121
+ declare const setOutsideLogger: (logger: Logger) => void;
122
+ declare const enableLogByPrefix: (prefix: string, enabled: boolean) => void;
123
+ declare const getLog: () => LogMessage[];
124
+
125
+ export { CreateErrorByMessage, Deferred, HardwareError$1 as ERRORS, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, TypedError, createDeferred, enableLog, enableLogByPrefix, getLog, initLog, serializeError, setOutsideLogger };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -119,6 +119,9 @@ const HardwareErrorCode = {
119
119
  PinCancelled: 802,
120
120
  ActionCancelled: 803,
121
121
  FirmwareError: 804,
122
+ ResponseUnexpectTypeError: 805,
123
+ BridgeNetworkError: 806,
124
+ BridgeTimeoutError: 807,
122
125
  };
123
126
  const HardwareErrorCodeMessage = {
124
127
  [HardwareErrorCode.UnknownError]: 'Unknown error occurred. Check message property.',
@@ -160,6 +163,9 @@ const HardwareErrorCodeMessage = {
160
163
  [HardwareErrorCode.PinCancelled]: 'Pin cancelled',
161
164
  [HardwareErrorCode.ActionCancelled]: 'Action cancelled by user',
162
165
  [HardwareErrorCode.FirmwareError]: 'Firmware installation failed',
166
+ [HardwareErrorCode.ResponseUnexpectTypeError]: 'Response type is not expected',
167
+ [HardwareErrorCode.BridgeNetworkError]: 'Bridge network error',
168
+ [HardwareErrorCode.BridgeTimeoutError]: 'Bridge network timeout',
163
169
  };
164
170
  const TypedError = (hardwareError, message) => {
165
171
  if (typeof hardwareError === 'string') {
@@ -176,6 +182,14 @@ const serializeError = (payload) => {
176
182
  }
177
183
  return payload;
178
184
  };
185
+ const CreateErrorByMessage = (message) => {
186
+ for (const code of Object.values(HardwareErrorCode)) {
187
+ if (HardwareErrorCodeMessage[code] === message) {
188
+ return TypedError(code);
189
+ }
190
+ }
191
+ return new HardwareError(message);
192
+ };
179
193
 
180
194
  var HardwareError$1 = /*#__PURE__*/Object.freeze({
181
195
  __proto__: null,
@@ -183,13 +197,120 @@ var HardwareError$1 = /*#__PURE__*/Object.freeze({
183
197
  HardwareErrorCode: HardwareErrorCode,
184
198
  HardwareErrorCodeMessage: HardwareErrorCodeMessage,
185
199
  TypedError: TypedError,
186
- serializeError: serializeError
200
+ serializeError: serializeError,
201
+ CreateErrorByMessage: CreateErrorByMessage
187
202
  });
188
203
 
204
+ const MAX_ENTRIES = 100;
205
+ class Log {
206
+ constructor(prefix, enabled, logger) {
207
+ this.prefix = prefix;
208
+ this.enabled = enabled;
209
+ this.messages = [];
210
+ if (logger) {
211
+ this.logger = logger;
212
+ }
213
+ }
214
+ addMessage(level, prefix, ...args) {
215
+ this.messages.push({
216
+ level,
217
+ prefix,
218
+ message: args,
219
+ timestamp: new Date().getTime(),
220
+ });
221
+ if (this.messages.length > MAX_ENTRIES) {
222
+ this.messages.shift();
223
+ }
224
+ }
225
+ log(...args) {
226
+ this.addMessage('log', this.prefix, ...args);
227
+ if (!this.enabled) {
228
+ return;
229
+ }
230
+ if (this.logger) {
231
+ this.logger.info(this.prefix, ...args);
232
+ }
233
+ else {
234
+ console.log(this.prefix, ...args);
235
+ }
236
+ }
237
+ error(...args) {
238
+ this.addMessage('error', this.prefix, ...args);
239
+ if (!this.enabled) {
240
+ return;
241
+ }
242
+ if (this.logger) {
243
+ this.logger.error(this.prefix, ...args);
244
+ }
245
+ else {
246
+ console.error(this.prefix, ...args);
247
+ }
248
+ }
249
+ warn(...args) {
250
+ this.addMessage('warn', this.prefix, ...args);
251
+ if (!this.enabled) {
252
+ return;
253
+ }
254
+ if (this.logger) {
255
+ this.logger.warn(this.prefix, ...args);
256
+ }
257
+ else {
258
+ console.warn(this.prefix, ...args);
259
+ }
260
+ }
261
+ debug(...args) {
262
+ this.addMessage('debug', this.prefix, ...args);
263
+ if (!this.enabled) {
264
+ return;
265
+ }
266
+ if (this.logger) {
267
+ this.logger.debug(this.prefix, ...args);
268
+ }
269
+ else {
270
+ console.log(this.prefix, ...args);
271
+ }
272
+ }
273
+ }
274
+ const _logs = {};
275
+ const initLog = (prefix, enabled, logger) => {
276
+ const instance = new Log(prefix, !!enabled, logger);
277
+ _logs[prefix] = instance;
278
+ return instance;
279
+ };
280
+ const enableLog = (enabled) => {
281
+ Object.keys(_logs).forEach(key => {
282
+ _logs[key].enabled = !!enabled;
283
+ });
284
+ };
285
+ const setOutsideLogger = (logger) => {
286
+ Object.keys(_logs).forEach(key => {
287
+ _logs[key].logger = logger;
288
+ });
289
+ };
290
+ const enableLogByPrefix = (prefix, enabled) => {
291
+ if (_logs[prefix]) {
292
+ _logs[prefix].enabled = enabled;
293
+ }
294
+ };
295
+ const getLog = () => {
296
+ let logs = [];
297
+ Object.keys(_logs).forEach(key => {
298
+ logs = logs.concat(_logs[key].messages);
299
+ });
300
+ logs.sort((a, b) => a.timestamp - b.timestamp);
301
+ return logs;
302
+ };
303
+
304
+ exports.CreateErrorByMessage = CreateErrorByMessage;
189
305
  exports.ERRORS = HardwareError$1;
190
306
  exports.HardwareError = HardwareError;
191
307
  exports.HardwareErrorCode = HardwareErrorCode;
192
308
  exports.HardwareErrorCodeMessage = HardwareErrorCodeMessage;
193
309
  exports.TypedError = TypedError;
194
310
  exports.createDeferred = createDeferred;
311
+ exports.enableLog = enableLog;
312
+ exports.enableLogByPrefix = enableLogByPrefix;
313
+ exports.getLog = getLog;
314
+ exports.initLog = initLog;
195
315
  exports.serializeError = serializeError;
316
+ exports.setOutsideLogger = setOutsideLogger;
@@ -0,0 +1,33 @@
1
+ declare type LogMessage = {
2
+ level: string;
3
+ prefix: string;
4
+ message: any[];
5
+ timestamp: number;
6
+ };
7
+ declare type LoggerFn = (...data: any[]) => void;
8
+ declare type LoggerMoreParams = (message?: any, ...optionalParams: any[]) => void;
9
+ declare type Logger = {
10
+ debug: LoggerFn | LoggerMoreParams;
11
+ info: LoggerFn | LoggerMoreParams;
12
+ warn: LoggerFn | LoggerMoreParams;
13
+ error: LoggerFn | LoggerMoreParams;
14
+ };
15
+ declare class Log {
16
+ prefix: string;
17
+ enabled: boolean;
18
+ messages: LogMessage[];
19
+ logger?: Logger;
20
+ constructor(prefix: string, enabled: boolean, logger?: Logger);
21
+ addMessage(level: string, prefix: string, ...args: any[]): void;
22
+ log(...args: any[]): void;
23
+ error(...args: any[]): void;
24
+ warn(...args: any[]): void;
25
+ debug(...args: any[]): void;
26
+ }
27
+ export declare const initLog: (prefix: string, enabled?: boolean | undefined, logger?: Logger | undefined) => Log;
28
+ export declare const enableLog: (enabled?: boolean | undefined) => void;
29
+ export declare const setOutsideLogger: (logger: Logger) => void;
30
+ export declare const enableLogByPrefix: (prefix: string, enabled: boolean) => void;
31
+ export declare const getLog: () => LogMessage[];
32
+ export {};
33
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,aAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,aAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AACzC,aAAK,gBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAE1E,aAAK,MAAM,GAAG;IACZ,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IACnC,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAClC,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAClC,KAAK,EAAE,QAAQ,GAAG,gBAAgB,CAAC;CACpC,CAAC;AAIF,cAAM,GAAG;IACP,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAS7D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAYxD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAYlB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAYpB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAYnB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;CAWrB;AAID,eAAO,MAAM,OAAO,WAAY,MAAM,oEAIrC,CAAC;AAEF,eAAO,MAAM,SAAS,yCAIrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,MAAM,SAI9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,MAAM,WAAW,OAAO,SAIjE,CAAC;AAEF,eAAO,MAAM,MAAM,oBAOlB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-shared",
3
- "version": "0.1.11",
3
+ "version": "0.1.14",
4
4
  "description": "Hardware SDK's shared tool library",
5
5
  "keywords": [
6
6
  "Hardware-SDK",
@@ -25,5 +25,5 @@
25
25
  "lint": "eslint .",
26
26
  "lint:fix": "eslint . --fix"
27
27
  },
28
- "gitHead": "4a71d9d0de15a8179cac16565be09f1c601ddfd5"
28
+ "gitHead": "216fee1795067013da0d68f4fc25f583509bb509"
29
29
  }
@@ -198,6 +198,21 @@ export const HardwareErrorCode = {
198
198
  * Firmware installation failed
199
199
  */
200
200
  FirmwareError: 804,
201
+
202
+ /**
203
+ * transport response unexpect error
204
+ */
205
+ ResponseUnexpectTypeError: 805,
206
+
207
+ /**
208
+ * bridge network error
209
+ */
210
+ BridgeNetworkError: 806,
211
+
212
+ /**
213
+ * Bridge network timeout
214
+ */
215
+ BridgeTimeoutError: 807,
201
216
  } as const;
202
217
 
203
218
  export const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping = {
@@ -271,6 +286,9 @@ export const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping = {
271
286
  [HardwareErrorCode.PinCancelled]: 'Pin cancelled',
272
287
  [HardwareErrorCode.ActionCancelled]: 'Action cancelled by user',
273
288
  [HardwareErrorCode.FirmwareError]: 'Firmware installation failed',
289
+ [HardwareErrorCode.ResponseUnexpectTypeError]: 'Response type is not expected',
290
+ [HardwareErrorCode.BridgeNetworkError]: 'Bridge network error',
291
+ [HardwareErrorCode.BridgeTimeoutError]: 'Bridge network timeout',
274
292
  } as const;
275
293
 
276
294
  export const TypedError = (hardwareError: ErrorCodeUnion | string, message?: string) => {
@@ -289,3 +307,12 @@ export const serializeError = (payload: any) => {
289
307
  }
290
308
  return payload;
291
309
  };
310
+
311
+ export const CreateErrorByMessage = (message: string): HardwareError => {
312
+ for (const code of Object.values(HardwareErrorCode)) {
313
+ if (HardwareErrorCodeMessage[code] === message) {
314
+ return TypedError(code);
315
+ }
316
+ }
317
+ return new HardwareError(message);
318
+ };
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './deferred';
2
2
  export * from './HardwareError';
3
+ export * from './logger';
3
4
  export * as ERRORS from './HardwareError';
package/src/logger.ts ADDED
@@ -0,0 +1,132 @@
1
+ type LogMessage = {
2
+ level: string;
3
+ prefix: string;
4
+ message: any[];
5
+ timestamp: number;
6
+ };
7
+
8
+ type LoggerFn = (...data: any[]) => void;
9
+ type LoggerMoreParams = (message?: any, ...optionalParams: any[]) => void;
10
+
11
+ type Logger = {
12
+ debug: LoggerFn | LoggerMoreParams;
13
+ info: LoggerFn | LoggerMoreParams;
14
+ warn: LoggerFn | LoggerMoreParams;
15
+ error: LoggerFn | LoggerMoreParams;
16
+ };
17
+
18
+ const MAX_ENTRIES = 100;
19
+
20
+ class Log {
21
+ prefix: string;
22
+
23
+ enabled: boolean;
24
+
25
+ messages: LogMessage[];
26
+
27
+ logger?: Logger;
28
+
29
+ constructor(prefix: string, enabled: boolean, logger?: Logger) {
30
+ this.prefix = prefix;
31
+ this.enabled = enabled;
32
+ this.messages = [];
33
+ if (logger) {
34
+ this.logger = logger;
35
+ }
36
+ }
37
+
38
+ addMessage(level: string, prefix: string, ...args: any[]) {
39
+ this.messages.push({
40
+ level,
41
+ prefix,
42
+ message: args,
43
+ timestamp: new Date().getTime(),
44
+ });
45
+ if (this.messages.length > MAX_ENTRIES) {
46
+ this.messages.shift();
47
+ }
48
+ }
49
+
50
+ log(...args: any[]) {
51
+ this.addMessage('log', this.prefix, ...args);
52
+ if (!this.enabled) {
53
+ return;
54
+ }
55
+ if (this.logger) {
56
+ this.logger.info(this.prefix, ...args);
57
+ } else {
58
+ console.log(this.prefix, ...args);
59
+ }
60
+ }
61
+
62
+ error(...args: any[]) {
63
+ this.addMessage('error', this.prefix, ...args);
64
+ if (!this.enabled) {
65
+ return;
66
+ }
67
+ if (this.logger) {
68
+ this.logger.error(this.prefix, ...args);
69
+ } else {
70
+ console.error(this.prefix, ...args);
71
+ }
72
+ }
73
+
74
+ warn(...args: any[]) {
75
+ this.addMessage('warn', this.prefix, ...args);
76
+ if (!this.enabled) {
77
+ return;
78
+ }
79
+ if (this.logger) {
80
+ this.logger.warn(this.prefix, ...args);
81
+ } else {
82
+ console.warn(this.prefix, ...args);
83
+ }
84
+ }
85
+
86
+ debug(...args: any[]) {
87
+ this.addMessage('debug', this.prefix, ...args);
88
+ if (!this.enabled) {
89
+ return;
90
+ }
91
+ if (this.logger) {
92
+ this.logger.debug(this.prefix, ...args);
93
+ } else {
94
+ console.log(this.prefix, ...args);
95
+ }
96
+ }
97
+ }
98
+
99
+ const _logs: { [k: string]: Log } = {};
100
+
101
+ export const initLog = (prefix: string, enabled?: boolean, logger?: Logger) => {
102
+ const instance = new Log(prefix, !!enabled, logger);
103
+ _logs[prefix] = instance;
104
+ return instance;
105
+ };
106
+
107
+ export const enableLog = (enabled?: boolean) => {
108
+ Object.keys(_logs).forEach(key => {
109
+ _logs[key].enabled = !!enabled;
110
+ });
111
+ };
112
+
113
+ export const setOutsideLogger = (logger: Logger) => {
114
+ Object.keys(_logs).forEach(key => {
115
+ _logs[key].logger = logger;
116
+ });
117
+ };
118
+
119
+ export const enableLogByPrefix = (prefix: string, enabled: boolean) => {
120
+ if (_logs[prefix]) {
121
+ _logs[prefix].enabled = enabled;
122
+ }
123
+ };
124
+
125
+ export const getLog = () => {
126
+ let logs: LogMessage[] = [];
127
+ Object.keys(_logs).forEach(key => {
128
+ logs = logs.concat(_logs[key].messages);
129
+ });
130
+ logs.sort((a, b) => a.timestamp - b.timestamp);
131
+ return logs;
132
+ };