@coast/service-common 2.0.56 → 2.0.58

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.
@@ -1,7 +1,8 @@
1
+ import { LogMessage } from './LogMessage';
1
2
  export declare abstract class CoastLogger {
2
- abstract debug(message: unknown): void;
3
- abstract error(message: unknown, trace?: string): void;
4
- abstract log(message: unknown): void;
5
- abstract verbose(message: unknown): void;
6
- abstract warn(message: unknown): void;
3
+ abstract debug(message: LogMessage): void;
4
+ abstract error(message: LogMessage, error?: Error): void;
5
+ abstract log(message: LogMessage): void;
6
+ abstract verbose(message: LogMessage): void;
7
+ abstract warn(message: LogMessage): void;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CoastLogger.js","sourceRoot":"","sources":["../../lib/logger/CoastLogger.ts"],"names":[],"mappings":";;;AAAA,MAAsB,WAAW;CAMhC;AAND,kCAMC"}
1
+ {"version":3,"file":"CoastLogger.js","sourceRoot":"","sources":["../../lib/logger/CoastLogger.ts"],"names":[],"mappings":";;;AAEA,MAAsB,WAAW;CAMhC;AAND,kCAMC"}
@@ -0,0 +1,3 @@
1
+ import { Brand } from '@paradoxical-io/types';
2
+ export type DeepLogObject = Brand<object, 'DeepLogObject'>;
3
+ export declare function DeepLogObject(value: object): DeepLogObject;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeepLogObject = DeepLogObject;
4
+ function DeepLogObject(value) {
5
+ return value;
6
+ }
7
+ //# sourceMappingURL=DeepLogObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepLogObject.js","sourceRoot":"","sources":["../../lib/logger/DeepLogObject.ts"],"names":[],"mappings":";;AAOA,sCAEC;AAFD,SAAgB,aAAa,CAAC,KAAa;IACvC,OAAO,KAAsB,CAAC;AAClC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { DeepLogObject } from './DeepLogObject';
2
+ export type LogMessage = string | ({
3
+ msg: string;
4
+ } & Record<string, boolean | Date | DeepLogObject | number | string | undefined>);
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=LogMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogMessage.js","sourceRoot":"","sources":["../../lib/logger/LogMessage.ts"],"names":[],"mappings":""}
@@ -3,4 +3,5 @@ export interface LoggerOptions {
3
3
  level?: LogLevel;
4
4
  pretty?: boolean;
5
5
  redact?: string[];
6
+ destination?: NodeJS.WritableStream;
6
7
  }
@@ -2,13 +2,14 @@ import { AsyncContext } from '../context/AsyncContext';
2
2
  import { Trace } from '../trace/Trace';
3
3
  import { CoastLogger } from './CoastLogger';
4
4
  import { LoggerOptions } from './LoggerOptions';
5
+ import { LogMessage } from './LogMessage';
5
6
  export declare class PinoLogger extends CoastLogger {
6
7
  private readonly trace;
7
8
  private readonly instance;
8
9
  constructor(trace: AsyncContext<Trace> | undefined, options: LoggerOptions);
9
- debug(message: unknown): void;
10
- error(message: unknown, trace?: string): void;
11
- log(message: unknown): void;
12
- verbose(message: unknown): void;
13
- warn(message: unknown): void;
10
+ debug(message: LogMessage): void;
11
+ error(message: LogMessage, error?: Error): void;
12
+ log(message: LogMessage): void;
13
+ verbose(message: LogMessage): void;
14
+ warn(message: LogMessage): void;
14
15
  }
@@ -7,6 +7,7 @@ exports.PinoLogger = void 0;
7
7
  const pino_1 = __importDefault(require("pino"));
8
8
  const CoastLogger_1 = require("./CoastLogger");
9
9
  const LogLevel_1 = require("./LogLevel");
10
+ const PinoMixins_1 = require("./PinoMixins");
10
11
  class PinoLogger extends CoastLogger_1.CoastLogger {
11
12
  constructor(trace, options) {
12
13
  super();
@@ -31,10 +32,11 @@ class PinoLogger extends CoastLogger_1.CoastLogger {
31
32
  if (options.redact) {
32
33
  redact.push(...options.redact);
33
34
  }
34
- const pino = options.pretty
35
- ? (0, pino_1.default)({
35
+ const localContextKeys = () => PinoMixins_1.PinoMixins.remap(this.trace?.get());
36
+ const pinoOptions = options.pretty
37
+ ? {
36
38
  level,
37
- mixin: () => this.trace?.get() ?? {},
39
+ mixin: localContextKeys,
38
40
  redact,
39
41
  transport: {
40
42
  options: {
@@ -43,19 +45,20 @@ class PinoLogger extends CoastLogger_1.CoastLogger {
43
45
  },
44
46
  target: 'pino-pretty',
45
47
  },
46
- })
47
- : (0, pino_1.default)({
48
+ }
49
+ : {
48
50
  level,
49
- mixin: () => this.trace?.get() ?? {},
51
+ mixin: localContextKeys,
50
52
  redact,
51
- });
52
- this.instance = pino;
53
+ };
54
+ this.instance = (0, pino_1.default)(pinoOptions, options.destination);
53
55
  }
54
56
  debug(message) {
55
57
  this.instance.debug(message);
56
58
  }
57
- error(message, trace = '') {
58
- this.instance.error(message, trace);
59
+ error(message, error) {
60
+ const context = typeof message === 'string' ? { msg: message } : message;
61
+ this.instance.error({ ...context, error });
59
62
  }
60
63
  log(message) {
61
64
  this.instance.info(message);
@@ -1 +1 @@
1
- {"version":3,"file":"PinoLogger.js","sourceRoot":"","sources":["../../lib/logger/PinoLogger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,+CAA4C;AAE5C,yCAAsC;AAEtC,MAAa,UAAW,SAAQ,yBAAW;IAGvC,YACqB,KAAsC,EACvD,OAAsB;QAEtB,KAAK,EAAE,CAAC;QAHS,UAAK,GAAL,KAAK,CAAiC;QAIvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAQ,CAAC,IAAI,CAAC;QAE7C,MAAM,MAAM,GAAG;YACX,uBAAuB;YACvB,0BAA0B;YAC1B,mCAAmC;YACnC,YAAY;YACZ,qBAAqB;YACrB,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,uBAAuB;YACvB,eAAe;YACf,eAAe;YACf,kBAAkB;YAClB,YAAY;SACf,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM;YACvB,CAAC,CAAC,IAAA,cAAI,EAAC;gBACD,KAAK;gBACL,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;gBACpC,MAAM;gBACN,SAAS,EAAE;oBACP,OAAO,EAAE;wBACL,QAAQ,EAAE,IAAI;wBACd,aAAa,EAAE,IAAI;qBACtB;oBACD,MAAM,EAAE,aAAa;iBACxB;aACJ,CAAC;YACJ,CAAC,CAAC,IAAA,cAAI,EAAC;gBACD,KAAK;gBACL,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;gBACpC,MAAM;aACT,CAAC,CAAC;QAET,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,OAAgB;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAgB,EAAE,QAAgB,EAAE;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,GAAG,CAAC,OAAgB;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAEM,OAAO,CAAC,OAAgB;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,OAAgB;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACJ;AAxED,gCAwEC"}
1
+ {"version":3,"file":"PinoLogger.js","sourceRoot":"","sources":["../../lib/logger/PinoLogger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,+CAA4C;AAE5C,yCAAsC;AAEtC,6CAA0C;AAE1C,MAAa,UAAW,SAAQ,yBAAW;IAGvC,YACqB,KAAsC,EACvD,OAAsB;QAEtB,KAAK,EAAE,CAAC;QAHS,UAAK,GAAL,KAAK,CAAiC;QAIvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAQ,CAAC,IAAI,CAAC;QAE7C,MAAM,MAAM,GAAG;YACX,uBAAuB;YACvB,0BAA0B;YAC1B,mCAAmC;YACnC,YAAY;YACZ,qBAAqB;YACrB,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,uBAAuB;YACvB,eAAe;YACf,eAAe;YACf,kBAAkB;YAClB,YAAY;SACf,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAEnE,MAAM,WAAW,GAAuB,OAAO,CAAC,MAAM;YAClD,CAAC,CAAC;gBACI,KAAK;gBACL,KAAK,EAAE,gBAAgB;gBACvB,MAAM;gBACN,SAAS,EAAE;oBACP,OAAO,EAAE;wBACL,QAAQ,EAAE,IAAI;wBACd,aAAa,EAAE,IAAI;qBACtB;oBACD,MAAM,EAAE,aAAa;iBACxB;aACJ;YACH,CAAC,CAAC;gBACI,KAAK;gBACL,KAAK,EAAE,gBAAgB;gBACvB,MAAM;aACT,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,IAAA,cAAI,EAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,OAAmB;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAmB,EAAE,KAAa;QAC3C,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAEzE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,GAAG,CAAC,OAAmB;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAEM,OAAO,CAAC,OAAmB;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,OAAmB;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACJ;AA5ED,gCA4EC"}
@@ -0,0 +1,4 @@
1
+ import { Trace } from '../trace/Trace';
2
+ export declare class PinoMixins {
3
+ static remap(trace: Trace | undefined): Record<string, string>;
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PinoMixins = void 0;
4
+ class PinoMixins {
5
+ static remap(trace) {
6
+ const context = {};
7
+ const record = (trace ?? {});
8
+ Object.keys(record).forEach((key) => {
9
+ context[`coast.${key}`] = record[key] ?? '';
10
+ });
11
+ return context;
12
+ }
13
+ }
14
+ exports.PinoMixins = PinoMixins;
15
+ //# sourceMappingURL=PinoMixins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinoMixins.js","sourceRoot":"","sources":["../../lib/logger/PinoMixins.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACnB,MAAM,CAAC,KAAK,CAAC,KAAwB;QACjC,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA2B,CAAC;QAEvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAZD,gCAYC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coast/service-common",
3
- "version": "2.0.56",
3
+ "version": "2.0.58",
4
4
  "description": "Common service package",
5
5
  "engines": {
6
6
  "node": ">=20.0.0"
@@ -47,6 +47,7 @@
47
47
  "@types/node": "^22.13.4",
48
48
  "@types/pino": "^7.0.5",
49
49
  "jest": "^29.7.0",
50
+ "pino-test": "^1.1.0",
50
51
  "ts-jest": "^29.2.5",
51
52
  "typescript": "^5"
52
53
  },