logan-logger 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.cjs +1 -1
- package/dist/browser.mjs +1 -1
- package/dist/bun.cjs +1 -1
- package/dist/bun.mjs +3 -3
- package/dist/chunks/{config-CpbjY9zX.mjs → config-BARemYd2.mjs} +73 -41
- package/dist/chunks/config-IINkkZ84.cjs +1 -0
- package/dist/chunks/{config-file-CvMv3rgc.mjs → config-file-BkYtEgDX.mjs} +1 -1
- package/dist/chunks/{config-file-WYBC6sSB.cjs → config-file-Cyys9_yO.cjs} +1 -1
- package/dist/chunks/{file-transport-yIPiX8TP.mjs → file-transport-CCCBjSLN.mjs} +2 -2
- package/dist/chunks/{file-transport-B34EGzxL.cjs → file-transport-CZW_2423.cjs} +1 -1
- package/dist/deno.cjs +1 -1
- package/dist/deno.mjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/node.cjs +1 -1
- package/dist/node.mjs +2 -2
- package/dist/utils/serialization.d.cts +16 -3
- package/dist/utils/serialization.d.mts +16 -3
- package/dist/utils/serialization.d.ts +16 -3
- package/package.json +1 -1
- package/dist/chunks/config-DpSCCiRz.cjs +0 -1
package/dist/browser.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-IINkkZ84.cjs");function t(){return typeof process<`u`&&process.env?process.env.NODE_ENV||process.env.NEXT_PUBLIC_APP_ENV||process.env.ENVIRONMENT||`development`:typeof window<`u`&&globalThis.__ENV__||`development`}function n(t){switch(t){case`production`:return e._.ERROR;case`staging`:case`test`:return e._.WARN;case`development`:case`dev`:return e._.DEBUG;default:return e._.INFO}}function r(t={}){let n=t.ignoreEnvironment?{}:e.n();return new e.u(e.r(t,n))}function i(){let e=t();return r({level:n(e),colorize:e!==`production`,timestamp:!0,format:e===`production`?`json`:`text`})}var a=i(),o={debug:(e,t)=>a.debug(e,t),info:(e,t)=>a.info(e,t),warn:(e,t)=>a.warn(e,t),error:(e,t)=>a.error(e,t)};exports.BrowserLogger=e.u,exports.ConsoleGroupLogger=e.d,exports.LogLevel=e._,exports.PerformanceLogger=e.f,exports.createLogger=r,exports.createLoggerForEnvironment=i,exports.detectRuntime=e.v,exports.filterSensitiveData=e.p,exports.formatLevel=e.c,exports.formatLogEntry=e.l,exports.isBrowser=e.y,exports.isBun=e.b,exports.isDeno=e.x,exports.isNode=e.S,exports.log=o,exports.logger=a,exports.safeStringify=e.m,exports.serializeError=e.h;
|
package/dist/browser.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as e, _ as t, b as n, c as r, d as i, f as a, h as o, l as s, m as c, n as l, p as u, r as d, u as f, v as p, x as m, y as h } from "./chunks/config-
|
|
1
|
+
import { S as e, _ as t, b as n, c as r, d as i, f as a, h as o, l as s, m as c, n as l, p as u, r as d, u as f, v as p, x as m, y as h } from "./chunks/config-BARemYd2.mjs";
|
|
2
2
|
//#region src/browser.ts
|
|
3
3
|
function g() {
|
|
4
4
|
return typeof process < "u" && process.env ? process.env.NODE_ENV || process.env.NEXT_PUBLIC_APP_ENV || process.env.ENVIRONMENT || "development" : typeof window < "u" && globalThis.__ENV__ || "development";
|
package/dist/bun.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-IINkkZ84.cjs"),t=require("./chunks/config-file-Cyys9_yO.cjs"),n=require("./chunks/file-transport-CZW_2423.cjs");exports.ConsoleTransport=t.l,exports.FileTransport=n.t,exports.NodeLogger=t.s,exports.createLogger=t.r,exports.createLoggerForEnvironment=t.i,exports.createTransports=t.u,exports.detectRuntime=e.v,exports.filterSensitiveData=e.p,exports.formatLevel=e.c,exports.formatLogEntry=e.l,exports.getDefaultConfig=e.t,exports.isBrowser=e.y,exports.isBun=e.b,exports.isDeno=e.x,exports.isNode=e.S,exports.loadConfigFromEnvironment=e.n,exports.loadConfigFromFile=t.t,exports.mergeConfigs=e.r,exports.registerTransport=t.f,exports.resetEnvironmentWarnings=e.i,exports.safeStringify=e.m,exports.serializeError=e.h,exports.shouldColorize=e.a,exports.tryParseLogLevel=e.o;
|
package/dist/bun.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as e, a as t, b as n, c as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, t as f, v as p, x as m, y as h } from "./chunks/config-
|
|
2
|
-
import { f as g, i as _, l as v, r as y, s as b, t as x, u as S } from "./chunks/config-file-
|
|
3
|
-
import { t as C } from "./chunks/file-transport-
|
|
1
|
+
import { S as e, a as t, b as n, c as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, t as f, v as p, x as m, y as h } from "./chunks/config-BARemYd2.mjs";
|
|
2
|
+
import { f as g, i as _, l as v, r as y, s as b, t as x, u as S } from "./chunks/config-file-BkYtEgDX.mjs";
|
|
3
|
+
import { t as C } from "./chunks/file-transport-CCCBjSLN.mjs";
|
|
4
4
|
export { v as ConsoleTransport, C as FileTransport, b as NodeLogger, y as createLogger, _ as createLoggerForEnvironment, S as createTransports, p as detectRuntime, u as filterSensitiveData, r as formatLevel, o as formatLogEntry, f as getDefaultConfig, h as isBrowser, n as isBun, m as isDeno, e as isNode, c as loadConfigFromEnvironment, x as loadConfigFromFile, d as mergeConfigs, g as registerTransport, a as resetEnvironmentWarnings, s as safeStringify, i as serializeError, t as shouldColorize, l as tryParseLogLevel };
|
|
@@ -133,7 +133,7 @@ function d(e, t, n, r) {
|
|
|
133
133
|
if (n >= r) return "[MaxDepth]";
|
|
134
134
|
t.add(i);
|
|
135
135
|
try {
|
|
136
|
-
if (i instanceof Error) return f(
|
|
136
|
+
if (i instanceof Error) return f(C(i), t, n, r);
|
|
137
137
|
let e = i.toJSON;
|
|
138
138
|
if (typeof e == "function") return d(e.call(i), t, n, r);
|
|
139
139
|
if (Array.isArray(i)) {
|
|
@@ -155,24 +155,56 @@ function p(e, t, n = {}) {
|
|
|
155
155
|
let r = n.maxDepth ?? u;
|
|
156
156
|
return JSON.stringify(d(e, /* @__PURE__ */ new Set(), 0, r), null, t);
|
|
157
157
|
}
|
|
158
|
-
|
|
158
|
+
var m = [
|
|
159
159
|
"password",
|
|
160
160
|
"token",
|
|
161
161
|
"secret",
|
|
162
162
|
"key",
|
|
163
|
-
"auth"
|
|
164
|
-
|
|
163
|
+
"auth",
|
|
164
|
+
"authorization",
|
|
165
|
+
"apikey",
|
|
166
|
+
"authtoken",
|
|
167
|
+
"accesstoken",
|
|
168
|
+
"secretkey"
|
|
169
|
+
], h = /[A-Z]+(?![a-z])|[A-Z]?[a-z]+|[0-9]+/g;
|
|
170
|
+
function g(e) {
|
|
171
|
+
return (e.match(h) ?? []).map((e) => e.toLowerCase());
|
|
172
|
+
}
|
|
173
|
+
function _(e) {
|
|
174
|
+
let t = [];
|
|
175
|
+
for (let n of e) {
|
|
176
|
+
let e = g(n);
|
|
177
|
+
if (e.length === 0) continue;
|
|
178
|
+
let r = e.join("");
|
|
179
|
+
t.push({
|
|
180
|
+
tokens: e.map((e) => [e, `${e}s`]),
|
|
181
|
+
joined: r,
|
|
182
|
+
joinedPlural: `${r}s`
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return t;
|
|
186
|
+
}
|
|
187
|
+
function v(e, t) {
|
|
188
|
+
let n = g(e);
|
|
189
|
+
if (n.length === 0) return !1;
|
|
190
|
+
let r = n.join("");
|
|
191
|
+
return t.some((e) => e.tokens.every(([e, t]) => n.includes(e) || n.includes(t)) || r === e.joined || r === e.joinedPlural);
|
|
192
|
+
}
|
|
193
|
+
function y(e, t) {
|
|
165
194
|
if (typeof e != "object" || !e) return e;
|
|
166
195
|
let n = Array.isArray(e) ? [] : {};
|
|
167
|
-
for (let [r, i] of Object.entries(e)) n[r] =
|
|
196
|
+
for (let [r, i] of Object.entries(e)) n[r] = v(r, t) ? "[REDACTED]" : typeof i == "object" && i ? y(i, t) : i;
|
|
168
197
|
return n;
|
|
169
198
|
}
|
|
170
|
-
|
|
199
|
+
function b(e, t = m) {
|
|
200
|
+
return y(e, _(t));
|
|
201
|
+
}
|
|
202
|
+
var x = [
|
|
171
203
|
"name",
|
|
172
204
|
"message",
|
|
173
205
|
"stack"
|
|
174
206
|
];
|
|
175
|
-
function
|
|
207
|
+
function S(e, t) {
|
|
176
208
|
let n = Object.getOwnPropertyDescriptor(e, t);
|
|
177
209
|
if (n) {
|
|
178
210
|
if (n.get) try {
|
|
@@ -183,19 +215,19 @@ function g(e, t) {
|
|
|
183
215
|
return n.value;
|
|
184
216
|
}
|
|
185
217
|
}
|
|
186
|
-
function
|
|
218
|
+
function C(e) {
|
|
187
219
|
if (!(e instanceof Error)) return e;
|
|
188
220
|
let t = {
|
|
189
221
|
name: e.name,
|
|
190
222
|
message: e.message
|
|
191
223
|
};
|
|
192
224
|
e.stack !== void 0 && (t.stack = e.stack);
|
|
193
|
-
for (let n of Object.getOwnPropertyNames(e))
|
|
225
|
+
for (let n of Object.getOwnPropertyNames(e)) x.includes(n) || (t[n] = S(e, n));
|
|
194
226
|
return t;
|
|
195
227
|
}
|
|
196
228
|
//#endregion
|
|
197
229
|
//#region src/runtime/browser.ts
|
|
198
|
-
var
|
|
230
|
+
var w = class e extends l {
|
|
199
231
|
constructor(e = {}) {
|
|
200
232
|
super(e);
|
|
201
233
|
}
|
|
@@ -236,7 +268,7 @@ var v = class e extends l {
|
|
|
236
268
|
shouldLog(e) {
|
|
237
269
|
return !this.shouldLogInProduction() && e < c.ERROR ? !1 : super.shouldLog(e);
|
|
238
270
|
}
|
|
239
|
-
},
|
|
271
|
+
}, T = class extends w {
|
|
240
272
|
constructor(...e) {
|
|
241
273
|
super(...e), this.groupStack = [];
|
|
242
274
|
}
|
|
@@ -273,7 +305,7 @@ var v = class e extends l {
|
|
|
273
305
|
table(e) {
|
|
274
306
|
console.table(e);
|
|
275
307
|
}
|
|
276
|
-
},
|
|
308
|
+
}, E = class extends w {
|
|
277
309
|
mark(e) {
|
|
278
310
|
typeof performance < "u" && performance.mark && performance.mark(e);
|
|
279
311
|
}
|
|
@@ -304,7 +336,7 @@ var v = class e extends l {
|
|
|
304
336
|
};
|
|
305
337
|
//#endregion
|
|
306
338
|
//#region src/utils/formatting.ts
|
|
307
|
-
function
|
|
339
|
+
function D(e, t = "text", n = {}) {
|
|
308
340
|
if (t === "json") {
|
|
309
341
|
let t = {
|
|
310
342
|
timestamp: e.timestamp.toISOString(),
|
|
@@ -314,10 +346,10 @@ function x(e, t = "text", n = {}) {
|
|
|
314
346
|
};
|
|
315
347
|
return e.metadata !== void 0 && (t.metadata = e.metadata), p(t);
|
|
316
348
|
}
|
|
317
|
-
let r = n.timestamp === !1 ? "" : `[${e.timestamp.toISOString()}] `, i =
|
|
349
|
+
let r = n.timestamp === !1 ? "" : `[${e.timestamp.toISOString()}] `, i = O(e.level, n.colorize === !0), a = e.metadata ? ` ${p(e.metadata)}` : "";
|
|
318
350
|
return `${r}${i}: ${e.message}${a}`;
|
|
319
351
|
}
|
|
320
|
-
function
|
|
352
|
+
function O(e, t = !1) {
|
|
321
353
|
let n = c[e].toUpperCase();
|
|
322
354
|
if (!t) return n;
|
|
323
355
|
let r = {
|
|
@@ -331,24 +363,24 @@ function S(e, t = !1) {
|
|
|
331
363
|
}
|
|
332
364
|
//#endregion
|
|
333
365
|
//#region src/utils/warn-once.ts
|
|
334
|
-
var
|
|
335
|
-
function
|
|
336
|
-
|
|
366
|
+
var k = /* @__PURE__ */ new Set();
|
|
367
|
+
function A(e) {
|
|
368
|
+
k.has(e) || (k.add(e), console.warn(e));
|
|
337
369
|
}
|
|
338
|
-
function
|
|
339
|
-
|
|
370
|
+
function j() {
|
|
371
|
+
k.clear();
|
|
340
372
|
}
|
|
341
373
|
//#endregion
|
|
342
374
|
//#region src/utils/config.ts
|
|
343
|
-
function
|
|
375
|
+
function M() {
|
|
344
376
|
return e().capabilities.colorSupport ? typeof process > "u" || !process.env ? !0 : process.env.NO_COLOR ? !1 : process.env.FORCE_COLOR ? process.env.FORCE_COLOR !== "0" : process.stdout?.isTTY === !0 : !1;
|
|
345
377
|
}
|
|
346
|
-
function
|
|
378
|
+
function N() {
|
|
347
379
|
return {
|
|
348
380
|
level: c.INFO,
|
|
349
381
|
format: "text",
|
|
350
382
|
timestamp: !0,
|
|
351
|
-
colorize:
|
|
383
|
+
colorize: M(),
|
|
352
384
|
metadata: {},
|
|
353
385
|
transports: [{
|
|
354
386
|
type: "console",
|
|
@@ -356,21 +388,21 @@ function D() {
|
|
|
356
388
|
}]
|
|
357
389
|
};
|
|
358
390
|
}
|
|
359
|
-
var
|
|
391
|
+
var P = [
|
|
360
392
|
"true",
|
|
361
393
|
"1",
|
|
362
394
|
"yes",
|
|
363
395
|
"on"
|
|
364
|
-
],
|
|
396
|
+
], F = [
|
|
365
397
|
"false",
|
|
366
398
|
"0",
|
|
367
399
|
"no",
|
|
368
400
|
"off"
|
|
369
401
|
];
|
|
370
|
-
function
|
|
371
|
-
|
|
402
|
+
function I() {
|
|
403
|
+
j();
|
|
372
404
|
}
|
|
373
|
-
function
|
|
405
|
+
function L(e) {
|
|
374
406
|
switch (e.trim().toLowerCase()) {
|
|
375
407
|
case "debug": return c.DEBUG;
|
|
376
408
|
case "info": return c.INFO;
|
|
@@ -382,36 +414,36 @@ function j(e) {
|
|
|
382
414
|
default: return;
|
|
383
415
|
}
|
|
384
416
|
}
|
|
385
|
-
function
|
|
417
|
+
function R(e, t) {
|
|
386
418
|
let n = t.trim().toLowerCase();
|
|
387
|
-
if (
|
|
388
|
-
if (
|
|
389
|
-
|
|
419
|
+
if (P.includes(n)) return !0;
|
|
420
|
+
if (F.includes(n)) return !1;
|
|
421
|
+
A(`[logan-logger] ${e}="${t}" is not a recognized boolean and was ignored. Accepted: ${P.join(", ")} / ${F.join(", ")}.`);
|
|
390
422
|
}
|
|
391
|
-
function
|
|
423
|
+
function z() {
|
|
392
424
|
let e = {};
|
|
393
425
|
if (typeof process > "u" || !process.env) return e;
|
|
394
426
|
let t = process.env;
|
|
395
427
|
if (t.LOG_LEVEL) {
|
|
396
|
-
let n =
|
|
397
|
-
n === void 0 ?
|
|
428
|
+
let n = L(t.LOG_LEVEL);
|
|
429
|
+
n === void 0 ? A(`[logan-logger] LOG_LEVEL="${t.LOG_LEVEL}" is not a recognized level and was ignored. Accepted: debug, info, warn, error, silent.`) : e.level = n;
|
|
398
430
|
}
|
|
399
431
|
if (t.LOG_FORMAT) {
|
|
400
432
|
let n = t.LOG_FORMAT.trim().toLowerCase();
|
|
401
|
-
n === "json" || n === "text" ? e.format = n :
|
|
433
|
+
n === "json" || n === "text" ? e.format = n : A(`[logan-logger] LOG_FORMAT="${t.LOG_FORMAT}" is not a recognized format and was ignored. Accepted: json, text.`);
|
|
402
434
|
}
|
|
403
435
|
if (t.LOG_TIMESTAMP) {
|
|
404
|
-
let n =
|
|
436
|
+
let n = R("LOG_TIMESTAMP", t.LOG_TIMESTAMP);
|
|
405
437
|
n !== void 0 && (e.timestamp = n);
|
|
406
438
|
}
|
|
407
439
|
if (t.LOG_COLOR) {
|
|
408
|
-
let n =
|
|
440
|
+
let n = R("LOG_COLOR", t.LOG_COLOR);
|
|
409
441
|
n !== void 0 && (e.colorize = n);
|
|
410
442
|
}
|
|
411
443
|
return e;
|
|
412
444
|
}
|
|
413
|
-
function
|
|
414
|
-
let t =
|
|
445
|
+
function B(...e) {
|
|
446
|
+
let t = N();
|
|
415
447
|
return e.reduce((e, t) => ({
|
|
416
448
|
...e,
|
|
417
449
|
...t,
|
|
@@ -423,4 +455,4 @@ function P(...e) {
|
|
|
423
455
|
}), t);
|
|
424
456
|
}
|
|
425
457
|
//#endregion
|
|
426
|
-
export { i as S, c as _,
|
|
458
|
+
export { i as S, c as _, M as a, s as b, O as c, T as d, E as f, l as g, C as h, I as i, D as l, p as m, z as n, L as o, b as p, B as r, A as s, N as t, w as u, e as v, o as x, a as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){let e=t();return{name:e,version:n(e),capabilities:r(e)}}function t(){return globalThis.Deno===void 0?globalThis.Bun===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof globalThis.importScripts==`function`&&typeof window>`u`?`webworker`:typeof process<`u`&&process.versions&&process.versions.node?`node`:`unknown`:`bun`:`deno`}function n(e){switch(e){case`node`:return typeof process<`u`?process.version:void 0;case`deno`:return globalThis.Deno===void 0?void 0:globalThis.Deno.version?.deno;case`bun`:return globalThis.Bun===void 0?void 0:globalThis.Bun.version;case`browser`:return typeof navigator<`u`?navigator.userAgent:void 0;default:return}}function r(e){switch(e){case`node`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`deno`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`bun`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`browser`:return{fileSystem:!1,colorSupport:!0,processInfo:!1,streams:!1};case`webworker`:return{fileSystem:!1,colorSupport:!1,processInfo:!1,streams:!1};default:return{fileSystem:!1,colorSupport:!1,processInfo:!1,streams:!1}}}function i(){return t()===`node`}function a(){return t()===`browser`}function o(){return t()===`deno`}function s(){return t()===`bun`}var c=function(e){return e[e.DEBUG=0]=`DEBUG`,e[e.INFO=1]=`INFO`,e[e.WARN=2]=`WARN`,e[e.ERROR=3]=`ERROR`,e[e.SILENT=4]=`SILENT`,e}({}),l=class{constructor(t={}){this.childMetadata={},this.config=t,this.level=t.level??c.INFO,this.runtime=e().name,this.childMetadata={...t.metadata}}debug(e,t){this.log(c.DEBUG,e,t)}info(e,t){this.log(c.INFO,e,t)}warn(e,t){this.log(c.WARN,e,t)}error(e,t){this.log(c.ERROR,e,t)}log(e,t,n){if(!this.shouldLog(e))return;let r=typeof t==`function`?t():t,i={...this.childMetadata,...n},a={timestamp:new Date,level:e,message:r,metadata:Object.keys(i).length>0?i:void 0,runtime:this.runtime};this.writeLog(a)}setLevel(e){this.level=e}getLevel(){return this.level}child(e){let t=this.createChild();return t.childMetadata={...this.childMetadata,...e},t}shouldLog(e){return e>=this.level}},u=100;function d(e,t,n,r){if(e===void 0)return`[undefined]`;if(typeof e==`bigint`)return`[BigInt: ${e.toString()}]`;if(typeof e==`symbol`)return`[Symbol: ${e.toString()}]`;if(typeof e==`function`)return`[Function: ${e.name||`anonymous`}]`;if(typeof e!=`object`||!e)return e;let i=e;if(t.has(i))return`[Circular]`;if(n>=r)return`[MaxDepth]`;t.add(i);try{if(i instanceof Error)return f(C(i),t,n,r);let e=i.toJSON;if(typeof e==`function`)return d(e.call(i),t,n,r);if(Array.isArray(i)){let e=[];for(let a=0;a<i.length;a++)e.push(d(i[a],t,n+1,r));return e}return f(i,t,n,r)}finally{t.delete(i)}}function f(e,t,n,r){let i={};for(let[a,o]of Object.entries(e))i[a]=d(o,t,n+1,r);return i}function p(e,t,n={}){let r=n.maxDepth??u;return JSON.stringify(d(e,new Set,0,r),null,t)}var m=[`password`,`token`,`secret`,`key`,`auth`,`authorization`,`apikey`,`authtoken`,`accesstoken`,`secretkey`],h=/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|[0-9]+/g;function g(e){return(e.match(h)??[]).map(e=>e.toLowerCase())}function _(e){let t=[];for(let n of e){let e=g(n);if(e.length===0)continue;let r=e.join(``);t.push({tokens:e.map(e=>[e,`${e}s`]),joined:r,joinedPlural:`${r}s`})}return t}function v(e,t){let n=g(e);if(n.length===0)return!1;let r=n.join(``);return t.some(e=>e.tokens.every(([e,t])=>n.includes(e)||n.includes(t))||r===e.joined||r===e.joinedPlural)}function y(e,t){if(typeof e!=`object`||!e)return e;let n=Array.isArray(e)?[]:{};for(let[r,i]of Object.entries(e))n[r]=v(r,t)?`[REDACTED]`:typeof i==`object`&&i?y(i,t):i;return n}function b(e,t=m){return y(e,_(t))}var x=[`name`,`message`,`stack`];function S(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(n){if(n.get)try{return n.get.call(e)}catch{return`[Throws]`}return n.value}}function C(e){if(!(e instanceof Error))return e;let t={name:e.name,message:e.message};e.stack!==void 0&&(t.stack=e.stack);for(let n of Object.getOwnPropertyNames(e))x.includes(n)||(t[n]=S(e,n));return t}var w=class e extends l{constructor(e={}){super(e)}writeLog(e){let t=this.formatMessage(e),n=this.getConsoleStyle(e.level),r=`%c${t}${e.metadata?` ${p(e.metadata)}`:``}`;switch(e.level){case c.DEBUG:console.debug?console.debug(r,n):console.log(r,n);break;case c.INFO:console.info(r,n);break;case c.WARN:console.warn(r,n);break;case c.ERROR:console.error(r,n)}}createChild(){return new e(this.config)}formatMessage(e){return`[${e.timestamp.toISOString()}] ${c[e.level].toUpperCase()}: ${e.message}`}getConsoleStyle(e){if(!this.config.colorize)return``;switch(e){case c.DEBUG:return`color: #888; font-weight: normal;`;case c.INFO:return`color: #007acc; font-weight: normal;`;case c.WARN:return`color: #ff8c00; font-weight: bold;`;case c.ERROR:return`color: #dc3545; font-weight: bold;`;default:return``}}shouldLogInProduction(){return(globalThis.process?.env?.NODE_ENV||globalThis.process?.env?.NEXT_PUBLIC_APP_ENV||`development`)!==`production`||this.level<=c.ERROR}shouldLog(e){return!this.shouldLogInProduction()&&e<c.ERROR?!1:super.shouldLog(e)}},T=class extends w{constructor(...e){super(...e),this.groupStack=[]}group(e){console.group(e),this.groupStack.push(e)}groupCollapsed(e){console.groupCollapsed(e),this.groupStack.push(e)}groupEnd(){console.groupEnd(),this.groupStack.pop()}getCurrentGroupStack(){return[...this.groupStack]}getCurrentGroupPath(){return this.groupStack.join(` > `)}time(e){console.time(e)}timeEnd(e){console.timeEnd(e)}trace(e,t){console.trace(e,t)}count(e){console.count(e)}countReset(e){console.countReset(e)}table(e){console.table(e)}},E=class extends w{mark(e){typeof performance<`u`&&performance.mark&&performance.mark(e)}measure(e,t,n){if(typeof performance<`u`&&performance.measure)try{performance.measure(e,t,n);let r=performance.getEntriesByName(e,`measure`);if(r.length>0){let t=r[r.length-1];this.info(`Performance: ${e}`,{duration:t.duration,startTime:t.startTime})}}catch(t){this.warn(`Failed to measure performance`,{name:e,error:t})}}clearMarks(e){typeof performance<`u`&&performance.clearMarks&&performance.clearMarks(e)}clearMeasures(e){typeof performance<`u`&&performance.clearMeasures&&performance.clearMeasures(e)}};function D(e,t=`text`,n={}){if(t===`json`){let t={timestamp:e.timestamp.toISOString(),level:c[e.level].toLowerCase(),message:e.message,runtime:e.runtime};return e.metadata!==void 0&&(t.metadata=e.metadata),p(t)}let r=n.timestamp===!1?``:`[${e.timestamp.toISOString()}] `,i=O(e.level,n.colorize===!0),a=e.metadata?` ${p(e.metadata)}`:``;return`${r}${i}: ${e.message}${a}`}function O(e,t=!1){let n=c[e].toUpperCase();if(!t)return n;let r={[c.DEBUG]:`\x1B[36m`,[c.INFO]:`\x1B[32m`,[c.WARN]:`\x1B[33m`,[c.ERROR]:`\x1B[31m`,[c.SILENT]:`\x1B[37m`};return`${r[e]||r[c.INFO]}${n}[0m`}var k=new Set;function A(e){k.has(e)||(k.add(e),console.warn(e))}function j(){k.clear()}function M(){return e().capabilities.colorSupport?typeof process>`u`||!process.env?!0:process.env.NO_COLOR?!1:process.env.FORCE_COLOR?process.env.FORCE_COLOR!==`0`:process.stdout?.isTTY===!0:!1}function N(){return{level:c.INFO,format:`text`,timestamp:!0,colorize:M(),metadata:{},transports:[{type:`console`,options:{}}]}}var P=[`true`,`1`,`yes`,`on`],F=[`false`,`0`,`no`,`off`];function I(){j()}function L(e){switch(e.trim().toLowerCase()){case`debug`:return c.DEBUG;case`info`:return c.INFO;case`warn`:case`warning`:return c.WARN;case`error`:return c.ERROR;case`silent`:case`none`:return c.SILENT;default:return}}function R(e,t){let n=t.trim().toLowerCase();if(P.includes(n))return!0;if(F.includes(n))return!1;A(`[logan-logger] ${e}="${t}" is not a recognized boolean and was ignored. Accepted: ${P.join(`, `)} / ${F.join(`, `)}.`)}function z(){let e={};if(typeof process>`u`||!process.env)return e;let t=process.env;if(t.LOG_LEVEL){let n=L(t.LOG_LEVEL);n===void 0?A(`[logan-logger] LOG_LEVEL="${t.LOG_LEVEL}" is not a recognized level and was ignored. Accepted: debug, info, warn, error, silent.`):e.level=n}if(t.LOG_FORMAT){let n=t.LOG_FORMAT.trim().toLowerCase();n===`json`||n===`text`?e.format=n:A(`[logan-logger] LOG_FORMAT="${t.LOG_FORMAT}" is not a recognized format and was ignored. Accepted: json, text.`)}if(t.LOG_TIMESTAMP){let n=R(`LOG_TIMESTAMP`,t.LOG_TIMESTAMP);n!==void 0&&(e.timestamp=n)}if(t.LOG_COLOR){let n=R(`LOG_COLOR`,t.LOG_COLOR);n!==void 0&&(e.colorize=n)}return e}function B(...e){let t=N();return e.reduce((e,t)=>({...e,...t,metadata:{...e.metadata,...t.metadata},transports:t.transports||e.transports}),t)}Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return a}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as e, a as t, g as n, l as r, n as i, o as a, r as o, s, u as c, v as l } from "./config-
|
|
1
|
+
import { _ as e, a as t, g as n, l as r, n as i, o as a, r as o, s, u as c, v as l } from "./config-BARemYd2.mjs";
|
|
2
2
|
//#region src/core/transport.ts
|
|
3
3
|
var u = /* @__PURE__ */ new Map();
|
|
4
4
|
function d(e, t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./config-
|
|
1
|
+
const e=require("./config-IINkkZ84.cjs");var t=new Map;function n(e,n){t.set(e,n)}function r(e){return t.get(e)}var i=class{constructor(e={}){this.type=`console`,this.level=e.level,this.format=e.format===`json`?`json`:`text`,this.formatOptions={timestamp:e.timestamp!==!1,colorize:e.colorize===!0}}write(t){let n=e.l(t,this.format,this.formatOptions);switch(t.level){case e._.DEBUG:console.debug(n);break;case e._.WARN:console.warn(n);break;case e._.ERROR:console.error(n);break;default:console.info(n)}}};n(`console`,(e,t)=>{let n=e.options??{};return new i({format:n.format??t.format,timestamp:n.timestamp??t.timestamp,colorize:n.colorize??t.colorize,level:e.level})}),n(`custom`,e=>{let t=e.options?.transport;if(!t||typeof t.write!=`function`)throw Error(`custom transport requires options.transport to be an object with a write(entry) method`);return e.level===void 0?t:{type:t.type??`custom`,level:e.level,write:e=>t.write(e),close:t.close?()=>t.close?.():void 0}});function a(e){let t={format:e.format??`text`,timestamp:e.timestamp??!0,colorize:e.colorize??!1};if(e.transports===void 0)return[new i({format:t.format,timestamp:t.timestamp,colorize:t.colorize})];let n=[];for(let i of e.transports){let e=r(i.type);if(!e){console.warn(`[logan-logger] ${o(i.type)}`);continue}try{n.push(e(i,t))}catch(e){console.warn(`[logan-logger] transport '${i.type}' failed to initialize:`,e)}}return n}function o(e){return e===`file`?`the 'file' transport is not registered; import from 'logan-logger/node' (or 'logan-logger/bun') rather than the main entry point to use file logging`:e===`http`?`the 'http' transport is not built in; supply one with { type: 'custom', options: { transport } }`:`unknown transport type '${e}'; skipping`}var s=class t extends e.g{constructor(e={},t){super(e),this.transports=t??a(e)}getTransports(){return this.transports}close(){for(let e of this.transports)e.close?.()}writeLog(e){for(let t of this.transports)if(!(t.level!==void 0&&e.level<t.level))try{t.write(e)}catch(e){console.warn(`[logan-logger] transport '${t.type}' failed to write:`,e)}}createChild(){return new t(this.config,this.transports)}};function c(e){return{write:t=>{e.info(t.trim())}}}var l=class t{static create(n={}){let r=e.v(),i=t.mergeConfig(n);switch(r.name){case`node`:return new s(i);case`deno`:return new e.u(i);case`bun`:return new s(i);case`browser`:case`webworker`:return new e.u(i);default:return new e.u(i)}}static createChild(e,t){return e.child(t)}static mergeConfig(t){let n=t.ignoreEnvironment?{}:e.n();return e.r(t,n)}};function u(e){return l.create(e)}function d(){let t=f();return u({level:p(t),colorize:t!==`production`&&e.a(),timestamp:!0,format:t===`production`?`json`:`text`})}function f(){return typeof process<`u`&&process.env?process.env.NODE_ENV||process.env.NEXT_PUBLIC_APP_ENV||process.env.ENVIRONMENT||`development`:typeof window<`u`&&globalThis.__ENV__||`development`}function p(t){switch(t){case`production`:return e._.ERROR;case`staging`:case`test`:return e._.WARN;case`development`:case`dev`:return e._.DEBUG;default:return e._.INFO}}function m(t){return e.o(t)??e._.INFO}function h(t){switch(t){case e._.DEBUG:return`debug`;case e._.INFO:return`info`;case e._.WARN:return`warn`;case e._.ERROR:return`error`;case e._.SILENT:return`silent`;default:return`info`}}var g=[{path:`logan.config.json`},{path:`.loganrc`},{path:`package.json`,key:`logan`}],_=new Set([`level`,`format`,`timestamp`,`colorize`,`ignoreEnvironment`,`metadata`,`transports`,`$schema`]),v=new Set([`EACCES`,`EPERM`,`NotCapable`,`PermissionDenied`]);function y(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function b(e){return e instanceof Error?e.message:String(e)}function x(e){let t=/at position \d+(?: \(line \d+ column \d+\))?/.exec(b(e));return t?`not valid JSON (${t[0]})`:`not valid JSON`}function S(e){return e.startsWith(`/`)||e.startsWith(`\\`)||/^[A-Za-z]:/.test(e)}function C(e,t){return t===void 0||t===``||S(e)?e:`${t.replace(/[\\/]+$/,``)}/${e}`}async function w(e,t){if(e===`deno`)return e=>C(e,t);let{resolve:n}=await import(`node:path`);return t===void 0?e=>n(e):e=>n(t,e)}function T(e){let t=e.split(/[\\/]/);return t[t.length-1]||e}function E(e){if(e===`deno`)try{return globalThis.Deno?.cwd?.()}catch{return}return typeof process<`u`&&typeof process.cwd==`function`?process.cwd():void 0}function D(e){let t=e?.code??``,n=e?.name??``;return t===`ENOENT`||n===`NotFound`?{kind:`absent`}:v.has(t)||v.has(n)?{kind:`denied`,reason:b(e)}:{kind:`unreadable`,reason:b(e)}}async function O(e,t){let n=t===`deno`?()=>globalThis.Deno.readTextFile(e):async()=>(await import(`node:fs/promises`)).readFile(e,`utf-8`);try{return{kind:`content`,content:await n()}}catch(e){return D(e)}}function k(t){if(typeof t==`string`)return e.o(t);if(typeof t==`number`&&e._[t]!==void 0)return t}function A(t,n,r){let i=t=>{e.s(`[logan-logger] ${r}: ignoring transports[${n}]: ${t}.`)};if(!y(t)){i(`expected an object, got ${JSON.stringify(t)??typeof t}`);return}if(typeof t.type!=`string`){i(`"type" is required and must be a string`);return}if(t.options!==void 0&&!y(t.options)){i(`"options" must be an object`);return}let a={type:t.type,options:t.options??{}};if(t.level!==void 0){let i=k(t.level);i===void 0?e.s(`[logan-logger] ${r}: ignoring transports[${n}].level=${JSON.stringify(t.level)}. Accepted: debug, info, warn, error, silent.`):a.level=i}return a}function j(t,n){let r={},i=(t,r,i)=>{e.s(`[logan-logger] ${n}: ignoring ${t}=${JSON.stringify(r)}. Accepted: ${i}.`)};for(let r of Object.keys(t))_.has(r)||e.s(`[logan-logger] ${n}: ignoring unknown field "${r}". Known fields: level, format, timestamp, colorize, ignoreEnvironment, metadata, transports.`);if(t.level!==void 0){let e=k(t.level);e===void 0?i(`level`,t.level,`debug, info, warn, error, silent`):r.level=e}t.format!==void 0&&(t.format===`json`||t.format===`text`||t.format===`custom`?r.format=t.format:i(`format`,t.format,`json, text, custom`));for(let e of[`timestamp`,`colorize`,`ignoreEnvironment`])t[e]!==void 0&&(typeof t[e]==`boolean`?r[e]=t[e]:i(e,t[e],`true, false`));if(t.metadata!==void 0&&(y(t.metadata)?r.metadata=t.metadata:i(`metadata`,t.metadata,`an object`)),Array.isArray(t.transports)){let e=t.transports.map((e,t)=>A(e,t,n)).filter(e=>e!==void 0);(e.length>0||t.transports.length===0)&&(r.transports=e)}else t.transports!==void 0&&i(`transports`,t.transports,`an array of transport configs`);return r}async function M(e,t){let n=await O(e.path,t);if(n.kind===`absent`)return n;if(n.kind!==`content`)return{kind:n.kind,path:e.path,reason:n.reason};let r;try{r=JSON.parse(n.content)}catch(t){return{kind:`invalid`,path:e.path,reason:x(t)}}let i=r;if(e.key){if(!y(r))return{kind:`invalid`,path:e.path,reason:`expected a JSON object`};if(!Object.hasOwn(r,e.key))return{kind:`keyless`,path:e.path,key:e.key};i=r[e.key]}if(!y(i)){let t=e.key?`the "${e.key}" key`:`the file`;return{kind:`invalid`,path:e.path,reason:`expected ${t} to be an object`}}return{kind:`found`,config:j(i,e.path)}}function N(e){let t=g.find(t=>t.path===T(e));return t?{...t,path:e}:{path:e}}function P(t,n){e.s(`[logan-logger] cannot read config at ${t} — no permission; using defaults instead: ${n}`)}async function F(t,n={}){let r=e.v();if(!r.capabilities.fileSystem)return{};let i=n.cwd||E(r.name),a=await w(r.name,i);if(t!==void 0){let e=a(t),n=await M(N(e),r.name);if(n.kind===`found`)return n.config;if(n.kind===`absent`)throw Error(`[logan-logger] config file not found: ${e}`);if(n.kind===`keyless`)throw Error(`[logan-logger] no "${n.key}" key in ${n.path}`);if(n.kind===`denied`)return P(n.path,n.reason),{};throw n.kind===`unreadable`?Error(`[logan-logger] config at ${n.path} is not a readable file: ${n.reason}`):Error(`[logan-logger] config at ${n.path} is invalid: ${n.reason}`)}for(let t of g){let n=await M({...t,path:a(t.path)},r.name);if(n.kind===`found`)return n.config;if(n.kind===`invalid`)return e.s(`[logan-logger] config at ${n.path} is invalid: ${n.reason}`),{};if(n.kind===`denied`)return P(n.path,n.reason),{};n.kind===`unreadable`&&e.s(`[logan-logger] skipping ${n.path}: not a readable file (${n.reason})`)}return{}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return a}});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { l as e } from "./config-
|
|
2
|
-
import { f as t } from "./config-file-
|
|
1
|
+
import { l as e } from "./config-BARemYd2.mjs";
|
|
2
|
+
import { f as t } from "./config-file-BkYtEgDX.mjs";
|
|
3
3
|
import { closeSync as n, existsSync as r, fstatSync as i, mkdirSync as a, openSync as o, renameSync as s, unlinkSync as c, writeSync as l } from "node:fs";
|
|
4
4
|
import { dirname as u, resolve as d } from "node:path";
|
|
5
5
|
//#region src/runtime/file-transport.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./config-
|
|
1
|
+
const e=require("./config-IINkkZ84.cjs"),t=require("./config-file-Cyys9_yO.cjs");let n=require("node:fs"),r=require("node:path");var i=5242880,a=5,o=class{constructor(e){if(this.type=`file`,this.size=0,this.warned=!1,!e?.filename)throw Error(`file transport requires options.filename`);this.path=(0,r.resolve)(e.filename),this.maxsize=e.maxsize??i,this.maxFiles=e.maxFiles??a,this.format=e.format===`text`?`text`:`json`,this.timestamp=e.timestamp!==!1,this.level=e.level}get filename(){return this.path}write(t){let r=`${e.l(t,this.format,{timestamp:this.timestamp,colorize:!1})}\n`;try{this.open(),this.maxsize>0&&this.size>=this.maxsize&&(this.rotate(),this.open()),this.size+=(0,n.writeSync)(this.fd,r)}catch(e){this.warnOnce(e)}}close(){if(this.fd!==void 0)try{(0,n.closeSync)(this.fd)}finally{this.fd=void 0}}open(){if(this.fd!==void 0)return;let e=(0,r.dirname)(this.path);try{(0,n.mkdirSync)(e,{recursive:!0})}catch(t){throw s(`create log directory`,e,t)}try{this.fd=(0,n.openSync)(this.path,`a`)}catch(e){throw s(`open log file`,this.path,e)}this.size=(0,n.fstatSync)(this.fd).size}rotate(){if(this.close(),this.maxFiles<=0){(0,n.existsSync)(this.path)&&(0,n.unlinkSync)(this.path),this.size=0;return}let e=`${this.path}.${this.maxFiles}`;(0,n.existsSync)(e)&&(0,n.unlinkSync)(e);for(let e=this.maxFiles-1;e>=1;e--){let t=`${this.path}.${e}`;(0,n.existsSync)(t)&&(0,n.renameSync)(t,`${this.path}.${e+1}`)}(0,n.existsSync)(this.path)&&(0,n.renameSync)(this.path,`${this.path}.1`),this.size=0}warnOnce(e){this.close(),!this.warned&&(this.warned=!0,console.warn(`[logan-logger] file transport for '${this.path}' failed and will keep retrying quietly:`,e instanceof Error?e.message:e))}};function s(e,t,n){let r=n,i=r?.code?` [${r.code}]`:``,a=r?.syscall?` during ${r.syscall}`:``,o=Error(`could not ${e} '${t}'${i}${a}: ${r?.message??n}`);return o.cause=n,o}t.f(`file`,(e,t)=>{let n=e.options??{};return new o({filename:n.filename,maxsize:n.maxsize,maxFiles:n.maxFiles,format:n.format,timestamp:n.timestamp??t.timestamp,level:e.level})}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return o}});
|
package/dist/deno.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-IINkkZ84.cjs"),t=require("./chunks/config-file-Cyys9_yO.cjs");exports.BrowserLogger=e.u,exports.ConsoleGroupLogger=e.d,exports.ConsoleTransport=t.l,exports.PerformanceLogger=e.f,exports.createLogger=t.r,exports.createLoggerForEnvironment=t.i,exports.createTransports=t.u,exports.detectRuntime=e.v,exports.filterSensitiveData=e.p,exports.formatLevel=e.c,exports.formatLogEntry=e.l,exports.getDefaultConfig=e.t,exports.isBrowser=e.y,exports.isBun=e.b,exports.isDeno=e.x,exports.isNode=e.S,exports.loadConfigFromEnvironment=e.n,exports.loadConfigFromFile=t.t,exports.mergeConfigs=e.r,exports.registerTransport=t.f,exports.resetEnvironmentWarnings=e.i,exports.safeStringify=e.m,exports.serializeError=e.h,exports.shouldColorize=e.a,exports.tryParseLogLevel=e.o;
|
package/dist/deno.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { S as e, a as t, b as n, c as r, d as i, f as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, t as m, u as h, v as g, x as _, y as v } from "./chunks/config-
|
|
2
|
-
import { f as y, i as b, l as x, r as S, t as C, u as w } from "./chunks/config-file-
|
|
1
|
+
import { S as e, a as t, b as n, c as r, d as i, f as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, t as m, u as h, v as g, x as _, y as v } from "./chunks/config-BARemYd2.mjs";
|
|
2
|
+
import { f as y, i as b, l as x, r as S, t as C, u as w } from "./chunks/config-file-BkYtEgDX.mjs";
|
|
3
3
|
export { h as BrowserLogger, i as ConsoleGroupLogger, x as ConsoleTransport, a as PerformanceLogger, S as createLogger, b as createLoggerForEnvironment, w as createTransports, g as detectRuntime, f as filterSensitiveData, r as formatLevel, c as formatLogEntry, m as getDefaultConfig, v as isBrowser, n as isBun, _ as isDeno, e as isNode, u as loadConfigFromEnvironment, C as loadConfigFromFile, p as mergeConfigs, y as registerTransport, s as resetEnvironmentWarnings, l as safeStringify, o as serializeError, t as shouldColorize, d as tryParseLogLevel };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-IINkkZ84.cjs"),t=require("./chunks/config-file-Cyys9_yO.cjs");var n=t.i(),r={debug:(e,t)=>n.debug(e,t),info:(e,t)=>n.info(e,t),warn:(e,t)=>n.warn(e,t),error:(e,t)=>n.error(e,t)};exports.BaseLogger=e.g,exports.BrowserLogger=e.u,exports.ConsoleGroupLogger=e.d,exports.ConsoleTransport=t.l,exports.LogLevel=e._,exports.LoggerFactory=t.n,exports.PerformanceLogger=e.f,exports.createLogger=t.r,exports.createLoggerForEnvironment=t.i,exports.createTransports=t.u,exports.detectRuntime=e.v,exports.filterSensitiveData=e.p,exports.formatLevel=e.c,exports.formatLogEntry=e.l,exports.getDefaultConfig=e.t,exports.getTransportFactory=t.d,exports.isBrowser=e.y,exports.isBun=e.b,exports.isDeno=e.x,exports.isNode=e.S,exports.loadConfigFromEnvironment=e.n,exports.loadConfigFromFile=t.t,exports.log=r,exports.logLevelToString=t.a,exports.logger=n,exports.mergeConfigs=e.r,exports.registerTransport=t.f,exports.resetEnvironmentWarnings=e.i,exports.safeStringify=e.m,exports.serializeError=e.h,exports.shouldColorize=e.a,exports.stringToLogLevel=t.o,exports.tryParseLogLevel=e.o;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as e, _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, t as g, u as _, v, x as y, y as b } from "./chunks/config-
|
|
2
|
-
import { a as x, d as S, f as C, i as w, l as T, n as E, o as D, r as O, t as k, u as A } from "./chunks/config-file-
|
|
1
|
+
import { S as e, _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, t as g, u as _, v, x as y, y as b } from "./chunks/config-BARemYd2.mjs";
|
|
2
|
+
import { a as x, d as S, f as C, i as w, l as T, n as E, o as D, r as O, t as k, u as A } from "./chunks/config-file-BkYtEgDX.mjs";
|
|
3
3
|
//#region src/index.ts
|
|
4
4
|
var j = w(), M = {
|
|
5
5
|
debug: (e, t) => j.debug(e, t),
|
package/dist/node.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-file-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-file-Cyys9_yO.cjs"),t=require("./chunks/file-transport-CZW_2423.cjs");exports.ConsoleTransport=e.l,exports.FileTransport=t.t,exports.NodeLogger=e.s,exports.createLogger=e.r,exports.createLoggerForEnvironment=e.i,exports.createMorganStream=e.c,exports.createTransports=e.u,exports.loadConfigFromFile=e.t,exports.registerTransport=e.f;
|
package/dist/node.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as e, f as t, i as n, l as r, r as i, s as a, t as o, u as s } from "./chunks/config-file-
|
|
2
|
-
import { t as c } from "./chunks/file-transport-
|
|
1
|
+
import { c as e, f as t, i as n, l as r, r as i, s as a, t as o, u as s } from "./chunks/config-file-BkYtEgDX.mjs";
|
|
2
|
+
import { t as c } from "./chunks/file-transport-CCCBjSLN.mjs";
|
|
3
3
|
export { r as ConsoleTransport, c as FileTransport, a as NodeLogger, i as createLogger, n as createLoggerForEnvironment, e as createMorganStream, s as createTransports, o as loadConfigFromFile, t as registerTransport };
|
|
@@ -24,14 +24,27 @@ export interface SafeStringifyOptions {
|
|
|
24
24
|
export declare function safeStringify(obj: any, space?: number, options?: SafeStringifyOptions): string;
|
|
25
25
|
/**
|
|
26
26
|
* Filter out sensitive data from an object before logging.
|
|
27
|
+
*
|
|
28
|
+
* Never applied automatically — the caller invokes it (SPEC §8.3).
|
|
29
|
+
*
|
|
30
|
+
* Both the field name and each key are split into tokens, so `api_key`, `apiKey`
|
|
31
|
+
* and `API-KEY` are all redacted while `monkey` and `tokenizer` are not. A field
|
|
32
|
+
* matches a key when every token of the key is present in the field name, or
|
|
33
|
+
* when the two token lists joined are equal; a token also matches that token
|
|
34
|
+
* followed by `s`. Supplying a key set **replaces** the defaults rather than
|
|
35
|
+
* extending them.
|
|
36
|
+
*
|
|
37
|
+
* Because matching is on whole tokens, a name like `mytoken` is one token and is
|
|
38
|
+
* not redacted; pass your own keys if your codebase names fields that way.
|
|
39
|
+
*
|
|
27
40
|
* @param obj - The object to filter
|
|
28
|
-
* @param sensitiveKeys -
|
|
41
|
+
* @param sensitiveKeys - Key names to redact, tokenized and matched case-insensitively
|
|
29
42
|
* @returns A new object with sensitive values replaced with '[REDACTED]'
|
|
30
43
|
* @example
|
|
31
44
|
* ```typescript
|
|
32
|
-
* const data = { username: 'john', password: 'secret123' };
|
|
45
|
+
* const data = { username: 'john', password: 'secret123', monkey: 'george' };
|
|
33
46
|
* const filtered = filterSensitiveData(data);
|
|
34
|
-
* // Result: { username: 'john', password: '[REDACTED]' }
|
|
47
|
+
* // Result: { username: 'john', password: '[REDACTED]', monkey: 'george' }
|
|
35
48
|
* ```
|
|
36
49
|
*/
|
|
37
50
|
export declare function filterSensitiveData(obj: any, sensitiveKeys?: string[]): any;
|
|
@@ -24,14 +24,27 @@ export interface SafeStringifyOptions {
|
|
|
24
24
|
export declare function safeStringify(obj: any, space?: number, options?: SafeStringifyOptions): string;
|
|
25
25
|
/**
|
|
26
26
|
* Filter out sensitive data from an object before logging.
|
|
27
|
+
*
|
|
28
|
+
* Never applied automatically — the caller invokes it (SPEC §8.3).
|
|
29
|
+
*
|
|
30
|
+
* Both the field name and each key are split into tokens, so `api_key`, `apiKey`
|
|
31
|
+
* and `API-KEY` are all redacted while `monkey` and `tokenizer` are not. A field
|
|
32
|
+
* matches a key when every token of the key is present in the field name, or
|
|
33
|
+
* when the two token lists joined are equal; a token also matches that token
|
|
34
|
+
* followed by `s`. Supplying a key set **replaces** the defaults rather than
|
|
35
|
+
* extending them.
|
|
36
|
+
*
|
|
37
|
+
* Because matching is on whole tokens, a name like `mytoken` is one token and is
|
|
38
|
+
* not redacted; pass your own keys if your codebase names fields that way.
|
|
39
|
+
*
|
|
27
40
|
* @param obj - The object to filter
|
|
28
|
-
* @param sensitiveKeys -
|
|
41
|
+
* @param sensitiveKeys - Key names to redact, tokenized and matched case-insensitively
|
|
29
42
|
* @returns A new object with sensitive values replaced with '[REDACTED]'
|
|
30
43
|
* @example
|
|
31
44
|
* ```typescript
|
|
32
|
-
* const data = { username: 'john', password: 'secret123' };
|
|
45
|
+
* const data = { username: 'john', password: 'secret123', monkey: 'george' };
|
|
33
46
|
* const filtered = filterSensitiveData(data);
|
|
34
|
-
* // Result: { username: 'john', password: '[REDACTED]' }
|
|
47
|
+
* // Result: { username: 'john', password: '[REDACTED]', monkey: 'george' }
|
|
35
48
|
* ```
|
|
36
49
|
*/
|
|
37
50
|
export declare function filterSensitiveData(obj: any, sensitiveKeys?: string[]): any;
|
|
@@ -24,14 +24,27 @@ export interface SafeStringifyOptions {
|
|
|
24
24
|
export declare function safeStringify(obj: any, space?: number, options?: SafeStringifyOptions): string;
|
|
25
25
|
/**
|
|
26
26
|
* Filter out sensitive data from an object before logging.
|
|
27
|
+
*
|
|
28
|
+
* Never applied automatically — the caller invokes it (SPEC §8.3).
|
|
29
|
+
*
|
|
30
|
+
* Both the field name and each key are split into tokens, so `api_key`, `apiKey`
|
|
31
|
+
* and `API-KEY` are all redacted while `monkey` and `tokenizer` are not. A field
|
|
32
|
+
* matches a key when every token of the key is present in the field name, or
|
|
33
|
+
* when the two token lists joined are equal; a token also matches that token
|
|
34
|
+
* followed by `s`. Supplying a key set **replaces** the defaults rather than
|
|
35
|
+
* extending them.
|
|
36
|
+
*
|
|
37
|
+
* Because matching is on whole tokens, a name like `mytoken` is one token and is
|
|
38
|
+
* not redacted; pass your own keys if your codebase names fields that way.
|
|
39
|
+
*
|
|
27
40
|
* @param obj - The object to filter
|
|
28
|
-
* @param sensitiveKeys -
|
|
41
|
+
* @param sensitiveKeys - Key names to redact, tokenized and matched case-insensitively
|
|
29
42
|
* @returns A new object with sensitive values replaced with '[REDACTED]'
|
|
30
43
|
* @example
|
|
31
44
|
* ```typescript
|
|
32
|
-
* const data = { username: 'john', password: 'secret123' };
|
|
45
|
+
* const data = { username: 'john', password: 'secret123', monkey: 'george' };
|
|
33
46
|
* const filtered = filterSensitiveData(data);
|
|
34
|
-
* // Result: { username: 'john', password: '[REDACTED]' }
|
|
47
|
+
* // Result: { username: 'john', password: '[REDACTED]', monkey: 'george' }
|
|
35
48
|
* ```
|
|
36
49
|
*/
|
|
37
50
|
export declare function filterSensitiveData(obj: any, sensitiveKeys?: string[]): any;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(){let e=t();return{name:e,version:n(e),capabilities:r(e)}}function t(){return globalThis.Deno===void 0?globalThis.Bun===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof globalThis.importScripts==`function`&&typeof window>`u`?`webworker`:typeof process<`u`&&process.versions&&process.versions.node?`node`:`unknown`:`bun`:`deno`}function n(e){switch(e){case`node`:return typeof process<`u`?process.version:void 0;case`deno`:return globalThis.Deno===void 0?void 0:globalThis.Deno.version?.deno;case`bun`:return globalThis.Bun===void 0?void 0:globalThis.Bun.version;case`browser`:return typeof navigator<`u`?navigator.userAgent:void 0;default:return}}function r(e){switch(e){case`node`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`deno`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`bun`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`browser`:return{fileSystem:!1,colorSupport:!0,processInfo:!1,streams:!1};case`webworker`:return{fileSystem:!1,colorSupport:!1,processInfo:!1,streams:!1};default:return{fileSystem:!1,colorSupport:!1,processInfo:!1,streams:!1}}}function i(){return t()===`node`}function a(){return t()===`browser`}function o(){return t()===`deno`}function s(){return t()===`bun`}var c=function(e){return e[e.DEBUG=0]=`DEBUG`,e[e.INFO=1]=`INFO`,e[e.WARN=2]=`WARN`,e[e.ERROR=3]=`ERROR`,e[e.SILENT=4]=`SILENT`,e}({}),l=class{constructor(t={}){this.childMetadata={},this.config=t,this.level=t.level??c.INFO,this.runtime=e().name,this.childMetadata={...t.metadata}}debug(e,t){this.log(c.DEBUG,e,t)}info(e,t){this.log(c.INFO,e,t)}warn(e,t){this.log(c.WARN,e,t)}error(e,t){this.log(c.ERROR,e,t)}log(e,t,n){if(!this.shouldLog(e))return;let r=typeof t==`function`?t():t,i={...this.childMetadata,...n},a={timestamp:new Date,level:e,message:r,metadata:Object.keys(i).length>0?i:void 0,runtime:this.runtime};this.writeLog(a)}setLevel(e){this.level=e}getLevel(){return this.level}child(e){let t=this.createChild();return t.childMetadata={...this.childMetadata,...e},t}shouldLog(e){return e>=this.level}},u=100;function d(e,t,n,r){if(e===void 0)return`[undefined]`;if(typeof e==`bigint`)return`[BigInt: ${e.toString()}]`;if(typeof e==`symbol`)return`[Symbol: ${e.toString()}]`;if(typeof e==`function`)return`[Function: ${e.name||`anonymous`}]`;if(typeof e!=`object`||!e)return e;let i=e;if(t.has(i))return`[Circular]`;if(n>=r)return`[MaxDepth]`;t.add(i);try{if(i instanceof Error)return f(_(i),t,n,r);let e=i.toJSON;if(typeof e==`function`)return d(e.call(i),t,n,r);if(Array.isArray(i)){let e=[];for(let a=0;a<i.length;a++)e.push(d(i[a],t,n+1,r));return e}return f(i,t,n,r)}finally{t.delete(i)}}function f(e,t,n,r){let i={};for(let[a,o]of Object.entries(e))i[a]=d(o,t,n+1,r);return i}function p(e,t,n={}){let r=n.maxDepth??u;return JSON.stringify(d(e,new Set,0,r),null,t)}function m(e,t=[`password`,`token`,`secret`,`key`,`auth`]){if(typeof e!=`object`||!e)return e;let n=Array.isArray(e)?[]:{};for(let[r,i]of Object.entries(e))n[r]=t.some(e=>r.toLowerCase().includes(e.toLowerCase()))?`[REDACTED]`:typeof i==`object`&&i?m(i,t):i;return n}var h=[`name`,`message`,`stack`];function g(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(n){if(n.get)try{return n.get.call(e)}catch{return`[Throws]`}return n.value}}function _(e){if(!(e instanceof Error))return e;let t={name:e.name,message:e.message};e.stack!==void 0&&(t.stack=e.stack);for(let n of Object.getOwnPropertyNames(e))h.includes(n)||(t[n]=g(e,n));return t}var v=class e extends l{constructor(e={}){super(e)}writeLog(e){let t=this.formatMessage(e),n=this.getConsoleStyle(e.level),r=`%c${t}${e.metadata?` ${p(e.metadata)}`:``}`;switch(e.level){case c.DEBUG:console.debug?console.debug(r,n):console.log(r,n);break;case c.INFO:console.info(r,n);break;case c.WARN:console.warn(r,n);break;case c.ERROR:console.error(r,n)}}createChild(){return new e(this.config)}formatMessage(e){return`[${e.timestamp.toISOString()}] ${c[e.level].toUpperCase()}: ${e.message}`}getConsoleStyle(e){if(!this.config.colorize)return``;switch(e){case c.DEBUG:return`color: #888; font-weight: normal;`;case c.INFO:return`color: #007acc; font-weight: normal;`;case c.WARN:return`color: #ff8c00; font-weight: bold;`;case c.ERROR:return`color: #dc3545; font-weight: bold;`;default:return``}}shouldLogInProduction(){return(globalThis.process?.env?.NODE_ENV||globalThis.process?.env?.NEXT_PUBLIC_APP_ENV||`development`)!==`production`||this.level<=c.ERROR}shouldLog(e){return!this.shouldLogInProduction()&&e<c.ERROR?!1:super.shouldLog(e)}},y=class extends v{constructor(...e){super(...e),this.groupStack=[]}group(e){console.group(e),this.groupStack.push(e)}groupCollapsed(e){console.groupCollapsed(e),this.groupStack.push(e)}groupEnd(){console.groupEnd(),this.groupStack.pop()}getCurrentGroupStack(){return[...this.groupStack]}getCurrentGroupPath(){return this.groupStack.join(` > `)}time(e){console.time(e)}timeEnd(e){console.timeEnd(e)}trace(e,t){console.trace(e,t)}count(e){console.count(e)}countReset(e){console.countReset(e)}table(e){console.table(e)}},b=class extends v{mark(e){typeof performance<`u`&&performance.mark&&performance.mark(e)}measure(e,t,n){if(typeof performance<`u`&&performance.measure)try{performance.measure(e,t,n);let r=performance.getEntriesByName(e,`measure`);if(r.length>0){let t=r[r.length-1];this.info(`Performance: ${e}`,{duration:t.duration,startTime:t.startTime})}}catch(t){this.warn(`Failed to measure performance`,{name:e,error:t})}}clearMarks(e){typeof performance<`u`&&performance.clearMarks&&performance.clearMarks(e)}clearMeasures(e){typeof performance<`u`&&performance.clearMeasures&&performance.clearMeasures(e)}};function x(e,t=`text`,n={}){if(t===`json`){let t={timestamp:e.timestamp.toISOString(),level:c[e.level].toLowerCase(),message:e.message,runtime:e.runtime};return e.metadata!==void 0&&(t.metadata=e.metadata),p(t)}let r=n.timestamp===!1?``:`[${e.timestamp.toISOString()}] `,i=S(e.level,n.colorize===!0),a=e.metadata?` ${p(e.metadata)}`:``;return`${r}${i}: ${e.message}${a}`}function S(e,t=!1){let n=c[e].toUpperCase();if(!t)return n;let r={[c.DEBUG]:`\x1B[36m`,[c.INFO]:`\x1B[32m`,[c.WARN]:`\x1B[33m`,[c.ERROR]:`\x1B[31m`,[c.SILENT]:`\x1B[37m`};return`${r[e]||r[c.INFO]}${n}[0m`}var C=new Set;function w(e){C.has(e)||(C.add(e),console.warn(e))}function T(){C.clear()}function E(){return e().capabilities.colorSupport?typeof process>`u`||!process.env?!0:process.env.NO_COLOR?!1:process.env.FORCE_COLOR?process.env.FORCE_COLOR!==`0`:process.stdout?.isTTY===!0:!1}function D(){return{level:c.INFO,format:`text`,timestamp:!0,colorize:E(),metadata:{},transports:[{type:`console`,options:{}}]}}var O=[`true`,`1`,`yes`,`on`],k=[`false`,`0`,`no`,`off`];function A(){T()}function j(e){switch(e.trim().toLowerCase()){case`debug`:return c.DEBUG;case`info`:return c.INFO;case`warn`:case`warning`:return c.WARN;case`error`:return c.ERROR;case`silent`:case`none`:return c.SILENT;default:return}}function M(e,t){let n=t.trim().toLowerCase();if(O.includes(n))return!0;if(k.includes(n))return!1;w(`[logan-logger] ${e}="${t}" is not a recognized boolean and was ignored. Accepted: ${O.join(`, `)} / ${k.join(`, `)}.`)}function N(){let e={};if(typeof process>`u`||!process.env)return e;let t=process.env;if(t.LOG_LEVEL){let n=j(t.LOG_LEVEL);n===void 0?w(`[logan-logger] LOG_LEVEL="${t.LOG_LEVEL}" is not a recognized level and was ignored. Accepted: debug, info, warn, error, silent.`):e.level=n}if(t.LOG_FORMAT){let n=t.LOG_FORMAT.trim().toLowerCase();n===`json`||n===`text`?e.format=n:w(`[logan-logger] LOG_FORMAT="${t.LOG_FORMAT}" is not a recognized format and was ignored. Accepted: json, text.`)}if(t.LOG_TIMESTAMP){let n=M(`LOG_TIMESTAMP`,t.LOG_TIMESTAMP);n!==void 0&&(e.timestamp=n)}if(t.LOG_COLOR){let n=M(`LOG_COLOR`,t.LOG_COLOR);n!==void 0&&(e.colorize=n)}return e}function P(...e){let t=D();return e.reduce((e,t)=>({...e,...t,metadata:{...e.metadata,...t.metadata},transports:t.transports||e.transports}),t)}Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return a}});
|