@punks/backend-core 0.0.48 → 0.0.50

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.
@@ -10,12 +10,12 @@ export declare enum MetaSerializationType {
10
10
  JSON = 1
11
11
  }
12
12
  export interface ILoggerProvider {
13
- debug(message: string, meta?: any): void;
14
- info(message: string, meta?: any): void;
15
- warn(message: string, meta?: any): void;
16
- error(message: string, meta?: any): void;
17
- fatal(message: string, meta?: any): void;
18
- exception(message: string, error: Error, meta?: any): void;
13
+ debug(loggerName: string, message: string, meta?: any): void;
14
+ info(loggerName: string, message: string, meta?: any): void;
15
+ warn(loggerName: string, message: string, meta?: any): void;
16
+ error(loggerName: string, message: string, meta?: any): void;
17
+ fatal(loggerName: string, message: string, meta?: any): void;
18
+ exception(loggerName: string, message: string, error: Error, meta?: any): void;
19
19
  }
20
20
  export interface ILogger {
21
21
  debug(message: string, meta?: any): void;
@@ -0,0 +1,9 @@
1
+ import { ILoggerProvider } from "../../abstractions";
2
+ export declare class ConsoleLogger implements ILoggerProvider {
3
+ debug(loggerName: string, message: string, meta?: any): void;
4
+ info(loggerName: string, message: string, meta?: any): void;
5
+ warn(loggerName: string, message: string, meta?: any): void;
6
+ error(loggerName: string, message: string, meta?: any): void;
7
+ fatal(loggerName: string, message: string, meta?: any): void;
8
+ exception(loggerName: string, message: string, error: Error, meta?: any): void;
9
+ }
@@ -0,0 +1,19 @@
1
+ import { ILoggerProvider } from "../../abstractions";
2
+ export type DatadogLoggingSettings = {
3
+ service: string;
4
+ apiKey: string;
5
+ appName: string;
6
+ roleName: string;
7
+ environmentName: string;
8
+ };
9
+ export declare class DatadogLogger implements ILoggerProvider {
10
+ private readonly settings;
11
+ private readonly logger;
12
+ constructor(settings: DatadogLoggingSettings);
13
+ debug(loggerName: string, message: string, meta?: any): void;
14
+ info(loggerName: string, message: string, meta?: any): void;
15
+ warn(loggerName: string, message: string, meta?: any): void;
16
+ error(loggerName: string, message: string, meta?: any): void;
17
+ fatal(loggerName: string, message: string, meta?: any): void;
18
+ exception(loggerName: string, message: string, error: Error, meta?: any): void;
19
+ }
@@ -0,0 +1,2 @@
1
+ export { ConsoleLogger } from "./consoleLogger";
2
+ export { DatadogLogger } from "./datadogLogger";
@@ -1,9 +1,17 @@
1
- import { ILogger, LogLevel, MetaSerializationType } from "../abstractions";
1
+ import { ILogger, ILoggerProvider, LogLevel, MetaSerializationType } from "../abstractions";
2
+ export type LoggerInstance = {
3
+ options: LoggerOptions;
4
+ provider: ILoggerProvider;
5
+ };
6
+ type LoggerOptions = {
7
+ enabled: boolean;
8
+ level: LogLevel;
9
+ loggerName?: string;
10
+ serialization: MetaSerializationType;
11
+ };
2
12
  export declare class Log {
3
- private static readonly options;
4
- static setSerializationType(type: MetaSerializationType): void;
5
- static setLevel(level: LogLevel): void;
6
- static enable(): void;
7
- static disable(): void;
13
+ private static readonly container;
14
+ static configure(instance: LoggerInstance): void;
8
15
  static getLogger(loggerName: string): ILogger;
9
16
  }
17
+ export {};
@@ -8,6 +8,7 @@ export declare const buildObject: <T>(...props: {
8
8
  }[]) => T;
9
9
  export declare const mergeDeep: <T>(a: any, b: any) => T;
10
10
  export declare const jsonSerialize: (obj: any, options?: {
11
+ removeNonSerializableObjects?: boolean;
11
12
  removeCircularReferences?: boolean;
12
13
  stripBinaryData?: boolean;
13
14
  maxStringsLength?: number;
package/dist/esm/index.js CHANGED
@@ -287,9 +287,22 @@ const mergeDeep = (a, b) => {
287
287
  }
288
288
  return c;
289
289
  };
290
+ const isSerializable = (obj) => {
291
+ try {
292
+ JSON.stringify(obj);
293
+ return true;
294
+ }
295
+ catch (e) {
296
+ return false;
297
+ }
298
+ };
290
299
  const jsonSerialize = (obj, options) => {
291
- const { removeCircularReferences = true, stripBinaryData = true, prettify = false, maxStringsLength, } = options ?? {};
300
+ const { removeNonSerializableObjects = true, removeCircularReferences = true, stripBinaryData = true, prettify = false, maxStringsLength, } = options ?? {};
292
301
  const replacer = (key, value) => {
302
+ // remove non serializable objects
303
+ if (removeNonSerializableObjects && !isSerializable(value)) {
304
+ return `<non serializable property ${typeof value}>`;
305
+ }
293
306
  // remove circular references
294
307
  const seen = new WeakSet();
295
308
  if (removeCircularReferences &&
@@ -28393,138 +28406,58 @@ const excelParse = (file, options) => {
28393
28406
  .map((x) => aggregateRow(header, x, options));
28394
28407
  };
28395
28408
 
28396
- class DefaultLogger {
28397
- constructor(loggerName) {
28409
+ class InternalLogger {
28410
+ constructor(loggerName, container) {
28398
28411
  this.loggerName = loggerName;
28412
+ this.container = container;
28399
28413
  }
28400
28414
  debug(message, meta) {
28401
- if (meta) {
28402
- console.log(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, meta);
28403
- }
28404
- else {
28405
- console.log(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`);
28406
- }
28415
+ this.getEnabledInstances(LogLevel.Debug).forEach((x) => x.provider.debug(this.loggerName, message, this.serializeMeta(x.options, meta)));
28407
28416
  }
28408
28417
  info(message, meta) {
28409
- if (meta) {
28410
- console.info(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, meta);
28411
- }
28412
- else {
28413
- console.info(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`);
28414
- }
28418
+ this.getEnabledInstances(LogLevel.Info).forEach((x) => x.provider.info(this.loggerName, message, this.serializeMeta(x.options, meta)));
28415
28419
  }
28416
28420
  warn(message, meta) {
28417
- if (meta) {
28418
- console.warn(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, meta);
28419
- }
28420
- else {
28421
- console.warn(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`);
28422
- }
28421
+ this.getEnabledInstances(LogLevel.Warn).forEach((x) => x.provider.warn(this.loggerName, message, this.serializeMeta(x.options, meta)));
28423
28422
  }
28424
28423
  error(message, meta) {
28425
- if (meta) {
28426
- console.error(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, meta);
28427
- }
28428
- else {
28429
- console.error(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`);
28430
- }
28424
+ this.getEnabledInstances(LogLevel.Error).forEach((x) => x.provider.error(this.loggerName, message, this.serializeMeta(x.options, meta)));
28431
28425
  }
28432
28426
  fatal(message, meta) {
28433
- if (meta) {
28434
- console.error(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, meta);
28435
- }
28436
- else {
28437
- console.error(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`);
28438
- }
28427
+ this.getEnabledInstances(LogLevel.Fatal).forEach((x) => x.provider.fatal(this.loggerName, message, this.serializeMeta(x.options, meta)));
28439
28428
  }
28440
28429
  exception(message, error, meta) {
28441
- if (meta) {
28442
- console.error(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, error, meta);
28443
- }
28444
- else {
28445
- console.error(`${this.loggerName ? `[${this.loggerName}] ` : ""}${message}`, error);
28446
- }
28430
+ this.getEnabledInstances(LogLevel.Error).forEach((x) => x.provider.exception(this.loggerName, message, error, this.serializeMeta(x.options, meta)));
28447
28431
  }
28448
- }
28449
-
28450
- class InternalLogger {
28451
- constructor(options, provider) {
28452
- this.options = options;
28453
- this.provider = provider;
28454
- }
28455
- debug(message, meta) {
28456
- if (this.options.enabled && this.options.level === LogLevel.Debug) {
28457
- this.provider.debug(message, this.serializeMeta(meta));
28458
- }
28459
- }
28460
- info(message, meta) {
28461
- if (this.options.enabled && this.options.level <= LogLevel.Info) {
28462
- this.provider.info(message, this.serializeMeta(meta));
28463
- }
28464
- }
28465
- warn(message, meta) {
28466
- if (this.options.enabled && this.options.level <= LogLevel.Warn) {
28467
- this.provider.warn(message, this.serializeMeta(meta));
28468
- }
28469
- }
28470
- error(message, meta) {
28471
- if (this.options.enabled && this.options.level <= LogLevel.Error) {
28472
- this.provider.error(message, this.serializeMeta(meta));
28473
- }
28432
+ getEnabledInstances(level) {
28433
+ return this.container.instances.filter((x) => x.options.enabled && x.options.level <= level);
28474
28434
  }
28475
- fatal(message, meta) {
28476
- if (this.options.enabled && this.options.level <= LogLevel.Fatal) {
28477
- this.provider.fatal(message, this.serializeMeta(meta));
28478
- }
28479
- }
28480
- exception(message, error, meta) {
28481
- if (this.options.enabled && this.options.level <= LogLevel.Error) {
28482
- this.provider.exception(message, error, this.serializeMeta(meta));
28483
- }
28484
- }
28485
- serializeMeta(meta) {
28486
- const serializedMeta = jsonSerialize(meta, {
28487
- prettify: true,
28488
- stripBinaryData: true,
28489
- });
28490
- switch (this.options.serialization) {
28435
+ serializeMeta(options, meta) {
28436
+ const serializedMeta = meta
28437
+ ? jsonSerialize(meta, {
28438
+ prettify: true,
28439
+ stripBinaryData: true,
28440
+ })
28441
+ : undefined;
28442
+ switch (options.serialization) {
28491
28443
  case MetaSerializationType.JSON:
28492
28444
  return serializedMeta;
28493
28445
  case MetaSerializationType.None:
28494
28446
  default:
28495
- return JSON.parse(serializedMeta);
28447
+ return serializedMeta ? JSON.parse(serializedMeta) : undefined;
28496
28448
  }
28497
28449
  }
28498
28450
  }
28499
- const getLogger = ({ options, loggerName, }) => {
28500
- return new InternalLogger(options, new DefaultLogger(loggerName));
28501
- };
28502
28451
  class Log {
28503
- static setSerializationType(type) {
28504
- this.options.serialization = type;
28505
- }
28506
- static setLevel(level) {
28507
- this.options.level = level;
28508
- this.options.level = level;
28509
- this.options.enabled = true;
28510
- }
28511
- static enable() {
28512
- this.options.enabled = true;
28513
- }
28514
- static disable() {
28515
- this.options.enabled = false;
28452
+ static configure(instance) {
28453
+ this.container.instances.push(instance);
28516
28454
  }
28517
28455
  static getLogger(loggerName) {
28518
- return getLogger({
28519
- options: this.options,
28520
- loggerName,
28521
- });
28456
+ return new InternalLogger(loggerName, this.container);
28522
28457
  }
28523
28458
  }
28524
- Log.options = {
28525
- enabled: true,
28526
- level: LogLevel.Debug,
28527
- serialization: MetaSerializationType.None,
28459
+ Log.container = {
28460
+ instances: [],
28528
28461
  };
28529
28462
 
28530
28463
  const logMemoryUsage = () => {