@percepta/logger 0.0.7 → 0.1.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/dist/index.cjs CHANGED
@@ -4,8 +4,10 @@ const require_MosaicLogger = require("./logger/MosaicLogger.cjs");
4
4
  const require_createLogFactory = require("./logger/createLogFactory.cjs");
5
5
  const require_createPinoInstance = require("./logger/createPinoInstance.cjs");
6
6
  const require_createTracerFactory = require("./tracer/createTracerFactory.cjs");
7
+ const require_createLoggerRuntime = require("./logger/createLoggerRuntime.cjs");
7
8
  exports.MosaicLogger = require_MosaicLogger.MosaicLogger;
8
9
  exports.createLogFactory = require_createLogFactory.createLogFactory;
10
+ exports.createLoggerRuntime = require_createLoggerRuntime.createLoggerRuntime;
9
11
  exports.createPinoInstance = require_createPinoInstance.createPinoInstance;
10
12
  exports.createTracerFactory = require_createTracerFactory.createTracerFactory;
11
13
  exports.redactValueForGrafana = require_redactValueForGrafana.redactValueForGrafana;
package/dist/index.d.cts CHANGED
@@ -2,5 +2,6 @@ import { LogArgs, MosaicLogger } from "./logger/MosaicLogger.cjs";
2
2
  import { LogFactory, createLogFactory } from "./logger/createLogFactory.cjs";
3
3
  import { createPinoInstance } from "./logger/createPinoInstance.cjs";
4
4
  import { Tracer, TracerFactory, createTracerFactory } from "./tracer/createTracerFactory.cjs";
5
+ import { CreateLoggerRuntimeConfig, LoggerRuntime, createLoggerRuntime } from "./logger/createLoggerRuntime.cjs";
5
6
  import { redactValueForGrafana } from "./utils/redactValueForGrafana.cjs";
6
- export { LogArgs, LogFactory, MosaicLogger, Tracer, TracerFactory, createLogFactory, createPinoInstance, createTracerFactory, redactValueForGrafana };
7
+ export { CreateLoggerRuntimeConfig, LogArgs, LogFactory, LoggerRuntime, MosaicLogger, Tracer, TracerFactory, createLogFactory, createLoggerRuntime, createPinoInstance, createTracerFactory, redactValueForGrafana };
package/dist/index.d.ts CHANGED
@@ -2,5 +2,6 @@ import { LogArgs, MosaicLogger } from "./logger/MosaicLogger.js";
2
2
  import { LogFactory, createLogFactory } from "./logger/createLogFactory.js";
3
3
  import { createPinoInstance } from "./logger/createPinoInstance.js";
4
4
  import { Tracer, TracerFactory, createTracerFactory } from "./tracer/createTracerFactory.js";
5
+ import { CreateLoggerRuntimeConfig, LoggerRuntime, createLoggerRuntime } from "./logger/createLoggerRuntime.js";
5
6
  import { redactValueForGrafana } from "./utils/redactValueForGrafana.js";
6
- export { LogArgs, LogFactory, MosaicLogger, Tracer, TracerFactory, createLogFactory, createPinoInstance, createTracerFactory, redactValueForGrafana };
7
+ export { CreateLoggerRuntimeConfig, LogArgs, LogFactory, LoggerRuntime, MosaicLogger, Tracer, TracerFactory, createLogFactory, createLoggerRuntime, createPinoInstance, createTracerFactory, redactValueForGrafana };
package/dist/index.js CHANGED
@@ -3,4 +3,5 @@ import { MosaicLogger } from "./logger/MosaicLogger.js";
3
3
  import { createLogFactory } from "./logger/createLogFactory.js";
4
4
  import { createPinoInstance } from "./logger/createPinoInstance.js";
5
5
  import { createTracerFactory } from "./tracer/createTracerFactory.js";
