@jaypie/logger 1.2.3 → 1.2.5

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var node_crypto = require('node:crypto');
5
6
  var node_os = require('node:os');
6
7
  var node_https = require('node:https');
7
8
 
@@ -60,6 +61,57 @@ const DATADOG_TRANSPORT = {
60
61
  MAX_BATCH_SIZE: 100,
61
62
  };
62
63
 
64
+ //
65
+ //
66
+ // Helper
67
+ //
68
+ function redactAuth(value) {
69
+ const str = String(value);
70
+ if (/sk\S+/.test(str)) {
71
+ return `sk_${str.slice(-4)}`;
72
+ }
73
+ const hash = node_crypto.createHash("md5").update(str).digest("hex");
74
+ return `md5_${hash.slice(-4)}`;
75
+ }
76
+ //
77
+ //
78
+ // Main
79
+ //
80
+ function sanitizeAuth(value) {
81
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
82
+ return value;
83
+ }
84
+ const obj = value;
85
+ let clone;
86
+ for (const key of Object.keys(obj)) {
87
+ const lower = key.toLowerCase();
88
+ if (lower === "authorization") {
89
+ if (!clone)
90
+ clone = { ...obj };
91
+ clone[key] = redactAuth(obj[key]);
92
+ }
93
+ else if (lower === "headers") {
94
+ const headers = obj[key];
95
+ if (typeof headers === "object" &&
96
+ headers !== null &&
97
+ !Array.isArray(headers)) {
98
+ const hdrs = headers;
99
+ for (const hKey of Object.keys(hdrs)) {
100
+ if (hKey.toLowerCase() === "authorization") {
101
+ if (!clone)
102
+ clone = { ...obj };
103
+ const clonedHeaders = { ...hdrs };
104
+ clonedHeaders[hKey] = redactAuth(hdrs[hKey]);
105
+ clone[key] = clonedHeaders;
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ return clone ?? value;
113
+ }
114
+
63
115
  // Level-to-Datadog status mapping
64
116
  const LEVEL_TO_STATUS = {
65
117
  [LEVEL.TRACE]: "debug",
@@ -373,8 +425,9 @@ class Logger {
373
425
  createLogMethod(logLevel, format, checkLevel) {
374
426
  const logFn = (...messages) => {
375
427
  if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {
428
+ const sanitized = messages.map(sanitizeAuth);
376
429
  if (format === FORMAT.JSON) {
377
- const message = stringify(...messages);
430
+ const message = stringify(...sanitized);
378
431
  const parses = parsesTo(message);
379
432
  const json = {
380
433
  log: logLevel,
@@ -387,7 +440,7 @@ class Logger {
387
440
  out(json, { level: logLevel });
388
441
  }
389
442
  else {
390
- const message = stringify(...messages);
443
+ const message = stringify(...sanitized);
391
444
  out(message, { level: logLevel });
392
445
  }
393
446
  }
@@ -409,7 +462,7 @@ class Logger {
409
462
  }
410
463
  }
411
464
  else {
412
- msgObj = messageObject;
465
+ msgObj = sanitizeAuth(messageObject);
413
466
  }
414
467
  const keys = Object.keys(msgObj);
415
468
  if (keys.length === 0) {
@@ -789,4 +842,6 @@ exports.createLogger = createLogger;
789
842
  exports.default = log;
790
843
  exports.isDatadogForwardingEnabled = isDatadogForwardingEnabled;
791
844
  exports.log = log;
845
+ exports.redactAuth = redactAuth;
846
+ exports.sanitizeAuth = sanitizeAuth;
792
847
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/constants.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.ts","../../../src/pipelines.ts","../../../src/logVar.ts","../../../src/JaypieLogger.ts","../../../src/index.ts"],"sourcesContent":["export const DEFAULT = {\n LEVEL: \"debug\",\n VAR_LEVEL: \"debug\",\n};\n\nexport const ERROR_PREFIX = \"[logger]\";\n\nexport const ERROR = {\n VAR: {\n EMPTY_OBJECT: `${ERROR_PREFIX} Logger.var() called with empty object`,\n MULTIPLE_KEYS: `${ERROR_PREFIX} Logger.var() called with multiple keys`,\n NULL_OBJECT: `${ERROR_PREFIX} Logger.var() called with null`,\n UNDEFINED_MESSAGE: `${ERROR_PREFIX} Logger.var() called with \\`undefined\\` message`,\n },\n};\n\nexport const FORMAT = {\n JSON: \"json\",\n TEXT: \"text\",\n} as const;\n\nexport const LEVEL = {\n ALL: \"all\",\n DEBUG: \"debug\",\n ERROR: \"error\",\n FATAL: \"fatal\",\n INFO: \"info\",\n SILENT: \"silent\",\n TRACE: \"trace\",\n WARN: \"warn\",\n} as const;\n\nexport const LEVEL_VALUES: Record<string, number> = {\n all: 100,\n debug: 70,\n error: 10,\n fatal: 1,\n info: 50,\n none: 0,\n silent: 0,\n trace: 90,\n warn: 30,\n};\n\nexport const DATADOG_TRANSPORT = {\n ENV: {\n API_KEY: \"DATADOG_API_KEY\",\n DD_ENV: \"DD_ENV\",\n DD_HOST: \"DD_HOST\",\n DD_SERVICE: \"DD_SERVICE\",\n DD_SITE: \"DD_SITE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n },\n FLUSH_INTERVAL_MS: 5000,\n INTAKE_PATH: \"/api/v2/logs\",\n MAX_BATCH_SIZE: 100,\n} as const;\n\nexport const PSEUDO_LEVELS = [\"ALL\", \"SILENT\"];\n","import { hostname } from \"node:os\";\nimport { request } from \"node:https\";\n\nimport { DATADOG_TRANSPORT, LEVEL } from \"./constants\";\n\n// Level-to-Datadog status mapping\nconst LEVEL_TO_STATUS: Record<string, string> = {\n [LEVEL.TRACE]: \"debug\",\n [LEVEL.DEBUG]: \"debug\",\n [LEVEL.INFO]: \"info\",\n [LEVEL.WARN]: \"warn\",\n [LEVEL.ERROR]: \"error\",\n [LEVEL.FATAL]: \"critical\",\n};\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nexport function isDatadogForwardingEnabled(): boolean {\n return (\n envBoolean(DATADOG_TRANSPORT.ENV.FORWARDING, { defaultValue: false }) &&\n !!process.env[DATADOG_TRANSPORT.ENV.API_KEY]\n );\n}\n\ninterface DatadogLogEntry {\n ddsource: string;\n ddtags: string;\n hostname: string;\n message: string;\n service: string;\n status: string;\n [key: string]: unknown;\n}\n\nclass DatadogLogTransport {\n private _beforeExitHandler: (() => void) | null = null;\n private _buffer: DatadogLogEntry[] = [];\n private _flushTimer: ReturnType<typeof setInterval> | null = null;\n private _ddsource = \"nodejs\";\n private _env: string;\n private _hostname: string;\n private _service: string;\n private _site: string;\n\n constructor() {\n const env = process.env;\n this._env =\n env[DATADOG_TRANSPORT.ENV.DD_ENV] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_ENV] ||\n \"local\";\n this._hostname =\n env[DATADOG_TRANSPORT.ENV.DD_HOST] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_HOST] ||\n hostname();\n this._service =\n env[DATADOG_TRANSPORT.ENV.DD_SERVICE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SERVICE] ||\n \"unknown\";\n this._site = env[DATADOG_TRANSPORT.ENV.DD_SITE] || \"datadoghq.com\";\n\n this._flushTimer = setInterval(() => {\n this.flush();\n }, DATADOG_TRANSPORT.FLUSH_INTERVAL_MS);\n // Unref so timer doesn't keep process alive\n if (this._flushTimer && typeof this._flushTimer.unref === \"function\") {\n this._flushTimer.unref();\n }\n\n // Best-effort flush on exit\n this._beforeExitHandler = () => this.flush();\n process.on(\"beforeExit\", this._beforeExitHandler);\n }\n\n send(line: string, level: string): void {\n let message: string = line;\n let extra: Record<string, unknown> = {};\n if (typeof line === \"string\") {\n try {\n const parsed = JSON.parse(line);\n if (parsed && typeof parsed === \"object\") {\n if (parsed.message) {\n message = parsed.message;\n const { log: _, message: __, ...rest } = parsed;\n extra = rest;\n }\n }\n } catch {\n // Not JSON — use line as-is\n }\n }\n const entry: DatadogLogEntry = {\n ddsource: this._ddsource,\n ddtags: `env:${this._env}`,\n hostname: this._hostname,\n message,\n service: this._service,\n status: LEVEL_TO_STATUS[level] || \"info\",\n ...extra,\n };\n this._buffer.push(entry);\n if (this._buffer.length >= DATADOG_TRANSPORT.MAX_BATCH_SIZE) {\n this.flush();\n }\n }\n\n flush(): void {\n if (this._buffer.length === 0) return;\n\n // Atomic swap\n const batch = this._buffer;\n this._buffer = [];\n\n const apiKey = process.env[DATADOG_TRANSPORT.ENV.API_KEY];\n if (!apiKey) return;\n\n const body = JSON.stringify(batch);\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n \"DD-API-KEY\": apiKey,\n },\n hostname: `http-intake.logs.${this._site}`,\n method: \"POST\",\n path: DATADOG_TRANSPORT.INTAKE_PATH,\n };\n\n try {\n const req = request(options, () => {\n // Response intentionally ignored\n });\n req.on(\"error\", () => {\n // Silently swallow transport errors\n });\n req.write(body);\n req.end();\n } catch {\n // Transport must never throw\n }\n }\n\n destroy(): void {\n if (this._flushTimer) {\n clearInterval(this._flushTimer);\n this._flushTimer = null;\n }\n if (this._beforeExitHandler) {\n process.removeListener(\"beforeExit\", this._beforeExitHandler);\n this._beforeExitHandler = null;\n }\n try {\n this.flush();\n } catch {\n // Best-effort\n }\n }\n}\n\nlet _instance: DatadogLogTransport | null = null;\n\nexport function getDatadogTransport(): DatadogLogTransport | null {\n if (!isDatadogForwardingEnabled()) return null;\n if (!_instance) {\n _instance = new DatadogLogTransport();\n }\n return _instance;\n}\n\nexport function _resetDatadogTransport(): void {\n if (_instance) {\n _instance.destroy();\n _instance = null;\n }\n}\n","import { LEVEL } from \"./constants\";\nimport { getDatadogTransport } from \"./datadogTransport\";\n\nexport function forceString(value: unknown, defaultValue = \"\"): string {\n if (value === null) return \"null\";\n if (value === undefined) return String(defaultValue);\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function formatAsJsonString(subject: unknown): string {\n const SPACES = 0;\n const UNUSED_PARAM = null;\n\n switch (typeof subject) {\n case \"string\":\n if (subject === \"\") return `\"\"`;\n try {\n return JSON.stringify(JSON.parse(subject), UNUSED_PARAM, SPACES);\n } catch {\n return subject;\n }\n\n case \"object\":\n try {\n if (\n subject &&\n subject instanceof Object &&\n !Array.isArray(subject) &&\n subject.constructor &&\n subject.constructor !== Object &&\n \"toString\" in subject &&\n typeof subject.toString === \"function\"\n ) {\n return subject.toString();\n }\n return JSON.stringify(subject, UNUSED_PARAM, SPACES);\n } catch (error) {\n if (error instanceof TypeError) {\n const truncatedSubject = Object.keys(subject as object).reduce(\n (newSubject: Record<string, string>, key: string) => {\n const nextSubject = { ...newSubject };\n nextSubject[key] = String(\n (subject as Record<string, unknown>)[key],\n );\n return nextSubject;\n },\n {},\n );\n return formatAsJsonString(truncatedSubject);\n }\n throw error;\n }\n\n default:\n return String(subject);\n }\n}\n\nexport function stringify(...params: unknown[]): string {\n if (params.length === 0) return \"\";\n if (params.length === 1) {\n return formatAsJsonString(params[0]);\n }\n\n const formatted = params.map(formatAsJsonString);\n return formatted.join(\" \");\n}\n\nexport function out(\n line: string | unknown,\n { level = \"debug\" }: { level?: string } = {},\n): void {\n let lineStr: string;\n if (typeof line !== \"string\") {\n lineStr = stringify(line);\n } else {\n lineStr = line;\n }\n\n let outputFunction: (...args: unknown[]) => void;\n\n switch (level) {\n case LEVEL.INFO:\n outputFunction = console.info;\n break;\n case LEVEL.WARN:\n outputFunction = console.warn;\n break;\n case LEVEL.ERROR:\n case LEVEL.FATAL:\n outputFunction = console.error;\n break;\n case LEVEL.TRACE:\n case LEVEL.DEBUG:\n outputFunction = console.debug;\n break;\n default:\n outputFunction = console.log;\n break;\n }\n\n try {\n outputFunction(lineStr);\n } catch (error) {\n console.warn(error);\n console.log(lineStr);\n }\n\n try {\n const transport = getDatadogTransport();\n if (transport) {\n transport.send(lineStr, level);\n }\n } catch {\n // Transport errors must never affect logging\n }\n}\n\nexport function parse(message: unknown): unknown {\n if (typeof message !== \"string\") {\n return message;\n }\n try {\n return JSON.parse(message);\n } catch {\n return message;\n }\n}\n\nexport function parsesTo(message: unknown): {\n parses: boolean;\n message: unknown;\n} {\n if (typeof message !== \"string\") {\n return {\n parses: false,\n message,\n };\n }\n try {\n return {\n parses: true,\n message: JSON.parse(message),\n };\n } catch {\n return {\n parses: false,\n message,\n };\n }\n}\n","import {\n DEFAULT,\n ERROR,\n FORMAT,\n LEVEL,\n LEVEL_VALUES,\n PSEUDO_LEVELS,\n} from \"./constants\";\nimport { forceString, out, parse, parsesTo, stringify } from \"./utils\";\n\ntype LogLevel = string;\ntype LogFormat = \"json\" | \"text\";\ntype Tags = Record<string, string>;\n\ninterface LoggerOptions {\n format?: LogFormat;\n level?: LogLevel;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: string;\n log: string;\n message: string;\n var?: string;\n [key: string]: unknown;\n}\n\ntype LogMethod = {\n (...messages: unknown[]): void;\n var: (messageObject: unknown, messageValue?: unknown) => void;\n};\n\nclass Logger {\n public debug: LogMethod;\n public error: LogMethod;\n public fatal: LogMethod;\n public info: LogMethod;\n public options: LoggerOptions;\n public tags: Tags;\n public trace: LogMethod;\n public var: (messageObject: unknown, messageValue?: unknown) => void;\n public warn: LogMethod;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.options = {\n format,\n level,\n varLevel,\n };\n\n this.tags = {};\n Object.keys(tags).forEach((key) => {\n this.tags[key] = forceString(tags[key]);\n });\n\n this.debug = this.createLogMethod(LEVEL.DEBUG, format, level);\n this.error = this.createLogMethod(LEVEL.ERROR, format, level);\n this.fatal = this.createLogMethod(LEVEL.FATAL, format, level);\n this.info = this.createLogMethod(LEVEL.INFO, format, level);\n this.trace = this.createLogMethod(LEVEL.TRACE, format, level);\n this.warn = this.createLogMethod(LEVEL.WARN, format, level);\n\n const varLevelMethod =\n this[varLevel as \"debug\" | \"error\" | \"fatal\" | \"info\" | \"trace\" | \"warn\"];\n this.var = (varLevelMethod as LogMethod)?.var || this.debug.var;\n }\n\n private createLogMethod(\n logLevel: string,\n format: LogFormat,\n checkLevel: string,\n ): LogMethod {\n const logFn = (...messages: unknown[]): void => {\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n if (format === FORMAT.JSON) {\n const message = stringify(...messages);\n const parses = parsesTo(message);\n const json: LogJson = {\n log: logLevel,\n message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n out(json, { level: logLevel });\n } else {\n const message = stringify(...messages);\n out(message, { level: logLevel });\n }\n }\n };\n\n logFn.var = (messageObject: unknown, messageValue?: unknown): void => {\n if (messageObject === undefined) {\n this.warn(ERROR.VAR.UNDEFINED_MESSAGE);\n }\n\n let msgObj: Record<string, unknown>;\n\n if (typeof messageObject !== \"object\" || messageObject === null) {\n if (typeof messageObject !== \"object\") {\n if (messageValue === undefined) messageValue = \"undefined\";\n msgObj = { [String(messageObject)]: messageValue };\n } else {\n this.warn(ERROR.VAR.NULL_OBJECT);\n return logFn(messageObject);\n }\n } else {\n msgObj = messageObject as Record<string, unknown>;\n }\n\n const keys = Object.keys(msgObj);\n if (keys.length === 0) {\n this.warn(ERROR.VAR.EMPTY_OBJECT);\n return logFn(msgObj);\n }\n\n if (keys.length > 1) {\n this.warn(ERROR.VAR.MULTIPLE_KEYS);\n return logFn(msgObj);\n }\n\n if (format === FORMAT.JSON) {\n const messageKey = keys[0];\n const messageVal = msgObj[messageKey];\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n log: logLevel,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n out(json, { level: logLevel });\n }\n } else {\n return logFn(msgObj);\n }\n };\n\n return logFn as LogMethod;\n }\n\n public tag(key: unknown, value?: unknown): void {\n if (value) {\n this.tags[forceString(key)] = forceString(value);\n return;\n }\n\n if (Array.isArray(key)) {\n key.forEach((k) => {\n this.tags[forceString(k)] = \"\";\n });\n return;\n }\n\n if (key === null) {\n this.tags.null = \"\";\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key).forEach((k) => {\n this.tags[forceString(k)] = forceString(\n (key as Record<string, unknown>)[k],\n );\n });\n } else {\n this.tags[forceString(key)] = \"\";\n }\n }\n\n public untag(key: unknown): void {\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this.tags[forceString(k)];\n });\n return;\n }\n\n if (key === null) {\n delete this.tags.null;\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key as object).forEach((k) => {\n delete this.tags[forceString(k)];\n });\n } else {\n delete this.tags[forceString(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): Logger {\n const logger = new Logger(this.options);\n logger.tag(this.tags);\n logger.tag(key, value);\n return logger;\n }\n}\n\nexport default Logger;\n","export function logTags(\n withTags?: Record<string, string>,\n): Record<string, string> {\n if (withTags && typeof withTags !== \"object\") {\n withTags = {};\n }\n\n const {\n PROJECT_COMMIT,\n PROJECT_ENV,\n PROJECT_KEY,\n PROJECT_SERVICE,\n PROJECT_SPONSOR,\n PROJECT_VERSION,\n } = process.env;\n\n const tags: Record<string, string> = {};\n\n if (PROJECT_COMMIT) {\n tags.commit = PROJECT_COMMIT;\n }\n if (PROJECT_ENV) {\n tags.env = PROJECT_ENV;\n }\n if (PROJECT_KEY) {\n tags.project = PROJECT_KEY;\n }\n if (PROJECT_SERVICE) {\n tags.service = PROJECT_SERVICE;\n }\n if (PROJECT_SPONSOR) {\n tags.sponsor = PROJECT_SPONSOR;\n }\n if (process.env.npm_package_version || PROJECT_VERSION) {\n tags.version = (process.env.npm_package_version ||\n PROJECT_VERSION) as string;\n }\n\n return {\n ...tags,\n ...withTags,\n };\n}\n","import { forceString } from \"./utils\";\n\nexport function forceVar(\n key: unknown,\n value?: unknown,\n): Record<string, unknown> {\n if (typeof key === \"undefined\") {\n return {};\n }\n if (typeof key === \"object\" && key !== null) {\n if (Object.keys(key).length === 1) {\n return key as Record<string, unknown>;\n } else {\n return { value: key };\n }\n }\n const keyStr = forceString(key);\n if (typeof value === \"undefined\") {\n return { [keyStr]: \"\" };\n } else {\n return { [keyStr]: value };\n }\n}\n","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\nfunction isAxiosResponse(response: unknown): boolean {\n if (typeof response !== \"object\" || response === null) {\n return false;\n }\n const r = response as Record<string, unknown>;\n return !!(\n r &&\n r.config &&\n r.data &&\n r.headers &&\n r.request &&\n r.status &&\n r.statusText\n );\n}\n\nfunction filterAxiosResponse(response: unknown): unknown {\n if (!isAxiosResponse(response)) {\n return response;\n }\n const r = response as Record<string, unknown>;\n const newResponse: Record<string, unknown> = {\n data: r.data,\n headers: r.headers,\n status: r.status,\n statusText: r.statusText,\n };\n if (r.isAxiosError) {\n newResponse.isAxiosError = r.isAxiosError;\n }\n return newResponse;\n}\n\nexport const axiosResponseVarPipeline: Pipeline = {\n filter: filterAxiosResponse,\n key: \"response\",\n};\n\nfunction isError(item: unknown): boolean {\n if (typeof item !== \"object\" || item === null) {\n return false;\n }\n if (item instanceof Error) {\n return true;\n }\n const i = item as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterErrorVar(item: unknown): unknown {\n if (!isError(item)) {\n return item;\n }\n const e = item as Error & Record<string, unknown>;\n const newItem: Record<string, unknown> = {\n message: e.message,\n name: e.name,\n };\n if (e.cause) {\n newItem.cause = e.cause;\n }\n if (e.stack) {\n newItem.stack = e.stack;\n }\n if (e.isProjectError) {\n newItem.isProjectError = e.isProjectError;\n newItem.title = e.title;\n newItem.detail = e.detail;\n newItem.status = e.status;\n }\n return newItem;\n}\n\nexport const errorVarPipeline: Pipeline = {\n filter: filterErrorVar,\n key: \"error\",\n};\n\nexport const pipelines = [axiosResponseVarPipeline, errorVarPipeline];\n","import { forceVar } from \"./forceVar\";\nimport { pipelines } from \"./pipelines\";\n\nfunction keyValueToArray(keyValue: Record<string, unknown>): [string, unknown] {\n const key = Object.keys(keyValue)[0];\n return [key, keyValue[key]];\n}\n\nexport function logVar(key: unknown, value?: unknown): Record<string, unknown> {\n let [k, v] = keyValueToArray(forceVar(key, value));\n\n for (const pipeline of pipelines) {\n if (k === pipeline.key) {\n v = pipeline.filter(v);\n }\n }\n\n return { [k]: v };\n}\n","import Logger from \"./Logger\";\nimport { DEFAULT, FORMAT, LEVEL } from \"./constants\";\nimport { _resetDatadogTransport } from \"./datadogTransport\";\nimport { logTags } from \"./logTags\";\nimport { logVar } from \"./logVar\";\n\ninterface JaypieLoggerOptions {\n level?: string;\n tags?: Record<string, string>;\n}\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nclass JaypieLogger {\n public debug: Logger[\"debug\"];\n public error: Logger[\"error\"];\n public fatal: Logger[\"fatal\"];\n public info: Logger[\"info\"];\n public level: string;\n public trace: Logger[\"trace\"];\n public var: Logger[\"var\"];\n public warn: Logger[\"warn\"];\n\n private _logger: Logger;\n private _loggers: Logger[];\n private _params: JaypieLoggerOptions;\n private _tags: Record<string, string>;\n private _withLoggers: Record<string, JaypieLogger>;\n\n constructor({\n level = process.env.LOG_LEVEL,\n tags = {},\n }: JaypieLoggerOptions = {}) {\n this._params = { level, tags };\n this._loggers = [];\n this._tags = {};\n this._withLoggers = {};\n\n this.level = level || DEFAULT.LEVEL;\n\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n\n this.debug = ((...args: any[]) =>\n this._logger.debug(...args)) as Logger[\"debug\"];\n this.debug.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.debug.var(messageObject, messageValue);\n\n this.error = ((...args: any[]) =>\n this._logger.error(...args)) as Logger[\"error\"];\n this.error.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.error.var(messageObject, messageValue);\n\n this.fatal = ((...args: any[]) =>\n this._logger.fatal(...args)) as Logger[\"fatal\"];\n this.fatal.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.fatal.var(messageObject, messageValue);\n\n this.info = ((...args: any[]) =>\n this._logger.info(...args)) as Logger[\"info\"];\n this.info.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.info.var(messageObject, messageValue);\n\n this.trace = ((...args: any[]) =>\n this._logger.trace(...args)) as Logger[\"trace\"];\n this.trace.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.trace.var(messageObject, messageValue);\n\n this.warn = ((...args: any[]) =>\n this._logger.warn(...args)) as Logger[\"warn\"];\n this.warn.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.warn.var(messageObject, messageValue);\n\n this.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.var(logVar(messageObject, messageValue));\n }\n\n public init(): void {\n _resetDatadogTransport();\n for (const logger of this._loggers) {\n if (\"init\" in logger && typeof logger.init === \"function\") {\n (logger as Logger & { init: () => void }).init();\n }\n }\n const level = this._params.level;\n const tags = this._params.tags;\n this.level = level || DEFAULT.LEVEL;\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n this._withLoggers = {};\n\n const levels = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"trace\",\n \"warn\",\n ] as const;\n levels.forEach((lvl) => {\n this[lvl] = ((...args: any[]) => {\n this._logger[lvl](...args);\n }) as any;\n this[lvl].var = (messageObject: unknown, messageValue?: unknown) => {\n this._logger[lvl].var(messageObject, messageValue);\n };\n });\n }\n\n public lib({\n level,\n lib,\n tags = {},\n }: {\n level?: string;\n lib?: string;\n tags?: Record<string, string>;\n } = {}): JaypieLogger {\n const newTags = Object.assign({}, this._tags, tags);\n if (lib) {\n newTags.lib = lib;\n }\n\n const logger = new JaypieLogger({\n level: (() => {\n if (level) {\n return level;\n }\n if (process.env.MODULE_LOG_LEVEL) {\n return process.env.MODULE_LOG_LEVEL;\n }\n if (envBoolean(\"MODULE_LOGGER\", { defaultValue: false })) {\n return process.env.LOG_LEVEL;\n }\n return LEVEL.SILENT;\n })(),\n tags: newTags,\n });\n this._loggers.push(logger._logger);\n return logger;\n }\n\n public tag(tags: Record<string, unknown>): void {\n for (const logger of this._loggers) {\n logger.tag(tags);\n }\n Object.assign(this._tags, tags);\n }\n\n public untag(key: unknown): void {\n for (const logger of this._loggers) {\n logger.untag(key);\n }\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this._tags[String(k)];\n });\n } else if (typeof key === \"object\" && key !== null) {\n Object.keys(key).forEach((k) => {\n delete this._tags[k];\n });\n } else {\n delete this._tags[String(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): JaypieLogger {\n if (!key || (typeof key !== \"object\" && value === undefined)) {\n throw new Error(\n \"ConfigurationError: with() requires an object argument or key-value pair\",\n );\n }\n const loggerKey = JSON.stringify([key, value]);\n if (Object.keys(this._withLoggers).includes(loggerKey)) {\n return this._withLoggers[loggerKey];\n }\n const logger = new JaypieLogger({\n level: this.level,\n tags: { ...this._tags },\n });\n logger._logger = this._logger.with(key, value);\n logger._loggers = [logger._logger];\n this._withLoggers[loggerKey] = logger;\n this._loggers.push(logger._logger);\n return logger;\n }\n}\n\nexport function createLogger(tags: Record<string, string> = {}): JaypieLogger {\n const jaypieLogger = new JaypieLogger({\n tags,\n });\n return jaypieLogger;\n}\n\nexport default JaypieLogger;\n","import Logger from \"./Logger\";\nimport { createLogger } from \"./JaypieLogger\";\nimport { FORMAT, LEVEL } from \"./constants\";\nimport {\n _resetDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n isDatadogForwardingEnabled,\n};\n\nexport const log = createLogger();\n\nexport default log;\n"],"names":["envBoolean","hostname","request"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/constants.ts","../../../src/sanitizeAuth.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.ts","../../../src/pipelines.ts","../../../src/logVar.ts","../../../src/JaypieLogger.ts","../../../src/index.ts"],"sourcesContent":["export const DEFAULT = {\n LEVEL: \"debug\",\n VAR_LEVEL: \"debug\",\n};\n\nexport const ERROR_PREFIX = \"[logger]\";\n\nexport const ERROR = {\n VAR: {\n EMPTY_OBJECT: `${ERROR_PREFIX} Logger.var() called with empty object`,\n MULTIPLE_KEYS: `${ERROR_PREFIX} Logger.var() called with multiple keys`,\n NULL_OBJECT: `${ERROR_PREFIX} Logger.var() called with null`,\n UNDEFINED_MESSAGE: `${ERROR_PREFIX} Logger.var() called with \\`undefined\\` message`,\n },\n};\n\nexport const FORMAT = {\n JSON: \"json\",\n TEXT: \"text\",\n} as const;\n\nexport const LEVEL = {\n ALL: \"all\",\n DEBUG: \"debug\",\n ERROR: \"error\",\n FATAL: \"fatal\",\n INFO: \"info\",\n SILENT: \"silent\",\n TRACE: \"trace\",\n WARN: \"warn\",\n} as const;\n\nexport const LEVEL_VALUES: Record<string, number> = {\n all: 100,\n debug: 70,\n error: 10,\n fatal: 1,\n info: 50,\n none: 0,\n silent: 0,\n trace: 90,\n warn: 30,\n};\n\nexport const DATADOG_TRANSPORT = {\n ENV: {\n API_KEY: \"DATADOG_API_KEY\",\n DD_ENV: \"DD_ENV\",\n DD_HOST: \"DD_HOST\",\n DD_SERVICE: \"DD_SERVICE\",\n DD_SITE: \"DD_SITE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n },\n FLUSH_INTERVAL_MS: 5000,\n INTAKE_PATH: \"/api/v2/logs\",\n MAX_BATCH_SIZE: 100,\n} as const;\n\nexport const PSEUDO_LEVELS = [\"ALL\", \"SILENT\"];\n","import { createHash } from \"node:crypto\";\n\n//\n//\n// Helper\n//\n\nexport function redactAuth(value: unknown): string {\n const str = String(value);\n if (/sk\\S+/.test(str)) {\n return `sk_${str.slice(-4)}`;\n }\n const hash = createHash(\"md5\").update(str).digest(\"hex\");\n return `md5_${hash.slice(-4)}`;\n}\n\n//\n//\n// Main\n//\n\nexport function sanitizeAuth(value: unknown): unknown {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n let clone: Record<string, unknown> | undefined;\n\n for (const key of Object.keys(obj)) {\n const lower = key.toLowerCase();\n\n if (lower === \"authorization\") {\n if (!clone) clone = { ...obj };\n clone[key] = redactAuth(obj[key]);\n } else if (lower === \"headers\") {\n const headers = obj[key];\n if (\n typeof headers === \"object\" &&\n headers !== null &&\n !Array.isArray(headers)\n ) {\n const hdrs = headers as Record<string, unknown>;\n for (const hKey of Object.keys(hdrs)) {\n if (hKey.toLowerCase() === \"authorization\") {\n if (!clone) clone = { ...obj };\n const clonedHeaders = { ...hdrs };\n clonedHeaders[hKey] = redactAuth(hdrs[hKey]);\n clone[key] = clonedHeaders;\n break;\n }\n }\n }\n }\n }\n\n return clone ?? value;\n}\n","import { hostname } from \"node:os\";\nimport { request } from \"node:https\";\n\nimport { DATADOG_TRANSPORT, LEVEL } from \"./constants\";\n\n// Level-to-Datadog status mapping\nconst LEVEL_TO_STATUS: Record<string, string> = {\n [LEVEL.TRACE]: \"debug\",\n [LEVEL.DEBUG]: \"debug\",\n [LEVEL.INFO]: \"info\",\n [LEVEL.WARN]: \"warn\",\n [LEVEL.ERROR]: \"error\",\n [LEVEL.FATAL]: \"critical\",\n};\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nexport function isDatadogForwardingEnabled(): boolean {\n return (\n envBoolean(DATADOG_TRANSPORT.ENV.FORWARDING, { defaultValue: false }) &&\n !!process.env[DATADOG_TRANSPORT.ENV.API_KEY]\n );\n}\n\ninterface DatadogLogEntry {\n ddsource: string;\n ddtags: string;\n hostname: string;\n message: string;\n service: string;\n status: string;\n [key: string]: unknown;\n}\n\nclass DatadogLogTransport {\n private _beforeExitHandler: (() => void) | null = null;\n private _buffer: DatadogLogEntry[] = [];\n private _flushTimer: ReturnType<typeof setInterval> | null = null;\n private _ddsource = \"nodejs\";\n private _env: string;\n private _hostname: string;\n private _service: string;\n private _site: string;\n\n constructor() {\n const env = process.env;\n this._env =\n env[DATADOG_TRANSPORT.ENV.DD_ENV] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_ENV] ||\n \"local\";\n this._hostname =\n env[DATADOG_TRANSPORT.ENV.DD_HOST] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_HOST] ||\n hostname();\n this._service =\n env[DATADOG_TRANSPORT.ENV.DD_SERVICE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SERVICE] ||\n \"unknown\";\n this._site = env[DATADOG_TRANSPORT.ENV.DD_SITE] || \"datadoghq.com\";\n\n this._flushTimer = setInterval(() => {\n this.flush();\n }, DATADOG_TRANSPORT.FLUSH_INTERVAL_MS);\n // Unref so timer doesn't keep process alive\n if (this._flushTimer && typeof this._flushTimer.unref === \"function\") {\n this._flushTimer.unref();\n }\n\n // Best-effort flush on exit\n this._beforeExitHandler = () => this.flush();\n process.on(\"beforeExit\", this._beforeExitHandler);\n }\n\n send(line: string, level: string): void {\n let message: string = line;\n let extra: Record<string, unknown> = {};\n if (typeof line === \"string\") {\n try {\n const parsed = JSON.parse(line);\n if (parsed && typeof parsed === \"object\") {\n if (parsed.message) {\n message = parsed.message;\n const { log: _, message: __, ...rest } = parsed;\n extra = rest;\n }\n }\n } catch {\n // Not JSON — use line as-is\n }\n }\n const entry: DatadogLogEntry = {\n ddsource: this._ddsource,\n ddtags: `env:${this._env}`,\n hostname: this._hostname,\n message,\n service: this._service,\n status: LEVEL_TO_STATUS[level] || \"info\",\n ...extra,\n };\n this._buffer.push(entry);\n if (this._buffer.length >= DATADOG_TRANSPORT.MAX_BATCH_SIZE) {\n this.flush();\n }\n }\n\n flush(): void {\n if (this._buffer.length === 0) return;\n\n // Atomic swap\n const batch = this._buffer;\n this._buffer = [];\n\n const apiKey = process.env[DATADOG_TRANSPORT.ENV.API_KEY];\n if (!apiKey) return;\n\n const body = JSON.stringify(batch);\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n \"DD-API-KEY\": apiKey,\n },\n hostname: `http-intake.logs.${this._site}`,\n method: \"POST\",\n path: DATADOG_TRANSPORT.INTAKE_PATH,\n };\n\n try {\n const req = request(options, () => {\n // Response intentionally ignored\n });\n req.on(\"error\", () => {\n // Silently swallow transport errors\n });\n req.write(body);\n req.end();\n } catch {\n // Transport must never throw\n }\n }\n\n destroy(): void {\n if (this._flushTimer) {\n clearInterval(this._flushTimer);\n this._flushTimer = null;\n }\n if (this._beforeExitHandler) {\n process.removeListener(\"beforeExit\", this._beforeExitHandler);\n this._beforeExitHandler = null;\n }\n try {\n this.flush();\n } catch {\n // Best-effort\n }\n }\n}\n\nlet _instance: DatadogLogTransport | null = null;\n\nexport function getDatadogTransport(): DatadogLogTransport | null {\n if (!isDatadogForwardingEnabled()) return null;\n if (!_instance) {\n _instance = new DatadogLogTransport();\n }\n return _instance;\n}\n\nexport function _resetDatadogTransport(): void {\n if (_instance) {\n _instance.destroy();\n _instance = null;\n }\n}\n","import { LEVEL } from \"./constants\";\nimport { getDatadogTransport } from \"./datadogTransport\";\n\nexport function forceString(value: unknown, defaultValue = \"\"): string {\n if (value === null) return \"null\";\n if (value === undefined) return String(defaultValue);\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function formatAsJsonString(subject: unknown): string {\n const SPACES = 0;\n const UNUSED_PARAM = null;\n\n switch (typeof subject) {\n case \"string\":\n if (subject === \"\") return `\"\"`;\n try {\n return JSON.stringify(JSON.parse(subject), UNUSED_PARAM, SPACES);\n } catch {\n return subject;\n }\n\n case \"object\":\n try {\n if (\n subject &&\n subject instanceof Object &&\n !Array.isArray(subject) &&\n subject.constructor &&\n subject.constructor !== Object &&\n \"toString\" in subject &&\n typeof subject.toString === \"function\"\n ) {\n return subject.toString();\n }\n return JSON.stringify(subject, UNUSED_PARAM, SPACES);\n } catch (error) {\n if (error instanceof TypeError) {\n const truncatedSubject = Object.keys(subject as object).reduce(\n (newSubject: Record<string, string>, key: string) => {\n const nextSubject = { ...newSubject };\n nextSubject[key] = String(\n (subject as Record<string, unknown>)[key],\n );\n return nextSubject;\n },\n {},\n );\n return formatAsJsonString(truncatedSubject);\n }\n throw error;\n }\n\n default:\n return String(subject);\n }\n}\n\nexport function stringify(...params: unknown[]): string {\n if (params.length === 0) return \"\";\n if (params.length === 1) {\n return formatAsJsonString(params[0]);\n }\n\n const formatted = params.map(formatAsJsonString);\n return formatted.join(\" \");\n}\n\nexport function out(\n line: string | unknown,\n { level = \"debug\" }: { level?: string } = {},\n): void {\n let lineStr: string;\n if (typeof line !== \"string\") {\n lineStr = stringify(line);\n } else {\n lineStr = line;\n }\n\n let outputFunction: (...args: unknown[]) => void;\n\n switch (level) {\n case LEVEL.INFO:\n outputFunction = console.info;\n break;\n case LEVEL.WARN:\n outputFunction = console.warn;\n break;\n case LEVEL.ERROR:\n case LEVEL.FATAL:\n outputFunction = console.error;\n break;\n case LEVEL.TRACE:\n case LEVEL.DEBUG:\n outputFunction = console.debug;\n break;\n default:\n outputFunction = console.log;\n break;\n }\n\n try {\n outputFunction(lineStr);\n } catch (error) {\n console.warn(error);\n console.log(lineStr);\n }\n\n try {\n const transport = getDatadogTransport();\n if (transport) {\n transport.send(lineStr, level);\n }\n } catch {\n // Transport errors must never affect logging\n }\n}\n\nexport function parse(message: unknown): unknown {\n if (typeof message !== \"string\") {\n return message;\n }\n try {\n return JSON.parse(message);\n } catch {\n return message;\n }\n}\n\nexport function parsesTo(message: unknown): {\n parses: boolean;\n message: unknown;\n} {\n if (typeof message !== \"string\") {\n return {\n parses: false,\n message,\n };\n }\n try {\n return {\n parses: true,\n message: JSON.parse(message),\n };\n } catch {\n return {\n parses: false,\n message,\n };\n }\n}\n","import {\n DEFAULT,\n ERROR,\n FORMAT,\n LEVEL,\n LEVEL_VALUES,\n PSEUDO_LEVELS,\n} from \"./constants\";\nimport { sanitizeAuth } from \"./sanitizeAuth\";\nimport { forceString, out, parse, parsesTo, stringify } from \"./utils\";\n\ntype LogLevel = string;\ntype LogFormat = \"json\" | \"text\";\ntype Tags = Record<string, string>;\n\ninterface LoggerOptions {\n format?: LogFormat;\n level?: LogLevel;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: string;\n log: string;\n message: string;\n var?: string;\n [key: string]: unknown;\n}\n\ntype LogMethod = {\n (...messages: unknown[]): void;\n var: (messageObject: unknown, messageValue?: unknown) => void;\n};\n\nclass Logger {\n public debug: LogMethod;\n public error: LogMethod;\n public fatal: LogMethod;\n public info: LogMethod;\n public options: LoggerOptions;\n public tags: Tags;\n public trace: LogMethod;\n public var: (messageObject: unknown, messageValue?: unknown) => void;\n public warn: LogMethod;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.options = {\n format,\n level,\n varLevel,\n };\n\n this.tags = {};\n Object.keys(tags).forEach((key) => {\n this.tags[key] = forceString(tags[key]);\n });\n\n this.debug = this.createLogMethod(LEVEL.DEBUG, format, level);\n this.error = this.createLogMethod(LEVEL.ERROR, format, level);\n this.fatal = this.createLogMethod(LEVEL.FATAL, format, level);\n this.info = this.createLogMethod(LEVEL.INFO, format, level);\n this.trace = this.createLogMethod(LEVEL.TRACE, format, level);\n this.warn = this.createLogMethod(LEVEL.WARN, format, level);\n\n const varLevelMethod =\n this[varLevel as \"debug\" | \"error\" | \"fatal\" | \"info\" | \"trace\" | \"warn\"];\n this.var = (varLevelMethod as LogMethod)?.var || this.debug.var;\n }\n\n private createLogMethod(\n logLevel: string,\n format: LogFormat,\n checkLevel: string,\n ): LogMethod {\n const logFn = (...messages: unknown[]): void => {\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n const sanitized = messages.map(sanitizeAuth);\n if (format === FORMAT.JSON) {\n const message = stringify(...sanitized);\n const parses = parsesTo(message);\n const json: LogJson = {\n log: logLevel,\n message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n out(json, { level: logLevel });\n } else {\n const message = stringify(...sanitized);\n out(message, { level: logLevel });\n }\n }\n };\n\n logFn.var = (messageObject: unknown, messageValue?: unknown): void => {\n if (messageObject === undefined) {\n this.warn(ERROR.VAR.UNDEFINED_MESSAGE);\n }\n\n let msgObj: Record<string, unknown>;\n\n if (typeof messageObject !== \"object\" || messageObject === null) {\n if (typeof messageObject !== \"object\") {\n if (messageValue === undefined) messageValue = \"undefined\";\n msgObj = { [String(messageObject)]: messageValue };\n } else {\n this.warn(ERROR.VAR.NULL_OBJECT);\n return logFn(messageObject);\n }\n } else {\n msgObj = sanitizeAuth(messageObject) as Record<string, unknown>;\n }\n\n const keys = Object.keys(msgObj);\n if (keys.length === 0) {\n this.warn(ERROR.VAR.EMPTY_OBJECT);\n return logFn(msgObj);\n }\n\n if (keys.length > 1) {\n this.warn(ERROR.VAR.MULTIPLE_KEYS);\n return logFn(msgObj);\n }\n\n if (format === FORMAT.JSON) {\n const messageKey = keys[0];\n const messageVal = msgObj[messageKey];\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n log: logLevel,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n out(json, { level: logLevel });\n }\n } else {\n return logFn(msgObj);\n }\n };\n\n return logFn as LogMethod;\n }\n\n public tag(key: unknown, value?: unknown): void {\n if (value) {\n this.tags[forceString(key)] = forceString(value);\n return;\n }\n\n if (Array.isArray(key)) {\n key.forEach((k) => {\n this.tags[forceString(k)] = \"\";\n });\n return;\n }\n\n if (key === null) {\n this.tags.null = \"\";\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key).forEach((k) => {\n this.tags[forceString(k)] = forceString(\n (key as Record<string, unknown>)[k],\n );\n });\n } else {\n this.tags[forceString(key)] = \"\";\n }\n }\n\n public untag(key: unknown): void {\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this.tags[forceString(k)];\n });\n return;\n }\n\n if (key === null) {\n delete this.tags.null;\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key as object).forEach((k) => {\n delete this.tags[forceString(k)];\n });\n } else {\n delete this.tags[forceString(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): Logger {\n const logger = new Logger(this.options);\n logger.tag(this.tags);\n logger.tag(key, value);\n return logger;\n }\n}\n\nexport default Logger;\n","export function logTags(\n withTags?: Record<string, string>,\n): Record<string, string> {\n if (withTags && typeof withTags !== \"object\") {\n withTags = {};\n }\n\n const {\n PROJECT_COMMIT,\n PROJECT_ENV,\n PROJECT_KEY,\n PROJECT_SERVICE,\n PROJECT_SPONSOR,\n PROJECT_VERSION,\n } = process.env;\n\n const tags: Record<string, string> = {};\n\n if (PROJECT_COMMIT) {\n tags.commit = PROJECT_COMMIT;\n }\n if (PROJECT_ENV) {\n tags.env = PROJECT_ENV;\n }\n if (PROJECT_KEY) {\n tags.project = PROJECT_KEY;\n }\n if (PROJECT_SERVICE) {\n tags.service = PROJECT_SERVICE;\n }\n if (PROJECT_SPONSOR) {\n tags.sponsor = PROJECT_SPONSOR;\n }\n if (process.env.npm_package_version || PROJECT_VERSION) {\n tags.version = (process.env.npm_package_version ||\n PROJECT_VERSION) as string;\n }\n\n return {\n ...tags,\n ...withTags,\n };\n}\n","import { forceString } from \"./utils\";\n\nexport function forceVar(\n key: unknown,\n value?: unknown,\n): Record<string, unknown> {\n if (typeof key === \"undefined\") {\n return {};\n }\n if (typeof key === \"object\" && key !== null) {\n if (Object.keys(key).length === 1) {\n return key as Record<string, unknown>;\n } else {\n return { value: key };\n }\n }\n const keyStr = forceString(key);\n if (typeof value === \"undefined\") {\n return { [keyStr]: \"\" };\n } else {\n return { [keyStr]: value };\n }\n}\n","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\nfunction isAxiosResponse(response: unknown): boolean {\n if (typeof response !== \"object\" || response === null) {\n return false;\n }\n const r = response as Record<string, unknown>;\n return !!(\n r &&\n r.config &&\n r.data &&\n r.headers &&\n r.request &&\n r.status &&\n r.statusText\n );\n}\n\nfunction filterAxiosResponse(response: unknown): unknown {\n if (!isAxiosResponse(response)) {\n return response;\n }\n const r = response as Record<string, unknown>;\n const newResponse: Record<string, unknown> = {\n data: r.data,\n headers: r.headers,\n status: r.status,\n statusText: r.statusText,\n };\n if (r.isAxiosError) {\n newResponse.isAxiosError = r.isAxiosError;\n }\n return newResponse;\n}\n\nexport const axiosResponseVarPipeline: Pipeline = {\n filter: filterAxiosResponse,\n key: \"response\",\n};\n\nfunction isError(item: unknown): boolean {\n if (typeof item !== \"object\" || item === null) {\n return false;\n }\n if (item instanceof Error) {\n return true;\n }\n const i = item as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterErrorVar(item: unknown): unknown {\n if (!isError(item)) {\n return item;\n }\n const e = item as Error & Record<string, unknown>;\n const newItem: Record<string, unknown> = {\n message: e.message,\n name: e.name,\n };\n if (e.cause) {\n newItem.cause = e.cause;\n }\n if (e.stack) {\n newItem.stack = e.stack;\n }\n if (e.isProjectError) {\n newItem.isProjectError = e.isProjectError;\n newItem.title = e.title;\n newItem.detail = e.detail;\n newItem.status = e.status;\n }\n return newItem;\n}\n\nexport const errorVarPipeline: Pipeline = {\n filter: filterErrorVar,\n key: \"error\",\n};\n\nexport const pipelines = [axiosResponseVarPipeline, errorVarPipeline];\n","import { forceVar } from \"./forceVar\";\nimport { pipelines } from \"./pipelines\";\n\nfunction keyValueToArray(keyValue: Record<string, unknown>): [string, unknown] {\n const key = Object.keys(keyValue)[0];\n return [key, keyValue[key]];\n}\n\nexport function logVar(key: unknown, value?: unknown): Record<string, unknown> {\n let [k, v] = keyValueToArray(forceVar(key, value));\n\n for (const pipeline of pipelines) {\n if (k === pipeline.key) {\n v = pipeline.filter(v);\n }\n }\n\n return { [k]: v };\n}\n","import Logger from \"./Logger\";\nimport { DEFAULT, FORMAT, LEVEL } from \"./constants\";\nimport { _resetDatadogTransport } from \"./datadogTransport\";\nimport { logTags } from \"./logTags\";\nimport { logVar } from \"./logVar\";\n\ninterface JaypieLoggerOptions {\n level?: string;\n tags?: Record<string, string>;\n}\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nclass JaypieLogger {\n public debug: Logger[\"debug\"];\n public error: Logger[\"error\"];\n public fatal: Logger[\"fatal\"];\n public info: Logger[\"info\"];\n public level: string;\n public trace: Logger[\"trace\"];\n public var: Logger[\"var\"];\n public warn: Logger[\"warn\"];\n\n private _logger: Logger;\n private _loggers: Logger[];\n private _params: JaypieLoggerOptions;\n private _tags: Record<string, string>;\n private _withLoggers: Record<string, JaypieLogger>;\n\n constructor({\n level = process.env.LOG_LEVEL,\n tags = {},\n }: JaypieLoggerOptions = {}) {\n this._params = { level, tags };\n this._loggers = [];\n this._tags = {};\n this._withLoggers = {};\n\n this.level = level || DEFAULT.LEVEL;\n\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n\n this.debug = ((...args: any[]) =>\n this._logger.debug(...args)) as Logger[\"debug\"];\n this.debug.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.debug.var(messageObject, messageValue);\n\n this.error = ((...args: any[]) =>\n this._logger.error(...args)) as Logger[\"error\"];\n this.error.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.error.var(messageObject, messageValue);\n\n this.fatal = ((...args: any[]) =>\n this._logger.fatal(...args)) as Logger[\"fatal\"];\n this.fatal.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.fatal.var(messageObject, messageValue);\n\n this.info = ((...args: any[]) =>\n this._logger.info(...args)) as Logger[\"info\"];\n this.info.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.info.var(messageObject, messageValue);\n\n this.trace = ((...args: any[]) =>\n this._logger.trace(...args)) as Logger[\"trace\"];\n this.trace.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.trace.var(messageObject, messageValue);\n\n this.warn = ((...args: any[]) =>\n this._logger.warn(...args)) as Logger[\"warn\"];\n this.warn.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.warn.var(messageObject, messageValue);\n\n this.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.var(logVar(messageObject, messageValue));\n }\n\n public init(): void {\n _resetDatadogTransport();\n for (const logger of this._loggers) {\n if (\"init\" in logger && typeof logger.init === \"function\") {\n (logger as Logger & { init: () => void }).init();\n }\n }\n const level = this._params.level;\n const tags = this._params.tags;\n this.level = level || DEFAULT.LEVEL;\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n this._withLoggers = {};\n\n const levels = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"trace\",\n \"warn\",\n ] as const;\n levels.forEach((lvl) => {\n this[lvl] = ((...args: any[]) => {\n this._logger[lvl](...args);\n }) as any;\n this[lvl].var = (messageObject: unknown, messageValue?: unknown) => {\n this._logger[lvl].var(messageObject, messageValue);\n };\n });\n }\n\n public lib({\n level,\n lib,\n tags = {},\n }: {\n level?: string;\n lib?: string;\n tags?: Record<string, string>;\n } = {}): JaypieLogger {\n const newTags = Object.assign({}, this._tags, tags);\n if (lib) {\n newTags.lib = lib;\n }\n\n const logger = new JaypieLogger({\n level: (() => {\n if (level) {\n return level;\n }\n if (process.env.MODULE_LOG_LEVEL) {\n return process.env.MODULE_LOG_LEVEL;\n }\n if (envBoolean(\"MODULE_LOGGER\", { defaultValue: false })) {\n return process.env.LOG_LEVEL;\n }\n return LEVEL.SILENT;\n })(),\n tags: newTags,\n });\n this._loggers.push(logger._logger);\n return logger;\n }\n\n public tag(tags: Record<string, unknown>): void {\n for (const logger of this._loggers) {\n logger.tag(tags);\n }\n Object.assign(this._tags, tags);\n }\n\n public untag(key: unknown): void {\n for (const logger of this._loggers) {\n logger.untag(key);\n }\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this._tags[String(k)];\n });\n } else if (typeof key === \"object\" && key !== null) {\n Object.keys(key).forEach((k) => {\n delete this._tags[k];\n });\n } else {\n delete this._tags[String(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): JaypieLogger {\n if (!key || (typeof key !== \"object\" && value === undefined)) {\n throw new Error(\n \"ConfigurationError: with() requires an object argument or key-value pair\",\n );\n }\n const loggerKey = JSON.stringify([key, value]);\n if (Object.keys(this._withLoggers).includes(loggerKey)) {\n return this._withLoggers[loggerKey];\n }\n const logger = new JaypieLogger({\n level: this.level,\n tags: { ...this._tags },\n });\n logger._logger = this._logger.with(key, value);\n logger._loggers = [logger._logger];\n this._withLoggers[loggerKey] = logger;\n this._loggers.push(logger._logger);\n return logger;\n }\n}\n\nexport function createLogger(tags: Record<string, string> = {}): JaypieLogger {\n const jaypieLogger = new JaypieLogger({\n tags,\n });\n return jaypieLogger;\n}\n\nexport default JaypieLogger;\n","import Logger from \"./Logger\";\nimport { createLogger } from \"./JaypieLogger\";\nimport { FORMAT, LEVEL } from \"./constants\";\nimport {\n _resetDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\nimport { redactAuth, sanitizeAuth } from \"./sanitizeAuth\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n isDatadogForwardingEnabled,\n redactAuth,\n sanitizeAuth,\n};\n\nexport const log = createLogger();\n\nexport default log;\n"],"names":["createHash","envBoolean","hostname","request"],"mappings":"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"}
@@ -2,6 +2,7 @@ import Logger from "./Logger";
2
2
  import { createLogger } from "./JaypieLogger";
3
3
  import { FORMAT, LEVEL } from "./constants";
4
4
  import { _resetDatadogTransport, isDatadogForwardingEnabled } from "./datadogTransport";
5
- export { FORMAT, LEVEL, Logger, _resetDatadogTransport, createLogger, isDatadogForwardingEnabled, };
5
+ import { redactAuth, sanitizeAuth } from "./sanitizeAuth";
6
+ export { FORMAT, LEVEL, Logger, _resetDatadogTransport, createLogger, isDatadogForwardingEnabled, redactAuth, sanitizeAuth, };
6
7
  export declare const log: import("./JaypieLogger").default;
7
8
  export default log;
@@ -0,0 +1,2 @@
1
+ export declare function redactAuth(value: unknown): string;
2
+ export declare function sanitizeAuth(value: unknown): unknown;
@@ -0,0 +1 @@
1
+ export {};
@@ -2,6 +2,7 @@ import Logger from "./Logger";
2
2
  import { createLogger } from "./JaypieLogger";
3
3
  import { FORMAT, LEVEL } from "./constants";
4
4
  import { _resetDatadogTransport, isDatadogForwardingEnabled } from "./datadogTransport";
5
- export { FORMAT, LEVEL, Logger, _resetDatadogTransport, createLogger, isDatadogForwardingEnabled, };
5
+ import { redactAuth, sanitizeAuth } from "./sanitizeAuth";
6
+ export { FORMAT, LEVEL, Logger, _resetDatadogTransport, createLogger, isDatadogForwardingEnabled, redactAuth, sanitizeAuth, };
6
7
  export declare const log: import("./JaypieLogger").default;
7
8
  export default log;
package/dist/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { hostname } from 'node:os';
2
3
  import { request } from 'node:https';
3
4
 
@@ -56,6 +57,57 @@ const DATADOG_TRANSPORT = {
56
57
  MAX_BATCH_SIZE: 100,
57
58
  };
58
59
 
60
+ //
61
+ //
62
+ // Helper
63
+ //
64
+ function redactAuth(value) {
65
+ const str = String(value);
66
+ if (/sk\S+/.test(str)) {
67
+ return `sk_${str.slice(-4)}`;
68
+ }
69
+ const hash = createHash("md5").update(str).digest("hex");
70
+ return `md5_${hash.slice(-4)}`;
71
+ }
72
+ //
73
+ //
74
+ // Main
75
+ //
76
+ function sanitizeAuth(value) {
77
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
78
+ return value;
79
+ }
80
+ const obj = value;
81
+ let clone;
82
+ for (const key of Object.keys(obj)) {
83
+ const lower = key.toLowerCase();
84
+ if (lower === "authorization") {
85
+ if (!clone)
86
+ clone = { ...obj };
87
+ clone[key] = redactAuth(obj[key]);
88
+ }
89
+ else if (lower === "headers") {
90
+ const headers = obj[key];
91
+ if (typeof headers === "object" &&
92
+ headers !== null &&
93
+ !Array.isArray(headers)) {
94
+ const hdrs = headers;
95
+ for (const hKey of Object.keys(hdrs)) {
96
+ if (hKey.toLowerCase() === "authorization") {
97
+ if (!clone)
98
+ clone = { ...obj };
99
+ const clonedHeaders = { ...hdrs };
100
+ clonedHeaders[hKey] = redactAuth(hdrs[hKey]);
101
+ clone[key] = clonedHeaders;
102
+ break;
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ return clone ?? value;
109
+ }
110
+
59
111
  // Level-to-Datadog status mapping
60
112
  const LEVEL_TO_STATUS = {
61
113
  [LEVEL.TRACE]: "debug",
@@ -369,8 +421,9 @@ class Logger {
369
421
  createLogMethod(logLevel, format, checkLevel) {
370
422
  const logFn = (...messages) => {
371
423
  if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {
424
+ const sanitized = messages.map(sanitizeAuth);
372
425
  if (format === FORMAT.JSON) {
373
- const message = stringify(...messages);
426
+ const message = stringify(...sanitized);
374
427
  const parses = parsesTo(message);
375
428
  const json = {
376
429
  log: logLevel,
@@ -383,7 +436,7 @@ class Logger {
383
436
  out(json, { level: logLevel });
384
437
  }
385
438
  else {
386
- const message = stringify(...messages);
439
+ const message = stringify(...sanitized);
387
440
  out(message, { level: logLevel });
388
441
  }
389
442
  }
@@ -405,7 +458,7 @@ class Logger {
405
458
  }
406
459
  }
407
460
  else {
408
- msgObj = messageObject;
461
+ msgObj = sanitizeAuth(messageObject);
409
462
  }
410
463
  const keys = Object.keys(msgObj);
411
464
  if (keys.length === 0) {
@@ -777,5 +830,5 @@ function createLogger(tags = {}) {
777
830
 
778
831
  const log = createLogger();
779
832
 
780
- export { FORMAT, LEVEL, Logger, _resetDatadogTransport, createLogger, log as default, isDatadogForwardingEnabled, log };
833
+ export { FORMAT, LEVEL, Logger, _resetDatadogTransport, createLogger, log as default, isDatadogForwardingEnabled, log, redactAuth, sanitizeAuth };
781
834
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/constants.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.ts","../../../src/pipelines.ts","../../../src/logVar.ts","../../../src/JaypieLogger.ts","../../../src/index.ts"],"sourcesContent":["export const DEFAULT = {\n LEVEL: \"debug\",\n VAR_LEVEL: \"debug\",\n};\n\nexport const ERROR_PREFIX = \"[logger]\";\n\nexport const ERROR = {\n VAR: {\n EMPTY_OBJECT: `${ERROR_PREFIX} Logger.var() called with empty object`,\n MULTIPLE_KEYS: `${ERROR_PREFIX} Logger.var() called with multiple keys`,\n NULL_OBJECT: `${ERROR_PREFIX} Logger.var() called with null`,\n UNDEFINED_MESSAGE: `${ERROR_PREFIX} Logger.var() called with \\`undefined\\` message`,\n },\n};\n\nexport const FORMAT = {\n JSON: \"json\",\n TEXT: \"text\",\n} as const;\n\nexport const LEVEL = {\n ALL: \"all\",\n DEBUG: \"debug\",\n ERROR: \"error\",\n FATAL: \"fatal\",\n INFO: \"info\",\n SILENT: \"silent\",\n TRACE: \"trace\",\n WARN: \"warn\",\n} as const;\n\nexport const LEVEL_VALUES: Record<string, number> = {\n all: 100,\n debug: 70,\n error: 10,\n fatal: 1,\n info: 50,\n none: 0,\n silent: 0,\n trace: 90,\n warn: 30,\n};\n\nexport const DATADOG_TRANSPORT = {\n ENV: {\n API_KEY: \"DATADOG_API_KEY\",\n DD_ENV: \"DD_ENV\",\n DD_HOST: \"DD_HOST\",\n DD_SERVICE: \"DD_SERVICE\",\n DD_SITE: \"DD_SITE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n },\n FLUSH_INTERVAL_MS: 5000,\n INTAKE_PATH: \"/api/v2/logs\",\n MAX_BATCH_SIZE: 100,\n} as const;\n\nexport const PSEUDO_LEVELS = [\"ALL\", \"SILENT\"];\n","import { hostname } from \"node:os\";\nimport { request } from \"node:https\";\n\nimport { DATADOG_TRANSPORT, LEVEL } from \"./constants\";\n\n// Level-to-Datadog status mapping\nconst LEVEL_TO_STATUS: Record<string, string> = {\n [LEVEL.TRACE]: \"debug\",\n [LEVEL.DEBUG]: \"debug\",\n [LEVEL.INFO]: \"info\",\n [LEVEL.WARN]: \"warn\",\n [LEVEL.ERROR]: \"error\",\n [LEVEL.FATAL]: \"critical\",\n};\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nexport function isDatadogForwardingEnabled(): boolean {\n return (\n envBoolean(DATADOG_TRANSPORT.ENV.FORWARDING, { defaultValue: false }) &&\n !!process.env[DATADOG_TRANSPORT.ENV.API_KEY]\n );\n}\n\ninterface DatadogLogEntry {\n ddsource: string;\n ddtags: string;\n hostname: string;\n message: string;\n service: string;\n status: string;\n [key: string]: unknown;\n}\n\nclass DatadogLogTransport {\n private _beforeExitHandler: (() => void) | null = null;\n private _buffer: DatadogLogEntry[] = [];\n private _flushTimer: ReturnType<typeof setInterval> | null = null;\n private _ddsource = \"nodejs\";\n private _env: string;\n private _hostname: string;\n private _service: string;\n private _site: string;\n\n constructor() {\n const env = process.env;\n this._env =\n env[DATADOG_TRANSPORT.ENV.DD_ENV] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_ENV] ||\n \"local\";\n this._hostname =\n env[DATADOG_TRANSPORT.ENV.DD_HOST] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_HOST] ||\n hostname();\n this._service =\n env[DATADOG_TRANSPORT.ENV.DD_SERVICE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SERVICE] ||\n \"unknown\";\n this._site = env[DATADOG_TRANSPORT.ENV.DD_SITE] || \"datadoghq.com\";\n\n this._flushTimer = setInterval(() => {\n this.flush();\n }, DATADOG_TRANSPORT.FLUSH_INTERVAL_MS);\n // Unref so timer doesn't keep process alive\n if (this._flushTimer && typeof this._flushTimer.unref === \"function\") {\n this._flushTimer.unref();\n }\n\n // Best-effort flush on exit\n this._beforeExitHandler = () => this.flush();\n process.on(\"beforeExit\", this._beforeExitHandler);\n }\n\n send(line: string, level: string): void {\n let message: string = line;\n let extra: Record<string, unknown> = {};\n if (typeof line === \"string\") {\n try {\n const parsed = JSON.parse(line);\n if (parsed && typeof parsed === \"object\") {\n if (parsed.message) {\n message = parsed.message;\n const { log: _, message: __, ...rest } = parsed;\n extra = rest;\n }\n }\n } catch {\n // Not JSON — use line as-is\n }\n }\n const entry: DatadogLogEntry = {\n ddsource: this._ddsource,\n ddtags: `env:${this._env}`,\n hostname: this._hostname,\n message,\n service: this._service,\n status: LEVEL_TO_STATUS[level] || \"info\",\n ...extra,\n };\n this._buffer.push(entry);\n if (this._buffer.length >= DATADOG_TRANSPORT.MAX_BATCH_SIZE) {\n this.flush();\n }\n }\n\n flush(): void {\n if (this._buffer.length === 0) return;\n\n // Atomic swap\n const batch = this._buffer;\n this._buffer = [];\n\n const apiKey = process.env[DATADOG_TRANSPORT.ENV.API_KEY];\n if (!apiKey) return;\n\n const body = JSON.stringify(batch);\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n \"DD-API-KEY\": apiKey,\n },\n hostname: `http-intake.logs.${this._site}`,\n method: \"POST\",\n path: DATADOG_TRANSPORT.INTAKE_PATH,\n };\n\n try {\n const req = request(options, () => {\n // Response intentionally ignored\n });\n req.on(\"error\", () => {\n // Silently swallow transport errors\n });\n req.write(body);\n req.end();\n } catch {\n // Transport must never throw\n }\n }\n\n destroy(): void {\n if (this._flushTimer) {\n clearInterval(this._flushTimer);\n this._flushTimer = null;\n }\n if (this._beforeExitHandler) {\n process.removeListener(\"beforeExit\", this._beforeExitHandler);\n this._beforeExitHandler = null;\n }\n try {\n this.flush();\n } catch {\n // Best-effort\n }\n }\n}\n\nlet _instance: DatadogLogTransport | null = null;\n\nexport function getDatadogTransport(): DatadogLogTransport | null {\n if (!isDatadogForwardingEnabled()) return null;\n if (!_instance) {\n _instance = new DatadogLogTransport();\n }\n return _instance;\n}\n\nexport function _resetDatadogTransport(): void {\n if (_instance) {\n _instance.destroy();\n _instance = null;\n }\n}\n","import { LEVEL } from \"./constants\";\nimport { getDatadogTransport } from \"./datadogTransport\";\n\nexport function forceString(value: unknown, defaultValue = \"\"): string {\n if (value === null) return \"null\";\n if (value === undefined) return String(defaultValue);\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function formatAsJsonString(subject: unknown): string {\n const SPACES = 0;\n const UNUSED_PARAM = null;\n\n switch (typeof subject) {\n case \"string\":\n if (subject === \"\") return `\"\"`;\n try {\n return JSON.stringify(JSON.parse(subject), UNUSED_PARAM, SPACES);\n } catch {\n return subject;\n }\n\n case \"object\":\n try {\n if (\n subject &&\n subject instanceof Object &&\n !Array.isArray(subject) &&\n subject.constructor &&\n subject.constructor !== Object &&\n \"toString\" in subject &&\n typeof subject.toString === \"function\"\n ) {\n return subject.toString();\n }\n return JSON.stringify(subject, UNUSED_PARAM, SPACES);\n } catch (error) {\n if (error instanceof TypeError) {\n const truncatedSubject = Object.keys(subject as object).reduce(\n (newSubject: Record<string, string>, key: string) => {\n const nextSubject = { ...newSubject };\n nextSubject[key] = String(\n (subject as Record<string, unknown>)[key],\n );\n return nextSubject;\n },\n {},\n );\n return formatAsJsonString(truncatedSubject);\n }\n throw error;\n }\n\n default:\n return String(subject);\n }\n}\n\nexport function stringify(...params: unknown[]): string {\n if (params.length === 0) return \"\";\n if (params.length === 1) {\n return formatAsJsonString(params[0]);\n }\n\n const formatted = params.map(formatAsJsonString);\n return formatted.join(\" \");\n}\n\nexport function out(\n line: string | unknown,\n { level = \"debug\" }: { level?: string } = {},\n): void {\n let lineStr: string;\n if (typeof line !== \"string\") {\n lineStr = stringify(line);\n } else {\n lineStr = line;\n }\n\n let outputFunction: (...args: unknown[]) => void;\n\n switch (level) {\n case LEVEL.INFO:\n outputFunction = console.info;\n break;\n case LEVEL.WARN:\n outputFunction = console.warn;\n break;\n case LEVEL.ERROR:\n case LEVEL.FATAL:\n outputFunction = console.error;\n break;\n case LEVEL.TRACE:\n case LEVEL.DEBUG:\n outputFunction = console.debug;\n break;\n default:\n outputFunction = console.log;\n break;\n }\n\n try {\n outputFunction(lineStr);\n } catch (error) {\n console.warn(error);\n console.log(lineStr);\n }\n\n try {\n const transport = getDatadogTransport();\n if (transport) {\n transport.send(lineStr, level);\n }\n } catch {\n // Transport errors must never affect logging\n }\n}\n\nexport function parse(message: unknown): unknown {\n if (typeof message !== \"string\") {\n return message;\n }\n try {\n return JSON.parse(message);\n } catch {\n return message;\n }\n}\n\nexport function parsesTo(message: unknown): {\n parses: boolean;\n message: unknown;\n} {\n if (typeof message !== \"string\") {\n return {\n parses: false,\n message,\n };\n }\n try {\n return {\n parses: true,\n message: JSON.parse(message),\n };\n } catch {\n return {\n parses: false,\n message,\n };\n }\n}\n","import {\n DEFAULT,\n ERROR,\n FORMAT,\n LEVEL,\n LEVEL_VALUES,\n PSEUDO_LEVELS,\n} from \"./constants\";\nimport { forceString, out, parse, parsesTo, stringify } from \"./utils\";\n\ntype LogLevel = string;\ntype LogFormat = \"json\" | \"text\";\ntype Tags = Record<string, string>;\n\ninterface LoggerOptions {\n format?: LogFormat;\n level?: LogLevel;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: string;\n log: string;\n message: string;\n var?: string;\n [key: string]: unknown;\n}\n\ntype LogMethod = {\n (...messages: unknown[]): void;\n var: (messageObject: unknown, messageValue?: unknown) => void;\n};\n\nclass Logger {\n public debug: LogMethod;\n public error: LogMethod;\n public fatal: LogMethod;\n public info: LogMethod;\n public options: LoggerOptions;\n public tags: Tags;\n public trace: LogMethod;\n public var: (messageObject: unknown, messageValue?: unknown) => void;\n public warn: LogMethod;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.options = {\n format,\n level,\n varLevel,\n };\n\n this.tags = {};\n Object.keys(tags).forEach((key) => {\n this.tags[key] = forceString(tags[key]);\n });\n\n this.debug = this.createLogMethod(LEVEL.DEBUG, format, level);\n this.error = this.createLogMethod(LEVEL.ERROR, format, level);\n this.fatal = this.createLogMethod(LEVEL.FATAL, format, level);\n this.info = this.createLogMethod(LEVEL.INFO, format, level);\n this.trace = this.createLogMethod(LEVEL.TRACE, format, level);\n this.warn = this.createLogMethod(LEVEL.WARN, format, level);\n\n const varLevelMethod =\n this[varLevel as \"debug\" | \"error\" | \"fatal\" | \"info\" | \"trace\" | \"warn\"];\n this.var = (varLevelMethod as LogMethod)?.var || this.debug.var;\n }\n\n private createLogMethod(\n logLevel: string,\n format: LogFormat,\n checkLevel: string,\n ): LogMethod {\n const logFn = (...messages: unknown[]): void => {\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n if (format === FORMAT.JSON) {\n const message = stringify(...messages);\n const parses = parsesTo(message);\n const json: LogJson = {\n log: logLevel,\n message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n out(json, { level: logLevel });\n } else {\n const message = stringify(...messages);\n out(message, { level: logLevel });\n }\n }\n };\n\n logFn.var = (messageObject: unknown, messageValue?: unknown): void => {\n if (messageObject === undefined) {\n this.warn(ERROR.VAR.UNDEFINED_MESSAGE);\n }\n\n let msgObj: Record<string, unknown>;\n\n if (typeof messageObject !== \"object\" || messageObject === null) {\n if (typeof messageObject !== \"object\") {\n if (messageValue === undefined) messageValue = \"undefined\";\n msgObj = { [String(messageObject)]: messageValue };\n } else {\n this.warn(ERROR.VAR.NULL_OBJECT);\n return logFn(messageObject);\n }\n } else {\n msgObj = messageObject as Record<string, unknown>;\n }\n\n const keys = Object.keys(msgObj);\n if (keys.length === 0) {\n this.warn(ERROR.VAR.EMPTY_OBJECT);\n return logFn(msgObj);\n }\n\n if (keys.length > 1) {\n this.warn(ERROR.VAR.MULTIPLE_KEYS);\n return logFn(msgObj);\n }\n\n if (format === FORMAT.JSON) {\n const messageKey = keys[0];\n const messageVal = msgObj[messageKey];\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n log: logLevel,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n out(json, { level: logLevel });\n }\n } else {\n return logFn(msgObj);\n }\n };\n\n return logFn as LogMethod;\n }\n\n public tag(key: unknown, value?: unknown): void {\n if (value) {\n this.tags[forceString(key)] = forceString(value);\n return;\n }\n\n if (Array.isArray(key)) {\n key.forEach((k) => {\n this.tags[forceString(k)] = \"\";\n });\n return;\n }\n\n if (key === null) {\n this.tags.null = \"\";\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key).forEach((k) => {\n this.tags[forceString(k)] = forceString(\n (key as Record<string, unknown>)[k],\n );\n });\n } else {\n this.tags[forceString(key)] = \"\";\n }\n }\n\n public untag(key: unknown): void {\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this.tags[forceString(k)];\n });\n return;\n }\n\n if (key === null) {\n delete this.tags.null;\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key as object).forEach((k) => {\n delete this.tags[forceString(k)];\n });\n } else {\n delete this.tags[forceString(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): Logger {\n const logger = new Logger(this.options);\n logger.tag(this.tags);\n logger.tag(key, value);\n return logger;\n }\n}\n\nexport default Logger;\n","export function logTags(\n withTags?: Record<string, string>,\n): Record<string, string> {\n if (withTags && typeof withTags !== \"object\") {\n withTags = {};\n }\n\n const {\n PROJECT_COMMIT,\n PROJECT_ENV,\n PROJECT_KEY,\n PROJECT_SERVICE,\n PROJECT_SPONSOR,\n PROJECT_VERSION,\n } = process.env;\n\n const tags: Record<string, string> = {};\n\n if (PROJECT_COMMIT) {\n tags.commit = PROJECT_COMMIT;\n }\n if (PROJECT_ENV) {\n tags.env = PROJECT_ENV;\n }\n if (PROJECT_KEY) {\n tags.project = PROJECT_KEY;\n }\n if (PROJECT_SERVICE) {\n tags.service = PROJECT_SERVICE;\n }\n if (PROJECT_SPONSOR) {\n tags.sponsor = PROJECT_SPONSOR;\n }\n if (process.env.npm_package_version || PROJECT_VERSION) {\n tags.version = (process.env.npm_package_version ||\n PROJECT_VERSION) as string;\n }\n\n return {\n ...tags,\n ...withTags,\n };\n}\n","import { forceString } from \"./utils\";\n\nexport function forceVar(\n key: unknown,\n value?: unknown,\n): Record<string, unknown> {\n if (typeof key === \"undefined\") {\n return {};\n }\n if (typeof key === \"object\" && key !== null) {\n if (Object.keys(key).length === 1) {\n return key as Record<string, unknown>;\n } else {\n return { value: key };\n }\n }\n const keyStr = forceString(key);\n if (typeof value === \"undefined\") {\n return { [keyStr]: \"\" };\n } else {\n return { [keyStr]: value };\n }\n}\n","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\nfunction isAxiosResponse(response: unknown): boolean {\n if (typeof response !== \"object\" || response === null) {\n return false;\n }\n const r = response as Record<string, unknown>;\n return !!(\n r &&\n r.config &&\n r.data &&\n r.headers &&\n r.request &&\n r.status &&\n r.statusText\n );\n}\n\nfunction filterAxiosResponse(response: unknown): unknown {\n if (!isAxiosResponse(response)) {\n return response;\n }\n const r = response as Record<string, unknown>;\n const newResponse: Record<string, unknown> = {\n data: r.data,\n headers: r.headers,\n status: r.status,\n statusText: r.statusText,\n };\n if (r.isAxiosError) {\n newResponse.isAxiosError = r.isAxiosError;\n }\n return newResponse;\n}\n\nexport const axiosResponseVarPipeline: Pipeline = {\n filter: filterAxiosResponse,\n key: \"response\",\n};\n\nfunction isError(item: unknown): boolean {\n if (typeof item !== \"object\" || item === null) {\n return false;\n }\n if (item instanceof Error) {\n return true;\n }\n const i = item as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterErrorVar(item: unknown): unknown {\n if (!isError(item)) {\n return item;\n }\n const e = item as Error & Record<string, unknown>;\n const newItem: Record<string, unknown> = {\n message: e.message,\n name: e.name,\n };\n if (e.cause) {\n newItem.cause = e.cause;\n }\n if (e.stack) {\n newItem.stack = e.stack;\n }\n if (e.isProjectError) {\n newItem.isProjectError = e.isProjectError;\n newItem.title = e.title;\n newItem.detail = e.detail;\n newItem.status = e.status;\n }\n return newItem;\n}\n\nexport const errorVarPipeline: Pipeline = {\n filter: filterErrorVar,\n key: \"error\",\n};\n\nexport const pipelines = [axiosResponseVarPipeline, errorVarPipeline];\n","import { forceVar } from \"./forceVar\";\nimport { pipelines } from \"./pipelines\";\n\nfunction keyValueToArray(keyValue: Record<string, unknown>): [string, unknown] {\n const key = Object.keys(keyValue)[0];\n return [key, keyValue[key]];\n}\n\nexport function logVar(key: unknown, value?: unknown): Record<string, unknown> {\n let [k, v] = keyValueToArray(forceVar(key, value));\n\n for (const pipeline of pipelines) {\n if (k === pipeline.key) {\n v = pipeline.filter(v);\n }\n }\n\n return { [k]: v };\n}\n","import Logger from \"./Logger\";\nimport { DEFAULT, FORMAT, LEVEL } from \"./constants\";\nimport { _resetDatadogTransport } from \"./datadogTransport\";\nimport { logTags } from \"./logTags\";\nimport { logVar } from \"./logVar\";\n\ninterface JaypieLoggerOptions {\n level?: string;\n tags?: Record<string, string>;\n}\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nclass JaypieLogger {\n public debug: Logger[\"debug\"];\n public error: Logger[\"error\"];\n public fatal: Logger[\"fatal\"];\n public info: Logger[\"info\"];\n public level: string;\n public trace: Logger[\"trace\"];\n public var: Logger[\"var\"];\n public warn: Logger[\"warn\"];\n\n private _logger: Logger;\n private _loggers: Logger[];\n private _params: JaypieLoggerOptions;\n private _tags: Record<string, string>;\n private _withLoggers: Record<string, JaypieLogger>;\n\n constructor({\n level = process.env.LOG_LEVEL,\n tags = {},\n }: JaypieLoggerOptions = {}) {\n this._params = { level, tags };\n this._loggers = [];\n this._tags = {};\n this._withLoggers = {};\n\n this.level = level || DEFAULT.LEVEL;\n\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n\n this.debug = ((...args: any[]) =>\n this._logger.debug(...args)) as Logger[\"debug\"];\n this.debug.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.debug.var(messageObject, messageValue);\n\n this.error = ((...args: any[]) =>\n this._logger.error(...args)) as Logger[\"error\"];\n this.error.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.error.var(messageObject, messageValue);\n\n this.fatal = ((...args: any[]) =>\n this._logger.fatal(...args)) as Logger[\"fatal\"];\n this.fatal.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.fatal.var(messageObject, messageValue);\n\n this.info = ((...args: any[]) =>\n this._logger.info(...args)) as Logger[\"info\"];\n this.info.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.info.var(messageObject, messageValue);\n\n this.trace = ((...args: any[]) =>\n this._logger.trace(...args)) as Logger[\"trace\"];\n this.trace.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.trace.var(messageObject, messageValue);\n\n this.warn = ((...args: any[]) =>\n this._logger.warn(...args)) as Logger[\"warn\"];\n this.warn.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.warn.var(messageObject, messageValue);\n\n this.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.var(logVar(messageObject, messageValue));\n }\n\n public init(): void {\n _resetDatadogTransport();\n for (const logger of this._loggers) {\n if (\"init\" in logger && typeof logger.init === \"function\") {\n (logger as Logger & { init: () => void }).init();\n }\n }\n const level = this._params.level;\n const tags = this._params.tags;\n this.level = level || DEFAULT.LEVEL;\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n this._withLoggers = {};\n\n const levels = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"trace\",\n \"warn\",\n ] as const;\n levels.forEach((lvl) => {\n this[lvl] = ((...args: any[]) => {\n this._logger[lvl](...args);\n }) as any;\n this[lvl].var = (messageObject: unknown, messageValue?: unknown) => {\n this._logger[lvl].var(messageObject, messageValue);\n };\n });\n }\n\n public lib({\n level,\n lib,\n tags = {},\n }: {\n level?: string;\n lib?: string;\n tags?: Record<string, string>;\n } = {}): JaypieLogger {\n const newTags = Object.assign({}, this._tags, tags);\n if (lib) {\n newTags.lib = lib;\n }\n\n const logger = new JaypieLogger({\n level: (() => {\n if (level) {\n return level;\n }\n if (process.env.MODULE_LOG_LEVEL) {\n return process.env.MODULE_LOG_LEVEL;\n }\n if (envBoolean(\"MODULE_LOGGER\", { defaultValue: false })) {\n return process.env.LOG_LEVEL;\n }\n return LEVEL.SILENT;\n })(),\n tags: newTags,\n });\n this._loggers.push(logger._logger);\n return logger;\n }\n\n public tag(tags: Record<string, unknown>): void {\n for (const logger of this._loggers) {\n logger.tag(tags);\n }\n Object.assign(this._tags, tags);\n }\n\n public untag(key: unknown): void {\n for (const logger of this._loggers) {\n logger.untag(key);\n }\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this._tags[String(k)];\n });\n } else if (typeof key === \"object\" && key !== null) {\n Object.keys(key).forEach((k) => {\n delete this._tags[k];\n });\n } else {\n delete this._tags[String(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): JaypieLogger {\n if (!key || (typeof key !== \"object\" && value === undefined)) {\n throw new Error(\n \"ConfigurationError: with() requires an object argument or key-value pair\",\n );\n }\n const loggerKey = JSON.stringify([key, value]);\n if (Object.keys(this._withLoggers).includes(loggerKey)) {\n return this._withLoggers[loggerKey];\n }\n const logger = new JaypieLogger({\n level: this.level,\n tags: { ...this._tags },\n });\n logger._logger = this._logger.with(key, value);\n logger._loggers = [logger._logger];\n this._withLoggers[loggerKey] = logger;\n this._loggers.push(logger._logger);\n return logger;\n }\n}\n\nexport function createLogger(tags: Record<string, string> = {}): JaypieLogger {\n const jaypieLogger = new JaypieLogger({\n tags,\n });\n return jaypieLogger;\n}\n\nexport default JaypieLogger;\n","import Logger from \"./Logger\";\nimport { createLogger } from \"./JaypieLogger\";\nimport { FORMAT, LEVEL } from \"./constants\";\nimport {\n _resetDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n isDatadogForwardingEnabled,\n};\n\nexport const log = createLogger();\n\nexport default log;\n"],"names":["envBoolean"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/constants.ts","../../../src/sanitizeAuth.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.ts","../../../src/pipelines.ts","../../../src/logVar.ts","../../../src/JaypieLogger.ts","../../../src/index.ts"],"sourcesContent":["export const DEFAULT = {\n LEVEL: \"debug\",\n VAR_LEVEL: \"debug\",\n};\n\nexport const ERROR_PREFIX = \"[logger]\";\n\nexport const ERROR = {\n VAR: {\n EMPTY_OBJECT: `${ERROR_PREFIX} Logger.var() called with empty object`,\n MULTIPLE_KEYS: `${ERROR_PREFIX} Logger.var() called with multiple keys`,\n NULL_OBJECT: `${ERROR_PREFIX} Logger.var() called with null`,\n UNDEFINED_MESSAGE: `${ERROR_PREFIX} Logger.var() called with \\`undefined\\` message`,\n },\n};\n\nexport const FORMAT = {\n JSON: \"json\",\n TEXT: \"text\",\n} as const;\n\nexport const LEVEL = {\n ALL: \"all\",\n DEBUG: \"debug\",\n ERROR: \"error\",\n FATAL: \"fatal\",\n INFO: \"info\",\n SILENT: \"silent\",\n TRACE: \"trace\",\n WARN: \"warn\",\n} as const;\n\nexport const LEVEL_VALUES: Record<string, number> = {\n all: 100,\n debug: 70,\n error: 10,\n fatal: 1,\n info: 50,\n none: 0,\n silent: 0,\n trace: 90,\n warn: 30,\n};\n\nexport const DATADOG_TRANSPORT = {\n ENV: {\n API_KEY: \"DATADOG_API_KEY\",\n DD_ENV: \"DD_ENV\",\n DD_HOST: \"DD_HOST\",\n DD_SERVICE: \"DD_SERVICE\",\n DD_SITE: \"DD_SITE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n },\n FLUSH_INTERVAL_MS: 5000,\n INTAKE_PATH: \"/api/v2/logs\",\n MAX_BATCH_SIZE: 100,\n} as const;\n\nexport const PSEUDO_LEVELS = [\"ALL\", \"SILENT\"];\n","import { createHash } from \"node:crypto\";\n\n//\n//\n// Helper\n//\n\nexport function redactAuth(value: unknown): string {\n const str = String(value);\n if (/sk\\S+/.test(str)) {\n return `sk_${str.slice(-4)}`;\n }\n const hash = createHash(\"md5\").update(str).digest(\"hex\");\n return `md5_${hash.slice(-4)}`;\n}\n\n//\n//\n// Main\n//\n\nexport function sanitizeAuth(value: unknown): unknown {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return value;\n }\n\n const obj = value as Record<string, unknown>;\n let clone: Record<string, unknown> | undefined;\n\n for (const key of Object.keys(obj)) {\n const lower = key.toLowerCase();\n\n if (lower === \"authorization\") {\n if (!clone) clone = { ...obj };\n clone[key] = redactAuth(obj[key]);\n } else if (lower === \"headers\") {\n const headers = obj[key];\n if (\n typeof headers === \"object\" &&\n headers !== null &&\n !Array.isArray(headers)\n ) {\n const hdrs = headers as Record<string, unknown>;\n for (const hKey of Object.keys(hdrs)) {\n if (hKey.toLowerCase() === \"authorization\") {\n if (!clone) clone = { ...obj };\n const clonedHeaders = { ...hdrs };\n clonedHeaders[hKey] = redactAuth(hdrs[hKey]);\n clone[key] = clonedHeaders;\n break;\n }\n }\n }\n }\n }\n\n return clone ?? value;\n}\n","import { hostname } from \"node:os\";\nimport { request } from \"node:https\";\n\nimport { DATADOG_TRANSPORT, LEVEL } from \"./constants\";\n\n// Level-to-Datadog status mapping\nconst LEVEL_TO_STATUS: Record<string, string> = {\n [LEVEL.TRACE]: \"debug\",\n [LEVEL.DEBUG]: \"debug\",\n [LEVEL.INFO]: \"info\",\n [LEVEL.WARN]: \"warn\",\n [LEVEL.ERROR]: \"error\",\n [LEVEL.FATAL]: \"critical\",\n};\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nexport function isDatadogForwardingEnabled(): boolean {\n return (\n envBoolean(DATADOG_TRANSPORT.ENV.FORWARDING, { defaultValue: false }) &&\n !!process.env[DATADOG_TRANSPORT.ENV.API_KEY]\n );\n}\n\ninterface DatadogLogEntry {\n ddsource: string;\n ddtags: string;\n hostname: string;\n message: string;\n service: string;\n status: string;\n [key: string]: unknown;\n}\n\nclass DatadogLogTransport {\n private _beforeExitHandler: (() => void) | null = null;\n private _buffer: DatadogLogEntry[] = [];\n private _flushTimer: ReturnType<typeof setInterval> | null = null;\n private _ddsource = \"nodejs\";\n private _env: string;\n private _hostname: string;\n private _service: string;\n private _site: string;\n\n constructor() {\n const env = process.env;\n this._env =\n env[DATADOG_TRANSPORT.ENV.DD_ENV] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_ENV] ||\n \"local\";\n this._hostname =\n env[DATADOG_TRANSPORT.ENV.DD_HOST] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_HOST] ||\n hostname();\n this._service =\n env[DATADOG_TRANSPORT.ENV.DD_SERVICE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SERVICE] ||\n \"unknown\";\n this._site = env[DATADOG_TRANSPORT.ENV.DD_SITE] || \"datadoghq.com\";\n\n this._flushTimer = setInterval(() => {\n this.flush();\n }, DATADOG_TRANSPORT.FLUSH_INTERVAL_MS);\n // Unref so timer doesn't keep process alive\n if (this._flushTimer && typeof this._flushTimer.unref === \"function\") {\n this._flushTimer.unref();\n }\n\n // Best-effort flush on exit\n this._beforeExitHandler = () => this.flush();\n process.on(\"beforeExit\", this._beforeExitHandler);\n }\n\n send(line: string, level: string): void {\n let message: string = line;\n let extra: Record<string, unknown> = {};\n if (typeof line === \"string\") {\n try {\n const parsed = JSON.parse(line);\n if (parsed && typeof parsed === \"object\") {\n if (parsed.message) {\n message = parsed.message;\n const { log: _, message: __, ...rest } = parsed;\n extra = rest;\n }\n }\n } catch {\n // Not JSON — use line as-is\n }\n }\n const entry: DatadogLogEntry = {\n ddsource: this._ddsource,\n ddtags: `env:${this._env}`,\n hostname: this._hostname,\n message,\n service: this._service,\n status: LEVEL_TO_STATUS[level] || \"info\",\n ...extra,\n };\n this._buffer.push(entry);\n if (this._buffer.length >= DATADOG_TRANSPORT.MAX_BATCH_SIZE) {\n this.flush();\n }\n }\n\n flush(): void {\n if (this._buffer.length === 0) return;\n\n // Atomic swap\n const batch = this._buffer;\n this._buffer = [];\n\n const apiKey = process.env[DATADOG_TRANSPORT.ENV.API_KEY];\n if (!apiKey) return;\n\n const body = JSON.stringify(batch);\n const options = {\n headers: {\n \"Content-Type\": \"application/json\",\n \"DD-API-KEY\": apiKey,\n },\n hostname: `http-intake.logs.${this._site}`,\n method: \"POST\",\n path: DATADOG_TRANSPORT.INTAKE_PATH,\n };\n\n try {\n const req = request(options, () => {\n // Response intentionally ignored\n });\n req.on(\"error\", () => {\n // Silently swallow transport errors\n });\n req.write(body);\n req.end();\n } catch {\n // Transport must never throw\n }\n }\n\n destroy(): void {\n if (this._flushTimer) {\n clearInterval(this._flushTimer);\n this._flushTimer = null;\n }\n if (this._beforeExitHandler) {\n process.removeListener(\"beforeExit\", this._beforeExitHandler);\n this._beforeExitHandler = null;\n }\n try {\n this.flush();\n } catch {\n // Best-effort\n }\n }\n}\n\nlet _instance: DatadogLogTransport | null = null;\n\nexport function getDatadogTransport(): DatadogLogTransport | null {\n if (!isDatadogForwardingEnabled()) return null;\n if (!_instance) {\n _instance = new DatadogLogTransport();\n }\n return _instance;\n}\n\nexport function _resetDatadogTransport(): void {\n if (_instance) {\n _instance.destroy();\n _instance = null;\n }\n}\n","import { LEVEL } from \"./constants\";\nimport { getDatadogTransport } from \"./datadogTransport\";\n\nexport function forceString(value: unknown, defaultValue = \"\"): string {\n if (value === null) return \"null\";\n if (value === undefined) return String(defaultValue);\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function formatAsJsonString(subject: unknown): string {\n const SPACES = 0;\n const UNUSED_PARAM = null;\n\n switch (typeof subject) {\n case \"string\":\n if (subject === \"\") return `\"\"`;\n try {\n return JSON.stringify(JSON.parse(subject), UNUSED_PARAM, SPACES);\n } catch {\n return subject;\n }\n\n case \"object\":\n try {\n if (\n subject &&\n subject instanceof Object &&\n !Array.isArray(subject) &&\n subject.constructor &&\n subject.constructor !== Object &&\n \"toString\" in subject &&\n typeof subject.toString === \"function\"\n ) {\n return subject.toString();\n }\n return JSON.stringify(subject, UNUSED_PARAM, SPACES);\n } catch (error) {\n if (error instanceof TypeError) {\n const truncatedSubject = Object.keys(subject as object).reduce(\n (newSubject: Record<string, string>, key: string) => {\n const nextSubject = { ...newSubject };\n nextSubject[key] = String(\n (subject as Record<string, unknown>)[key],\n );\n return nextSubject;\n },\n {},\n );\n return formatAsJsonString(truncatedSubject);\n }\n throw error;\n }\n\n default:\n return String(subject);\n }\n}\n\nexport function stringify(...params: unknown[]): string {\n if (params.length === 0) return \"\";\n if (params.length === 1) {\n return formatAsJsonString(params[0]);\n }\n\n const formatted = params.map(formatAsJsonString);\n return formatted.join(\" \");\n}\n\nexport function out(\n line: string | unknown,\n { level = \"debug\" }: { level?: string } = {},\n): void {\n let lineStr: string;\n if (typeof line !== \"string\") {\n lineStr = stringify(line);\n } else {\n lineStr = line;\n }\n\n let outputFunction: (...args: unknown[]) => void;\n\n switch (level) {\n case LEVEL.INFO:\n outputFunction = console.info;\n break;\n case LEVEL.WARN:\n outputFunction = console.warn;\n break;\n case LEVEL.ERROR:\n case LEVEL.FATAL:\n outputFunction = console.error;\n break;\n case LEVEL.TRACE:\n case LEVEL.DEBUG:\n outputFunction = console.debug;\n break;\n default:\n outputFunction = console.log;\n break;\n }\n\n try {\n outputFunction(lineStr);\n } catch (error) {\n console.warn(error);\n console.log(lineStr);\n }\n\n try {\n const transport = getDatadogTransport();\n if (transport) {\n transport.send(lineStr, level);\n }\n } catch {\n // Transport errors must never affect logging\n }\n}\n\nexport function parse(message: unknown): unknown {\n if (typeof message !== \"string\") {\n return message;\n }\n try {\n return JSON.parse(message);\n } catch {\n return message;\n }\n}\n\nexport function parsesTo(message: unknown): {\n parses: boolean;\n message: unknown;\n} {\n if (typeof message !== \"string\") {\n return {\n parses: false,\n message,\n };\n }\n try {\n return {\n parses: true,\n message: JSON.parse(message),\n };\n } catch {\n return {\n parses: false,\n message,\n };\n }\n}\n","import {\n DEFAULT,\n ERROR,\n FORMAT,\n LEVEL,\n LEVEL_VALUES,\n PSEUDO_LEVELS,\n} from \"./constants\";\nimport { sanitizeAuth } from \"./sanitizeAuth\";\nimport { forceString, out, parse, parsesTo, stringify } from \"./utils\";\n\ntype LogLevel = string;\ntype LogFormat = \"json\" | \"text\";\ntype Tags = Record<string, string>;\n\ninterface LoggerOptions {\n format?: LogFormat;\n level?: LogLevel;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: string;\n log: string;\n message: string;\n var?: string;\n [key: string]: unknown;\n}\n\ntype LogMethod = {\n (...messages: unknown[]): void;\n var: (messageObject: unknown, messageValue?: unknown) => void;\n};\n\nclass Logger {\n public debug: LogMethod;\n public error: LogMethod;\n public fatal: LogMethod;\n public info: LogMethod;\n public options: LoggerOptions;\n public tags: Tags;\n public trace: LogMethod;\n public var: (messageObject: unknown, messageValue?: unknown) => void;\n public warn: LogMethod;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.options = {\n format,\n level,\n varLevel,\n };\n\n this.tags = {};\n Object.keys(tags).forEach((key) => {\n this.tags[key] = forceString(tags[key]);\n });\n\n this.debug = this.createLogMethod(LEVEL.DEBUG, format, level);\n this.error = this.createLogMethod(LEVEL.ERROR, format, level);\n this.fatal = this.createLogMethod(LEVEL.FATAL, format, level);\n this.info = this.createLogMethod(LEVEL.INFO, format, level);\n this.trace = this.createLogMethod(LEVEL.TRACE, format, level);\n this.warn = this.createLogMethod(LEVEL.WARN, format, level);\n\n const varLevelMethod =\n this[varLevel as \"debug\" | \"error\" | \"fatal\" | \"info\" | \"trace\" | \"warn\"];\n this.var = (varLevelMethod as LogMethod)?.var || this.debug.var;\n }\n\n private createLogMethod(\n logLevel: string,\n format: LogFormat,\n checkLevel: string,\n ): LogMethod {\n const logFn = (...messages: unknown[]): void => {\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n const sanitized = messages.map(sanitizeAuth);\n if (format === FORMAT.JSON) {\n const message = stringify(...sanitized);\n const parses = parsesTo(message);\n const json: LogJson = {\n log: logLevel,\n message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n out(json, { level: logLevel });\n } else {\n const message = stringify(...sanitized);\n out(message, { level: logLevel });\n }\n }\n };\n\n logFn.var = (messageObject: unknown, messageValue?: unknown): void => {\n if (messageObject === undefined) {\n this.warn(ERROR.VAR.UNDEFINED_MESSAGE);\n }\n\n let msgObj: Record<string, unknown>;\n\n if (typeof messageObject !== \"object\" || messageObject === null) {\n if (typeof messageObject !== \"object\") {\n if (messageValue === undefined) messageValue = \"undefined\";\n msgObj = { [String(messageObject)]: messageValue };\n } else {\n this.warn(ERROR.VAR.NULL_OBJECT);\n return logFn(messageObject);\n }\n } else {\n msgObj = sanitizeAuth(messageObject) as Record<string, unknown>;\n }\n\n const keys = Object.keys(msgObj);\n if (keys.length === 0) {\n this.warn(ERROR.VAR.EMPTY_OBJECT);\n return logFn(msgObj);\n }\n\n if (keys.length > 1) {\n this.warn(ERROR.VAR.MULTIPLE_KEYS);\n return logFn(msgObj);\n }\n\n if (format === FORMAT.JSON) {\n const messageKey = keys[0];\n const messageVal = msgObj[messageKey];\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n log: logLevel,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n\n if (LEVEL_VALUES[logLevel] <= LEVEL_VALUES[checkLevel]) {\n out(json, { level: logLevel });\n }\n } else {\n return logFn(msgObj);\n }\n };\n\n return logFn as LogMethod;\n }\n\n public tag(key: unknown, value?: unknown): void {\n if (value) {\n this.tags[forceString(key)] = forceString(value);\n return;\n }\n\n if (Array.isArray(key)) {\n key.forEach((k) => {\n this.tags[forceString(k)] = \"\";\n });\n return;\n }\n\n if (key === null) {\n this.tags.null = \"\";\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key).forEach((k) => {\n this.tags[forceString(k)] = forceString(\n (key as Record<string, unknown>)[k],\n );\n });\n } else {\n this.tags[forceString(key)] = \"\";\n }\n }\n\n public untag(key: unknown): void {\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this.tags[forceString(k)];\n });\n return;\n }\n\n if (key === null) {\n delete this.tags.null;\n return;\n }\n\n if (typeof key === \"object\") {\n Object.keys(key as object).forEach((k) => {\n delete this.tags[forceString(k)];\n });\n } else {\n delete this.tags[forceString(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): Logger {\n const logger = new Logger(this.options);\n logger.tag(this.tags);\n logger.tag(key, value);\n return logger;\n }\n}\n\nexport default Logger;\n","export function logTags(\n withTags?: Record<string, string>,\n): Record<string, string> {\n if (withTags && typeof withTags !== \"object\") {\n withTags = {};\n }\n\n const {\n PROJECT_COMMIT,\n PROJECT_ENV,\n PROJECT_KEY,\n PROJECT_SERVICE,\n PROJECT_SPONSOR,\n PROJECT_VERSION,\n } = process.env;\n\n const tags: Record<string, string> = {};\n\n if (PROJECT_COMMIT) {\n tags.commit = PROJECT_COMMIT;\n }\n if (PROJECT_ENV) {\n tags.env = PROJECT_ENV;\n }\n if (PROJECT_KEY) {\n tags.project = PROJECT_KEY;\n }\n if (PROJECT_SERVICE) {\n tags.service = PROJECT_SERVICE;\n }\n if (PROJECT_SPONSOR) {\n tags.sponsor = PROJECT_SPONSOR;\n }\n if (process.env.npm_package_version || PROJECT_VERSION) {\n tags.version = (process.env.npm_package_version ||\n PROJECT_VERSION) as string;\n }\n\n return {\n ...tags,\n ...withTags,\n };\n}\n","import { forceString } from \"./utils\";\n\nexport function forceVar(\n key: unknown,\n value?: unknown,\n): Record<string, unknown> {\n if (typeof key === \"undefined\") {\n return {};\n }\n if (typeof key === \"object\" && key !== null) {\n if (Object.keys(key).length === 1) {\n return key as Record<string, unknown>;\n } else {\n return { value: key };\n }\n }\n const keyStr = forceString(key);\n if (typeof value === \"undefined\") {\n return { [keyStr]: \"\" };\n } else {\n return { [keyStr]: value };\n }\n}\n","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\nfunction isAxiosResponse(response: unknown): boolean {\n if (typeof response !== \"object\" || response === null) {\n return false;\n }\n const r = response as Record<string, unknown>;\n return !!(\n r &&\n r.config &&\n r.data &&\n r.headers &&\n r.request &&\n r.status &&\n r.statusText\n );\n}\n\nfunction filterAxiosResponse(response: unknown): unknown {\n if (!isAxiosResponse(response)) {\n return response;\n }\n const r = response as Record<string, unknown>;\n const newResponse: Record<string, unknown> = {\n data: r.data,\n headers: r.headers,\n status: r.status,\n statusText: r.statusText,\n };\n if (r.isAxiosError) {\n newResponse.isAxiosError = r.isAxiosError;\n }\n return newResponse;\n}\n\nexport const axiosResponseVarPipeline: Pipeline = {\n filter: filterAxiosResponse,\n key: \"response\",\n};\n\nfunction isError(item: unknown): boolean {\n if (typeof item !== \"object\" || item === null) {\n return false;\n }\n if (item instanceof Error) {\n return true;\n }\n const i = item as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterErrorVar(item: unknown): unknown {\n if (!isError(item)) {\n return item;\n }\n const e = item as Error & Record<string, unknown>;\n const newItem: Record<string, unknown> = {\n message: e.message,\n name: e.name,\n };\n if (e.cause) {\n newItem.cause = e.cause;\n }\n if (e.stack) {\n newItem.stack = e.stack;\n }\n if (e.isProjectError) {\n newItem.isProjectError = e.isProjectError;\n newItem.title = e.title;\n newItem.detail = e.detail;\n newItem.status = e.status;\n }\n return newItem;\n}\n\nexport const errorVarPipeline: Pipeline = {\n filter: filterErrorVar,\n key: \"error\",\n};\n\nexport const pipelines = [axiosResponseVarPipeline, errorVarPipeline];\n","import { forceVar } from \"./forceVar\";\nimport { pipelines } from \"./pipelines\";\n\nfunction keyValueToArray(keyValue: Record<string, unknown>): [string, unknown] {\n const key = Object.keys(keyValue)[0];\n return [key, keyValue[key]];\n}\n\nexport function logVar(key: unknown, value?: unknown): Record<string, unknown> {\n let [k, v] = keyValueToArray(forceVar(key, value));\n\n for (const pipeline of pipelines) {\n if (k === pipeline.key) {\n v = pipeline.filter(v);\n }\n }\n\n return { [k]: v };\n}\n","import Logger from \"./Logger\";\nimport { DEFAULT, FORMAT, LEVEL } from \"./constants\";\nimport { _resetDatadogTransport } from \"./datadogTransport\";\nimport { logTags } from \"./logTags\";\nimport { logVar } from \"./logVar\";\n\ninterface JaypieLoggerOptions {\n level?: string;\n tags?: Record<string, string>;\n}\n\nfunction envBoolean(\n key: string,\n { defaultValue }: { defaultValue: boolean },\n): boolean {\n const value = process.env[key];\n if (value === undefined) return defaultValue;\n const lower = value.toLowerCase();\n return !(\n lower === \"\" ||\n lower === \"0\" ||\n lower === \"f\" ||\n lower === \"false\" ||\n lower === \"n\" ||\n lower === \"no\"\n );\n}\n\nclass JaypieLogger {\n public debug: Logger[\"debug\"];\n public error: Logger[\"error\"];\n public fatal: Logger[\"fatal\"];\n public info: Logger[\"info\"];\n public level: string;\n public trace: Logger[\"trace\"];\n public var: Logger[\"var\"];\n public warn: Logger[\"warn\"];\n\n private _logger: Logger;\n private _loggers: Logger[];\n private _params: JaypieLoggerOptions;\n private _tags: Record<string, string>;\n private _withLoggers: Record<string, JaypieLogger>;\n\n constructor({\n level = process.env.LOG_LEVEL,\n tags = {},\n }: JaypieLoggerOptions = {}) {\n this._params = { level, tags };\n this._loggers = [];\n this._tags = {};\n this._withLoggers = {};\n\n this.level = level || DEFAULT.LEVEL;\n\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n\n this.debug = ((...args: any[]) =>\n this._logger.debug(...args)) as Logger[\"debug\"];\n this.debug.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.debug.var(messageObject, messageValue);\n\n this.error = ((...args: any[]) =>\n this._logger.error(...args)) as Logger[\"error\"];\n this.error.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.error.var(messageObject, messageValue);\n\n this.fatal = ((...args: any[]) =>\n this._logger.fatal(...args)) as Logger[\"fatal\"];\n this.fatal.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.fatal.var(messageObject, messageValue);\n\n this.info = ((...args: any[]) =>\n this._logger.info(...args)) as Logger[\"info\"];\n this.info.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.info.var(messageObject, messageValue);\n\n this.trace = ((...args: any[]) =>\n this._logger.trace(...args)) as Logger[\"trace\"];\n this.trace.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.trace.var(messageObject, messageValue);\n\n this.warn = ((...args: any[]) =>\n this._logger.warn(...args)) as Logger[\"warn\"];\n this.warn.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.warn.var(messageObject, messageValue);\n\n this.var = (messageObject: unknown, messageValue?: unknown) =>\n this._logger.var(logVar(messageObject, messageValue));\n }\n\n public init(): void {\n _resetDatadogTransport();\n for (const logger of this._loggers) {\n if (\"init\" in logger && typeof logger.init === \"function\") {\n (logger as Logger & { init: () => void }).init();\n }\n }\n const level = this._params.level;\n const tags = this._params.tags;\n this.level = level || DEFAULT.LEVEL;\n this._tags = { ...logTags(), ...tags };\n this._logger = new Logger({\n format: FORMAT.JSON,\n level: this.level,\n tags: this._tags,\n });\n this._loggers = [this._logger];\n this._withLoggers = {};\n\n const levels = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"trace\",\n \"warn\",\n ] as const;\n levels.forEach((lvl) => {\n this[lvl] = ((...args: any[]) => {\n this._logger[lvl](...args);\n }) as any;\n this[lvl].var = (messageObject: unknown, messageValue?: unknown) => {\n this._logger[lvl].var(messageObject, messageValue);\n };\n });\n }\n\n public lib({\n level,\n lib,\n tags = {},\n }: {\n level?: string;\n lib?: string;\n tags?: Record<string, string>;\n } = {}): JaypieLogger {\n const newTags = Object.assign({}, this._tags, tags);\n if (lib) {\n newTags.lib = lib;\n }\n\n const logger = new JaypieLogger({\n level: (() => {\n if (level) {\n return level;\n }\n if (process.env.MODULE_LOG_LEVEL) {\n return process.env.MODULE_LOG_LEVEL;\n }\n if (envBoolean(\"MODULE_LOGGER\", { defaultValue: false })) {\n return process.env.LOG_LEVEL;\n }\n return LEVEL.SILENT;\n })(),\n tags: newTags,\n });\n this._loggers.push(logger._logger);\n return logger;\n }\n\n public tag(tags: Record<string, unknown>): void {\n for (const logger of this._loggers) {\n logger.tag(tags);\n }\n Object.assign(this._tags, tags);\n }\n\n public untag(key: unknown): void {\n for (const logger of this._loggers) {\n logger.untag(key);\n }\n if (Array.isArray(key)) {\n key.forEach((k) => {\n delete this._tags[String(k)];\n });\n } else if (typeof key === \"object\" && key !== null) {\n Object.keys(key).forEach((k) => {\n delete this._tags[k];\n });\n } else {\n delete this._tags[String(key)];\n }\n }\n\n public with(key: unknown, value?: unknown): JaypieLogger {\n if (!key || (typeof key !== \"object\" && value === undefined)) {\n throw new Error(\n \"ConfigurationError: with() requires an object argument or key-value pair\",\n );\n }\n const loggerKey = JSON.stringify([key, value]);\n if (Object.keys(this._withLoggers).includes(loggerKey)) {\n return this._withLoggers[loggerKey];\n }\n const logger = new JaypieLogger({\n level: this.level,\n tags: { ...this._tags },\n });\n logger._logger = this._logger.with(key, value);\n logger._loggers = [logger._logger];\n this._withLoggers[loggerKey] = logger;\n this._loggers.push(logger._logger);\n return logger;\n }\n}\n\nexport function createLogger(tags: Record<string, string> = {}): JaypieLogger {\n const jaypieLogger = new JaypieLogger({\n tags,\n });\n return jaypieLogger;\n}\n\nexport default JaypieLogger;\n","import Logger from \"./Logger\";\nimport { createLogger } from \"./JaypieLogger\";\nimport { FORMAT, LEVEL } from \"./constants\";\nimport {\n _resetDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\nimport { redactAuth, sanitizeAuth } from \"./sanitizeAuth\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n isDatadogForwardingEnabled,\n redactAuth,\n sanitizeAuth,\n};\n\nexport const log = createLogger();\n\nexport default log;\n"],"names":["envBoolean"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function redactAuth(value: unknown): string;
2
+ export declare function sanitizeAuth(value: unknown): unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaypie/logger",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "description": "Logger utilities for Jaypie applications",
5
5
  "repository": {
6
6
  "type": "git",