@jaypie/logger 1.2.12 → 1.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,10 +12,14 @@ declare class JaypieLogger {
12
12
  trace: Logger["trace"];
13
13
  var: Logger["var"];
14
14
  warn: Logger["warn"];
15
+ private _errorCount;
15
16
  private _logger;
16
17
  private _loggers;
17
18
  private _params;
19
+ private _report;
20
+ private _sessionActive;
18
21
  private _tags;
22
+ private _warnCount;
19
23
  private _withLoggers;
20
24
  constructor({ level, tags, }?: JaypieLoggerOptions);
21
25
  init(): void;
@@ -24,7 +28,10 @@ declare class JaypieLogger {
24
28
  lib?: string;
25
29
  tags?: Record<string, string>;
26
30
  }): JaypieLogger;
31
+ report(data: Record<string, unknown>): void;
32
+ setup(tags?: Record<string, unknown>): void;
27
33
  tag(tags: Record<string, unknown>): void;
34
+ teardown(): void;
28
35
  untag(key: unknown): void;
29
36
  with(key: unknown, value?: unknown): JaypieLogger;
30
37
  }
@@ -297,6 +297,11 @@ function redactAuth(value) {
297
297
  //
298
298
  // Main
299
299
  //
300
+ const REDACTED_KEYS = new Set([
301
+ "authorization",
302
+ "x-service-key",
303
+ "x-webhook-token",
304
+ ]);
300
305
  function sanitizeAuth(value) {
301
306
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
302
307
  return value;
@@ -305,7 +310,7 @@ function sanitizeAuth(value) {
305
310
  let clone;
306
311
  for (const key of Object.keys(obj)) {
307
312
  const lower = key.toLowerCase();
308
- if (lower === "authorization") {
313
+ if (REDACTED_KEYS.has(lower)) {
309
314
  if (!clone)
310
315
  clone = { ...obj };
311
316
  clone[key] = redactAuth(obj[key]);
@@ -316,16 +321,19 @@ function sanitizeAuth(value) {
316
321
  headers !== null &&
317
322
  !Array.isArray(headers)) {
318
323
  const hdrs = headers;
324
+ let clonedHeaders;
319
325
  for (const hKey of Object.keys(hdrs)) {
320
- if (hKey.toLowerCase() === "authorization") {
321
- if (!clone)
322
- clone = { ...obj };
323
- const clonedHeaders = { ...hdrs };
326
+ if (REDACTED_KEYS.has(hKey.toLowerCase())) {
327
+ if (!clonedHeaders)
328
+ clonedHeaders = { ...hdrs };
324
329
  clonedHeaders[hKey] = redactAuth(hdrs[hKey]);
325
- clone[key] = clonedHeaders;
326
- break;
327
330
  }
328
331
  }
332
+ if (clonedHeaders) {
333
+ if (!clone)
334
+ clone = { ...obj };
335
+ clone[key] = clonedHeaders;
336
+ }
329
337
  }
330
338
  }
331
339
  }
@@ -876,6 +884,10 @@ function envBoolean(key, { defaultValue }) {
876
884
  }
877
885
  class JaypieLogger {
878
886
  constructor({ level = process.env.LOG_LEVEL, tags = {}, } = {}) {
887
+ this._errorCount = 0;
888
+ this._report = {};
889
+ this._sessionActive = false;
890
+ this._warnCount = 0;
879
891
  this._params = { level, tags };
880
892
  this._loggers = [];
881
893
  this._tags = {};
@@ -890,16 +902,32 @@ class JaypieLogger {
890
902
  this._loggers = [this._logger];
891
903
  this.debug = ((...args) => this._logger.debug(...args));
892
904
  this.debug.var = (messageObject, messageValue) => this._logger.debug.var(messageObject, messageValue);
893
- this.error = ((...args) => this._logger.error(...args));
894
- this.error.var = (messageObject, messageValue) => this._logger.error.var(messageObject, messageValue);
905
+ this.error = ((...args) => {
906
+ if (this._sessionActive)
907
+ this._errorCount++;
908
+ this._logger.error(...args);
909
+ });
910
+ this.error.var = (messageObject, messageValue) => {
911
+ if (this._sessionActive)
912
+ this._errorCount++;
913
+ this._logger.error.var(messageObject, messageValue);
914
+ };
895
915
  this.fatal = ((...args) => this._logger.fatal(...args));
896
916
  this.fatal.var = (messageObject, messageValue) => this._logger.fatal.var(messageObject, messageValue);
897
917
  this.info = ((...args) => this._logger.info(...args));
898
918
  this.info.var = (messageObject, messageValue) => this._logger.info.var(messageObject, messageValue);
899
919
  this.trace = ((...args) => this._logger.trace(...args));
900
920
  this.trace.var = (messageObject, messageValue) => this._logger.trace.var(messageObject, messageValue);
901
- this.warn = ((...args) => this._logger.warn(...args));
902
- this.warn.var = (messageObject, messageValue) => this._logger.warn.var(messageObject, messageValue);
921
+ this.warn = ((...args) => {
922
+ if (this._sessionActive)
923
+ this._warnCount++;
924
+ this._logger.warn(...args);
925
+ });
926
+ this.warn.var = (messageObject, messageValue) => {
927
+ if (this._sessionActive)
928
+ this._warnCount++;
929
+ this._logger.warn.var(messageObject, messageValue);
930
+ };
903
931
  this.var = (messageObject, messageValue) => this._logger.var(logVar(messageObject, messageValue));
904
932
  }
905
933
  init() {
@@ -920,6 +948,11 @@ class JaypieLogger {
920
948
  });
921
949
  this._loggers = [this._logger];
922
950
  this._withLoggers = {};
951
+ // Reset session state
952
+ this._errorCount = 0;
953
+ this._report = {};
954
+ this._sessionActive = false;
955
+ this._warnCount = 0;
923
956
  const levels = [
924
957
  "debug",
925
958
  "error",
@@ -929,12 +962,38 @@ class JaypieLogger {
929
962
  "warn",
930
963
  ];
931
964
  levels.forEach((lvl) => {
932
- this[lvl] = ((...args) => {
933
- this._logger[lvl](...args);
934
- });
935
- this[lvl].var = (messageObject, messageValue) => {
936
- this._logger[lvl].var(messageObject, messageValue);
937
- };
965
+ if (lvl === "error") {
966
+ this.error = ((...args) => {
967
+ if (this._sessionActive)
968
+ this._errorCount++;
969
+ this._logger.error(...args);
970
+ });
971
+ this.error.var = (messageObject, messageValue) => {
972
+ if (this._sessionActive)
973
+ this._errorCount++;
974
+ this._logger.error.var(messageObject, messageValue);
975
+ };
976
+ }
977
+ else if (lvl === "warn") {
978
+ this.warn = ((...args) => {
979
+ if (this._sessionActive)
980
+ this._warnCount++;
981
+ this._logger.warn(...args);
982
+ });
983
+ this.warn.var = (messageObject, messageValue) => {
984
+ if (this._sessionActive)
985
+ this._warnCount++;
986
+ this._logger.warn.var(messageObject, messageValue);
987
+ };
988
+ }
989
+ else {
990
+ this[lvl] = ((...args) => {
991
+ this._logger[lvl](...args);
992
+ });
993
+ this[lvl].var = (messageObject, messageValue) => {
994
+ this._logger[lvl].var(messageObject, messageValue);
995
+ };
996
+ }
938
997
  });
939
998
  }
940
999
  lib({ level, lib, tags = {}, } = {}) {
@@ -960,12 +1019,55 @@ class JaypieLogger {
960
1019
  this._loggers.push(logger._logger);
961
1020
  return logger;
962
1021
  }
1022
+ report(data) {
1023
+ if (!this._sessionActive) {
1024
+ this.warn("[logger] report() called without active session");
1025
+ return;
1026
+ }
1027
+ for (const key of Object.keys(data)) {
1028
+ if (key in this._report) {
1029
+ this.warn(`[logger] Overwriting report key: ${key}`);
1030
+ }
1031
+ }
1032
+ Object.assign(this._report, data);
1033
+ }
1034
+ setup(tags) {
1035
+ if (this._sessionActive) {
1036
+ this.warn("[logger] setup() called while session already active");
1037
+ }
1038
+ this._errorCount = 0;
1039
+ this._report = {};
1040
+ this._sessionActive = true;
1041
+ this._warnCount = 0;
1042
+ if (tags) {
1043
+ this.tag(tags);
1044
+ }
1045
+ }
963
1046
  tag(tags) {
964
1047
  for (const logger of this._loggers) {
965
1048
  logger.tag(tags);
966
1049
  }
967
1050
  Object.assign(this._tags, tags);
968
1051
  }
1052
+ teardown() {
1053
+ if (!this._sessionActive) {
1054
+ return;
1055
+ }
1056
+ const finalReport = {
1057
+ ...this._report,
1058
+ log: {
1059
+ error: this._errorCount > 0,
1060
+ errors: this._errorCount,
1061
+ warn: this._warnCount > 0,
1062
+ warns: this._warnCount,
1063
+ },
1064
+ };
1065
+ this.info.var({ report: finalReport });
1066
+ this._errorCount = 0;
1067
+ this._report = {};
1068
+ this._sessionActive = false;
1069
+ this._warnCount = 0;
1070
+ }
969
1071
  untag(key) {
970
1072
  for (const logger of this._loggers) {
971
1073
  logger.untag(key);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/constants.ts","../../../src/pipelines.ts","../../../src/sanitizeAuth.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.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 DD_SOURCE: \"DD_SOURCE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n PROJECT_SOURCE: \"PROJECT_SOURCE\",\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","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\n//\n// Key-based pipelines (match on var key name)\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\nexport const pipelines = [axiosResponseVarPipeline];\n\n//\n// Type-based filters (run on any key, match on value shape)\n//\n\ninterface TypeFilter {\n detect: (value: unknown) => boolean;\n filter: (value: unknown) => unknown;\n}\n\n// Fetch Response\n\nfunction isFetchResponse(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const r = value as Record<string, unknown>;\n return !!(\n typeof r.ok === \"boolean\" &&\n typeof r.status === \"number\" &&\n typeof r.statusText === \"string\" &&\n \"headers\" in r &&\n \"body\" in r &&\n typeof r.url === \"string\" &&\n !(\"config\" in r) &&\n !(\"request\" in r)\n );\n}\n\nfunction headersToObject(headers: unknown): Record<string, string> | unknown {\n if (\n headers &&\n typeof headers === \"object\" &&\n typeof (headers as Record<string, unknown>).entries === \"function\"\n ) {\n const result: Record<string, string> = {};\n for (const [key, value] of (headers as Headers).entries()) {\n result[key] = value;\n }\n return result;\n }\n return headers;\n}\n\nfunction filterFetchResponse(value: unknown): unknown {\n const r = value as Record<string, unknown>;\n return {\n headers: headersToObject(r.headers),\n ok: r.ok,\n redirected: r.redirected,\n status: r.status,\n statusText: r.statusText,\n type: r.type,\n url: r.url,\n };\n}\n\n// Error\n\nfunction isError(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (value instanceof Error) {\n return true;\n }\n const i = value as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterError(value: unknown): unknown {\n const e = value 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\n// Type filter registry (order matters — first match wins)\n\nconst typeFilters: TypeFilter[] = [\n { detect: isFetchResponse, filter: filterFetchResponse },\n { detect: isError, filter: filterError },\n];\n\n//\n// Opaque object detection and generic extraction\n//\n\nfunction isOpaqueObject(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n // Plain objects are fine\n if (value.constructor === Object || value.constructor === undefined) {\n return false;\n }\n // If JSON.stringify produces \"{}\" the object has no own enumerable properties\n // and will log as useless \"[object Type]\"\n try {\n const json = JSON.stringify(value);\n return json === \"{}\" || json === \"[]\";\n } catch {\n return true;\n }\n}\n\nfunction extractOpaqueObject(value: unknown): Record<string, unknown> {\n const obj = value as object;\n const result: Record<string, unknown> = {};\n\n const ctorName = obj.constructor?.name;\n if (ctorName && ctorName !== \"Object\") {\n result._type = ctorName;\n }\n\n // If the object itself is map-like (Headers, URLSearchParams, FormData, etc.),\n // convert its entries directly\n const mapLike = obj as Record<string, unknown>;\n if (\n typeof mapLike.entries === \"function\" &&\n typeof mapLike.forEach === \"function\"\n ) {\n try {\n const entries = Object.fromEntries(\n (mapLike as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n return { ...result, ...entries };\n } catch {\n // Fall through to generic extraction\n }\n }\n\n // Collect readable non-function properties from the prototype chain\n let proto: object | null = obj;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === \"constructor\" || key in result) {\n continue;\n }\n try {\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc) continue;\n // Read getters and value properties from the original object\n const val = (obj as Record<string, unknown>)[key];\n if (typeof val === \"function\" || typeof val === \"symbol\") {\n continue;\n }\n // Skip streams and other non-serializable objects\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).pipe === \"function\"\n ) {\n continue;\n }\n // Convert iterable map-like objects (Headers, URLSearchParams, etc.)\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).entries === \"function\" &&\n typeof (val as Record<string, unknown>).forEach === \"function\"\n ) {\n result[key] = Object.fromEntries(\n (val as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n continue;\n }\n result[key] = val;\n } catch {\n // Property threw on access — skip\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n}\n\n//\n// Public API\n//\n\n/**\n * Filter a value by type, regardless of var key name.\n * Tries known type filters first, then falls back to generic\n * opaque object extraction for anything that would log as [object Type].\n */\nexport function filterByType(value: unknown): unknown {\n // Try known type filters\n for (const tf of typeFilters) {\n if (tf.detect(value)) {\n return tf.filter(value);\n }\n }\n // Generic fallback for opaque objects\n if (isOpaqueObject(value)) {\n return extractOpaqueObject(value);\n }\n return value;\n}\n\n// Legacy exports for key-based pipeline (axios only now)\nexport const errorVarPipeline: Pipeline = {\n filter: (item: unknown) => {\n if (!isError(item)) return item;\n return filterError(item);\n },\n key: \"error\",\n};\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: string;\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._ddsource =\n env[DATADOG_TRANSPORT.ENV.DD_SOURCE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SOURCE] ||\n \"nodejs\";\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 { message: __, status: _, ...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 { filterByType, pipelines } from \"./pipelines\";\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 levelField?: boolean | string;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: 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\nfunction resolveLevelField(value?: boolean | string): false | string {\n if (value === undefined) {\n const env = process.env.LOG_LEVEL_FIELD;\n if (env === undefined || env === \"\") return false;\n if (env === \"false\" || env === \"0\" || env === \"no\") return false;\n if (env === \"true\" || env === \"1\" || env === \"yes\") return \"level\";\n return env;\n }\n if (value === false) return false;\n if (value === true) return \"level\";\n return value;\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 private levelField: false | string;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n levelField,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.levelField = resolveLevelField(levelField);\n this.options = {\n format,\n level,\n levelField: this.levelField || undefined,\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 message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n if (this.levelField) {\n json[this.levelField] = logLevel;\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 let messageVal = msgObj[messageKey];\n\n for (const pipeline of pipelines) {\n if (messageKey === pipeline.key) {\n messageVal = pipeline.filter(messageVal);\n }\n }\n messageVal = filterByType(messageVal);\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n if (this.levelField) {\n json[this.levelField] = logLevel;\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","import { forceVar } from \"./forceVar\";\nimport { filterByType, 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 v = filterByType(v);\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 getDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\nimport { redactAuth, sanitizeAuth } from \"./sanitizeAuth\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n getDatadogTransport,\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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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/constants.ts","../../../src/pipelines.ts","../../../src/sanitizeAuth.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.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 DD_SOURCE: \"DD_SOURCE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n PROJECT_SOURCE: \"PROJECT_SOURCE\",\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","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\n//\n// Key-based pipelines (match on var key name)\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\nexport const pipelines = [axiosResponseVarPipeline];\n\n//\n// Type-based filters (run on any key, match on value shape)\n//\n\ninterface TypeFilter {\n detect: (value: unknown) => boolean;\n filter: (value: unknown) => unknown;\n}\n\n// Fetch Response\n\nfunction isFetchResponse(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const r = value as Record<string, unknown>;\n return !!(\n typeof r.ok === \"boolean\" &&\n typeof r.status === \"number\" &&\n typeof r.statusText === \"string\" &&\n \"headers\" in r &&\n \"body\" in r &&\n typeof r.url === \"string\" &&\n !(\"config\" in r) &&\n !(\"request\" in r)\n );\n}\n\nfunction headersToObject(headers: unknown): Record<string, string> | unknown {\n if (\n headers &&\n typeof headers === \"object\" &&\n typeof (headers as Record<string, unknown>).entries === \"function\"\n ) {\n const result: Record<string, string> = {};\n for (const [key, value] of (headers as Headers).entries()) {\n result[key] = value;\n }\n return result;\n }\n return headers;\n}\n\nfunction filterFetchResponse(value: unknown): unknown {\n const r = value as Record<string, unknown>;\n return {\n headers: headersToObject(r.headers),\n ok: r.ok,\n redirected: r.redirected,\n status: r.status,\n statusText: r.statusText,\n type: r.type,\n url: r.url,\n };\n}\n\n// Error\n\nfunction isError(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (value instanceof Error) {\n return true;\n }\n const i = value as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterError(value: unknown): unknown {\n const e = value 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\n// Type filter registry (order matters — first match wins)\n\nconst typeFilters: TypeFilter[] = [\n { detect: isFetchResponse, filter: filterFetchResponse },\n { detect: isError, filter: filterError },\n];\n\n//\n// Opaque object detection and generic extraction\n//\n\nfunction isOpaqueObject(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n // Plain objects are fine\n if (value.constructor === Object || value.constructor === undefined) {\n return false;\n }\n // If JSON.stringify produces \"{}\" the object has no own enumerable properties\n // and will log as useless \"[object Type]\"\n try {\n const json = JSON.stringify(value);\n return json === \"{}\" || json === \"[]\";\n } catch {\n return true;\n }\n}\n\nfunction extractOpaqueObject(value: unknown): Record<string, unknown> {\n const obj = value as object;\n const result: Record<string, unknown> = {};\n\n const ctorName = obj.constructor?.name;\n if (ctorName && ctorName !== \"Object\") {\n result._type = ctorName;\n }\n\n // If the object itself is map-like (Headers, URLSearchParams, FormData, etc.),\n // convert its entries directly\n const mapLike = obj as Record<string, unknown>;\n if (\n typeof mapLike.entries === \"function\" &&\n typeof mapLike.forEach === \"function\"\n ) {\n try {\n const entries = Object.fromEntries(\n (mapLike as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n return { ...result, ...entries };\n } catch {\n // Fall through to generic extraction\n }\n }\n\n // Collect readable non-function properties from the prototype chain\n let proto: object | null = obj;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === \"constructor\" || key in result) {\n continue;\n }\n try {\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc) continue;\n // Read getters and value properties from the original object\n const val = (obj as Record<string, unknown>)[key];\n if (typeof val === \"function\" || typeof val === \"symbol\") {\n continue;\n }\n // Skip streams and other non-serializable objects\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).pipe === \"function\"\n ) {\n continue;\n }\n // Convert iterable map-like objects (Headers, URLSearchParams, etc.)\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).entries === \"function\" &&\n typeof (val as Record<string, unknown>).forEach === \"function\"\n ) {\n result[key] = Object.fromEntries(\n (val as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n continue;\n }\n result[key] = val;\n } catch {\n // Property threw on access — skip\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n}\n\n//\n// Public API\n//\n\n/**\n * Filter a value by type, regardless of var key name.\n * Tries known type filters first, then falls back to generic\n * opaque object extraction for anything that would log as [object Type].\n */\nexport function filterByType(value: unknown): unknown {\n // Try known type filters\n for (const tf of typeFilters) {\n if (tf.detect(value)) {\n return tf.filter(value);\n }\n }\n // Generic fallback for opaque objects\n if (isOpaqueObject(value)) {\n return extractOpaqueObject(value);\n }\n return value;\n}\n\n// Legacy exports for key-based pipeline (axios only now)\nexport const errorVarPipeline: Pipeline = {\n filter: (item: unknown) => {\n if (!isError(item)) return item;\n return filterError(item);\n },\n key: \"error\",\n};\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\nconst REDACTED_KEYS = new Set([\n \"authorization\",\n \"x-service-key\",\n \"x-webhook-token\",\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 (REDACTED_KEYS.has(lower)) {\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 let clonedHeaders: Record<string, unknown> | undefined;\n for (const hKey of Object.keys(hdrs)) {\n if (REDACTED_KEYS.has(hKey.toLowerCase())) {\n if (!clonedHeaders) clonedHeaders = { ...hdrs };\n clonedHeaders[hKey] = redactAuth(hdrs[hKey]);\n }\n }\n if (clonedHeaders) {\n if (!clone) clone = { ...obj };\n clone[key] = clonedHeaders;\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: string;\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._ddsource =\n env[DATADOG_TRANSPORT.ENV.DD_SOURCE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SOURCE] ||\n \"nodejs\";\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 { message: __, status: _, ...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 { filterByType, pipelines } from \"./pipelines\";\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 levelField?: boolean | string;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: 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\nfunction resolveLevelField(value?: boolean | string): false | string {\n if (value === undefined) {\n const env = process.env.LOG_LEVEL_FIELD;\n if (env === undefined || env === \"\") return false;\n if (env === \"false\" || env === \"0\" || env === \"no\") return false;\n if (env === \"true\" || env === \"1\" || env === \"yes\") return \"level\";\n return env;\n }\n if (value === false) return false;\n if (value === true) return \"level\";\n return value;\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 private levelField: false | string;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n levelField,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.levelField = resolveLevelField(levelField);\n this.options = {\n format,\n level,\n levelField: this.levelField || undefined,\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 message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n if (this.levelField) {\n json[this.levelField] = logLevel;\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 let messageVal = msgObj[messageKey];\n\n for (const pipeline of pipelines) {\n if (messageKey === pipeline.key) {\n messageVal = pipeline.filter(messageVal);\n }\n }\n messageVal = filterByType(messageVal);\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n if (this.levelField) {\n json[this.levelField] = logLevel;\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","import { forceVar } from \"./forceVar\";\nimport { filterByType, 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 v = filterByType(v);\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 _errorCount: number = 0;\n private _logger: Logger;\n private _loggers: Logger[];\n private _params: JaypieLoggerOptions;\n private _report: Record<string, unknown> = {};\n private _sessionActive: boolean = false;\n private _tags: Record<string, string>;\n private _warnCount: number = 0;\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 if (this._sessionActive) this._errorCount++;\n this._logger.error(...args);\n }) as Logger[\"error\"];\n this.error.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._errorCount++;\n this._logger.error.var(messageObject, messageValue);\n };\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 if (this._sessionActive) this._warnCount++;\n this._logger.warn(...args);\n }) as Logger[\"warn\"];\n this.warn.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._warnCount++;\n this._logger.warn.var(messageObject, messageValue);\n };\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 // Reset session state\n this._errorCount = 0;\n this._report = {};\n this._sessionActive = false;\n this._warnCount = 0;\n\n const levels = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"trace\",\n \"warn\",\n ] as const;\n levels.forEach((lvl) => {\n if (lvl === \"error\") {\n this.error = ((...args: any[]) => {\n if (this._sessionActive) this._errorCount++;\n this._logger.error(...args);\n }) as any;\n this.error.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._errorCount++;\n this._logger.error.var(messageObject, messageValue);\n };\n } else if (lvl === \"warn\") {\n this.warn = ((...args: any[]) => {\n if (this._sessionActive) this._warnCount++;\n this._logger.warn(...args);\n }) as any;\n this.warn.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._warnCount++;\n this._logger.warn.var(messageObject, messageValue);\n };\n } else {\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\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 report(data: Record<string, unknown>): void {\n if (!this._sessionActive) {\n this.warn(\"[logger] report() called without active session\");\n return;\n }\n for (const key of Object.keys(data)) {\n if (key in this._report) {\n this.warn(`[logger] Overwriting report key: ${key}`);\n }\n }\n Object.assign(this._report, data);\n }\n\n public setup(tags?: Record<string, unknown>): void {\n if (this._sessionActive) {\n this.warn(\"[logger] setup() called while session already active\");\n }\n this._errorCount = 0;\n this._report = {};\n this._sessionActive = true;\n this._warnCount = 0;\n if (tags) {\n this.tag(tags);\n }\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 teardown(): void {\n if (!this._sessionActive) {\n return;\n }\n const finalReport = {\n ...this._report,\n log: {\n error: this._errorCount > 0,\n errors: this._errorCount,\n warn: this._warnCount > 0,\n warns: this._warnCount,\n },\n };\n this.info.var({ report: finalReport });\n this._errorCount = 0;\n this._report = {};\n this._sessionActive = false;\n this._warnCount = 0;\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 getDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\nimport { redactAuth, sanitizeAuth } from \"./sanitizeAuth\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n getDatadogTransport,\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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"}
@@ -12,10 +12,14 @@ declare class JaypieLogger {
12
12
  trace: Logger["trace"];
13
13
  var: Logger["var"];
14
14
  warn: Logger["warn"];
15
+ private _errorCount;
15
16
  private _logger;
16
17
  private _loggers;
17
18
  private _params;
19
+ private _report;
20
+ private _sessionActive;
18
21
  private _tags;
22
+ private _warnCount;
19
23
  private _withLoggers;
20
24
  constructor({ level, tags, }?: JaypieLoggerOptions);
21
25
  init(): void;
@@ -24,7 +28,10 @@ declare class JaypieLogger {
24
28
  lib?: string;
25
29
  tags?: Record<string, string>;
26
30
  }): JaypieLogger;
31
+ report(data: Record<string, unknown>): void;
32
+ setup(tags?: Record<string, unknown>): void;
27
33
  tag(tags: Record<string, unknown>): void;
34
+ teardown(): void;
28
35
  untag(key: unknown): void;
29
36
  with(key: unknown, value?: unknown): JaypieLogger;
30
37
  }
package/dist/esm/index.js CHANGED
@@ -293,6 +293,11 @@ function redactAuth(value) {
293
293
  //
294
294
  // Main
295
295
  //
296
+ const REDACTED_KEYS = new Set([
297
+ "authorization",
298
+ "x-service-key",
299
+ "x-webhook-token",
300
+ ]);
296
301
  function sanitizeAuth(value) {
297
302
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
298
303
  return value;
@@ -301,7 +306,7 @@ function sanitizeAuth(value) {
301
306
  let clone;
302
307
  for (const key of Object.keys(obj)) {
303
308
  const lower = key.toLowerCase();
304
- if (lower === "authorization") {
309
+ if (REDACTED_KEYS.has(lower)) {
305
310
  if (!clone)
306
311
  clone = { ...obj };
307
312
  clone[key] = redactAuth(obj[key]);
@@ -312,16 +317,19 @@ function sanitizeAuth(value) {
312
317
  headers !== null &&
313
318
  !Array.isArray(headers)) {
314
319
  const hdrs = headers;
320
+ let clonedHeaders;
315
321
  for (const hKey of Object.keys(hdrs)) {
316
- if (hKey.toLowerCase() === "authorization") {
317
- if (!clone)
318
- clone = { ...obj };
319
- const clonedHeaders = { ...hdrs };
322
+ if (REDACTED_KEYS.has(hKey.toLowerCase())) {
323
+ if (!clonedHeaders)
324
+ clonedHeaders = { ...hdrs };
320
325
  clonedHeaders[hKey] = redactAuth(hdrs[hKey]);
321
- clone[key] = clonedHeaders;
322
- break;
323
326
  }
324
327
  }
328
+ if (clonedHeaders) {
329
+ if (!clone)
330
+ clone = { ...obj };
331
+ clone[key] = clonedHeaders;
332
+ }
325
333
  }
326
334
  }
327
335
  }
@@ -872,6 +880,10 @@ function envBoolean(key, { defaultValue }) {
872
880
  }
873
881
  class JaypieLogger {
874
882
  constructor({ level = process.env.LOG_LEVEL, tags = {}, } = {}) {
883
+ this._errorCount = 0;
884
+ this._report = {};
885
+ this._sessionActive = false;
886
+ this._warnCount = 0;
875
887
  this._params = { level, tags };
876
888
  this._loggers = [];
877
889
  this._tags = {};
@@ -886,16 +898,32 @@ class JaypieLogger {
886
898
  this._loggers = [this._logger];
887
899
  this.debug = ((...args) => this._logger.debug(...args));
888
900
  this.debug.var = (messageObject, messageValue) => this._logger.debug.var(messageObject, messageValue);
889
- this.error = ((...args) => this._logger.error(...args));
890
- this.error.var = (messageObject, messageValue) => this._logger.error.var(messageObject, messageValue);
901
+ this.error = ((...args) => {
902
+ if (this._sessionActive)
903
+ this._errorCount++;
904
+ this._logger.error(...args);
905
+ });
906
+ this.error.var = (messageObject, messageValue) => {
907
+ if (this._sessionActive)
908
+ this._errorCount++;
909
+ this._logger.error.var(messageObject, messageValue);
910
+ };
891
911
  this.fatal = ((...args) => this._logger.fatal(...args));
892
912
  this.fatal.var = (messageObject, messageValue) => this._logger.fatal.var(messageObject, messageValue);
893
913
  this.info = ((...args) => this._logger.info(...args));
894
914
  this.info.var = (messageObject, messageValue) => this._logger.info.var(messageObject, messageValue);
895
915
  this.trace = ((...args) => this._logger.trace(...args));
896
916
  this.trace.var = (messageObject, messageValue) => this._logger.trace.var(messageObject, messageValue);
897
- this.warn = ((...args) => this._logger.warn(...args));
898
- this.warn.var = (messageObject, messageValue) => this._logger.warn.var(messageObject, messageValue);
917
+ this.warn = ((...args) => {
918
+ if (this._sessionActive)
919
+ this._warnCount++;
920
+ this._logger.warn(...args);
921
+ });
922
+ this.warn.var = (messageObject, messageValue) => {
923
+ if (this._sessionActive)
924
+ this._warnCount++;
925
+ this._logger.warn.var(messageObject, messageValue);
926
+ };
899
927
  this.var = (messageObject, messageValue) => this._logger.var(logVar(messageObject, messageValue));
900
928
  }
901
929
  init() {
@@ -916,6 +944,11 @@ class JaypieLogger {
916
944
  });
917
945
  this._loggers = [this._logger];
918
946
  this._withLoggers = {};
947
+ // Reset session state
948
+ this._errorCount = 0;
949
+ this._report = {};
950
+ this._sessionActive = false;
951
+ this._warnCount = 0;
919
952
  const levels = [
920
953
  "debug",
921
954
  "error",
@@ -925,12 +958,38 @@ class JaypieLogger {
925
958
  "warn",
926
959
  ];
927
960
  levels.forEach((lvl) => {
928
- this[lvl] = ((...args) => {
929
- this._logger[lvl](...args);
930
- });
931
- this[lvl].var = (messageObject, messageValue) => {
932
- this._logger[lvl].var(messageObject, messageValue);
933
- };
961
+ if (lvl === "error") {
962
+ this.error = ((...args) => {
963
+ if (this._sessionActive)
964
+ this._errorCount++;
965
+ this._logger.error(...args);
966
+ });
967
+ this.error.var = (messageObject, messageValue) => {
968
+ if (this._sessionActive)
969
+ this._errorCount++;
970
+ this._logger.error.var(messageObject, messageValue);
971
+ };
972
+ }
973
+ else if (lvl === "warn") {
974
+ this.warn = ((...args) => {
975
+ if (this._sessionActive)
976
+ this._warnCount++;
977
+ this._logger.warn(...args);
978
+ });
979
+ this.warn.var = (messageObject, messageValue) => {
980
+ if (this._sessionActive)
981
+ this._warnCount++;
982
+ this._logger.warn.var(messageObject, messageValue);
983
+ };
984
+ }
985
+ else {
986
+ this[lvl] = ((...args) => {
987
+ this._logger[lvl](...args);
988
+ });
989
+ this[lvl].var = (messageObject, messageValue) => {
990
+ this._logger[lvl].var(messageObject, messageValue);
991
+ };
992
+ }
934
993
  });
935
994
  }
936
995
  lib({ level, lib, tags = {}, } = {}) {
@@ -956,12 +1015,55 @@ class JaypieLogger {
956
1015
  this._loggers.push(logger._logger);
957
1016
  return logger;
958
1017
  }
1018
+ report(data) {
1019
+ if (!this._sessionActive) {
1020
+ this.warn("[logger] report() called without active session");
1021
+ return;
1022
+ }
1023
+ for (const key of Object.keys(data)) {
1024
+ if (key in this._report) {
1025
+ this.warn(`[logger] Overwriting report key: ${key}`);
1026
+ }
1027
+ }
1028
+ Object.assign(this._report, data);
1029
+ }
1030
+ setup(tags) {
1031
+ if (this._sessionActive) {
1032
+ this.warn("[logger] setup() called while session already active");
1033
+ }
1034
+ this._errorCount = 0;
1035
+ this._report = {};
1036
+ this._sessionActive = true;
1037
+ this._warnCount = 0;
1038
+ if (tags) {
1039
+ this.tag(tags);
1040
+ }
1041
+ }
959
1042
  tag(tags) {
960
1043
  for (const logger of this._loggers) {
961
1044
  logger.tag(tags);
962
1045
  }
963
1046
  Object.assign(this._tags, tags);
964
1047
  }
1048
+ teardown() {
1049
+ if (!this._sessionActive) {
1050
+ return;
1051
+ }
1052
+ const finalReport = {
1053
+ ...this._report,
1054
+ log: {
1055
+ error: this._errorCount > 0,
1056
+ errors: this._errorCount,
1057
+ warn: this._warnCount > 0,
1058
+ warns: this._warnCount,
1059
+ },
1060
+ };
1061
+ this.info.var({ report: finalReport });
1062
+ this._errorCount = 0;
1063
+ this._report = {};
1064
+ this._sessionActive = false;
1065
+ this._warnCount = 0;
1066
+ }
965
1067
  untag(key) {
966
1068
  for (const logger of this._loggers) {
967
1069
  logger.untag(key);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/constants.ts","../../../src/pipelines.ts","../../../src/sanitizeAuth.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.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 DD_SOURCE: \"DD_SOURCE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n PROJECT_SOURCE: \"PROJECT_SOURCE\",\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","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\n//\n// Key-based pipelines (match on var key name)\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\nexport const pipelines = [axiosResponseVarPipeline];\n\n//\n// Type-based filters (run on any key, match on value shape)\n//\n\ninterface TypeFilter {\n detect: (value: unknown) => boolean;\n filter: (value: unknown) => unknown;\n}\n\n// Fetch Response\n\nfunction isFetchResponse(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const r = value as Record<string, unknown>;\n return !!(\n typeof r.ok === \"boolean\" &&\n typeof r.status === \"number\" &&\n typeof r.statusText === \"string\" &&\n \"headers\" in r &&\n \"body\" in r &&\n typeof r.url === \"string\" &&\n !(\"config\" in r) &&\n !(\"request\" in r)\n );\n}\n\nfunction headersToObject(headers: unknown): Record<string, string> | unknown {\n if (\n headers &&\n typeof headers === \"object\" &&\n typeof (headers as Record<string, unknown>).entries === \"function\"\n ) {\n const result: Record<string, string> = {};\n for (const [key, value] of (headers as Headers).entries()) {\n result[key] = value;\n }\n return result;\n }\n return headers;\n}\n\nfunction filterFetchResponse(value: unknown): unknown {\n const r = value as Record<string, unknown>;\n return {\n headers: headersToObject(r.headers),\n ok: r.ok,\n redirected: r.redirected,\n status: r.status,\n statusText: r.statusText,\n type: r.type,\n url: r.url,\n };\n}\n\n// Error\n\nfunction isError(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (value instanceof Error) {\n return true;\n }\n const i = value as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterError(value: unknown): unknown {\n const e = value 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\n// Type filter registry (order matters — first match wins)\n\nconst typeFilters: TypeFilter[] = [\n { detect: isFetchResponse, filter: filterFetchResponse },\n { detect: isError, filter: filterError },\n];\n\n//\n// Opaque object detection and generic extraction\n//\n\nfunction isOpaqueObject(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n // Plain objects are fine\n if (value.constructor === Object || value.constructor === undefined) {\n return false;\n }\n // If JSON.stringify produces \"{}\" the object has no own enumerable properties\n // and will log as useless \"[object Type]\"\n try {\n const json = JSON.stringify(value);\n return json === \"{}\" || json === \"[]\";\n } catch {\n return true;\n }\n}\n\nfunction extractOpaqueObject(value: unknown): Record<string, unknown> {\n const obj = value as object;\n const result: Record<string, unknown> = {};\n\n const ctorName = obj.constructor?.name;\n if (ctorName && ctorName !== \"Object\") {\n result._type = ctorName;\n }\n\n // If the object itself is map-like (Headers, URLSearchParams, FormData, etc.),\n // convert its entries directly\n const mapLike = obj as Record<string, unknown>;\n if (\n typeof mapLike.entries === \"function\" &&\n typeof mapLike.forEach === \"function\"\n ) {\n try {\n const entries = Object.fromEntries(\n (mapLike as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n return { ...result, ...entries };\n } catch {\n // Fall through to generic extraction\n }\n }\n\n // Collect readable non-function properties from the prototype chain\n let proto: object | null = obj;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === \"constructor\" || key in result) {\n continue;\n }\n try {\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc) continue;\n // Read getters and value properties from the original object\n const val = (obj as Record<string, unknown>)[key];\n if (typeof val === \"function\" || typeof val === \"symbol\") {\n continue;\n }\n // Skip streams and other non-serializable objects\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).pipe === \"function\"\n ) {\n continue;\n }\n // Convert iterable map-like objects (Headers, URLSearchParams, etc.)\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).entries === \"function\" &&\n typeof (val as Record<string, unknown>).forEach === \"function\"\n ) {\n result[key] = Object.fromEntries(\n (val as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n continue;\n }\n result[key] = val;\n } catch {\n // Property threw on access — skip\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n}\n\n//\n// Public API\n//\n\n/**\n * Filter a value by type, regardless of var key name.\n * Tries known type filters first, then falls back to generic\n * opaque object extraction for anything that would log as [object Type].\n */\nexport function filterByType(value: unknown): unknown {\n // Try known type filters\n for (const tf of typeFilters) {\n if (tf.detect(value)) {\n return tf.filter(value);\n }\n }\n // Generic fallback for opaque objects\n if (isOpaqueObject(value)) {\n return extractOpaqueObject(value);\n }\n return value;\n}\n\n// Legacy exports for key-based pipeline (axios only now)\nexport const errorVarPipeline: Pipeline = {\n filter: (item: unknown) => {\n if (!isError(item)) return item;\n return filterError(item);\n },\n key: \"error\",\n};\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: string;\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._ddsource =\n env[DATADOG_TRANSPORT.ENV.DD_SOURCE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SOURCE] ||\n \"nodejs\";\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 { message: __, status: _, ...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 { filterByType, pipelines } from \"./pipelines\";\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 levelField?: boolean | string;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: 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\nfunction resolveLevelField(value?: boolean | string): false | string {\n if (value === undefined) {\n const env = process.env.LOG_LEVEL_FIELD;\n if (env === undefined || env === \"\") return false;\n if (env === \"false\" || env === \"0\" || env === \"no\") return false;\n if (env === \"true\" || env === \"1\" || env === \"yes\") return \"level\";\n return env;\n }\n if (value === false) return false;\n if (value === true) return \"level\";\n return value;\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 private levelField: false | string;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n levelField,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.levelField = resolveLevelField(levelField);\n this.options = {\n format,\n level,\n levelField: this.levelField || undefined,\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 message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n if (this.levelField) {\n json[this.levelField] = logLevel;\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 let messageVal = msgObj[messageKey];\n\n for (const pipeline of pipelines) {\n if (messageKey === pipeline.key) {\n messageVal = pipeline.filter(messageVal);\n }\n }\n messageVal = filterByType(messageVal);\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n if (this.levelField) {\n json[this.levelField] = logLevel;\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","import { forceVar } from \"./forceVar\";\nimport { filterByType, 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 v = filterByType(v);\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 getDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\nimport { redactAuth, sanitizeAuth } from \"./sanitizeAuth\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n getDatadogTransport,\n isDatadogForwardingEnabled,\n redactAuth,\n sanitizeAuth,\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/pipelines.ts","../../../src/sanitizeAuth.ts","../../../src/datadogTransport.ts","../../../src/utils.ts","../../../src/Logger.ts","../../../src/logTags.ts","../../../src/forceVar.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 DD_SOURCE: \"DD_SOURCE\",\n FORWARDING: \"DATADOG_LOCAL_FORWARDING\",\n PROJECT_ENV: \"PROJECT_ENV\",\n PROJECT_HOST: \"PROJECT_HOST\",\n PROJECT_SERVICE: \"PROJECT_SERVICE\",\n PROJECT_SOURCE: \"PROJECT_SOURCE\",\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","interface Pipeline {\n key: string;\n filter: (value: unknown) => unknown;\n}\n\n//\n// Key-based pipelines (match on var key name)\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\nexport const pipelines = [axiosResponseVarPipeline];\n\n//\n// Type-based filters (run on any key, match on value shape)\n//\n\ninterface TypeFilter {\n detect: (value: unknown) => boolean;\n filter: (value: unknown) => unknown;\n}\n\n// Fetch Response\n\nfunction isFetchResponse(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const r = value as Record<string, unknown>;\n return !!(\n typeof r.ok === \"boolean\" &&\n typeof r.status === \"number\" &&\n typeof r.statusText === \"string\" &&\n \"headers\" in r &&\n \"body\" in r &&\n typeof r.url === \"string\" &&\n !(\"config\" in r) &&\n !(\"request\" in r)\n );\n}\n\nfunction headersToObject(headers: unknown): Record<string, string> | unknown {\n if (\n headers &&\n typeof headers === \"object\" &&\n typeof (headers as Record<string, unknown>).entries === \"function\"\n ) {\n const result: Record<string, string> = {};\n for (const [key, value] of (headers as Headers).entries()) {\n result[key] = value;\n }\n return result;\n }\n return headers;\n}\n\nfunction filterFetchResponse(value: unknown): unknown {\n const r = value as Record<string, unknown>;\n return {\n headers: headersToObject(r.headers),\n ok: r.ok,\n redirected: r.redirected,\n status: r.status,\n statusText: r.statusText,\n type: r.type,\n url: r.url,\n };\n}\n\n// Error\n\nfunction isError(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (value instanceof Error) {\n return true;\n }\n const i = value as Record<string, unknown>;\n if (i.isProjectError) {\n return true;\n }\n return false;\n}\n\nfunction filterError(value: unknown): unknown {\n const e = value 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\n// Type filter registry (order matters — first match wins)\n\nconst typeFilters: TypeFilter[] = [\n { detect: isFetchResponse, filter: filterFetchResponse },\n { detect: isError, filter: filterError },\n];\n\n//\n// Opaque object detection and generic extraction\n//\n\nfunction isOpaqueObject(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n // Plain objects are fine\n if (value.constructor === Object || value.constructor === undefined) {\n return false;\n }\n // If JSON.stringify produces \"{}\" the object has no own enumerable properties\n // and will log as useless \"[object Type]\"\n try {\n const json = JSON.stringify(value);\n return json === \"{}\" || json === \"[]\";\n } catch {\n return true;\n }\n}\n\nfunction extractOpaqueObject(value: unknown): Record<string, unknown> {\n const obj = value as object;\n const result: Record<string, unknown> = {};\n\n const ctorName = obj.constructor?.name;\n if (ctorName && ctorName !== \"Object\") {\n result._type = ctorName;\n }\n\n // If the object itself is map-like (Headers, URLSearchParams, FormData, etc.),\n // convert its entries directly\n const mapLike = obj as Record<string, unknown>;\n if (\n typeof mapLike.entries === \"function\" &&\n typeof mapLike.forEach === \"function\"\n ) {\n try {\n const entries = Object.fromEntries(\n (mapLike as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n return { ...result, ...entries };\n } catch {\n // Fall through to generic extraction\n }\n }\n\n // Collect readable non-function properties from the prototype chain\n let proto: object | null = obj;\n while (proto && proto !== Object.prototype) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === \"constructor\" || key in result) {\n continue;\n }\n try {\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc) continue;\n // Read getters and value properties from the original object\n const val = (obj as Record<string, unknown>)[key];\n if (typeof val === \"function\" || typeof val === \"symbol\") {\n continue;\n }\n // Skip streams and other non-serializable objects\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).pipe === \"function\"\n ) {\n continue;\n }\n // Convert iterable map-like objects (Headers, URLSearchParams, etc.)\n if (\n val &&\n typeof val === \"object\" &&\n typeof (val as Record<string, unknown>).entries === \"function\" &&\n typeof (val as Record<string, unknown>).forEach === \"function\"\n ) {\n result[key] = Object.fromEntries(\n (val as { entries: () => Iterable<[string, unknown]> }).entries(),\n );\n continue;\n }\n result[key] = val;\n } catch {\n // Property threw on access — skip\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n}\n\n//\n// Public API\n//\n\n/**\n * Filter a value by type, regardless of var key name.\n * Tries known type filters first, then falls back to generic\n * opaque object extraction for anything that would log as [object Type].\n */\nexport function filterByType(value: unknown): unknown {\n // Try known type filters\n for (const tf of typeFilters) {\n if (tf.detect(value)) {\n return tf.filter(value);\n }\n }\n // Generic fallback for opaque objects\n if (isOpaqueObject(value)) {\n return extractOpaqueObject(value);\n }\n return value;\n}\n\n// Legacy exports for key-based pipeline (axios only now)\nexport const errorVarPipeline: Pipeline = {\n filter: (item: unknown) => {\n if (!isError(item)) return item;\n return filterError(item);\n },\n key: \"error\",\n};\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\nconst REDACTED_KEYS = new Set([\n \"authorization\",\n \"x-service-key\",\n \"x-webhook-token\",\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 (REDACTED_KEYS.has(lower)) {\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 let clonedHeaders: Record<string, unknown> | undefined;\n for (const hKey of Object.keys(hdrs)) {\n if (REDACTED_KEYS.has(hKey.toLowerCase())) {\n if (!clonedHeaders) clonedHeaders = { ...hdrs };\n clonedHeaders[hKey] = redactAuth(hdrs[hKey]);\n }\n }\n if (clonedHeaders) {\n if (!clone) clone = { ...obj };\n clone[key] = clonedHeaders;\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: string;\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._ddsource =\n env[DATADOG_TRANSPORT.ENV.DD_SOURCE] ||\n env[DATADOG_TRANSPORT.ENV.PROJECT_SOURCE] ||\n \"nodejs\";\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 { message: __, status: _, ...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 { filterByType, pipelines } from \"./pipelines\";\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 levelField?: boolean | string;\n tags?: Tags;\n varLevel?: LogLevel;\n}\n\ninterface LogJson {\n data?: unknown;\n dataType?: 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\nfunction resolveLevelField(value?: boolean | string): false | string {\n if (value === undefined) {\n const env = process.env.LOG_LEVEL_FIELD;\n if (env === undefined || env === \"\") return false;\n if (env === \"false\" || env === \"0\" || env === \"no\") return false;\n if (env === \"true\" || env === \"1\" || env === \"yes\") return \"level\";\n return env;\n }\n if (value === false) return false;\n if (value === true) return \"level\";\n return value;\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 private levelField: false | string;\n\n constructor({\n format = (process.env.LOG_FORMAT as LogFormat) || DEFAULT.LEVEL,\n level = process.env.LOG_LEVEL || DEFAULT.LEVEL,\n levelField,\n tags = {},\n varLevel = process.env.LOG_VAR_LEVEL || DEFAULT.VAR_LEVEL,\n }: LoggerOptions = {}) {\n this.levelField = resolveLevelField(levelField);\n this.options = {\n format,\n level,\n levelField: this.levelField || undefined,\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 message,\n ...this.tags,\n };\n if (parses.parses) {\n json.data = parses.message;\n }\n if (this.levelField) {\n json[this.levelField] = logLevel;\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 let messageVal = msgObj[messageKey];\n\n for (const pipeline of pipelines) {\n if (messageKey === pipeline.key) {\n messageVal = pipeline.filter(messageVal);\n }\n }\n messageVal = filterByType(messageVal);\n\n const json: LogJson = {\n data: parse(messageVal),\n dataType: typeof messageVal,\n message: stringify(messageVal),\n var: messageKey,\n ...this.tags,\n };\n if (this.levelField) {\n json[this.levelField] = logLevel;\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","import { forceVar } from \"./forceVar\";\nimport { filterByType, 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 v = filterByType(v);\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 _errorCount: number = 0;\n private _logger: Logger;\n private _loggers: Logger[];\n private _params: JaypieLoggerOptions;\n private _report: Record<string, unknown> = {};\n private _sessionActive: boolean = false;\n private _tags: Record<string, string>;\n private _warnCount: number = 0;\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 if (this._sessionActive) this._errorCount++;\n this._logger.error(...args);\n }) as Logger[\"error\"];\n this.error.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._errorCount++;\n this._logger.error.var(messageObject, messageValue);\n };\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 if (this._sessionActive) this._warnCount++;\n this._logger.warn(...args);\n }) as Logger[\"warn\"];\n this.warn.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._warnCount++;\n this._logger.warn.var(messageObject, messageValue);\n };\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 // Reset session state\n this._errorCount = 0;\n this._report = {};\n this._sessionActive = false;\n this._warnCount = 0;\n\n const levels = [\n \"debug\",\n \"error\",\n \"fatal\",\n \"info\",\n \"trace\",\n \"warn\",\n ] as const;\n levels.forEach((lvl) => {\n if (lvl === \"error\") {\n this.error = ((...args: any[]) => {\n if (this._sessionActive) this._errorCount++;\n this._logger.error(...args);\n }) as any;\n this.error.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._errorCount++;\n this._logger.error.var(messageObject, messageValue);\n };\n } else if (lvl === \"warn\") {\n this.warn = ((...args: any[]) => {\n if (this._sessionActive) this._warnCount++;\n this._logger.warn(...args);\n }) as any;\n this.warn.var = (messageObject: unknown, messageValue?: unknown) => {\n if (this._sessionActive) this._warnCount++;\n this._logger.warn.var(messageObject, messageValue);\n };\n } else {\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\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 report(data: Record<string, unknown>): void {\n if (!this._sessionActive) {\n this.warn(\"[logger] report() called without active session\");\n return;\n }\n for (const key of Object.keys(data)) {\n if (key in this._report) {\n this.warn(`[logger] Overwriting report key: ${key}`);\n }\n }\n Object.assign(this._report, data);\n }\n\n public setup(tags?: Record<string, unknown>): void {\n if (this._sessionActive) {\n this.warn(\"[logger] setup() called while session already active\");\n }\n this._errorCount = 0;\n this._report = {};\n this._sessionActive = true;\n this._warnCount = 0;\n if (tags) {\n this.tag(tags);\n }\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 teardown(): void {\n if (!this._sessionActive) {\n return;\n }\n const finalReport = {\n ...this._report,\n log: {\n error: this._errorCount > 0,\n errors: this._errorCount,\n warn: this._warnCount > 0,\n warns: this._warnCount,\n },\n };\n this.info.var({ report: finalReport });\n this._errorCount = 0;\n this._report = {};\n this._sessionActive = false;\n this._warnCount = 0;\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 getDatadogTransport,\n isDatadogForwardingEnabled,\n} from \"./datadogTransport\";\nimport { redactAuth, sanitizeAuth } from \"./sanitizeAuth\";\n\nexport {\n FORMAT,\n LEVEL,\n Logger,\n _resetDatadogTransport,\n createLogger,\n getDatadogTransport,\n isDatadogForwardingEnabled,\n redactAuth,\n sanitizeAuth,\n};\n\nexport const log = createLogger();\n\nexport default log;\n"],"names":["envBoolean"],"mappings":";;;;AAAO,MAAM,OAAO,GAAG;AACrB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,OAAO;CACnB;AAEM,MAAM,YAAY,GAAG,UAAU;AAE/B,MAAM,KAAK,GAAG;AACnB,IAAA,GAAG,EAAE;QACH,YAAY,EAAE,CAAA,EAAG,YAAY,CAAA,sCAAA,CAAwC;QACrE,aAAa,EAAE,CAAA,EAAG,YAAY,CAAA,uCAAA,CAAyC;QACvE,WAAW,EAAE,CAAA,EAAG,YAAY,CAAA,8BAAA,CAAgC;QAC5D,iBAAiB,EAAE,CAAA,EAAG,YAAY,CAAA,+CAAA,CAAiD;AACpF,KAAA;CACF;AAEM,MAAM,MAAM,GAAG;AACpB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;;AAGP,MAAM,KAAK,GAAG;AACnB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;;AAGP,MAAM,YAAY,GAA2B;AAClD,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,IAAI,EAAE,EAAE;CACT;AAEM,MAAM,iBAAiB,GAAG;AAC/B,IAAA,GAAG,EAAE;AACH,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,UAAU,EAAE,0BAA0B;AACtC,QAAA,WAAW,EAAE,aAAa;AAC1B,QAAA,YAAY,EAAE,cAAc;AAC5B,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,cAAc,EAAE,gBAAgB;AACjC,KAAA;AACD,IAAA,iBAAiB,EAAE,IAAI;AACvB,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,cAAc,EAAE,GAAG;CACX;;ACxDV;AACA;AACA;AAEA,SAAS,eAAe,CAAC,QAAiB,EAAA;IACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrD,QAAA,OAAO,KAAK;IACd;IACA,MAAM,CAAC,GAAG,QAAmC;IAC7C,OAAO,CAAC,EACN,CAAC;AACD,QAAA,CAAC,CAAC,MAAM;AACR,QAAA,CAAC,CAAC,IAAI;AACN,QAAA,CAAC,CAAC,OAAO;AACT,QAAA,CAAC,CAAC,OAAO;AACT,QAAA,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,UAAU,CACb;AACH;AAEA,SAAS,mBAAmB,CAAC,QAAiB,EAAA;AAC5C,IAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AAC9B,QAAA,OAAO,QAAQ;IACjB;IACA,MAAM,CAAC,GAAG,QAAmC;AAC7C,IAAA,MAAM,WAAW,GAA4B;QAC3C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB;AACD,IAAA,IAAI,CAAC,CAAC,YAAY,EAAE;AAClB,QAAA,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;IAC3C;AACA,IAAA,OAAO,WAAW;AACpB;AAEO,MAAM,wBAAwB,GAAa;AAChD,IAAA,MAAM,EAAE,mBAAmB;AAC3B,IAAA,GAAG,EAAE,UAAU;CAChB;AAEM,MAAM,SAAS,GAAG,CAAC,wBAAwB,CAAC;AAWnD;AAEA,SAAS,eAAe,CAAC,KAAc,EAAA;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,QAAA,OAAO,KAAK;IACd;IACA,MAAM,CAAC,GAAG,KAAgC;IAC1C,OAAO,CAAC,EACN,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS;AACzB,QAAA,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;AAC5B,QAAA,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;AAChC,QAAA,SAAS,IAAI,CAAC;AACd,QAAA,MAAM,IAAI,CAAC;AACX,QAAA,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;AACzB,QAAA,EAAE,QAAQ,IAAI,CAAC,CAAC;AAChB,QAAA,EAAE,SAAS,IAAI,CAAC,CAAC,CAClB;AACH;AAEA,SAAS,eAAe,CAAC,OAAgB,EAAA;AACvC,IAAA,IACE,OAAO;QACP,OAAO,OAAO,KAAK,QAAQ;AAC3B,QAAA,OAAQ,OAAmC,CAAC,OAAO,KAAK,UAAU,EAClE;QACA,MAAM,MAAM,GAA2B,EAAE;AACzC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAK,OAAmB,CAAC,OAAO,EAAE,EAAE;AACzD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;QACrB;AACA,QAAA,OAAO,MAAM;IACf;AACA,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,mBAAmB,CAAC,KAAc,EAAA;IACzC,MAAM,CAAC,GAAG,KAAgC;IAC1C,OAAO;AACL,QAAA,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;QACnC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG;KACX;AACH;AAEA;AAEA,SAAS,OAAO,CAAC,KAAc,EAAA;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;IACA,MAAM,CAAC,GAAG,KAAgC;AAC1C,IAAA,IAAI,CAAC,CAAC,cAAc,EAAE;AACpB,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,WAAW,CAAC,KAAc,EAAA;IACjC,MAAM,CAAC,GAAG,KAAwC;AAClD,IAAA,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;KACb;AACD,IAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;IACzB;AACA,IAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;IACzB;AACA,IAAA,IAAI,CAAC,CAAC,cAAc,EAAE;AACpB,QAAA,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc;AACzC,QAAA,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACvB,QAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AACzB,QAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;IAC3B;AACA,IAAA,OAAO,OAAO;AAChB;AAEA;AAEA,MAAM,WAAW,GAAiB;AAChC,IAAA,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE;AACxD,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;CACzC;AAED;AACA;AACA;AAEA,SAAS,cAAc,CAAC,KAAc,EAAA;AACpC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvE,QAAA,OAAO,KAAK;IACd;;AAEA,IAAA,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;AACnE,QAAA,OAAO,KAAK;IACd;;;AAGA,IAAA,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAClC,QAAA,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;IACvC;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA,SAAS,mBAAmB,CAAC,KAAc,EAAA;IACzC,MAAM,GAAG,GAAG,KAAe;IAC3B,MAAM,MAAM,GAA4B,EAAE;AAE1C,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI;AACtC,IAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,CAAC,KAAK,GAAG,QAAQ;IACzB;;;IAIA,MAAM,OAAO,GAAG,GAA8B;AAC9C,IAAA,IACE,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU;AACrC,QAAA,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EACrC;AACA,QAAA,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAC/B,OAA0D,CAAC,OAAO,EAAE,CACtE;AACD,YAAA,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE;QAClC;AAAE,QAAA,MAAM;;QAER;IACF;;IAGA,IAAI,KAAK,GAAkB,GAAG;IAC9B,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE;QAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;YACnD,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,IAAI,MAAM,EAAE;gBAC1C;YACF;AACA,YAAA,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC;AACxD,gBAAA,IAAI,CAAC,IAAI;oBAAE;;AAEX,gBAAA,MAAM,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC;gBACjD,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;oBACxD;gBACF;;AAEA,gBAAA,IACE,GAAG;oBACH,OAAO,GAAG,KAAK,QAAQ;AACvB,oBAAA,OAAQ,GAA+B,CAAC,IAAI,KAAK,UAAU,EAC3D;oBACA;gBACF;;AAEA,gBAAA,IACE,GAAG;oBACH,OAAO,GAAG,KAAK,QAAQ;AACvB,oBAAA,OAAQ,GAA+B,CAAC,OAAO,KAAK,UAAU;AAC9D,oBAAA,OAAQ,GAA+B,CAAC,OAAO,KAAK,UAAU,EAC9D;AACA,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAC7B,GAAsD,CAAC,OAAO,EAAE,CAClE;oBACD;gBACF;AACA,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG;YACnB;AAAE,YAAA,MAAM;;YAER;QACF;AACA,QAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;IACtC;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;AACA;AACA;AAEA;;;;AAIG;AACG,SAAU,YAAY,CAAC,KAAc,EAAA;;AAEzC,IAAA,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE;AAC5B,QAAA,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACpB,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QACzB;IACF;;AAEA,IAAA,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAAC;IACnC;AACA,IAAA,OAAO,KAAK;AACd;;ACtQA;AACA;AACA;AACA;AAEM,SAAU,UAAU,CAAC,KAAc,EAAA;AACvC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAA,GAAA,EAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAE;IAC9B;AACA,IAAA,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACxD,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAE;AAChC;AAEA;AACA;AACA;AACA;AAEA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,eAAe;IACf,eAAe;IACf,iBAAiB;AAClB,CAAA,CAAC;AAEI,SAAU,YAAY,CAAC,KAAc,EAAA;AACzC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvE,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,GAAG,GAAG,KAAgC;AAC5C,IAAA,IAAI,KAA0C;IAE9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE;AAE/B,QAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE;YAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC;AAAO,aAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;YACxB,IACE,OAAO,OAAO,KAAK,QAAQ;AAC3B,gBAAA,OAAO,KAAK,IAAI;AAChB,gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB;gBACA,MAAM,IAAI,GAAG,OAAkC;AAC/C,gBAAA,IAAI,aAAkD;gBACtD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AACzC,wBAAA,IAAI,CAAC,aAAa;AAAE,4BAAA,aAAa,GAAG,EAAE,GAAG,IAAI,EAAE;wBAC/C,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9C;gBACF;gBACA,IAAI,aAAa,EAAE;AACjB,oBAAA,IAAI,CAAC,KAAK;AAAE,wBAAA,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE;AAC9B,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa;gBAC5B;YACF;QACF;IACF;IAEA,OAAO,KAAK,IAAI,KAAK;AACvB;;AC5DA;AACA,MAAM,eAAe,GAA2B;AAC9C,IAAA,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AACtB,IAAA,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AACtB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;AACpB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;AACpB,IAAA,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AACtB,IAAA,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU;CAC1B;AAED,SAASA,YAAU,CACjB,GAAW,EACX,EAAE,YAAY,EAA6B,EAAA;IAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,YAAY;AAC5C,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;AACjC,IAAA,OAAO,EACL,KAAK,KAAK,EAAE;AACZ,QAAA,KAAK,KAAK,GAAG;AACb,QAAA,KAAK,KAAK,GAAG;AACb,QAAA,KAAK,KAAK,OAAO;AACjB,QAAA,KAAK,KAAK,GAAG;QACb,KAAK,KAAK,IAAI,CACf;AACH;SAEgB,0BAA0B,GAAA;AACxC,IAAA,QACEA,YAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACrE,QAAA,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;AAEhD;AAYA,MAAM,mBAAmB,CAAA;AAUvB,IAAA,WAAA,GAAA;QATQ,IAAA,CAAA,kBAAkB,GAAwB,IAAI;QAC9C,IAAA,CAAA,OAAO,GAAsB,EAAE;QAC/B,IAAA,CAAA,WAAW,GAA0C,IAAI;AAQ/D,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG;AACvB,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,gBAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC;AACzC,gBAAA,QAAQ;AACV,QAAA,IAAI,CAAC,IAAI;AACP,YAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,gBAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;AACtC,gBAAA,OAAO;AACT,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;AAClC,gBAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC;AACvC,gBAAA,QAAQ,EAAE;AACZ,QAAA,IAAI,CAAC,QAAQ;AACX,YAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrC,gBAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC;AAC1C,gBAAA,SAAS;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,eAAe;AAElE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAK;YAClC,IAAI,CAAC,KAAK,EAAE;AACd,QAAA,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;;AAEvC,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,UAAU,EAAE;AACpE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QAC1B;;QAGA,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE;QAC5C,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACnD;IAEA,IAAI,CAAC,IAAY,EAAE,KAAa,EAAA;QAC9B,IAAI,OAAO,GAAW,IAAI;QAC1B,IAAI,KAAK,GAA4B,EAAE;AACvC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/B,gBAAA,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACxC,oBAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,wBAAA,OAAO,GAAG,MAAM,CAAC,OAAO;AACxB,wBAAA,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;wBAClD,KAAK,GAAG,IAAI;oBACd;gBACF;YACF;AAAE,YAAA,MAAM;;YAER;QACF;AACA,QAAA,MAAM,KAAK,GAAoB;YAC7B,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,YAAA,MAAM,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,CAAA,CAAE;YAC1B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,QAAQ;AACtB,YAAA,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,MAAM;AACxC,YAAA,GAAG,KAAK;SACT;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE;YAC3D,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;;AAG/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AAEjB,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AAClC,gBAAA,YAAY,EAAE,MAAM;AACrB,aAAA;AACD,YAAA,QAAQ,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,KAAK,CAAA,CAAE;AAC1C,YAAA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB,CAAC,WAAW;SACpC;AAED,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,MAAK;;AAElC,YAAA,CAAC,CAAC;AACF,YAAA,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;;AAErB,YAAA,CAAC,CAAC;AACF,YAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACf,GAAG,CAAC,GAAG,EAAE;QACX;AAAE,QAAA,MAAM;;QAER;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AACA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC7D,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;AACA,QAAA,IAAI;YACF,IAAI,CAAC,KAAK,EAAE;QACd;AAAE,QAAA,MAAM;;QAER;IACF;AACD;AAED,IAAI,SAAS,GAA+B,IAAI;SAEhC,mBAAmB,GAAA;IACjC,IAAI,CAAC,0BAA0B,EAAE;AAAE,QAAA,OAAO,IAAI;IAC9C,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,SAAS,GAAG,IAAI,mBAAmB,EAAE;IACvC;AACA,IAAA,OAAO,SAAS;AAClB;SAEgB,sBAAsB,GAAA;IACpC,IAAI,SAAS,EAAE;QACb,SAAS,CAAC,OAAO,EAAE;QACnB,SAAS,GAAG,IAAI;IAClB;AACF;;SC5LgB,WAAW,CAAC,KAAc,EAAE,YAAY,GAAG,EAAE,EAAA;IAC3D,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,MAAM;IACjC,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,MAAM,CAAC,YAAY,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3D,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;AAEM,SAAU,kBAAkB,CAAC,OAAgB,EAAA;IACjD,MAAM,MAAM,GAAG,CAAC;IAChB,MAAM,YAAY,GAAG,IAAI;IAEzB,QAAQ,OAAO,OAAO;AACpB,QAAA,KAAK,QAAQ;YACX,IAAI,OAAO,KAAK,EAAE;AAAE,gBAAA,OAAO,IAAI;AAC/B,YAAA,IAAI;AACF,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC;YAClE;AAAE,YAAA,MAAM;AACN,gBAAA,OAAO,OAAO;YAChB;AAEF,QAAA,KAAK,QAAQ;AACX,YAAA,IAAI;AACF,gBAAA,IACE,OAAO;AACP,oBAAA,OAAO,YAAY,MAAM;AACzB,oBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,oBAAA,OAAO,CAAC,WAAW;oBACnB,OAAO,CAAC,WAAW,KAAK,MAAM;AAC9B,oBAAA,UAAU,IAAI,OAAO;AACrB,oBAAA,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EACtC;AACA,oBAAA,OAAO,OAAO,CAAC,QAAQ,EAAE;gBAC3B;gBACA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC;YACtD;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AAC9B,oBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC,MAAM,CAC5D,CAAC,UAAkC,EAAE,GAAW,KAAI;AAClD,wBAAA,MAAM,WAAW,GAAG,EAAE,GAAG,UAAU,EAAE;wBACrC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CACtB,OAAmC,CAAC,GAAG,CAAC,CAC1C;AACD,wBAAA,OAAO,WAAW;oBACpB,CAAC,EACD,EAAE,CACH;AACD,oBAAA,OAAO,kBAAkB,CAAC,gBAAgB,CAAC;gBAC7C;AACA,gBAAA,MAAM,KAAK;YACb;AAEF,QAAA;AACE,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC;;AAE5B;AAEM,SAAU,SAAS,CAAC,GAAG,MAAiB,EAAA;AAC5C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;AAClC,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC;IAEA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAChD,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B;AAEM,SAAU,GAAG,CACjB,IAAsB,EACtB,EAAE,KAAK,GAAG,OAAO,EAAA,GAAyB,EAAE,EAAA;AAE5C,IAAA,IAAI,OAAe;AACnB,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;IAC3B;SAAO;QACL,OAAO,GAAG,IAAI;IAChB;AAEA,IAAA,IAAI,cAA4C;IAEhD,QAAQ,KAAK;QACX,KAAK,KAAK,CAAC,IAAI;AACb,YAAA,cAAc,GAAG,OAAO,CAAC,IAAI;YAC7B;QACF,KAAK,KAAK,CAAC,IAAI;AACb,YAAA,cAAc,GAAG,OAAO,CAAC,IAAI;YAC7B;QACF,KAAK,KAAK,CAAC,KAAK;QAChB,KAAK,KAAK,CAAC,KAAK;AACd,YAAA,cAAc,GAAG,OAAO,CAAC,KAAK;YAC9B;QACF,KAAK,KAAK,CAAC,KAAK;QAChB,KAAK,KAAK,CAAC,KAAK;AACd,YAAA,cAAc,GAAG,OAAO,CAAC,KAAK;YAC9B;AACF,QAAA;AACE,YAAA,cAAc,GAAG,OAAO,CAAC,GAAG;YAC5B;;AAGJ,IAAA,IAAI;QACF,cAAc,CAAC,OAAO,CAAC;IACzB;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACtB;AAEA,IAAA,IAAI;AACF,QAAA,MAAM,SAAS,GAAG,mBAAmB,EAAE;QACvC,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAChC;IACF;AAAE,IAAA,MAAM;;IAER;AACF;AAEM,SAAU,KAAK,CAAC,OAAgB,EAAA;AACpC,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,IAAI;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,OAAO;IAChB;AACF;AAEM,SAAU,QAAQ,CAAC,OAAgB,EAAA;AAIvC,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO;AACL,YAAA,MAAM,EAAE,KAAK;YACb,OAAO;SACR;IACH;AACA,IAAA,IAAI;QACF,OAAO;AACL,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;SAC7B;IACH;AAAE,IAAA,MAAM;QACN,OAAO;AACL,YAAA,MAAM,EAAE,KAAK;YACb,OAAO;SACR;IACH;AACF;;AClHA,SAAS,iBAAiB,CAAC,KAAwB,EAAA;AACjD,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe;AACvC,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAAE,YAAA,OAAO,KAAK;QACjD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK;QAChE,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK;AAAE,YAAA,OAAO,OAAO;AAClE,QAAA,OAAO,GAAG;IACZ;IACA,IAAI,KAAK,KAAK,KAAK;AAAE,QAAA,OAAO,KAAK;IACjC,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,OAAO;AAClC,IAAA,OAAO,KAAK;AACd;AAEA,MAAM,MAAM,CAAA;AAYV,IAAA,WAAA,CAAY,EACV,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,UAAwB,IAAI,OAAO,CAAC,KAAK,EAC/D,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,EAC9C,UAAU,EACV,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS,MACxC,EAAE,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG;YACb,MAAM;YACN,KAAK;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACxC,QAAQ;SACT;AAED,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;QACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AAC3D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AAE3D,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,QAAmE,CAAC;AAC3E,QAAA,IAAI,CAAC,GAAG,GAAI,cAA4B,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG;IACjE;AAEQ,IAAA,eAAe,CACrB,QAAgB,EAChB,MAAiB,EACjB,UAAkB,EAAA;AAElB,QAAA,MAAM,KAAK,GAAG,CAAC,GAAG,QAAmB,KAAU;YAC7C,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE;gBACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5C,gBAAA,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE;AAC1B,oBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;AACvC,oBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;AAChC,oBAAA,MAAM,IAAI,GAAY;wBACpB,OAAO;wBACP,GAAG,IAAI,CAAC,IAAI;qBACb;AACD,oBAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,wBAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;oBAC5B;AACA,oBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,wBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ;oBAClC;oBACA,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAChC;qBAAO;AACL,oBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;oBACvC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACnC;YACF;AACF,QAAA,CAAC;QAED,KAAK,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAAU;AACnE,YAAA,IAAI,aAAa,KAAK,SAAS,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACxC;AAEA,YAAA,IAAI,MAA+B;YAEnC,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,EAAE;AAC/D,gBAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;oBACrC,IAAI,YAAY,KAAK,SAAS;wBAAE,YAAY,GAAG,WAAW;oBAC1D,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE;gBACpD;qBAAO;oBACL,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AAChC,oBAAA,OAAO,KAAK,CAAC,aAAa,CAAC;gBAC7B;YACF;iBAAO;AACL,gBAAA,MAAM,GAAG,YAAY,CAAC,aAAa,CAA4B;YACjE;YAEA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AACjC,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC;YACtB;AAEA,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;AAClC,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC;YACtB;AAEA,YAAA,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE;AAC1B,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,gBAAA,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEnC,gBAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,oBAAA,IAAI,UAAU,KAAK,QAAQ,CAAC,GAAG,EAAE;AAC/B,wBAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC1C;gBACF;AACA,gBAAA,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AAErC,gBAAA,MAAM,IAAI,GAAY;AACpB,oBAAA,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC;oBACvB,QAAQ,EAAE,OAAO,UAAU;AAC3B,oBAAA,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;AAC9B,oBAAA,GAAG,EAAE,UAAU;oBACf,GAAG,IAAI,CAAC,IAAI;iBACb;AACD,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ;gBAClC;gBAEA,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE;oBACtD,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAChC;YACF;iBAAO;AACL,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC;YACtB;AACF,QAAA,CAAC;AAED,QAAA,OAAO,KAAkB;IAC3B;IAEO,GAAG,CAAC,GAAY,EAAE,KAAe,EAAA;QACtC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAChD;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,YAAA,CAAC,CAAC;YACF;QACF;AAEA,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC7B,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CACpC,GAA+B,CAAC,CAAC,CAAC,CACpC;AACH,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QAClC;IACF;AAEO,IAAA,KAAK,CAAC,GAAY,EAAA;AACvB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAChB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;YACF;QACF;AAEA,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;YACrB;QACF;AAEA,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACvC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC;IACF;IAEO,IAAI,CAAC,GAAY,EAAE,KAAe,EAAA;QACvC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACtB,QAAA,OAAO,MAAM;IACf;AACD;;ACnPK,SAAU,OAAO,CACrB,QAAiC,EAAA;AAMjC,IAAA,MAAM,EACJ,cAAc,EACd,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,GAChB,GAAG,OAAO,CAAC,GAAG;IAEf,MAAM,IAAI,GAA2B,EAAE;IAEvC,IAAI,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,cAAc;IAC9B;IACA,IAAI,WAAW,EAAE;AACf,QAAA,IAAI,CAAC,GAAG,GAAG,WAAW;IACxB;IACA,IAAI,WAAW,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW;IAC5B;IACA,IAAI,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,eAAe;IAChC;IACA,IAAI,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,eAAe;IAChC;IACA,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,eAAe,EAAE;QACtD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB;AAC7C,YAAA,eAAe,CAAW;IAC9B;IAEA,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,GAAG,QAAQ;KACZ;AACH;;ACxCM,SAAU,QAAQ,CACtB,GAAY,EACZ,KAAe,EAAA;AAEf,IAAA,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAC9B,QAAA,OAAO,EAAE;IACX;IACA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,GAA8B;QACvC;aAAO;AACL,YAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;QACvB;IACF;AACA,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;AAC/B,IAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAChC,QAAA,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE;IACzB;SAAO;AACL,QAAA,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE;IAC5B;AACF;;ACnBA,SAAS,eAAe,CAAC,QAAiC,EAAA;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B;AAEM,SAAU,MAAM,CAAC,GAAY,EAAE,KAAe,EAAA;AAClD,IAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAElD,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,KAAK,QAAQ,CAAC,GAAG,EAAE;AACtB,YAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxB;IACF;AACA,IAAA,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAEnB,IAAA,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;AACnB;;ACRA,SAAS,UAAU,CACjB,GAAW,EACX,EAAE,YAAY,EAA6B,EAAA;IAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,YAAY;AAC5C,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;AACjC,IAAA,OAAO,EACL,KAAK,KAAK,EAAE;AACZ,QAAA,KAAK,KAAK,GAAG;AACb,QAAA,KAAK,KAAK,GAAG;AACb,QAAA,KAAK,KAAK,OAAO;AACjB,QAAA,KAAK,KAAK,GAAG;QACb,KAAK,KAAK,IAAI,CACf;AACH;AAEA,MAAM,YAAY,CAAA;AAoBhB,IAAA,WAAA,CAAY,EACV,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAC7B,IAAI,GAAG,EAAE,MACc,EAAE,EAAA;QAbnB,IAAA,CAAA,WAAW,GAAW,CAAC;QAIvB,IAAA,CAAA,OAAO,GAA4B,EAAE;QACrC,IAAA,CAAA,cAAc,GAAY,KAAK;QAE/B,IAAA,CAAA,UAAU,GAAW,CAAC;QAO5B,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAEtB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK;QAEnC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,KAAK;AACjB,SAAA,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAE9B,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAW,KAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAoB;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;QAErD,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAW,KAAI;YAC/B,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,WAAW,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC7B,QAAA,CAAC,CAAoB;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAAI;YAClE,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,WAAW,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AACrD,QAAA,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAW,KAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAoB;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;QAErD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAW,KAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAmB;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;QAEpD,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAW,KAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAoB;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAC9D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;QAErD,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAW,KAAI;YAC9B,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,UAAU,EAAE;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,QAAA,CAAC,CAAmB;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAAI;YACjE,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,UAAU,EAAE;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AACpD,QAAA,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACzD;IAEO,IAAI,GAAA;AACT,QAAA,sBAAsB,EAAE;AACxB,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;gBACxD,MAAwC,CAAC,IAAI,EAAE;YAClD;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC,KAAK;QACnC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,KAAK;AACjB,SAAA,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;;AAGtB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AAEnB,QAAA,MAAM,MAAM,GAAG;YACb,OAAO;YACP,OAAO;YACP,OAAO;YACP,MAAM;YACN,OAAO;YACP,MAAM;SACE;AACV,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,YAAA,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAW,KAAI;oBAC/B,IAAI,IAAI,CAAC,cAAc;wBAAE,IAAI,CAAC,WAAW,EAAE;oBAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC7B,gBAAA,CAAC,CAAQ;gBACT,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAAI;oBAClE,IAAI,IAAI,CAAC,cAAc;wBAAE,IAAI,CAAC,WAAW,EAAE;oBAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AACrD,gBAAA,CAAC;YACH;AAAO,iBAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBACzB,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAW,KAAI;oBAC9B,IAAI,IAAI,CAAC,cAAc;wBAAE,IAAI,CAAC,UAAU,EAAE;oBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,gBAAA,CAAC,CAAQ;gBACT,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAAI;oBACjE,IAAI,IAAI,CAAC,cAAc;wBAAE,IAAI,CAAC,UAAU,EAAE;oBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AACpD,gBAAA,CAAC;YACH;iBAAO;gBACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAW,KAAI;oBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5B,gBAAA,CAAC,CAAQ;gBACT,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,aAAsB,EAAE,YAAsB,KAAI;AACjE,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AACpD,gBAAA,CAAC;YACH;AACF,QAAA,CAAC,CAAC;IACJ;IAEO,GAAG,CAAC,EACT,KAAK,EACL,GAAG,EACH,IAAI,GAAG,EAAE,GAAA,GAKP,EAAE,EAAA;AACJ,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;QACnD,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,CAAC,GAAG,GAAG,GAAG;QACnB;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,KAAK,EAAE,CAAC,MAAK;gBACX,IAAI,KAAK,EAAE;AACT,oBAAA,OAAO,KAAK;gBACd;AACA,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE;AAChC,oBAAA,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB;gBACrC;gBACA,IAAI,UAAU,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE;AACxD,oBAAA,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS;gBAC9B;gBACA,OAAO,KAAK,CAAC,MAAM;AACrB,YAAA,CAAC,GAAG;AACJ,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,QAAA,OAAO,MAAM;IACf;AAEO,IAAA,MAAM,CAAC,IAA6B,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC;YAC5D;QACF;QACA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,IAAI,CAAC,oCAAoC,GAAG,CAAA,CAAE,CAAC;YACtD;QACF;QACA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;IACnC;AAEO,IAAA,KAAK,CAAC,IAA8B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAC;QACnE;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACnB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAChB;IACF;AAEO,IAAA,GAAG,CAAC,IAA6B,EAAA;AACtC,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAClB;QACA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;IACjC;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB;QACF;AACA,QAAA,MAAM,WAAW,GAAG;YAClB,GAAG,IAAI,CAAC,OAAO;AACf,YAAA,GAAG,EAAE;AACH,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;gBAC3B,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,gBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC;gBACzB,KAAK,EAAE,IAAI,CAAC,UAAU;AACvB,aAAA;SACF;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;IACrB;AAEO,IAAA,KAAK,CAAC,GAAY,EAAA;AACvB,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACnB;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC,CAAC;QACJ;aAAO,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;YAClD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC7B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC;IACF;IAEO,IAAI,CAAC,GAAY,EAAE,KAAe,EAAA;AACvC,QAAA,IAAI,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE;AAC5D,YAAA,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E;QACH;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACrC;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,SAAA,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;QAC9C,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,QAAA,OAAO,MAAM;IACf;AACD;AAEK,SAAU,YAAY,CAAC,IAAA,GAA+B,EAAE,EAAA;AAC5D,IAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,IAAI;AACL,KAAA,CAAC;AACF,IAAA,OAAO,YAAY;AACrB;;ACxRO,MAAM,GAAG,GAAG,YAAY;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaypie/logger",
3
- "version": "1.2.12",
3
+ "version": "1.2.14",
4
4
  "description": "Logger utilities for Jaypie applications",
5
5
  "repository": {
6
6
  "type": "git",