6
- export { MosaicLogger, createLogFactory, createPinoInstance, createTracerFactory, redactValueForGrafana };
6
+ import { createLoggerRuntime } from "./logger/createLoggerRuntime.js";
7
+ export { MosaicLogger, createLogFactory, createLoggerRuntime, createPinoInstance, createTracerFactory, redactValueForGrafana };
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicLogger.cjs","names":[],"sources":["../../src/logger/MosaicLogger.ts"],"sourcesContent":["import { isEmpty, isError, mapValues } from \"lodash-es\";\nimport { type Logger as PinoLogger } from \"pino\";\n\nexport interface LogArgs {\n safe?: Record<string, unknown>;\n unsafe?: Record<string, unknown>;\n}\n\nenum LogLevel {\n INFO = \"info\",\n ERROR = \"error\",\n WARN = \"warn\",\n DEBUG = \"debug\",\n}\n\nexport class MosaicLogger {\n public constructor(\n private pino: PinoLogger,\n private redactValue: (value: unknown) => string,\n ) {}\n\n public child(context: LogArgs): MosaicLogger {\n return new MosaicLogger(\n this.pino.child(this.resolveArgs(context)),\n this.redactValue,\n );\n }\n\n public info(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.INFO, args, message, error);\n }\n\n public warn(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.WARN, args, message, error);\n }\n\n public debug(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.DEBUG, args, message, error);\n }\n\n public error(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.ERROR, args, message, error);\n }\n\n private log(\n level: LogLevel,\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.pino[level](\n {\n ...(args != null && { ...this.resolveArgs(args) }),\n ...(error != null && { err: this.serializeError(error) }),\n },\n message,\n );\n }\n\n private resolveArgs({ safe, unsafe }: LogArgs): Record<string, unknown> {\n return {\n ...safe,\n ...(unsafe != null &&\n mapValues(unsafe, (value) => this.redactValue(value))),\n };\n }\n\n private serializeError(error: unknown): SerializedError {\n if (!isError(error)) {\n return { message: this.redactValue(String(error)) };\n }\n\n const { name, message, stack, ...errorProps } = error;\n\n return {\n type: name,\n message: this.redactValue(message),\n stack,\n ...(!isEmpty(errorProps) && { props: this.redactValue(errorProps) }),\n };\n }\n}\n\ninterface SerializedError {\n type?: string;\n message?: string;\n stack?: string;\n props?: string;\n}\n"],"mappings":";;;AAeA,IAAa,eAAb,MAAa,aAAa;CACxB,YACE,MACA,aACA;AAFQ,OAAA,OAAA;AACA,OAAA,cAAA;;CAGV,MAAa,SAAgC;AAC3C,SAAO,IAAI,aACT,KAAK,KAAK,MAAM,KAAK,YAAY,QAAQ,CAAC,EAC1C,KAAK,YACN;;CAGH,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,IACE,OACA,MACA,SACA,OACM;AACN,OAAK,KAAK,OACR;GACE,GAAI,QAAQ,QAAQ,EAAE,GAAG,KAAK,YAAY,KAAK,EAAE;GACjD,GAAI,SAAS,QAAQ,EAAE,KAAK,KAAK,eAAe,MAAM,EAAE;GACzD,EACD,QACD;;CAGH,YAAoB,EAAE,MAAM,UAA4C;AACtE,SAAO;GACL,GAAG;GACH,GAAI,UAAU,SAAA,GAAA,UAAA,WACF,SAAS,UAAU,KAAK,YAAY,MAAM,CAAC;GACxD;;CAGH,eAAuB,OAAiC;AACtD,MAAI,EAAA,GAAA,UAAA,SAAS,MAAM,CACjB,QAAO,EAAE,SAAS,KAAK,YAAY,OAAO,MAAM,CAAC,EAAE;EAGrD,MAAM,EAAE,MAAM,SAAS,OAAO,GAAG,eAAe;AAEhD,SAAO;GACL,MAAM;GACN,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,GAAI,EAAA,GAAA,UAAA,SAAS,WAAW,IAAI,EAAE,OAAO,KAAK,YAAY,WAAW,EAAE;GACpE"}
1
+ {"version":3,"file":"MosaicLogger.cjs","names":[],"sources":["../../src/logger/MosaicLogger.ts"],"sourcesContent":["import { isEmpty, isError, mapValues } from \"lodash-es\";\nimport type { Logger as PinoLogger } from \"pino\";\n\nexport interface LogArgs {\n safe?: Record<string, unknown>;\n unsafe?: Record<string, unknown>;\n}\n\nenum LogLevel {\n INFO = \"info\",\n ERROR = \"error\",\n WARN = \"warn\",\n DEBUG = \"debug\",\n}\n\nexport class MosaicLogger {\n public constructor(\n private pino: PinoLogger,\n private redactValue: (value: unknown) => string,\n ) {}\n\n public child(context: LogArgs): MosaicLogger {\n return new MosaicLogger(\n this.pino.child(this.resolveArgs(context)),\n this.redactValue,\n );\n }\n\n public info(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.INFO, args, message, error);\n }\n\n public warn(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.WARN, args, message, error);\n }\n\n public debug(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.DEBUG, args, message, error);\n }\n\n public error(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.ERROR, args, message, error);\n }\n\n private log(\n level: LogLevel,\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.pino[level](\n {\n ...(args != null && { ...this.resolveArgs(args) }),\n ...(error != null && { err: this.serializeError(error) }),\n },\n message,\n );\n }\n\n private resolveArgs({ safe, unsafe }: LogArgs): Record<string, unknown> {\n return {\n ...safe,\n ...(unsafe != null &&\n mapValues(unsafe, (value) => this.redactValue(value))),\n };\n }\n\n private serializeError(error: unknown): SerializedError {\n if (!isError(error)) {\n return { message: this.redactValue(String(error)) };\n }\n\n const { name, message, stack, ...errorProps } = error;\n\n return {\n type: name,\n message: this.redactValue(message),\n stack,\n ...(!isEmpty(errorProps) && { props: this.redactValue(errorProps) }),\n };\n }\n}\n\ninterface SerializedError {\n type?: string;\n message?: string;\n stack?: string;\n props?: string;\n}\n"],"mappings":";;;AAeA,IAAa,eAAb,MAAa,aAAa;CACxB,YACE,MACA,aACA;AAFQ,OAAA,OAAA;AACA,OAAA,cAAA;;CAGV,MAAa,SAAgC;AAC3C,SAAO,IAAI,aACT,KAAK,KAAK,MAAM,KAAK,YAAY,QAAQ,CAAC,EAC1C,KAAK,YACN;;CAGH,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,IACE,OACA,MACA,SACA,OACM;AACN,OAAK,KAAK,OACR;GACE,GAAI,QAAQ,QAAQ,EAAE,GAAG,KAAK,YAAY,KAAK,EAAE;GACjD,GAAI,SAAS,QAAQ,EAAE,KAAK,KAAK,eAAe,MAAM,EAAE;GACzD,EACD,QACD;;CAGH,YAAoB,EAAE,MAAM,UAA4C;AACtE,SAAO;GACL,GAAG;GACH,GAAI,UAAU,SAAA,GAAA,UAAA,WACF,SAAS,UAAU,KAAK,YAAY,MAAM,CAAC;GACxD;;CAGH,eAAuB,OAAiC;AACtD,MAAI,EAAA,GAAA,UAAA,SAAS,MAAM,CACjB,QAAO,EAAE,SAAS,KAAK,YAAY,OAAO,MAAM,CAAC,EAAE;EAGrD,MAAM,EAAE,MAAM,SAAS,OAAO,GAAG,eAAe;AAEhD,SAAO;GACL,MAAM;GACN,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,GAAI,EAAA,GAAA,UAAA,SAAS,WAAW,IAAI,EAAE,OAAO,KAAK,YAAY,WAAW,EAAE;GACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicLogger.js","names":[],"sources":["../../src/logger/MosaicLogger.ts"],"sourcesContent":["import { isEmpty, isError, mapValues } from \"lodash-es\";\nimport { type Logger as PinoLogger } from \"pino\";\n\nexport interface LogArgs {\n safe?: Record<string, unknown>;\n unsafe?: Record<string, unknown>;\n}\n\nenum LogLevel {\n INFO = \"info\",\n ERROR = \"error\",\n WARN = \"warn\",\n DEBUG = \"debug\",\n}\n\nexport class MosaicLogger {\n public constructor(\n private pino: PinoLogger,\n private redactValue: (value: unknown) => string,\n ) {}\n\n public child(context: LogArgs): MosaicLogger {\n return new MosaicLogger(\n this.pino.child(this.resolveArgs(context)),\n this.redactValue,\n );\n }\n\n public info(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.INFO, args, message, error);\n }\n\n public warn(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.WARN, args, message, error);\n }\n\n public debug(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.DEBUG, args, message, error);\n }\n\n public error(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.ERROR, args, message, error);\n }\n\n private log(\n level: LogLevel,\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.pino[level](\n {\n ...(args != null && { ...this.resolveArgs(args) }),\n ...(error != null && { err: this.serializeError(error) }),\n },\n message,\n );\n }\n\n private resolveArgs({ safe, unsafe }: LogArgs): Record<string, unknown> {\n return {\n ...safe,\n ...(unsafe != null &&\n mapValues(unsafe, (value) => this.redactValue(value))),\n };\n }\n\n private serializeError(error: unknown): SerializedError {\n if (!isError(error)) {\n return { message: this.redactValue(String(error)) };\n }\n\n const { name, message, stack, ...errorProps } = error;\n\n return {\n type: name,\n message: this.redactValue(message),\n stack,\n ...(!isEmpty(errorProps) && { props: this.redactValue(errorProps) }),\n };\n }\n}\n\ninterface SerializedError {\n type?: string;\n message?: string;\n stack?: string;\n props?: string;\n}\n"],"mappings":";;AAeA,IAAa,eAAb,MAAa,aAAa;CACxB,YACE,MACA,aACA;AAFQ,OAAA,OAAA;AACA,OAAA,cAAA;;CAGV,MAAa,SAAgC;AAC3C,SAAO,IAAI,aACT,KAAK,KAAK,MAAM,KAAK,YAAY,QAAQ,CAAC,EAC1C,KAAK,YACN;;CAGH,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,IACE,OACA,MACA,SACA,OACM;AACN,OAAK,KAAK,OACR;GACE,GAAI,QAAQ,QAAQ,EAAE,GAAG,KAAK,YAAY,KAAK,EAAE;GACjD,GAAI,SAAS,QAAQ,EAAE,KAAK,KAAK,eAAe,MAAM,EAAE;GACzD,EACD,QACD;;CAGH,YAAoB,EAAE,MAAM,UAA4C;AACtE,SAAO;GACL,GAAG;GACH,GAAI,UAAU,QACZ,UAAU,SAAS,UAAU,KAAK,YAAY,MAAM,CAAC;GACxD;;CAGH,eAAuB,OAAiC;AACtD,MAAI,CAAC,QAAQ,MAAM,CACjB,QAAO,EAAE,SAAS,KAAK,YAAY,OAAO,MAAM,CAAC,EAAE;EAGrD,MAAM,EAAE,MAAM,SAAS,OAAO,GAAG,eAAe;AAEhD,SAAO;GACL,MAAM;GACN,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,GAAI,CAAC,QAAQ,WAAW,IAAI,EAAE,OAAO,KAAK,YAAY,WAAW,EAAE;GACpE"}
1
+ {"version":3,"file":"MosaicLogger.js","names":[],"sources":["../../src/logger/MosaicLogger.ts"],"sourcesContent":["import { isEmpty, isError, mapValues } from \"lodash-es\";\nimport type { Logger as PinoLogger } from \"pino\";\n\nexport interface LogArgs {\n safe?: Record<string, unknown>;\n unsafe?: Record<string, unknown>;\n}\n\nenum LogLevel {\n INFO = \"info\",\n ERROR = \"error\",\n WARN = \"warn\",\n DEBUG = \"debug\",\n}\n\nexport class MosaicLogger {\n public constructor(\n private pino: PinoLogger,\n private redactValue: (value: unknown) => string,\n ) {}\n\n public child(context: LogArgs): MosaicLogger {\n return new MosaicLogger(\n this.pino.child(this.resolveArgs(context)),\n this.redactValue,\n );\n }\n\n public info(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.INFO, args, message, error);\n }\n\n public warn(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.WARN, args, message, error);\n }\n\n public debug(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.DEBUG, args, message, error);\n }\n\n public error(\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.log(LogLevel.ERROR, args, message, error);\n }\n\n private log(\n level: LogLevel,\n args: LogArgs | undefined,\n message: string,\n error?: unknown,\n ): void {\n this.pino[level](\n {\n ...(args != null && { ...this.resolveArgs(args) }),\n ...(error != null && { err: this.serializeError(error) }),\n },\n message,\n );\n }\n\n private resolveArgs({ safe, unsafe }: LogArgs): Record<string, unknown> {\n return {\n ...safe,\n ...(unsafe != null &&\n mapValues(unsafe, (value) => this.redactValue(value))),\n };\n }\n\n private serializeError(error: unknown): SerializedError {\n if (!isError(error)) {\n return { message: this.redactValue(String(error)) };\n }\n\n const { name, message, stack, ...errorProps } = error;\n\n return {\n type: name,\n message: this.redactValue(message),\n stack,\n ...(!isEmpty(errorProps) && { props: this.redactValue(errorProps) }),\n };\n }\n}\n\ninterface SerializedError {\n type?: string;\n message?: string;\n stack?: string;\n props?: string;\n}\n"],"mappings":";;AAeA,IAAa,eAAb,MAAa,aAAa;CACxB,YACE,MACA,aACA;AAFQ,OAAA,OAAA;AACA,OAAA,cAAA;;CAGV,MAAa,SAAgC;AAC3C,SAAO,IAAI,aACT,KAAK,KAAK,MAAM,KAAK,YAAY,QAAQ,CAAC,EAC1C,KAAK,YACN;;CAGH,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,KACE,MACA,SACA,OACM;AACN,OAAK,IAAA,QAAmB,MAAM,SAAS,MAAM;;CAG/C,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,MACE,MACA,SACA,OACM;AACN,OAAK,IAAA,SAAoB,MAAM,SAAS,MAAM;;CAGhD,IACE,OACA,MACA,SACA,OACM;AACN,OAAK,KAAK,OACR;GACE,GAAI,QAAQ,QAAQ,EAAE,GAAG,KAAK,YAAY,KAAK,EAAE;GACjD,GAAI,SAAS,QAAQ,EAAE,KAAK,KAAK,eAAe,MAAM,EAAE;GACzD,EACD,QACD;;CAGH,YAAoB,EAAE,MAAM,UAA4C;AACtE,SAAO;GACL,GAAG;GACH,GAAI,UAAU,QACZ,UAAU,SAAS,UAAU,KAAK,YAAY,MAAM,CAAC;GACxD;;CAGH,eAAuB,OAAiC;AACtD,MAAI,CAAC,QAAQ,MAAM,CACjB,QAAO,EAAE,SAAS,KAAK,YAAY,OAAO,MAAM,CAAC,EAAE;EAGrD,MAAM,EAAE,MAAM,SAAS,OAAO,GAAG,eAAe;AAEhD,SAAO;GACL,MAAM;GACN,SAAS,KAAK,YAAY,QAAQ;GAClC;GACA,GAAI,CAAC,QAAQ,WAAW,IAAI,EAAE,OAAO,KAAK,YAAY,WAAW,EAAE;GACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"createLogFactory.cjs","names":["redactValueForGrafana","MosaicLogger"],"sources":["../../src/logger/createLogFactory.ts"],"sourcesContent":["import { type AsyncLocalStorage } from \"node:async_hooks\";\nimport { type Logger as PinoLogger } from \"pino\";\nimport { redactValueForGrafana } from \"../utils/redactValueForGrafana\";\nimport { type LogArgs, MosaicLogger } from \"./MosaicLogger\";\n\nexport interface LogFactory {\n getLogger: () => MosaicLogger;\n withLogContext: <TReturn>(\n context: LogArgs,\n callback: () => TReturn,\n ) => TReturn;\n}\n\nexport function createLogFactory(\n pino: PinoLogger,\n asyncLocalStorageFactory: () => AsyncLocalStorage<MosaicLogger>,\n redactValue: (value: unknown) => string = redactValueForGrafana,\n): LogFactory {\n const baseLogger = new MosaicLogger(pino, redactValue);\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n function getLogger(): MosaicLogger {\n return asyncLocalStorage.getStore() ?? baseLogger;\n }\n\n return {\n getLogger,\n withLogContext: (context, callback) => {\n return asyncLocalStorage.run(getLogger().child(context), callback);\n },\n };\n}\n"],"mappings":";;;AAaA,SAAgB,iBACd,MACA,0BACA,cAA0CA,8BAAAA,uBAC9B;CACZ,MAAM,aAAa,IAAIC,qBAAAA,aAAa,MAAM,YAAY;CACtD,MAAM,oBAAoB,0BAA0B;CAEpD,SAAS,YAA0B;AACjC,SAAO,kBAAkB,UAAU,IAAI;;AAGzC,QAAO;EACL;EACA,iBAAiB,SAAS,aAAa;AACrC,UAAO,kBAAkB,IAAI,WAAW,CAAC,MAAM,QAAQ,EAAE,SAAS;;EAErE"}
1
+ {"version":3,"file":"createLogFactory.cjs","names":["redactValueForGrafana","MosaicLogger"],"sources":["../../src/logger/createLogFactory.ts"],"sourcesContent":["import type { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Logger as PinoLogger } from \"pino\";\nimport { redactValueForGrafana } from \"../utils/redactValueForGrafana\";\nimport { type LogArgs, MosaicLogger } from \"./MosaicLogger\";\n\nexport interface LogFactory {\n getLogger: () => MosaicLogger;\n withLogContext: <TReturn>(\n context: LogArgs,\n callback: () => TReturn,\n ) => TReturn;\n}\n\nexport function createLogFactory(\n pino: PinoLogger,\n asyncLocalStorageFactory: () => AsyncLocalStorage<MosaicLogger>,\n redactValue: (value: unknown) => string = redactValueForGrafana,\n): LogFactory {\n const baseLogger = new MosaicLogger(pino, redactValue);\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n function getLogger(): MosaicLogger {\n return asyncLocalStorage.getStore() ?? baseLogger;\n }\n\n return {\n getLogger,\n withLogContext: (context, callback) => {\n return asyncLocalStorage.run(getLogger().child(context), callback);\n },\n };\n}\n"],"mappings":";;;AAaA,SAAgB,iBACd,MACA,0BACA,cAA0CA,8BAAAA,uBAC9B;CACZ,MAAM,aAAa,IAAIC,qBAAAA,aAAa,MAAM,YAAY;CACtD,MAAM,oBAAoB,0BAA0B;CAEpD,SAAS,YAA0B;AACjC,SAAO,kBAAkB,UAAU,IAAI;;AAGzC,QAAO;EACL;EACA,iBAAiB,SAAS,aAAa;AACrC,UAAO,kBAAkB,IAAI,WAAW,CAAC,MAAM,QAAQ,EAAE,SAAS;;EAErE"}
@@ -1 +1 @@
1
- {"version":3,"file":"createLogFactory.js","names":[],"sources":["../../src/logger/createLogFactory.ts"],"sourcesContent":["import { type AsyncLocalStorage } from \"node:async_hooks\";\nimport { type Logger as PinoLogger } from \"pino\";\nimport { redactValueForGrafana } from \"../utils/redactValueForGrafana\";\nimport { type LogArgs, MosaicLogger } from \"./MosaicLogger\";\n\nexport interface LogFactory {\n getLogger: () => MosaicLogger;\n withLogContext: <TReturn>(\n context: LogArgs,\n callback: () => TReturn,\n ) => TReturn;\n}\n\nexport function createLogFactory(\n pino: PinoLogger,\n asyncLocalStorageFactory: () => AsyncLocalStorage<MosaicLogger>,\n redactValue: (value: unknown) => string = redactValueForGrafana,\n): LogFactory {\n const baseLogger = new MosaicLogger(pino, redactValue);\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n function getLogger(): MosaicLogger {\n return asyncLocalStorage.getStore() ?? baseLogger;\n }\n\n return {\n getLogger,\n withLogContext: (context, callback) => {\n return asyncLocalStorage.run(getLogger().child(context), callback);\n },\n };\n}\n"],"mappings":";;;AAaA,SAAgB,iBACd,MACA,0BACA,cAA0C,uBAC9B;CACZ,MAAM,aAAa,IAAI,aAAa,MAAM,YAAY;CACtD,MAAM,oBAAoB,0BAA0B;CAEpD,SAAS,YAA0B;AACjC,SAAO,kBAAkB,UAAU,IAAI;;AAGzC,QAAO;EACL;EACA,iBAAiB,SAAS,aAAa;AACrC,UAAO,kBAAkB,IAAI,WAAW,CAAC,MAAM,QAAQ,EAAE,SAAS;;EAErE"}
1
+ {"version":3,"file":"createLogFactory.js","names":[],"sources":["../../src/logger/createLogFactory.ts"],"sourcesContent":["import type { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Logger as PinoLogger } from \"pino\";\nimport { redactValueForGrafana } from \"../utils/redactValueForGrafana\";\nimport { type LogArgs, MosaicLogger } from \"./MosaicLogger\";\n\nexport interface LogFactory {\n getLogger: () => MosaicLogger;\n withLogContext: <TReturn>(\n context: LogArgs,\n callback: () => TReturn,\n ) => TReturn;\n}\n\nexport function createLogFactory(\n pino: PinoLogger,\n asyncLocalStorageFactory: () => AsyncLocalStorage<MosaicLogger>,\n redactValue: (value: unknown) => string = redactValueForGrafana,\n): LogFactory {\n const baseLogger = new MosaicLogger(pino, redactValue);\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n function getLogger(): MosaicLogger {\n return asyncLocalStorage.getStore() ?? baseLogger;\n }\n\n return {\n getLogger,\n withLogContext: (context, callback) => {\n return asyncLocalStorage.run(getLogger().child(context), callback);\n },\n };\n}\n"],"mappings":";;;AAaA,SAAgB,iBACd,MACA,0BACA,cAA0C,uBAC9B;CACZ,MAAM,aAAa,IAAI,aAAa,MAAM,YAAY;CACtD,MAAM,oBAAoB,0BAA0B;CAEpD,SAAS,YAA0B;AACjC,SAAO,kBAAkB,UAAU,IAAI;;AAGzC,QAAO;EACL;EACA,iBAAiB,SAAS,aAAa;AACrC,UAAO,kBAAkB,IAAI,WAAW,CAAC,MAAM,QAAQ,EAAE,SAAS;;EAErE"}
@@ -0,0 +1,16 @@
1
+ require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_createLogFactory = require("./createLogFactory.cjs");
3
+ const require_createPinoInstance = require("./createPinoInstance.cjs");
4
+ const require_createTracerFactory = require("../tracer/createTracerFactory.cjs");
5
+ let node_async_hooks = require("node:async_hooks");
6
+ //#region src/logger/createLoggerRuntime.ts
7
+ function createLoggerRuntime({ env, pino = require_createPinoInstance.createPinoInstance(env) }) {
8
+ return {
9
+ ...require_createLogFactory.createLogFactory(pino, () => new node_async_hooks.AsyncLocalStorage()),
10
+ ...require_createTracerFactory.createTracerFactory(() => new node_async_hooks.AsyncLocalStorage())
11
+ };
12
+ }
13
+ //#endregion
14
+ exports.createLoggerRuntime = createLoggerRuntime;
15
+
16
+ //# sourceMappingURL=createLoggerRuntime.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLoggerRuntime.cjs","names":["createPinoInstance","createLogFactory","AsyncLocalStorage","createTracerFactory"],"sources":["../../src/logger/createLoggerRuntime.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { BaseEnvConfig } from \"@percepta/utils\";\nimport type { Logger as PinoLogger } from \"pino\";\nimport {\n createTracerFactory,\n type Tracer,\n type TracerFactory,\n} from \"../tracer/createTracerFactory\";\nimport { createLogFactory, type LogFactory } from \"./createLogFactory\";\nimport { createPinoInstance } from \"./createPinoInstance\";\nimport type { MosaicLogger } from \"./MosaicLogger\";\n\nexport interface CreateLoggerRuntimeConfig {\n readonly env: BaseEnvConfig;\n readonly pino?: PinoLogger;\n}\n\nexport type LoggerRuntime = LogFactory & TracerFactory;\n\nexport function createLoggerRuntime({\n env,\n pino = createPinoInstance(env),\n}: CreateLoggerRuntimeConfig): LoggerRuntime {\n return {\n ...createLogFactory(pino, () => new AsyncLocalStorage<MosaicLogger>()),\n ...createTracerFactory(() => new AsyncLocalStorage<Tracer>()),\n };\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,oBAAoB,EAClC,KACA,OAAOA,2BAAAA,mBAAmB,IAAI,IACa;AAC3C,QAAO;EACL,GAAGC,yBAAAA,iBAAiB,YAAY,IAAIC,iBAAAA,mBAAiC,CAAC;EACtE,GAAGC,4BAAAA,0BAA0B,IAAID,iBAAAA,mBAA2B,CAAC;EAC9D"}
@@ -0,0 +1,18 @@
1
+ import { LogFactory } from "./createLogFactory.cjs";
2
+ import { TracerFactory } from "../tracer/createTracerFactory.cjs";
3
+ import { Logger } from "pino";
4
+ import { BaseEnvConfig } from "@percepta/utils";
5
+
6
+ //#region src/logger/createLoggerRuntime.d.ts
7
+ interface CreateLoggerRuntimeConfig {
8
+ readonly env: BaseEnvConfig;
9
+ readonly pino?: Logger;
10
+ }
11
+ type LoggerRuntime = LogFactory & TracerFactory;
12
+ declare function createLoggerRuntime({
13
+ env,
14
+ pino
15
+ }: CreateLoggerRuntimeConfig): LoggerRuntime;
16
+ //#endregion
17
+ export { CreateLoggerRuntimeConfig, LoggerRuntime, createLoggerRuntime };
18
+ //# sourceMappingURL=createLoggerRuntime.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLoggerRuntime.d.cts","names":[],"sources":["../../src/logger/createLoggerRuntime.ts"],"mappings":";;;;;;UAYiB,yBAAA;EAAA,SACN,GAAA,EAAK,aAAA;EAAA,SACL,IAAA,GAAO,MAAA;AAAA;AAAA,KAGN,aAAA,GAAgB,UAAA,GAAa,aAAA;AAAA,iBAEzB,mBAAA,CAAA;EACd,GAAA;EACA;AAAA,GACC,yBAAA,GAA4B,aAAA"}
@@ -0,0 +1,18 @@
1
+ import { LogFactory } from "./createLogFactory.js";
2
+ import { TracerFactory } from "../tracer/createTracerFactory.js";
3
+ import { BaseEnvConfig } from "@percepta/utils";
4
+ import { Logger } from "pino";
5
+
6
+ //#region src/logger/createLoggerRuntime.d.ts
7
+ interface CreateLoggerRuntimeConfig {
8
+ readonly env: BaseEnvConfig;
9
+ readonly pino?: Logger;
10
+ }
11
+ type LoggerRuntime = LogFactory & TracerFactory;
12
+ declare function createLoggerRuntime({
13
+ env,
14
+ pino
15
+ }: CreateLoggerRuntimeConfig): LoggerRuntime;
16
+ //#endregion
17
+ export { CreateLoggerRuntimeConfig, LoggerRuntime, createLoggerRuntime };
18
+ //# sourceMappingURL=createLoggerRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLoggerRuntime.d.ts","names":[],"sources":["../../src/logger/createLoggerRuntime.ts"],"mappings":";;;;;;UAYiB,yBAAA;EAAA,SACN,GAAA,EAAK,aAAA;EAAA,SACL,IAAA,GAAO,MAAA;AAAA;AAAA,KAGN,aAAA,GAAgB,UAAA,GAAa,aAAA;AAAA,iBAEzB,mBAAA,CAAA;EACd,GAAA;EACA;AAAA,GACC,yBAAA,GAA4B,aAAA"}
@@ -0,0 +1,15 @@
1
+ import { createLogFactory } from "./createLogFactory.js";
2
+ import { createPinoInstance } from "./createPinoInstance.js";
3
+ import { createTracerFactory } from "../tracer/createTracerFactory.js";
4
+ import { AsyncLocalStorage } from "node:async_hooks";
5
+ //#region src/logger/createLoggerRuntime.ts
6
+ function createLoggerRuntime({ env, pino = createPinoInstance(env) }) {
7
+ return {
8
+ ...createLogFactory(pino, () => new AsyncLocalStorage()),
9
+ ...createTracerFactory(() => new AsyncLocalStorage())
10
+ };
11
+ }
12
+ //#endregion
13
+ export { createLoggerRuntime };
14
+
15
+ //# sourceMappingURL=createLoggerRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLoggerRuntime.js","names":[],"sources":["../../src/logger/createLoggerRuntime.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { BaseEnvConfig } from \"@percepta/utils\";\nimport type { Logger as PinoLogger } from \"pino\";\nimport {\n createTracerFactory,\n type Tracer,\n type TracerFactory,\n} from \"../tracer/createTracerFactory\";\nimport { createLogFactory, type LogFactory } from \"./createLogFactory\";\nimport { createPinoInstance } from \"./createPinoInstance\";\nimport type { MosaicLogger } from \"./MosaicLogger\";\n\nexport interface CreateLoggerRuntimeConfig {\n readonly env: BaseEnvConfig;\n readonly pino?: PinoLogger;\n}\n\nexport type LoggerRuntime = LogFactory & TracerFactory;\n\nexport function createLoggerRuntime({\n env,\n pino = createPinoInstance(env),\n}: CreateLoggerRuntimeConfig): LoggerRuntime {\n return {\n ...createLogFactory(pino, () => new AsyncLocalStorage<MosaicLogger>()),\n ...createTracerFactory(() => new AsyncLocalStorage<Tracer>()),\n };\n}\n"],"mappings":";;;;;AAmBA,SAAgB,oBAAoB,EAClC,KACA,OAAO,mBAAmB,IAAI,IACa;AAC3C,QAAO;EACL,GAAG,iBAAiB,YAAY,IAAI,mBAAiC,CAAC;EACtE,GAAG,0BAA0B,IAAI,mBAA2B,CAAC;EAC9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"createTracerFactory.cjs","names":[],"sources":["../../src/tracer/createTracerFactory.ts"],"sourcesContent":["import { type AsyncLocalStorage } from \"node:async_hooks\";\n\nexport interface Tracer {\n traceId: string;\n}\n\nexport interface TracerFactory {\n getTracer: () => Tracer | undefined;\n withTracer: <TReturn>(tracer: Tracer, callback: () => TReturn) => TReturn;\n}\n\nexport function createTracerFactory(\n asyncLocalStorageFactory: () => AsyncLocalStorage<Tracer>,\n): TracerFactory {\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n return {\n getTracer: () => asyncLocalStorage.getStore(),\n withTracer: (tracer, callback) => asyncLocalStorage.run(tracer, callback),\n };\n}\n"],"mappings":";AAWA,SAAgB,oBACd,0BACe;CACf,MAAM,oBAAoB,0BAA0B;AAEpD,QAAO;EACL,iBAAiB,kBAAkB,UAAU;EAC7C,aAAa,QAAQ,aAAa,kBAAkB,IAAI,QAAQ,SAAS;EAC1E"}
1
+ {"version":3,"file":"createTracerFactory.cjs","names":[],"sources":["../../src/tracer/createTracerFactory.ts"],"sourcesContent":["import type { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport interface Tracer {\n traceId: string;\n}\n\nexport interface TracerFactory {\n getTracer: () => Tracer | undefined;\n withTracer: <TReturn>(tracer: Tracer, callback: () => TReturn) => TReturn;\n}\n\nexport function createTracerFactory(\n asyncLocalStorageFactory: () => AsyncLocalStorage<Tracer>,\n): TracerFactory {\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n return {\n getTracer: () => asyncLocalStorage.getStore(),\n withTracer: (tracer, callback) => asyncLocalStorage.run(tracer, callback),\n };\n}\n"],"mappings":";AAWA,SAAgB,oBACd,0BACe;CACf,MAAM,oBAAoB,0BAA0B;AAEpD,QAAO;EACL,iBAAiB,kBAAkB,UAAU;EAC7C,aAAa,QAAQ,aAAa,kBAAkB,IAAI,QAAQ,SAAS;EAC1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"createTracerFactory.js","names":[],"sources":["../../src/tracer/createTracerFactory.ts"],"sourcesContent":["import { type AsyncLocalStorage } from \"node:async_hooks\";\n\nexport interface Tracer {\n traceId: string;\n}\n\nexport interface TracerFactory {\n getTracer: () => Tracer | undefined;\n withTracer: <TReturn>(tracer: Tracer, callback: () => TReturn) => TReturn;\n}\n\nexport function createTracerFactory(\n asyncLocalStorageFactory: () => AsyncLocalStorage<Tracer>,\n): TracerFactory {\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n return {\n getTracer: () => asyncLocalStorage.getStore(),\n withTracer: (tracer, callback) => asyncLocalStorage.run(tracer, callback),\n };\n}\n"],"mappings":";AAWA,SAAgB,oBACd,0BACe;CACf,MAAM,oBAAoB,0BAA0B;AAEpD,QAAO;EACL,iBAAiB,kBAAkB,UAAU;EAC7C,aAAa,QAAQ,aAAa,kBAAkB,IAAI,QAAQ,SAAS;EAC1E"}
1
+ {"version":3,"file":"createTracerFactory.js","names":[],"sources":["../../src/tracer/createTracerFactory.ts"],"sourcesContent":["import type { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport interface Tracer {\n traceId: string;\n}\n\nexport interface TracerFactory {\n getTracer: () => Tracer | undefined;\n withTracer: <TReturn>(tracer: Tracer, callback: () => TReturn) => TReturn;\n}\n\nexport function createTracerFactory(\n asyncLocalStorageFactory: () => AsyncLocalStorage<Tracer>,\n): TracerFactory {\n const asyncLocalStorage = asyncLocalStorageFactory();\n\n return {\n getTracer: () => asyncLocalStorage.getStore(),\n withTracer: (tracer, callback) => asyncLocalStorage.run(tracer, callback),\n };\n}\n"],"mappings":";AAWA,SAAgB,oBACd,0BACe;CACf,MAAM,oBAAoB,0BAA0B;AAEpD,QAAO;EACL,iBAAiB,kBAAkB,UAAU;EAC7C,aAAa,QAAQ,aAAa,kBAAkB,IAAI,QAAQ,SAAS;EAC1E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@percepta/logger",
3
- "version": "0.0.7",
3
+ "version": "0.1.0",
4
4
  "private": false,
5
5
  "description": "Mosaic logging with redaction",
6
6
  "files": [
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/lodash-es": "^4.17.12",
38
- "@percepta/build": "0.5.0"
38
+ "@percepta/build": "1.1.0"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsdown",