logixia 2.0.4 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -2614
- package/dist/{async-context-B05ArHgM.mjs → async-context-COuvmwsS.mjs} +4 -6
- package/dist/async-context-COuvmwsS.mjs.map +1 -0
- package/dist/{async-context-DTQgi8f7.js → async-context-Dv0bmPC-.js} +4 -6
- package/dist/async-context-Dv0bmPC-.js.map +1 -0
- package/dist/{azure-monitor.transport-DV03Z5P4.d.ts → azure-monitor.transport-Bvf7Xegt.d.ts} +2 -2
- package/dist/{azure-monitor.transport-DV03Z5P4.d.ts.map → azure-monitor.transport-Bvf7Xegt.d.ts.map} +1 -1
- package/dist/{azure-monitor.transport-C7kYyZUW.d.mts → azure-monitor.transport-CbSHOnNX.d.mts} +2 -2
- package/dist/{azure-monitor.transport-C7kYyZUW.d.mts.map → azure-monitor.transport-CbSHOnNX.d.mts.map} +1 -1
- package/dist/{azure-monitor.transport-BPbgjATu.mjs → azure-monitor.transport-Coz5Gesu.mjs} +5 -5
- package/dist/azure-monitor.transport-Coz5Gesu.mjs.map +1 -0
- package/dist/{azure-monitor.transport-CwbOLZHB.js → azure-monitor.transport-D6ryi8rA.js} +5 -5
- package/dist/azure-monitor.transport-D6ryi8rA.js.map +1 -0
- package/dist/azure.d.mts +1 -1
- package/dist/azure.d.ts +1 -1
- package/dist/azure.js +1 -1
- package/dist/azure.mjs +1 -1
- package/dist/{batch-buffer-DT4gdXmf.js → batch-buffer-CFzKnuNZ.js} +3 -3
- package/dist/{batch-buffer-DT4gdXmf.js.map → batch-buffer-CFzKnuNZ.js.map} +1 -1
- package/dist/{batch-buffer-0fgLmIPn.mjs → batch-buffer-CQUWDMYq.mjs} +3 -3
- package/dist/{batch-buffer-0fgLmIPn.mjs.map → batch-buffer-CQUWDMYq.mjs.map} +1 -1
- package/dist/browser.d.mts +5 -5
- package/dist/browser.d.mts.map +1 -1
- package/dist/browser.d.ts +5 -5
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +72 -13
- package/dist/browser.js.map +1 -1
- package/dist/browser.mjs +72 -13
- package/dist/browser.mjs.map +1 -1
- package/dist/{builder-D70z6kjj.mjs → builder-C_TgxEOW.mjs} +106 -153
- package/dist/builder-C_TgxEOW.mjs.map +1 -0
- package/dist/{builder-M7NoaugM.js → builder-CzmM_4Ub.js} +110 -180
- package/dist/builder-CzmM_4Ub.js.map +1 -0
- package/dist/cli/index.js +157 -66
- package/dist/cloudwatch.d.mts +1 -1
- package/dist/cloudwatch.d.ts +1 -1
- package/dist/cloudwatch.js +1 -1
- package/dist/cloudwatch.mjs +1 -1
- package/dist/{cloudwatch.transport-Bf7L4I59.d.ts → cloudwatch.transport-CQyT6U91.d.ts} +2 -2
- package/dist/{cloudwatch.transport-Bf7L4I59.d.ts.map → cloudwatch.transport-CQyT6U91.d.ts.map} +1 -1
- package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts → cloudwatch.transport-CjVrI6S4.d.mts} +2 -2
- package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts.map → cloudwatch.transport-CjVrI6S4.d.mts.map} +1 -1
- package/dist/{cloudwatch.transport-BTvYfLs9.mjs → cloudwatch.transport-Cr1aeTGj.mjs} +6 -6
- package/dist/cloudwatch.transport-Cr1aeTGj.mjs.map +1 -0
- package/dist/{cloudwatch.transport-B2wKQFF7.js → cloudwatch.transport-D4G5xYfG.js} +6 -6
- package/dist/cloudwatch.transport-D4G5xYfG.js.map +1 -0
- package/dist/correlation.d.mts +10 -55
- package/dist/correlation.d.mts.map +1 -1
- package/dist/correlation.d.ts +10 -55
- package/dist/correlation.d.ts.map +1 -1
- package/dist/correlation.js +15 -13
- package/dist/correlation.js.map +1 -1
- package/dist/correlation.mjs +15 -13
- package/dist/correlation.mjs.map +1 -1
- package/dist/{entry-fields-RLd1jCoR.js → entry-fields-CVwoQplO.js} +8 -3
- package/dist/entry-fields-CVwoQplO.js.map +1 -0
- package/dist/{entry-fields-CGuvT2R0.mjs → entry-fields-DNTKQxoU.mjs} +8 -3
- package/dist/entry-fields-DNTKQxoU.mjs.map +1 -0
- package/dist/gcp.d.mts +1 -1
- package/dist/gcp.d.ts +1 -1
- package/dist/gcp.js +1 -1
- package/dist/gcp.mjs +1 -1
- package/dist/{gcp.transport-CFQfdAOK.d.ts → gcp.transport-BCIvdFV-.d.ts} +4 -4
- package/dist/{gcp.transport-CFQfdAOK.d.ts.map → gcp.transport-BCIvdFV-.d.ts.map} +1 -1
- package/dist/{gcp.transport-KZe9hCAR.js → gcp.transport-CVuRpchl.js} +20 -16
- package/dist/gcp.transport-CVuRpchl.js.map +1 -0
- package/dist/{gcp.transport-C5D72b1g.d.mts → gcp.transport-D9SdLPwP.d.mts} +4 -4
- package/dist/{gcp.transport-C5D72b1g.d.mts.map → gcp.transport-D9SdLPwP.d.mts.map} +1 -1
- package/dist/{gcp.transport-CGKopAhQ.mjs → gcp.transport-LLK2bw2-.mjs} +20 -16
- package/dist/gcp.transport-LLK2bw2-.mjs.map +1 -0
- package/dist/http-shapes-BnBkJcid.d.mts +32 -0
- package/dist/http-shapes-BnBkJcid.d.mts.map +1 -0
- package/dist/http-shapes-BnBkJcid.d.ts +32 -0
- package/dist/http-shapes-BnBkJcid.d.ts.map +1 -0
- package/dist/{index-xqaJtAZn.d.mts → index-BAkPHp5D.d.mts} +150 -8
- package/dist/index-BAkPHp5D.d.mts.map +1 -0
- package/dist/{index-DwozbmB4.d.ts → index-e7LowmAu.d.ts} +150 -8
- package/dist/index-e7LowmAu.d.ts.map +1 -0
- package/dist/index.d.mts +21 -65
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +21 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -21
- package/dist/index.mjs.map +1 -1
- package/dist/{internal-log-uCSd1PMc.mjs → internal-log-Cy5nF1ZL.mjs} +2 -81
- package/dist/internal-log-Cy5nF1ZL.mjs.map +1 -0
- package/dist/{internal-log-b0Vp4qrB.js → internal-log-DwqTjhpb.js} +1 -104
- package/dist/internal-log-DwqTjhpb.js.map +1 -0
- package/dist/{logitron-logger-D2B75Oc7.d.ts → logitron-logger-Qh3y9-WH.d.ts} +13 -100
- package/dist/logitron-logger-Qh3y9-WH.d.ts.map +1 -0
- package/dist/{logitron-logger-oEd6wNhf.d.mts → logitron-logger-sYuk8fOb.d.mts} +13 -100
- package/dist/logitron-logger-sYuk8fOb.d.mts.map +1 -0
- package/dist/middleware.d.mts +4 -17
- package/dist/middleware.d.mts.map +1 -1
- package/dist/middleware.d.ts +4 -17
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +9 -39
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.mjs +7 -37
- package/dist/middleware.mjs.map +1 -1
- package/dist/nest.d.mts +24 -8
- package/dist/nest.d.mts.map +1 -1
- package/dist/nest.d.ts +24 -8
- package/dist/nest.d.ts.map +1 -1
- package/dist/nest.js +140 -27
- package/dist/nest.js.map +1 -1
- package/dist/nest.mjs +140 -27
- package/dist/nest.mjs.map +1 -1
- package/dist/{transport.manager-DkcEOlqV.js → otel-ChnVYRLA.js} +214 -23
- package/dist/otel-ChnVYRLA.js.map +1 -0
- package/dist/{transport.manager-eZ_EeC00.mjs → otel-DOuwGPCd.mjs} +173 -24
- package/dist/otel-DOuwGPCd.mjs.map +1 -0
- package/dist/{request-trace-C_fvIDv4.mjs → request-trace-BgNykH9M.mjs} +1 -5
- package/dist/{request-trace-C_fvIDv4.mjs.map → request-trace-BgNykH9M.mjs.map} +1 -1
- package/dist/{request-trace-wTJdKp6-.js → request-trace-ByujsUZk.js} +1 -5
- package/dist/{request-trace-wTJdKp6-.js.map → request-trace-ByujsUZk.js.map} +1 -1
- package/dist/{safe-stringify-BMRl3EX3.mjs → safe-stringify--7gbe95n.mjs} +37 -12
- package/dist/safe-stringify--7gbe95n.mjs.map +1 -0
- package/dist/{safe-stringify-DLz1Kz3o.js → safe-stringify-CN7icp8S.js} +37 -12
- package/dist/safe-stringify-CN7icp8S.js.map +1 -0
- package/dist/{search-DUfWuzFP.js → search-CRjhHxe9.js} +269 -25
- package/dist/search-CRjhHxe9.js.map +1 -0
- package/dist/{search-CazwyX5Z.d.ts → search-D-8HJADE.d.mts} +5 -2
- package/dist/search-D-8HJADE.d.mts.map +1 -0
- package/dist/{search-CWMVYC-R.mjs → search-DAXKE-P9.mjs} +269 -25
- package/dist/search-DAXKE-P9.mjs.map +1 -0
- package/dist/{search-BH33XhuU.d.mts → search-DPwTKPve.d.ts} +5 -2
- package/dist/search-DPwTKPve.d.ts.map +1 -0
- package/dist/search.d.mts +1 -1
- package/dist/search.d.ts +1 -1
- package/dist/search.js +1 -1
- package/dist/search.mjs +1 -1
- package/dist/{secret-config-CBZBs0p1.js → secret-config-BvFl2dC8.js} +7 -7
- package/dist/secret-config-BvFl2dC8.js.map +1 -0
- package/dist/{secret-config-BegMLkYl.mjs → secret-config-ByGq7kJd.mjs} +5 -5
- package/dist/secret-config-ByGq7kJd.mjs.map +1 -0
- package/dist/sensitive-names-CHMowujD.js +276 -0
- package/dist/sensitive-names-CHMowujD.js.map +1 -0
- package/dist/sensitive-names-o__1PUUR.mjs +217 -0
- package/dist/sensitive-names-o__1PUUR.mjs.map +1 -0
- package/dist/{slack.transport-DxHOXlLu.d.mts → slack.transport-BDyENuR0.d.mts} +2 -2
- package/dist/{slack.transport-DxHOXlLu.d.mts.map → slack.transport-BDyENuR0.d.mts.map} +1 -1
- package/dist/{slack.transport-DrirgDNy.d.ts → slack.transport-C6E0l4kw.d.ts} +2 -2
- package/dist/{slack.transport-DrirgDNy.d.ts.map → slack.transport-C6E0l4kw.d.ts.map} +1 -1
- package/dist/{slack.transport-Ce96JBDk.mjs → slack.transport-CSj1j0_X.mjs} +66 -15
- package/dist/slack.transport-CSj1j0_X.mjs.map +1 -0
- package/dist/{slack.transport-Dlx3xvb7.js → slack.transport-zLQ9MGxS.js} +67 -16
- package/dist/slack.transport-zLQ9MGxS.js.map +1 -0
- package/dist/testing.d.mts +11 -4
- package/dist/testing.d.mts.map +1 -1
- package/dist/testing.d.ts +11 -4
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +38 -3
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +38 -3
- package/dist/testing.mjs.map +1 -1
- package/dist/{transport.types-BJVL1QQl.d.ts → transport.types-CzJq4IrF.d.mts} +14 -3
- package/dist/transport.types-CzJq4IrF.d.mts.map +1 -0
- package/dist/{transport.types-BJVL1QQl.d.mts → transport.types-CzJq4IrF.d.ts} +14 -3
- package/dist/transport.types-CzJq4IrF.d.ts.map +1 -0
- package/dist/transports.d.mts +25 -13
- package/dist/transports.d.mts.map +1 -1
- package/dist/transports.d.ts +25 -13
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +15 -15
- package/dist/transports.mjs +6 -6
- package/dist/worker-entry.js +130 -25
- package/dist/worker.d.mts +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +1 -1
- package/dist/worker.mjs +1 -1
- package/dist/{worker.transport-BuPwBi3d.d.ts → worker.transport-B9mCQSM1.d.ts} +7 -2
- package/dist/worker.transport-B9mCQSM1.d.ts.map +1 -0
- package/dist/{worker.transport-hJay1wxA.d.mts → worker.transport-Bl8lFRck.d.mts} +7 -2
- package/dist/worker.transport-Bl8lFRck.d.mts.map +1 -0
- package/dist/{worker.transport-DLVA4y2e.mjs → worker.transport-D78xhNhB.mjs} +13 -10
- package/dist/worker.transport-D78xhNhB.mjs.map +1 -0
- package/dist/{worker.transport-C6GNl_r2.js → worker.transport-DQDv1nAJ.js} +13 -10
- package/dist/worker.transport-DQDv1nAJ.js.map +1 -0
- package/package.json +33 -65
- package/dist/async-context-B05ArHgM.mjs.map +0 -1
- package/dist/async-context-DTQgi8f7.js.map +0 -1
- package/dist/azure-monitor.transport-BPbgjATu.mjs.map +0 -1
- package/dist/azure-monitor.transport-CwbOLZHB.js.map +0 -1
- package/dist/builder-D70z6kjj.mjs.map +0 -1
- package/dist/builder-M7NoaugM.js.map +0 -1
- package/dist/cloudwatch.transport-B2wKQFF7.js.map +0 -1
- package/dist/cloudwatch.transport-BTvYfLs9.mjs.map +0 -1
- package/dist/entry-fields-CGuvT2R0.mjs.map +0 -1
- package/dist/entry-fields-RLd1jCoR.js.map +0 -1
- package/dist/gcp.transport-CGKopAhQ.mjs.map +0 -1
- package/dist/gcp.transport-KZe9hCAR.js.map +0 -1
- package/dist/index-DwozbmB4.d.ts.map +0 -1
- package/dist/index-xqaJtAZn.d.mts.map +0 -1
- package/dist/internal-log-b0Vp4qrB.js.map +0 -1
- package/dist/internal-log-uCSd1PMc.mjs.map +0 -1
- package/dist/logitron-logger-D2B75Oc7.d.ts.map +0 -1
- package/dist/logitron-logger-oEd6wNhf.d.mts.map +0 -1
- package/dist/safe-stringify-BMRl3EX3.mjs.map +0 -1
- package/dist/safe-stringify-DLz1Kz3o.js.map +0 -1
- package/dist/search-BH33XhuU.d.mts.map +0 -1
- package/dist/search-CWMVYC-R.mjs.map +0 -1
- package/dist/search-CazwyX5Z.d.ts.map +0 -1
- package/dist/search-DUfWuzFP.js.map +0 -1
- package/dist/secret-config-BegMLkYl.mjs.map +0 -1
- package/dist/secret-config-CBZBs0p1.js.map +0 -1
- package/dist/slack.transport-Ce96JBDk.mjs.map +0 -1
- package/dist/slack.transport-Dlx3xvb7.js.map +0 -1
- package/dist/transport.manager-DkcEOlqV.js.map +0 -1
- package/dist/transport.manager-eZ_EeC00.mjs.map +0 -1
- package/dist/transport.types-BJVL1QQl.d.mts.map +0 -1
- package/dist/transport.types-BJVL1QQl.d.ts.map +0 -1
- package/dist/worker.transport-BuPwBi3d.d.ts.map +0 -1
- package/dist/worker.transport-C6GNl_r2.js.map +0 -1
- package/dist/worker.transport-DLVA4y2e.mjs.map +0 -1
- package/dist/worker.transport-hJay1wxA.d.mts.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { o as TraceContext } from "./request-trace-
|
|
3
|
-
import { t as LogixiaContext } from "./async-context-
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
1
|
+
import { l as assignOwn, r as SENSITIVE_KEY_NAMES } from "./sensitive-names-o__1PUUR.mjs";
|
|
2
|
+
import { o as TraceContext } from "./request-trace-BgNykH9M.mjs";
|
|
3
|
+
import { t as LogixiaContext } from "./async-context-COuvmwsS.mjs";
|
|
4
|
+
import { n as protectSecrets } from "./secret-config-ByGq7kJd.mjs";
|
|
5
|
+
import { n as internalLog, r as internalWarn, t as internalError } from "./internal-log-Cy5nF1ZL.mjs";
|
|
6
6
|
import { t as safeToString } from "./coerce.utils-B_rEudCn.mjs";
|
|
7
|
-
import { i as stringifyForLog } from "./safe-stringify
|
|
8
|
-
import {
|
|
7
|
+
import { i as stringifyForLog } from "./safe-stringify--7gbe95n.mjs";
|
|
8
|
+
import { c as TransportManager, n as _getOtelPayloadIfEnabled, r as _isOtelBridgeEnabled, v as stripControlChars } from "./otel-DOuwGPCd.mjs";
|
|
9
9
|
import buildFastStringify from "fast-json-stringify";
|
|
10
10
|
import { constants } from "node:os";
|
|
11
11
|
// src/types/index.ts
|
|
@@ -243,11 +243,10 @@ function _serializeError(error, includeStack, maxDepth, excludeFields, depth, se
|
|
|
243
243
|
]);
|
|
244
244
|
for (const key of Object.getOwnPropertyNames(error)) {
|
|
245
245
|
if (skip.has(key)) continue;
|
|
246
|
-
if (key === "__proto__" || key === "constructor" || key === "prototype") continue;
|
|
247
246
|
try {
|
|
248
|
-
serialized
|
|
247
|
+
assignOwn(serialized, key, serializeValue(errorRecord[key], maxDepth - depth - 1, seen));
|
|
249
248
|
} catch {
|
|
250
|
-
serialized
|
|
249
|
+
assignOwn(serialized, key, "[Unserializable]");
|
|
251
250
|
}
|
|
252
251
|
}
|
|
253
252
|
return serialized;
|
|
@@ -282,13 +281,10 @@ function serializeValue(value, remainingDepth, seen) {
|
|
|
282
281
|
if (seen.has(value)) return "[Circular]";
|
|
283
282
|
seen.add(value);
|
|
284
283
|
const out = {};
|
|
285
|
-
for (const [k, v] of Object.entries(value)) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
} catch {
|
|
290
|
-
out[k] = "[Unserializable]";
|
|
291
|
-
}
|
|
284
|
+
for (const [k, v] of Object.entries(value)) try {
|
|
285
|
+
assignOwn(out, k, serializeValue(v, remainingDepth - 1, seen));
|
|
286
|
+
} catch {
|
|
287
|
+
assignOwn(out, k, "[Unserializable]");
|
|
292
288
|
}
|
|
293
289
|
return out;
|
|
294
290
|
}
|
|
@@ -314,111 +310,6 @@ function normalizeError(error) {
|
|
|
314
310
|
}
|
|
315
311
|
return new Error(String(error));
|
|
316
312
|
}
|
|
317
|
-
// src/utils/otel.ts
|
|
318
|
-
let _otelApi;
|
|
319
|
-
function tryLoadOtelApi() {
|
|
320
|
-
if (_otelApi !== void 0) return _otelApi;
|
|
321
|
-
try {
|
|
322
|
-
_otelApi = __require("@opentelemetry/api");
|
|
323
|
-
return _otelApi;
|
|
324
|
-
} catch {
|
|
325
|
-
_otelApi = null;
|
|
326
|
-
return null;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Read the currently active OTel span context (if any) and return its fields
|
|
331
|
-
* in a plain object suitable for spreading into a log entry.
|
|
332
|
-
*
|
|
333
|
-
* Returns `undefined` when:
|
|
334
|
-
* - `@opentelemetry/api` is not installed
|
|
335
|
-
* - No active span exists (root context)
|
|
336
|
-
* - The span context is invalid (all-zeros)
|
|
337
|
-
*/
|
|
338
|
-
function getActiveOtelContext(opts = {}) {
|
|
339
|
-
const api = tryLoadOtelApi();
|
|
340
|
-
if (!api) return void 0;
|
|
341
|
-
try {
|
|
342
|
-
const ctx = api.context.active();
|
|
343
|
-
const sc = api.trace.getSpanContext(ctx);
|
|
344
|
-
if (!sc || !api.trace.isSpanContextValid(sc)) return void 0;
|
|
345
|
-
const isSampled = (sc.traceFlags & api.trace.TraceFlags.SAMPLED) === api.trace.TraceFlags.SAMPLED;
|
|
346
|
-
if (opts.sampledOnly && !isSampled) return void 0;
|
|
347
|
-
return {
|
|
348
|
-
traceId: sc.traceId,
|
|
349
|
-
spanId: sc.spanId,
|
|
350
|
-
traceFlags: sc.traceFlags,
|
|
351
|
-
isSampled
|
|
352
|
-
};
|
|
353
|
-
} catch {
|
|
354
|
-
return;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Returns a metadata object with OTel context fields ready to merge into a log call,
|
|
359
|
-
* using the configured field names.
|
|
360
|
-
*
|
|
361
|
-
* Returns `{}` when no active span exists (safe to spread unconditionally).
|
|
362
|
-
*
|
|
363
|
-
* @example
|
|
364
|
-
* ```ts
|
|
365
|
-
* await logger.info('Payment processed', {
|
|
366
|
-
* ...getOtelMetaFields(),
|
|
367
|
-
* orderId: 'ord_123',
|
|
368
|
-
* });
|
|
369
|
-
* ```
|
|
370
|
-
*/
|
|
371
|
-
function getOtelMetaFields(opts = {}) {
|
|
372
|
-
const { traceIdField = "traceId", spanIdField = "spanId", traceFlagsField = "traceFlags" } = opts;
|
|
373
|
-
const ctx = getActiveOtelContext(opts);
|
|
374
|
-
if (!ctx) return {};
|
|
375
|
-
return {
|
|
376
|
-
[traceIdField]: ctx.traceId,
|
|
377
|
-
[spanIdField]: ctx.spanId,
|
|
378
|
-
[traceFlagsField]: ctx.traceFlags
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
|
-
let _bridgeOptions = null;
|
|
382
|
-
/**
|
|
383
|
-
* Initialise the global OTel bridge.
|
|
384
|
-
*
|
|
385
|
-
* Once called, logixia's internal log pipeline checks for an active OTel span
|
|
386
|
-
* on **every** log call and automatically merges the span context into the
|
|
387
|
-
* entry's metadata — no per-call wiring needed.
|
|
388
|
-
*
|
|
389
|
-
* Call once at app startup, **after** the OTel SDK has been initialised:
|
|
390
|
-
* ```ts
|
|
391
|
-
* import { initOtelBridge } from 'logixia';
|
|
392
|
-
* initOtelBridge();
|
|
393
|
-
* ```
|
|
394
|
-
*/
|
|
395
|
-
function initOtelBridge(opts = {}) {
|
|
396
|
-
_bridgeOptions = opts;
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* @internal
|
|
400
|
-
* True when initOtelBridge() has been called. Lets the logger hot path skip the
|
|
401
|
-
* `_getOtelPayloadIfEnabled()` call (and its `{}` allocation + Object.keys) on
|
|
402
|
-
* every log when the bridge is off — the overwhelmingly common case.
|
|
403
|
-
*/
|
|
404
|
-
function _isOtelBridgeEnabled() {
|
|
405
|
-
return _bridgeOptions !== null;
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* @internal
|
|
409
|
-
* Used by the core logger to inject OTel context when the bridge is active.
|
|
410
|
-
* Returns `{}` when the bridge is not initialised or no active span exists.
|
|
411
|
-
*/
|
|
412
|
-
function _getOtelPayloadIfEnabled() {
|
|
413
|
-
if (!_bridgeOptions) return {};
|
|
414
|
-
return getOtelMetaFields(_bridgeOptions);
|
|
415
|
-
}
|
|
416
|
-
/**
|
|
417
|
-
* Disable the OTel bridge (useful for tests).
|
|
418
|
-
*/
|
|
419
|
-
function disableOtelBridge() {
|
|
420
|
-
_bridgeOptions = null;
|
|
421
|
-
}
|
|
422
313
|
// src/utils/redact.utils.ts
|
|
423
314
|
const DEFAULT_CENSOR = "[REDACTED]";
|
|
424
315
|
/** Maximum nesting depth walked; deeper values are replaced with a marker. */
|
|
@@ -620,10 +511,9 @@ function walkRecord(obj, state, fullPath, bare, depth) {
|
|
|
620
511
|
let result;
|
|
621
512
|
const entries = Object.entries(obj);
|
|
622
513
|
for (const [index, [key, value]] of entries.entries()) {
|
|
623
|
-
const
|
|
624
|
-
|
|
625
|
-
if (
|
|
626
|
-
if (result && !forbidden) result[key] = next;
|
|
514
|
+
const next = walkValue(value, state, joinPath(fullPath, key), joinPath(bare, key), depth);
|
|
515
|
+
if (next !== value && !result) result = Object.fromEntries(entries.slice(0, index));
|
|
516
|
+
if (result) assignOwn(result, key, next);
|
|
627
517
|
}
|
|
628
518
|
return result ?? obj;
|
|
629
519
|
}
|
|
@@ -1035,6 +925,48 @@ function resetShutdownHandlers() {
|
|
|
1035
925
|
shutdownHandlerRegistered = false;
|
|
1036
926
|
shutdownInProgress = false;
|
|
1037
927
|
}
|
|
928
|
+
const RESERVED = /* @__PURE__ */ new Set([
|
|
929
|
+
"logLevel",
|
|
930
|
+
"time",
|
|
931
|
+
"timeEnd",
|
|
932
|
+
"timeAsync",
|
|
933
|
+
"setLevel",
|
|
934
|
+
"getLevel",
|
|
935
|
+
"setNamespaceLevels",
|
|
936
|
+
"patchNamespaceLevels",
|
|
937
|
+
"getNamespaceLevels",
|
|
938
|
+
"setContext",
|
|
939
|
+
"getContext",
|
|
940
|
+
"enableField",
|
|
941
|
+
"disableField",
|
|
942
|
+
"isFieldEnabled",
|
|
943
|
+
"getFieldState",
|
|
944
|
+
"resetFieldState",
|
|
945
|
+
"enableTransportLevelPrompting",
|
|
946
|
+
"disableTransportLevelPrompting",
|
|
947
|
+
"setTransportLevels",
|
|
948
|
+
"getTransportLevels",
|
|
949
|
+
"clearTransportLevelPreferences",
|
|
950
|
+
"getAvailableTransports",
|
|
951
|
+
"child",
|
|
952
|
+
"flush",
|
|
953
|
+
"healthCheck",
|
|
954
|
+
"close",
|
|
955
|
+
"use",
|
|
956
|
+
"unuse"
|
|
957
|
+
]);
|
|
958
|
+
/**
|
|
959
|
+
* Warn when `levels` defines a level named like a logger method (e.g. `flush`, `child`).
|
|
960
|
+
* The method keeps its normal behaviour and no level shortcut is installed for that
|
|
961
|
+
* name; log at it with `logger.logLevel(name, ...)` or pick a different level name.
|
|
962
|
+
* Returns the clashing names.
|
|
963
|
+
*/
|
|
964
|
+
function warnOnReservedLevelNames(levels) {
|
|
965
|
+
if (!levels) return [];
|
|
966
|
+
const clashes = Object.keys(levels).filter((name) => RESERVED.has(name));
|
|
967
|
+
if (clashes.length > 0) internalWarn(`levelOptions.levels uses reserved logger method name(s): ${clashes.join(", ")}. No level shortcut is created for them; use logger.logLevel(name, ...) or rename the level.`);
|
|
968
|
+
return clashes;
|
|
969
|
+
}
|
|
1038
970
|
// src/core/logitron-logger.ts
|
|
1039
971
|
/**
|
|
1040
972
|
* Core Logixia Logger implementation
|
|
@@ -1155,7 +1087,13 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1155
1087
|
this._formattedLevels = /* @__PURE__ */ new Map();
|
|
1156
1088
|
this._formattedAppName = "";
|
|
1157
1089
|
this._hasRedact = false;
|
|
1090
|
+
this._nsSeenVersion = 0;
|
|
1158
1091
|
this._parent = parent;
|
|
1092
|
+
this._nsStore = parent ? parent._nsStore : {
|
|
1093
|
+
levels: { ...config.namespaceLevels },
|
|
1094
|
+
version: 0
|
|
1095
|
+
};
|
|
1096
|
+
this._nsSeenVersion = this._nsStore.version;
|
|
1159
1097
|
this._pluginRegistry = parent ? parent._pluginRegistry : new PluginRegistry();
|
|
1160
1098
|
const defaultConfig = {
|
|
1161
1099
|
appName: "App",
|
|
@@ -1211,14 +1149,14 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1211
1149
|
this.transportManager = parent.transportManager;
|
|
1212
1150
|
this._sampler = parent._sampler;
|
|
1213
1151
|
} else if (this.config.transports) {
|
|
1214
|
-
var _this$config$levelOpt;
|
|
1152
|
+
var _this$config$levelOpt, _this$config$levelOpt2;
|
|
1215
1153
|
const transportsWithColors = { ...this.config.transports };
|
|
1216
1154
|
const userColors = (_this$config$levelOpt = this.config.levelOptions) === null || _this$config$levelOpt === void 0 ? void 0 : _this$config$levelOpt.colors;
|
|
1217
1155
|
if (userColors && transportsWithColors.console) transportsWithColors.console = {
|
|
1218
1156
|
...typeof transportsWithColors.console === "object" ? transportsWithColors.console : {},
|
|
1219
1157
|
levelColors: userColors
|
|
1220
1158
|
};
|
|
1221
|
-
this.transportManager = new TransportManager(transportsWithColors);
|
|
1159
|
+
this.transportManager = new TransportManager(transportsWithColors, (_this$config$levelOpt2 = this.config.levelOptions) === null || _this$config$levelOpt2 === void 0 ? void 0 : _this$config$levelOpt2.levels);
|
|
1222
1160
|
}
|
|
1223
1161
|
if (!parent && this.config.sampling) this._sampler = new Sampler(this.config.sampling, (stats) => {
|
|
1224
1162
|
process.stdout.write(JSON.stringify({
|
|
@@ -1245,8 +1183,9 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1245
1183
|
});
|
|
1246
1184
|
}
|
|
1247
1185
|
createCustomLevelMethods() {
|
|
1248
|
-
var _this$config$
|
|
1249
|
-
|
|
1186
|
+
var _this$config$levelOpt3, _this$config$levelOpt4;
|
|
1187
|
+
warnOnReservedLevelNames((_this$config$levelOpt3 = this.config.levelOptions) === null || _this$config$levelOpt3 === void 0 ? void 0 : _this$config$levelOpt3.levels);
|
|
1188
|
+
if ((_this$config$levelOpt4 = this.config.levelOptions) === null || _this$config$levelOpt4 === void 0 ? void 0 : _this$config$levelOpt4.levels) {
|
|
1250
1189
|
for (const levelName of Object.keys(this.config.levelOptions.levels)) if (!this[levelName.toLowerCase()]) this[levelName.toLowerCase()] = async (message, data) => {
|
|
1251
1190
|
await this.logLevel(levelName.toLowerCase(), message, data);
|
|
1252
1191
|
};
|
|
@@ -1257,8 +1196,8 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1257
1196
|
* Keeps the actual log() call free of allocations in the common case.
|
|
1258
1197
|
*/
|
|
1259
1198
|
_buildPerfCaches() {
|
|
1260
|
-
var _this$config$
|
|
1261
|
-
const customLevelEntries = Object.entries(((_this$config$
|
|
1199
|
+
var _this$config$levelOpt5, _this$config$format, _this$config$redact$p, _this$config$redact$p2;
|
|
1200
|
+
const customLevelEntries = Object.entries(((_this$config$levelOpt5 = this.config.levelOptions) === null || _this$config$levelOpt5 === void 0 ? void 0 : _this$config$levelOpt5.levels) ?? {});
|
|
1262
1201
|
this._levelValues = new Map([
|
|
1263
1202
|
[LogLevel.ERROR, 0],
|
|
1264
1203
|
[LogLevel.WARN, 1],
|
|
@@ -1327,8 +1266,8 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1327
1266
|
for (const [lvl] of this._levelValues) {
|
|
1328
1267
|
const upper = lvl.toUpperCase();
|
|
1329
1268
|
if (colorize && this._fieldCache.get("level") !== false) {
|
|
1330
|
-
var _this$config$
|
|
1331
|
-
let colorName = (_this$config$
|
|
1269
|
+
var _this$config$levelOpt6;
|
|
1270
|
+
let colorName = (_this$config$levelOpt6 = this.config.levelOptions) === null || _this$config$levelOpt6 === void 0 || (_this$config$levelOpt6 = _this$config$levelOpt6.colors) === null || _this$config$levelOpt6 === void 0 ? void 0 : _this$config$levelOpt6[lvl];
|
|
1332
1271
|
if (!colorName) {
|
|
1333
1272
|
if (_BUILTIN_LEVELS.has(lvl)) colorName = "white";
|
|
1334
1273
|
else {
|
|
@@ -1462,8 +1401,8 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1462
1401
|
* else a `NODE_ENV` default (`debug` in development, `warn` in test), else `info`.
|
|
1463
1402
|
*/
|
|
1464
1403
|
getLevel() {
|
|
1465
|
-
var _this$config$
|
|
1466
|
-
return ((_this$config$
|
|
1404
|
+
var _this$config$levelOpt7;
|
|
1405
|
+
return ((_this$config$levelOpt7 = this.config.levelOptions) === null || _this$config$levelOpt7 === void 0 ? void 0 : _this$config$levelOpt7.level) ?? LogLevel.INFO;
|
|
1467
1406
|
}
|
|
1468
1407
|
_validLevelList() {
|
|
1469
1408
|
return [...this._levelValues.keys()].join(", ");
|
|
@@ -1492,6 +1431,10 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1492
1431
|
* (flip a module's verbosity live to chase a bug without raising global
|
|
1493
1432
|
* volume). The new map fully replaces the previous one.
|
|
1494
1433
|
*
|
|
1434
|
+
* The map is shared by a logger and all its `child()` loggers: calling this on
|
|
1435
|
+
* a child changes the whole family, and existing children pick the change up on
|
|
1436
|
+
* their next log call.
|
|
1437
|
+
*
|
|
1495
1438
|
* @example
|
|
1496
1439
|
* ```ts
|
|
1497
1440
|
* // Turn on debug for the DB layer only, live:
|
|
@@ -1499,20 +1442,26 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1499
1442
|
* ```
|
|
1500
1443
|
*/
|
|
1501
1444
|
setNamespaceLevels(levels) {
|
|
1502
|
-
this.
|
|
1503
|
-
this.
|
|
1445
|
+
this._nsStore.levels = { ...levels };
|
|
1446
|
+
this._nsStore.version++;
|
|
1447
|
+
this._syncNamespaceLevels();
|
|
1504
1448
|
}
|
|
1505
1449
|
/** Merge entries into the existing per-namespace level map at runtime. */
|
|
1506
1450
|
patchNamespaceLevels(levels) {
|
|
1507
|
-
this.
|
|
1508
|
-
...this.
|
|
1451
|
+
this._nsStore.levels = {
|
|
1452
|
+
...this._nsStore.levels,
|
|
1509
1453
|
...levels
|
|
1510
1454
|
};
|
|
1511
|
-
this.
|
|
1455
|
+
this._nsStore.version++;
|
|
1456
|
+
this._syncNamespaceLevels();
|
|
1512
1457
|
}
|
|
1513
1458
|
/** Return a copy of the current per-namespace level map. */
|
|
1514
1459
|
getNamespaceLevels() {
|
|
1515
|
-
return { ...this.
|
|
1460
|
+
return { ...this._nsStore.levels };
|
|
1461
|
+
}
|
|
1462
|
+
_syncNamespaceLevels() {
|
|
1463
|
+
this._nsSeenVersion = this._nsStore.version;
|
|
1464
|
+
this._minLevelValue = this._levelValues.get(this.resolveEffectiveLevel()) ?? 2;
|
|
1516
1465
|
}
|
|
1517
1466
|
/** Set the context label (e.g. a class or module name) attached to every subsequent entry. */
|
|
1518
1467
|
setContext(context) {
|
|
@@ -1693,13 +1642,17 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1693
1642
|
const hasAls = alsContext !== void 0 && Object.keys(alsContext).length > 0;
|
|
1694
1643
|
const otelFields = _isOtelBridgeEnabled() ? _getOtelPayloadIfEnabled() : void 0;
|
|
1695
1644
|
const hasOtel = otelFields !== void 0 && Object.keys(otelFields).length > 0;
|
|
1645
|
+
const traceId = this.config.traceId ? activeTraceId ?? this.fallbackTraceId : void 0;
|
|
1696
1646
|
let mergedData;
|
|
1697
|
-
if (hasAls)
|
|
1698
|
-
...alsContext
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1647
|
+
if (hasAls) {
|
|
1648
|
+
const als = { ...alsContext };
|
|
1649
|
+
if (traceId !== void 0 && als["traceId"] === traceId) delete als["traceId"];
|
|
1650
|
+
mergedData = {
|
|
1651
|
+
...als,
|
|
1652
|
+
...hasOtel ? otelFields : {},
|
|
1653
|
+
...data
|
|
1654
|
+
};
|
|
1655
|
+
} else if (hasOtel) mergedData = {
|
|
1703
1656
|
...otelFields,
|
|
1704
1657
|
...data
|
|
1705
1658
|
};
|
|
@@ -1718,7 +1671,6 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1718
1671
|
}
|
|
1719
1672
|
else payload = rawPayload;
|
|
1720
1673
|
}
|
|
1721
|
-
const traceId = this.config.traceId ? activeTraceId ?? this.fallbackTraceId : void 0;
|
|
1722
1674
|
let safeMessage = message;
|
|
1723
1675
|
if (this._hasRedact) try {
|
|
1724
1676
|
safeMessage = applyRedactionToString(message, this.config.redact);
|
|
@@ -1749,6 +1701,7 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1749
1701
|
* The level map and threshold are pre-built in _buildPerfCaches().
|
|
1750
1702
|
*/
|
|
1751
1703
|
shouldLog(level) {
|
|
1704
|
+
if (this._nsSeenVersion !== this._nsStore.version) this._syncNamespaceLevels();
|
|
1752
1705
|
const v = this._levelValues.get(level);
|
|
1753
1706
|
return v !== void 0 && v <= this._minLevelValue;
|
|
1754
1707
|
}
|
|
@@ -1769,8 +1722,8 @@ var LogixiaLogger = class LogixiaLogger {
|
|
|
1769
1722
|
const nsKey = ns.split(".")[0].toUpperCase();
|
|
1770
1723
|
const envNsLevel = this._validLevel(process.env[`LOGIXIA_LEVEL_${nsKey}`], `LOGIXIA_LEVEL_${nsKey}`);
|
|
1771
1724
|
if (envNsLevel) return envNsLevel;
|
|
1772
|
-
const namespaceLevels = this.
|
|
1773
|
-
if (namespaceLevels) {
|
|
1725
|
+
const namespaceLevels = this._nsStore.levels;
|
|
1726
|
+
if (Object.keys(namespaceLevels).length > 0) {
|
|
1774
1727
|
const sortedPatterns = Object.keys(namespaceLevels).sort((a, b) => b.length - a.length);
|
|
1775
1728
|
for (const pattern of sortedPatterns) if (matchesNamespacePattern(ns, pattern)) {
|
|
1776
1729
|
const nsLevel = this._validLevel(namespaceLevels[pattern], `namespaceLevels['${pattern}']`);
|
|
@@ -2087,6 +2040,6 @@ var ErrorResponseBuilder = class {
|
|
|
2087
2040
|
};
|
|
2088
2041
|
}
|
|
2089
2042
|
};
|
|
2090
|
-
export {
|
|
2043
|
+
export { DEFAULT_LOG_LEVELS as C, DEFAULT_LOG_COLORS as S, serializeError as _, isLogixiaException as a, usePlugin as b, _shutdownRegistrySize as c, registerForShutdown as d, resetShutdownHandlers as f, normalizeError as g, isError as h, LogixiaException as i, deregisterFromShutdown as l, redactObject as m, generateRequestId as n, LogixiaLogger as o, applyRedaction as p, generateTraceId as r, createLogger as s, ErrorResponseBuilder as t, flushOnExit as u, PluginRegistry as v, LogLevel as w, DEFAULT_CONFIG as x, globalPluginRegistry as y };
|
|
2091
2044
|
|
|
2092
|
-
//# sourceMappingURL=builder-
|
|
2045
|
+
//# sourceMappingURL=builder-C_TgxEOW.mjs.map
|