@decohere/scribe 0.0.1-dev.119 → 0.0.1-dev.12
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/commonjs/src/console.adapter.js +11 -8
- package/commonjs/src/env.js +2 -0
- package/commonjs/src/errors.js +2 -0
- package/commonjs/src/index.js +2 -1
- package/commonjs/src/logger.adapter.js +6 -23
- package/commonjs/src/logger.factory.js +10 -69
- package/commonjs/src/logger.type.js +2 -0
- package/commonjs/src/testing/index.js +2 -0
- package/commonjs/src/types.js +6 -19
- package/es6/src/console.adapter.js +12 -9
- package/es6/src/env.js +2 -0
- package/es6/src/errors.js +2 -0
- package/es6/src/index.js +2 -1
- package/es6/src/logger.adapter.js +3 -12
- package/es6/src/logger.factory.js +10 -69
- package/es6/src/logger.type.js +2 -0
- package/es6/src/testing/index.js +2 -0
- package/es6/src/types.js +6 -16
- package/package.json +1 -1
- package/types/src/console.adapter.d.ts +0 -1
- package/types/src/index.d.ts +0 -1
- package/types/src/logger.adapter.d.ts +1 -16
- package/types/src/logger.factory.d.ts +2 -18
- package/types/src/types.d.ts +0 -7
- package/commonjs/src/redact.js +0 -60
- package/es6/src/redact.js +0 -50
- package/types/src/redact.d.ts +0 -10
|
@@ -9,32 +9,30 @@ Object.defineProperty(exports, "ConsoleAdapter", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _loggeradapter = require("./logger.adapter.js");
|
|
12
|
-
const _redact = require("./redact.js");
|
|
13
12
|
const _types = require("./types.js");
|
|
14
13
|
class ConsoleAdapter extends _loggeradapter.LogAdapter {
|
|
15
14
|
configuredLevels;
|
|
16
15
|
configuredLogLevel = _types.DefaultLogLevel;
|
|
17
16
|
configuredLogLevelValue = _types.LogLevels.info;
|
|
18
|
-
redactionKeys = _redact.redact.fromOptions();
|
|
19
17
|
constructor(_options = {}){
|
|
20
18
|
super();
|
|
21
19
|
}
|
|
22
20
|
configure(scribeOptions) {
|
|
21
|
+
// Get merged log levels (default + custom) using parent class method
|
|
23
22
|
this.configuredLevels = this.getLogLevels(scribeOptions);
|
|
24
23
|
const logLevelStr = scribeOptions.logLevel ?? _types.DefaultLogLevel;
|
|
25
24
|
this.configuredLogLevel = logLevelStr;
|
|
26
25
|
this.configuredLogLevelValue = this.configuredLevels[logLevelStr] ?? _types.LogLevels.info;
|
|
27
|
-
this.redactionKeys = _redact.redact.fromOptions(scribeOptions.redactions);
|
|
28
26
|
}
|
|
29
27
|
getLogger(name) {
|
|
30
28
|
const loggerName = name || "default";
|
|
31
29
|
return this.createConsoleLogger(loggerName);
|
|
32
30
|
}
|
|
33
31
|
createConsoleLogger(name) {
|
|
32
|
+
// Use the levels configured during the configure() call
|
|
34
33
|
const allLevels = this.configuredLevels;
|
|
35
34
|
const currentLevel = this.configuredLogLevel;
|
|
36
35
|
const threshold = this.configuredLogLevelValue;
|
|
37
|
-
const redactionKeys = this.redactionKeys;
|
|
38
36
|
const baseLogger = {
|
|
39
37
|
get currentLevel () {
|
|
40
38
|
return currentLevel;
|
|
@@ -47,25 +45,30 @@ class ConsoleAdapter extends _loggeradapter.LogAdapter {
|
|
|
47
45
|
const timestamp = new Date().toISOString();
|
|
48
46
|
let message;
|
|
49
47
|
if (typeof msg === "object") {
|
|
50
|
-
message =
|
|
48
|
+
message = JSON.stringify(msg);
|
|
51
49
|
} else {
|
|
52
50
|
message = String(msg);
|
|
53
51
|
}
|
|
54
52
|
const logLine = `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}`;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
console.log(logLine, ...payload);
|
|
53
|
+
if (args.length > 0) {
|
|
54
|
+
console.log(logLine, ...args);
|
|
58
55
|
} else {
|
|
59
56
|
console.log(logLine);
|
|
60
57
|
}
|
|
61
58
|
};
|
|
62
59
|
const noop = ()=>{};
|
|
60
|
+
// Start with base logger and isLevelEnabled method
|
|
63
61
|
const logger = Object.assign(baseLogger, {
|
|
64
62
|
isLevelEnabled: (level)=>(allLevels[level] ?? 0) >= threshold
|
|
65
63
|
});
|
|
64
|
+
// Dynamically add all log level methods (default + custom)
|
|
65
|
+
// Levels below the configured threshold are patched to noop
|
|
66
66
|
for (const [levelName, levelValue] of Object.entries(allLevels)){
|
|
67
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic logger level creation requires any
|
|
67
68
|
logger[levelName] = levelValue >= threshold ? logFunction(levelName) : noop;
|
|
68
69
|
}
|
|
69
70
|
return logger;
|
|
70
71
|
}
|
|
71
72
|
}
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2NvbnNvbGUuYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dBZGFwdGVyIH0gZnJvbSBcIi4vbG9nZ2VyLmFkYXB0ZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUxvZ2dlciwgTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLnR5cGUuanNcIjtcbmltcG9ydCB7XG5cdERlZmF1bHRMb2dMZXZlbCxcblx0dHlwZSBMb2dBZGFwdGVyT3B0aW9ucyxcblx0TG9nTGV2ZWxzLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG59IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIENvbnNvbGVBZGFwdGVyT3B0aW9ucyA9IHt9ICYgTG9nQWRhcHRlck9wdGlvbnM7XG5cbmV4cG9ydCBjbGFzcyBDb25zb2xlQWRhcHRlciBleHRlbmRzIExvZ0FkYXB0ZXIge1xuXHRwcml2YXRlIGNvbmZpZ3VyZWRMZXZlbHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG5cdHByaXZhdGUgY29uZmlndXJlZExvZ0xldmVsOiBzdHJpbmcgPSBEZWZhdWx0TG9nTGV2ZWw7XG5cdHByaXZhdGUgY29uZmlndXJlZExvZ0xldmVsVmFsdWU6IG51bWJlciA9IExvZ0xldmVscy5pbmZvO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihfb3B0aW9uczogQ29uc29sZUFkYXB0ZXJPcHRpb25zID0ge30pIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0cHVibGljIGNvbmZpZ3VyZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0c2NyaWJlT3B0aW9uczogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0Ly8gR2V0IG1lcmdlZCBsb2cgbGV2ZWxzIChkZWZhdWx0ICsgY3VzdG9tKSB1c2luZyBwYXJlbnQgY2xhc3MgbWV0aG9kXG5cdFx0dGhpcy5jb25maWd1cmVkTGV2ZWxzID0gdGhpcy5nZXRMb2dMZXZlbHMoc2NyaWJlT3B0aW9ucyk7XG5cdFx0Y29uc3QgbG9nTGV2ZWxTdHIgPSBzY3JpYmVPcHRpb25zLmxvZ0xldmVsID8/IERlZmF1bHRMb2dMZXZlbDtcblx0XHR0aGlzLmNvbmZpZ3VyZWRMb2dMZXZlbCA9IGxvZ0xldmVsU3RyO1xuXHRcdHRoaXMuY29uZmlndXJlZExvZ0xldmVsVmFsdWUgPSB0aGlzLmNvbmZpZ3VyZWRMZXZlbHNbbG9nTGV2ZWxTdHJdID8/IExvZ0xldmVscy5pbmZvO1xuXHR9XG5cblx0cHVibGljIGdldExvZ2dlcjxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0bmFtZT86IHN0cmluZyxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHRjb25zdCBsb2dnZXJOYW1lID0gbmFtZSB8fCBcImRlZmF1bHRcIjtcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVDb25zb2xlTG9nZ2VyPFQsIEN1c3RvbU9ubHk+KGxvZ2dlck5hbWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb25zb2xlTG9nZ2VyPFxuXHRcdFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcblx0XHRDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2UsXG5cdD4obmFtZTogc3RyaW5nKTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHQvLyBVc2UgdGhlIGxldmVscyBjb25maWd1cmVkIGR1cmluZyB0aGUgY29uZmlndXJlKCkgY2FsbFxuXHRcdGNvbnN0IGFsbExldmVscyA9IHRoaXMuY29uZmlndXJlZExldmVscztcblx0XHRjb25zdCBjdXJyZW50TGV2ZWwgPSB0aGlzLmNvbmZpZ3VyZWRMb2dMZXZlbDtcblx0XHRjb25zdCB0aHJlc2hvbGQgPSB0aGlzLmNvbmZpZ3VyZWRMb2dMZXZlbFZhbHVlO1xuXG5cdFx0Y29uc3QgYmFzZUxvZ2dlcjogQmFzZUxvZ2dlciA9IHtcblx0XHRcdGdldCBjdXJyZW50TGV2ZWwoKSB7XG5cdFx0XHRcdHJldHVybiBjdXJyZW50TGV2ZWw7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0IGxvZ0xldmVscygpIHtcblx0XHRcdFx0cmV0dXJuIGFsbExldmVscztcblx0XHRcdH0sXG5cdFx0fTtcblxuXHRcdGNvbnN0IGxvZ0Z1bmN0aW9uID1cblx0XHRcdChsZXZlbDogc3RyaW5nKSA9PlxuXHRcdFx0KG1zZzogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0Y29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXHRcdFx0XHRsZXQgbWVzc2FnZTogc3RyaW5nO1xuXG5cdFx0XHRcdGlmICh0eXBlb2YgbXNnID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1zZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bWVzc2FnZSA9IFN0cmluZyhtc2cpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbG9nTGluZSA9IGBbJHt0aW1lc3RhbXB9XSAke2xldmVsLnRvVXBwZXJDYXNlKCl9IFske25hbWV9XTogJHttZXNzYWdlfWA7XG5cblx0XHRcdFx0aWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGxvZ0xpbmUsIC4uLmFyZ3MpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGxvZ0xpbmUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0Y29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5cdFx0Ly8gU3RhcnQgd2l0aCBiYXNlIGxvZ2dlciBhbmQgaXNMZXZlbEVuYWJsZWQgbWV0aG9kXG5cdFx0Y29uc3QgbG9nZ2VyID0gT2JqZWN0LmFzc2lnbihiYXNlTG9nZ2VyLCB7XG5cdFx0XHRpc0xldmVsRW5hYmxlZDogKGxldmVsOiBzdHJpbmcpID0+IChhbGxMZXZlbHNbbGV2ZWxdID8/IDApID49IHRocmVzaG9sZCxcblx0XHR9KTtcblxuXHRcdC8vIER5bmFtaWNhbGx5IGFkZCBhbGwgbG9nIGxldmVsIG1ldGhvZHMgKGRlZmF1bHQgKyBjdXN0b20pXG5cdFx0Ly8gTGV2ZWxzIGJlbG93IHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBhcmUgcGF0Y2hlZCB0byBub29wXG5cdFx0Zm9yIChjb25zdCBbbGV2ZWxOYW1lLCBsZXZlbFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhbGxMZXZlbHMpKSB7XG5cdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IER5bmFtaWMgbG9nZ2VyIGxldmVsIGNyZWF0aW9uIHJlcXVpcmVzIGFueVxuXHRcdFx0KGxvZ2dlciBhcyBhbnkpW2xldmVsTmFtZV0gPSBsZXZlbFZhbHVlID49IHRocmVzaG9sZCA/IGxvZ0Z1bmN0aW9uKGxldmVsTmFtZSkgOiBub29wO1xuXHRcdH1cblxuXHRcdHJldHVybiBsb2dnZXIgYXMgTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXHR9XG59XG4iXSwibmFtZXMiOlsiQ29uc29sZUFkYXB0ZXIiLCJMb2dBZGFwdGVyIiwiY29uZmlndXJlZExldmVscyIsImNvbmZpZ3VyZWRMb2dMZXZlbCIsIkRlZmF1bHRMb2dMZXZlbCIsImNvbmZpZ3VyZWRMb2dMZXZlbFZhbHVlIiwiTG9nTGV2ZWxzIiwiaW5mbyIsIl9vcHRpb25zIiwiY29uZmlndXJlIiwic2NyaWJlT3B0aW9ucyIsImdldExvZ0xldmVscyIsImxvZ0xldmVsU3RyIiwibG9nTGV2ZWwiLCJnZXRMb2dnZXIiLCJuYW1lIiwibG9nZ2VyTmFtZSIsImNyZWF0ZUNvbnNvbGVMb2dnZXIiLCJhbGxMZXZlbHMiLCJjdXJyZW50TGV2ZWwiLCJ0aHJlc2hvbGQiLCJiYXNlTG9nZ2VyIiwibG9nTGV2ZWxzIiwibG9nRnVuY3Rpb24iLCJsZXZlbCIsIm1zZyIsImFyZ3MiLCJ0aW1lc3RhbXAiLCJEYXRlIiwidG9JU09TdHJpbmciLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIlN0cmluZyIsImxvZ0xpbmUiLCJ0b1VwcGVyQ2FzZSIsImxlbmd0aCIsImNvbnNvbGUiLCJsb2ciLCJub29wIiwibG9nZ2VyIiwiT2JqZWN0IiwiYXNzaWduIiwiaXNMZXZlbEVuYWJsZWQiLCJsZXZlbE5hbWUiLCJsZXZlbFZhbHVlIiwiZW50cmllcyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFXYUE7OztlQUFBQTs7OytCQVhjO3VCQU9wQjtBQUlBLE1BQU1BLHVCQUF1QkMseUJBQVU7SUFDckNDLGlCQUF5QztJQUN6Q0MscUJBQTZCQyxzQkFBZSxDQUFDO0lBQzdDQywwQkFBa0NDLGdCQUFTLENBQUNDLElBQUksQ0FBQztJQUV6RCxZQUFtQkMsV0FBa0MsQ0FBQyxDQUFDLENBQUU7UUFDeEQsS0FBSztJQUNOO0lBRU9DLFVBQ05DLGFBQTJDLEVBQzFDO1FBQ0QscUVBQXFFO1FBQ3JFLElBQUksQ0FBQ1IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDUyxZQUFZLENBQUNEO1FBQzFDLE1BQU1FLGNBQWNGLGNBQWNHLFFBQVEsSUFBSVQsc0JBQWU7UUFDN0QsSUFBSSxDQUFDRCxrQkFBa0IsR0FBR1M7UUFDMUIsSUFBSSxDQUFDUCx1QkFBdUIsR0FBRyxJQUFJLENBQUNILGdCQUFnQixDQUFDVSxZQUFZLElBQUlOLGdCQUFTLENBQUNDLElBQUk7SUFDcEY7SUFFT08sVUFDTkMsSUFBYSxFQUNXO1FBQ3hCLE1BQU1DLGFBQWFELFFBQVE7UUFDM0IsT0FBTyxJQUFJLENBQUNFLG1CQUFtQixDQUFnQkQ7SUFDaEQ7SUFFUUMsb0JBR05GLElBQVksRUFBeUI7UUFDdEMsd0RBQXdEO1FBQ3hELE1BQU1HLFlBQVksSUFBSSxDQUFDaEIsZ0JBQWdCO1FBQ3ZDLE1BQU1pQixlQUFlLElBQUksQ0FBQ2hCLGtCQUFrQjtRQUM1QyxNQUFNaUIsWUFBWSxJQUFJLENBQUNmLHVCQUF1QjtRQUU5QyxNQUFNZ0IsYUFBeUI7WUFDOUIsSUFBSUYsZ0JBQWU7Z0JBQ2xCLE9BQU9BO1lBQ1I7WUFDQSxJQUFJRyxhQUFZO2dCQUNmLE9BQU9KO1lBQ1I7UUFDRDtRQUVBLE1BQU1LLGNBQ0wsQ0FBQ0MsUUFDRCxDQUFDQyxLQUErQixHQUFHQztnQkFDbEMsTUFBTUMsWUFBWSxJQUFJQyxPQUFPQyxXQUFXO2dCQUN4QyxJQUFJQztnQkFFSixJQUFJLE9BQU9MLFFBQVEsVUFBVTtvQkFDNUJLLFVBQVVDLEtBQUtDLFNBQVMsQ0FBQ1A7Z0JBQzFCLE9BQU87b0JBQ05LLFVBQVVHLE9BQU9SO2dCQUNsQjtnQkFFQSxNQUFNUyxVQUFVLENBQUMsQ0FBQyxFQUFFUCxVQUFVLEVBQUUsRUFBRUgsTUFBTVcsV0FBVyxHQUFHLEVBQUUsRUFBRXBCLEtBQUssR0FBRyxFQUFFZSxTQUFTO2dCQUU3RSxJQUFJSixLQUFLVSxNQUFNLEdBQUcsR0FBRztvQkFDcEJDLFFBQVFDLEdBQUcsQ0FBQ0osWUFBWVI7Z0JBQ3pCLE9BQU87b0JBQ05XLFFBQVFDLEdBQUcsQ0FBQ0o7Z0JBQ2I7WUFDRDtRQUVELE1BQU1LLE9BQU8sS0FBTztRQUVwQixtREFBbUQ7UUFDbkQsTUFBTUMsU0FBU0MsT0FBT0MsTUFBTSxDQUFDckIsWUFBWTtZQUN4Q3NCLGdCQUFnQixDQUFDbkIsUUFBa0IsQUFBQ04sQ0FBQUEsU0FBUyxDQUFDTSxNQUFNLElBQUksQ0FBQSxLQUFNSjtRQUMvRDtRQUVBLDJEQUEyRDtRQUMzRCw0REFBNEQ7UUFDNUQsS0FBSyxNQUFNLENBQUN3QixXQUFXQyxXQUFXLElBQUlKLE9BQU9LLE9BQU8sQ0FBQzVCLFdBQVk7WUFDaEUseUZBQXlGO1lBQ3hGc0IsTUFBYyxDQUFDSSxVQUFVLEdBQUdDLGNBQWN6QixZQUFZRyxZQUFZcUIsYUFBYUw7UUFDakY7UUFFQSxPQUFPQztJQUNSO0FBQ0QifQ==
|
package/commonjs/src/env.js
CHANGED
|
@@ -90,3 +90,5 @@ function resolveLogLevel(arg) {
|
|
|
90
90
|
}
|
|
91
91
|
return defaultLogLevel;
|
|
92
92
|
}
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2Vudi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlZmF1bHRMZXZlbHMgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzIGNoZWNrZWQgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZS5cbiAqIFRoZSBmaXJzdCBub24tZW1wdHkgdmFsdWUgZm91bmQgaXMgdXNlZC5cbiAqL1xuY29uc3QgRU5WX1ZBUl9OQU1FUyA9IFtcIkxPR19MRVZFTFwiLCBcIlNDUklCRV9MT0dfTEVWRUxcIiwgXCJMT0dHSU5HX0xFVkVMXCJdIGFzIGNvbnN0O1xuXG5jb25zdCBWQUxJRF9MRVZFTFM6IERlZmF1bHRMZXZlbHNbXSA9IFtcImZhdGFsXCIsIFwiZXJyb3JcIiwgXCJ3YXJuXCIsIFwiaW5mb1wiLCBcImRlYnVnXCIsIFwidHJhY2VcIl07XG5cbi8qKlxuICogUmVhZHMgdGhlIGxvZyBsZXZlbCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqIENoZWNrcyBMT0dfTEVWRUwsIFNDUklCRV9MT0dfTEVWRUwsIGFuZCBMT0dHSU5HX0xFVkVMIGluIG9yZGVyLlxuICogUmV0dXJucyBudWxsIGlmIG5vbmUgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0xldmVsRnJvbUVudigpOiBzdHJpbmcgfCBudWxsIHtcblx0Zm9yIChjb25zdCBuYW1lIG9mIEVOVl9WQVJfTkFNRVMpIHtcblx0XHRjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdPy50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVhZHMgYSBsb2ctbGV2ZWwgZmxhZyBmcm9tIGFyZ3YuXG4gKiBTdXBwb3J0czogLS1sb2ctbGV2ZWwgPHZhbHVlPiwgLWwgPHZhbHVlPiwgYW5kIC0tbG9nLWxldmVsPTx2YWx1ZT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0xldmVsRnJvbUFyZ3YoYXJndjogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJndi5sZW5ndGg7IGluZGV4ICs9IDEpIHtcblx0XHRjb25zdCBhcmcgPSBhcmd2W2luZGV4XTtcblx0XHRpZiAoYXJnID09PSBcIi0tbG9nLWxldmVsXCIgfHwgYXJnID09PSBcIi1sXCIpIHtcblx0XHRcdHJldHVybiBhcmd2W2luZGV4ICsgMV07XG5cdFx0fVxuXHRcdGlmIChhcmcuc3RhcnRzV2l0aChcIi0tbG9nLWxldmVsPVwiKSkge1xuXHRcdFx0cmV0dXJuIGFyZy5zbGljZShcIi0tbG9nLWxldmVsPVwiLmxlbmd0aCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHJlY29nbmlzZWQgZGVmYXVsdCBsb2cgbGV2ZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTG9nTGV2ZWwobGV2ZWw6IHN0cmluZyk6IGxldmVsIGlzIERlZmF1bHRMZXZlbHMge1xuXHRyZXR1cm4gKFZBTElEX0xFVkVMUyBhcyBzdHJpbmdbXSkuaW5jbHVkZXMobGV2ZWwpO1xufVxuXG5leHBvcnQgdHlwZSBSZXNvbHZlTG9nTGV2ZWxPcHRpb25zID0ge1xuXHRleHBsaWNpdExvZ0xldmVsPzogc3RyaW5nIHwgbnVsbDtcblx0ZW52TG9nTGV2ZWw/OiBzdHJpbmcgfCBudWxsO1xuXHRkZWZhdWx0TG9nTGV2ZWw6IHN0cmluZztcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgbG9nIGxldmVsIHdpdGggcHJlY2VkZW5jZTogZXhwbGljaXQgPiBlbnYgPiBkZWZhdWx0LlxuICogSW52YWxpZCBleHBsaWNpdC9lbnYgbGV2ZWxzIGZhbGwgYmFjayB0byBkZWZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUxvZ0xldmVsKGV4cGxpY2l0TG9nTGV2ZWw/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTG9nTGV2ZWwob3B0aW9uczogUmVzb2x2ZUxvZ0xldmVsT3B0aW9ucyk6IHN0cmluZztcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTG9nTGV2ZWwoYXJnPzogc3RyaW5nIHwgbnVsbCB8IFJlc29sdmVMb2dMZXZlbE9wdGlvbnMpOiBzdHJpbmcgfCBudWxsIHtcblx0aWYgKHR5cGVvZiBhcmcgPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoaXNWYWxpZExvZ0xldmVsKGFyZykpIHtcblx0XHRcdHJldHVybiBhcmc7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZW52TG9nTGV2ZWwgPSBnZXRMb2dMZXZlbEZyb21FbnYoKTtcblx0XHRpZiAoZW52TG9nTGV2ZWwgIT0gbnVsbCAmJiBpc1ZhbGlkTG9nTGV2ZWwoZW52TG9nTGV2ZWwpKSB7XG5cdFx0XHRyZXR1cm4gZW52TG9nTGV2ZWw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRpZiAoYXJnID09IG51bGwpIHtcblx0XHRjb25zdCBlbnZMb2dMZXZlbCA9IGdldExvZ0xldmVsRnJvbUVudigpO1xuXHRcdGlmIChlbnZMb2dMZXZlbCAhPSBudWxsICYmIGlzVmFsaWRMb2dMZXZlbChlbnZMb2dMZXZlbCkpIHtcblx0XHRcdHJldHVybiBlbnZMb2dMZXZlbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGNvbnN0IHsgZXhwbGljaXRMb2dMZXZlbCwgZW52TG9nTGV2ZWwsIGRlZmF1bHRMb2dMZXZlbCB9ID0gYXJnO1xuXHRpZiAoZXhwbGljaXRMb2dMZXZlbCAhPSBudWxsICYmIGlzVmFsaWRMb2dMZXZlbChleHBsaWNpdExvZ0xldmVsKSkge1xuXHRcdHJldHVybiBleHBsaWNpdExvZ0xldmVsO1xuXHR9XG5cblx0Y29uc3QgcmVzb2x2ZWRFbnZMb2dMZXZlbCA9IGVudkxvZ0xldmVsID8/IGdldExvZ0xldmVsRnJvbUVudigpO1xuXHRpZiAocmVzb2x2ZWRFbnZMb2dMZXZlbCAhPSBudWxsICYmIGlzVmFsaWRMb2dMZXZlbChyZXNvbHZlZEVudkxvZ0xldmVsKSkge1xuXHRcdHJldHVybiByZXNvbHZlZEVudkxvZ0xldmVsO1xuXHR9XG5cblx0cmV0dXJuIGRlZmF1bHRMb2dMZXZlbDtcbn1cbiJdLCJuYW1lcyI6WyJnZXRMb2dMZXZlbEZyb21Bcmd2IiwiZ2V0TG9nTGV2ZWxGcm9tRW52IiwiaXNWYWxpZExvZ0xldmVsIiwicmVzb2x2ZUxvZ0xldmVsIiwiRU5WX1ZBUl9OQU1FUyIsIlZBTElEX0xFVkVMUyIsIm5hbWUiLCJ2YWx1ZSIsInByb2Nlc3MiLCJlbnYiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJhcmd2IiwiaW5kZXgiLCJsZW5ndGgiLCJhcmciLCJzdGFydHNXaXRoIiwic2xpY2UiLCJ1bmRlZmluZWQiLCJsZXZlbCIsImluY2x1ZGVzIiwiZW52TG9nTGV2ZWwiLCJleHBsaWNpdExvZ0xldmVsIiwiZGVmYXVsdExvZ0xldmVsIiwicmVzb2x2ZWRFbnZMb2dMZXZlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUE2QmdCQTtlQUFBQTs7UUFkQUM7ZUFBQUE7O1FBK0JBQztlQUFBQTs7UUFnQkFDO2VBQUFBOzs7QUE1RGhCOzs7Q0FHQyxHQUNELE1BQU1DLGdCQUFnQjtJQUFDO0lBQWE7SUFBb0I7Q0FBZ0I7QUFFeEUsTUFBTUMsZUFBZ0M7SUFBQztJQUFTO0lBQVM7SUFBUTtJQUFRO0lBQVM7Q0FBUTtBQU9uRixTQUFTSjtJQUNmLEtBQUssTUFBTUssUUFBUUYsY0FBZTtRQUNqQyxNQUFNRyxRQUFRQyxRQUFRQyxHQUFHLENBQUNILEtBQUssRUFBRUksT0FBT0M7UUFDeEMsSUFBSUosT0FBTztZQUNWLE9BQU9BO1FBQ1I7SUFDRDtJQUNBLE9BQU87QUFDUjtBQU1PLFNBQVNQLG9CQUFvQlksSUFBdUI7SUFDMUQsSUFBSyxJQUFJQyxRQUFRLEdBQUdBLFFBQVFELEtBQUtFLE1BQU0sRUFBRUQsU0FBUyxFQUFHO1FBQ3BELE1BQU1FLE1BQU1ILElBQUksQ0FBQ0MsTUFBTTtRQUN2QixJQUFJRSxRQUFRLGlCQUFpQkEsUUFBUSxNQUFNO1lBQzFDLE9BQU9ILElBQUksQ0FBQ0MsUUFBUSxFQUFFO1FBQ3ZCO1FBQ0EsSUFBSUUsSUFBSUMsVUFBVSxDQUFDLGlCQUFpQjtZQUNuQyxPQUFPRCxJQUFJRSxLQUFLLENBQUMsZUFBZUgsTUFBTTtRQUN2QztJQUNEO0lBRUEsT0FBT0k7QUFDUjtBQUtPLFNBQVNoQixnQkFBZ0JpQixLQUFhO0lBQzVDLE9BQU8sQUFBQ2QsYUFBMEJlLFFBQVEsQ0FBQ0Q7QUFDNUM7QUFjTyxTQUFTaEIsZ0JBQWdCWSxHQUE0QztJQUMzRSxJQUFJLE9BQU9BLFFBQVEsVUFBVTtRQUM1QixJQUFJYixnQkFBZ0JhLE1BQU07WUFDekIsT0FBT0E7UUFDUjtRQUVBLE1BQU1NLGNBQWNwQjtRQUNwQixJQUFJb0IsZUFBZSxRQUFRbkIsZ0JBQWdCbUIsY0FBYztZQUN4RCxPQUFPQTtRQUNSO1FBRUEsT0FBTztJQUNSO0lBRUEsSUFBSU4sT0FBTyxNQUFNO1FBQ2hCLE1BQU1NLGNBQWNwQjtRQUNwQixJQUFJb0IsZUFBZSxRQUFRbkIsZ0JBQWdCbUIsY0FBYztZQUN4RCxPQUFPQTtRQUNSO1FBRUEsT0FBTztJQUNSO0lBRUEsTUFBTSxFQUFFQyxnQkFBZ0IsRUFBRUQsV0FBVyxFQUFFRSxlQUFlLEVBQUUsR0FBR1I7SUFDM0QsSUFBSU8sb0JBQW9CLFFBQVFwQixnQkFBZ0JvQixtQkFBbUI7UUFDbEUsT0FBT0E7SUFDUjtJQUVBLE1BQU1FLHNCQUFzQkgsZUFBZXBCO0lBQzNDLElBQUl1Qix1QkFBdUIsUUFBUXRCLGdCQUFnQnNCLHNCQUFzQjtRQUN4RSxPQUFPQTtJQUNSO0lBRUEsT0FBT0Q7QUFDUiJ9
|
package/commonjs/src/errors.js
CHANGED
|
@@ -10,3 +10,5 @@ Object.defineProperty(exports, "LoggingConfigurationError", {
|
|
|
10
10
|
});
|
|
11
11
|
class LoggingConfigurationError extends Error {
|
|
12
12
|
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2Vycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTG9nZ2luZ0NvbmZpZ3VyYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHt9XG4iXSwibmFtZXMiOlsiTG9nZ2luZ0NvbmZpZ3VyYXRpb25FcnJvciIsIkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxrQ0FBa0NDO0FBQU8ifQ==
|
package/commonjs/src/index.js
CHANGED
|
@@ -8,7 +8,6 @@ _export_star(require("./errors.js"), exports);
|
|
|
8
8
|
_export_star(require("./logger.adapter.js"), exports);
|
|
9
9
|
_export_star(require("./logger.factory.js"), exports);
|
|
10
10
|
_export_star(require("./logger.type.js"), exports);
|
|
11
|
-
_export_star(require("./redact.js"), exports);
|
|
12
11
|
_export_star(require("./types.js"), exports);
|
|
13
12
|
function _export_star(from, to) {
|
|
14
13
|
Object.keys(from).forEach(function(k) {
|
|
@@ -23,3 +22,5 @@ function _export_star(from, to) {
|
|
|
23
22
|
});
|
|
24
23
|
return from;
|
|
25
24
|
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnNvbGUuYWRhcHRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW52LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvZ2dlci5hZGFwdGVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb2dnZXIuZmFjdG9yeS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9nZ2VyLnR5cGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLmpzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBYztxQkFDQTtxQkFDQTtxQkFDQTtxQkFDQTtxQkFDQTtxQkFDQSJ9
|
|
@@ -2,37 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get LogAdapter () {
|
|
5
|
+
Object.defineProperty(exports, "LogAdapter", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
13
8
|
return LogAdapter;
|
|
14
|
-
},
|
|
15
|
-
get formatError () {
|
|
16
|
-
return formatError;
|
|
17
9
|
}
|
|
18
10
|
});
|
|
19
11
|
const _types = require("./types.js");
|
|
20
|
-
function formatError(err) {
|
|
21
|
-
return err.stack ?? err.message;
|
|
22
|
-
}
|
|
23
12
|
class LogAdapter {
|
|
24
13
|
flush(cb) {
|
|
25
14
|
cb?.();
|
|
26
15
|
}
|
|
27
|
-
|
|
28
|
-
// Console / no-op adapters have nothing to release.
|
|
29
|
-
}
|
|
30
|
-
async stop() {
|
|
31
|
-
await this[Symbol.asyncDispose]();
|
|
32
|
-
}
|
|
33
|
-
async [Symbol.asyncDispose]() {
|
|
34
|
-
// Console / no-op adapters have nothing to release.
|
|
35
|
-
}
|
|
16
|
+
// biome-ignore lint/suspicious/noExplicitAny: Generic utility method needs flexible typing
|
|
36
17
|
getLogLevels(options) {
|
|
37
18
|
const { customOnly, customLevels } = options;
|
|
38
19
|
if (customOnly) {
|
|
@@ -49,3 +30,5 @@ class LogAdapter {
|
|
|
49
30
|
return unique;
|
|
50
31
|
}
|
|
51
32
|
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2xvZ2dlci5hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLnR5cGUuanNcIjtcbmltcG9ydCB7IExvZ0xldmVscywgdHlwZSBTY3JpYmVPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJBZGFwdGVyIHtcblx0Y29uZmlndXJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0XHRvcHRpb25zOiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+LFxuXHQpO1xuXHRnZXRMb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU6IHN0cmluZyxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXHRmbHVzaChjYj86ICgpID0+IHZvaWQpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9nQWRhcHRlciBpbXBsZW1lbnRzIExvZ2dlckFkYXB0ZXIge1xuXHRwdWJsaWMgYWJzdHJhY3QgY29uZmlndXJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0XHRvcHRpb25zOiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+LFxuXHQpO1xuXG5cdHB1YmxpYyBhYnN0cmFjdCBnZXRMb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU6IHN0cmluZyxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXG5cdHB1YmxpYyBmbHVzaChjYj86ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHRjYj8uKCk7XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IEdlbmVyaWMgdXRpbGl0eSBtZXRob2QgbmVlZHMgZmxleGlibGUgdHlwaW5nXG5cdHByb3RlY3RlZCBnZXRMb2dMZXZlbHMob3B0aW9uczogU2NyaWJlT3B0aW9uczxhbnksIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcblx0XHRjb25zdCB7IGN1c3RvbU9ubHksIGN1c3RvbUxldmVscyB9ID0gb3B0aW9ucztcblx0XHRpZiAoY3VzdG9tT25seSkge1xuXHRcdFx0cmV0dXJuIGN1c3RvbUxldmVscztcblx0XHR9XG5cdFx0Y29uc3QgbGV2ZWxzID0gdGhpcy5nZXRVbmlxdWVMZXZlbHMoTG9nTGV2ZWxzLCBjdXN0b21MZXZlbHMpO1xuXHRcdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMobGV2ZWxzKTtcblx0fVxuXG5cdHByb3RlY3RlZCBnZXRVbmlxdWVMZXZlbHMoXG5cdFx0ZGVmYXVsdExldmVsczogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcblx0XHRjdXN0b21MZXZlbHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG5cdCkge1xuXHRcdGNvbnN0IGRlZmF1bHRFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZGVmYXVsdExldmVscyA/PyB7fSk7XG5cdFx0Y29uc3QgY3VzdG9tRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGN1c3RvbUxldmVscyA/PyB7fSk7XG5cdFx0Y29uc3QgZGVmYXVsdE5vdEluQ3VzdG9tID0gZGVmYXVsdEVudHJpZXMuZmlsdGVyKFxuXHRcdFx0KFtka10pID0+IGN1c3RvbUVudHJpZXMuZmluZEluZGV4KChbY2tdKSA9PiBjayA9PT0gZGspID09PSAtMSxcblx0XHQpO1xuXG5cdFx0Y29uc3QgdW5pcXVlID0gZGVmYXVsdE5vdEluQ3VzdG9tLmNvbmNhdChjdXN0b21FbnRyaWVzKTtcblx0XHRyZXR1cm4gdW5pcXVlO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiTG9nQWRhcHRlciIsImZsdXNoIiwiY2IiLCJnZXRMb2dMZXZlbHMiLCJvcHRpb25zIiwiY3VzdG9tT25seSIsImN1c3RvbUxldmVscyIsImxldmVscyIsImdldFVuaXF1ZUxldmVscyIsIkxvZ0xldmVscyIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiZGVmYXVsdExldmVscyIsImRlZmF1bHRFbnRyaWVzIiwiZW50cmllcyIsImN1c3RvbUVudHJpZXMiLCJkZWZhdWx0Tm90SW5DdXN0b20iLCJmaWx0ZXIiLCJkayIsImZpbmRJbmRleCIsImNrIiwidW5pcXVlIiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiOzs7OytCQWFzQkE7OztlQUFBQTs7O3VCQVp3QjtBQVl2QyxNQUFlQTtJQVNkQyxNQUFNQyxFQUFlLEVBQVE7UUFDbkNBO0lBQ0Q7SUFFQSwyRkFBMkY7SUFDakZDLGFBQWFDLE9BQWdDLEVBQTBCO1FBQ2hGLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxZQUFZLEVBQUUsR0FBR0Y7UUFDckMsSUFBSUMsWUFBWTtZQUNmLE9BQU9DO1FBQ1I7UUFDQSxNQUFNQyxTQUFTLElBQUksQ0FBQ0MsZUFBZSxDQUFDQyxnQkFBUyxFQUFFSDtRQUMvQyxPQUFPSSxPQUFPQyxXQUFXLENBQUNKO0lBQzNCO0lBRVVDLGdCQUNUSSxhQUFxQyxFQUNyQ04sWUFBb0MsRUFDbkM7UUFDRCxNQUFNTyxpQkFBaUJILE9BQU9JLE9BQU8sQ0FBQ0YsaUJBQWlCLENBQUM7UUFDeEQsTUFBTUcsZ0JBQWdCTCxPQUFPSSxPQUFPLENBQUNSLGdCQUFnQixDQUFDO1FBQ3RELE1BQU1VLHFCQUFxQkgsZUFBZUksTUFBTSxDQUMvQyxDQUFDLENBQUNDLEdBQUcsR0FBS0gsY0FBY0ksU0FBUyxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxHQUFLQSxPQUFPRixRQUFRLENBQUM7UUFHN0QsTUFBTUcsU0FBU0wsbUJBQW1CTSxNQUFNLENBQUNQO1FBQ3pDLE9BQU9NO0lBQ1I7QUFDRCJ9
|
|
@@ -14,54 +14,20 @@ const _errors = require("./errors.js");
|
|
|
14
14
|
const _types = require("./types.js");
|
|
15
15
|
class scribe {
|
|
16
16
|
loggerProvider;
|
|
17
|
-
/** True after `configure({ adapter })` — the constructor’s ConsoleAdapter is only a fallback. */ adapterConfigured = false;
|
|
18
|
-
defaultAdapterWarned = false;
|
|
19
17
|
static instance = new scribe();
|
|
20
18
|
static logger(name, customLevels) {
|
|
21
|
-
|
|
22
|
-
// re-resolves the underlying logger on each use (CU-869egxmg2).
|
|
23
|
-
if (customLevels) {
|
|
24
|
-
scribe.instance.getLogger(name, customLevels);
|
|
25
|
-
}
|
|
26
|
-
return scribe.createLiveLogger(name);
|
|
19
|
+
return scribe.instance.getLogger(name, customLevels);
|
|
27
20
|
}
|
|
28
21
|
static configure(configOptions) {
|
|
29
|
-
const previous = scribe.instance;
|
|
30
|
-
// Sync: stop writes into the old ThreadStream before a new worker starts.
|
|
31
|
-
previous.retire();
|
|
32
22
|
scribe.instance = new scribe();
|
|
33
|
-
scribe.instance.configure(configOptions);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return (name)=>scribe.logger(name);
|
|
23
|
+
return scribe.instance.configure(configOptions);
|
|
24
|
+
}
|
|
25
|
+
static get extend() {
|
|
26
|
+
return scribe.instance;
|
|
38
27
|
}
|
|
39
28
|
static flush(cb) {
|
|
40
29
|
scribe.instance.loggerProvider.flush(cb);
|
|
41
30
|
}
|
|
42
|
-
/** Synchronously stop accepting writes on the active adapter. */ static retire() {
|
|
43
|
-
scribe.instance.retire();
|
|
44
|
-
}
|
|
45
|
-
/** Drain the active adapter and release workers / destinations. */ static async stop() {
|
|
46
|
-
await scribe.instance.stop();
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Module-level `const log = scribe.logger(...)` must follow a later
|
|
50
|
-
* `scribe.configure()` (CLI / Flux / HotReloadServer). Forward every use to
|
|
51
|
-
* the active adapter logger for `name`.
|
|
52
|
-
*/ static createLiveLogger(name) {
|
|
53
|
-
return new Proxy({}, {
|
|
54
|
-
get (_target, prop) {
|
|
55
|
-
const underlying = scribe.instance.getLogger(name);
|
|
56
|
-
const value = Reflect.get(underlying, prop, underlying);
|
|
57
|
-
return typeof value === "function" ? value.bind(underlying) : value;
|
|
58
|
-
},
|
|
59
|
-
has (_target, prop) {
|
|
60
|
-
const underlying = scribe.instance.getLogger(name);
|
|
61
|
-
return Reflect.has(underlying, prop);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
31
|
constructor(){
|
|
66
32
|
// Initialize with default console adapter
|
|
67
33
|
this.loggerProvider = new _consoleadapter.ConsoleAdapter();
|
|
@@ -70,30 +36,12 @@ class scribe {
|
|
|
70
36
|
}
|
|
71
37
|
configure(configOptions) {
|
|
72
38
|
const { adapter, options } = configOptions;
|
|
73
|
-
const previous = this.loggerProvider;
|
|
74
|
-
if (previous !== adapter) {
|
|
75
|
-
previous.retire();
|
|
76
|
-
}
|
|
77
39
|
this.loggerProvider = adapter;
|
|
78
|
-
this.adapterConfigured = true;
|
|
79
40
|
const defaultsAndOptions = this.mergeDefaults(options);
|
|
80
41
|
adapter.configure(defaultsAndOptions);
|
|
81
|
-
|
|
82
|
-
void previous.stop();
|
|
83
|
-
}
|
|
84
|
-
return (name)=>scribe.logger(name);
|
|
85
|
-
}
|
|
86
|
-
retire() {
|
|
87
|
-
this.loggerProvider.retire();
|
|
88
|
-
}
|
|
89
|
-
async stop() {
|
|
90
|
-
await this.loggerProvider.stop();
|
|
91
|
-
}
|
|
92
|
-
async [Symbol.asyncDispose]() {
|
|
93
|
-
await this.stop();
|
|
42
|
+
return (name)=>adapter.getLogger(name);
|
|
94
43
|
}
|
|
95
44
|
getLogger(name, customLevels) {
|
|
96
|
-
this.warnIfDefaultAdapter();
|
|
97
45
|
// If custom levels are provided, we need to reconfigure the adapter
|
|
98
46
|
if (customLevels) {
|
|
99
47
|
const currentOptions = this.mergeDefaults({
|
|
@@ -105,13 +53,6 @@ class scribe {
|
|
|
105
53
|
this.supportsLevels(customLevels, logger);
|
|
106
54
|
return logger;
|
|
107
55
|
}
|
|
108
|
-
warnIfDefaultAdapter() {
|
|
109
|
-
if (this.adapterConfigured || this.defaultAdapterWarned) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
this.defaultAdapterWarned = true;
|
|
113
|
-
process.stderr.write("[scribe] No logger adapter configured; using the default ConsoleAdapter. " + "Configure an adapter at your composition root (for production, prefer " + "@decohere/scribe-pino → JSON on stdout). See " + "https://github.com/typesmiths/decohere/blob/main/projects/scribe/README.md\n");
|
|
114
|
-
}
|
|
115
56
|
supportsLevels(customLevels, logger) {
|
|
116
57
|
if (!customLevels) {
|
|
117
58
|
return;
|
|
@@ -126,12 +67,12 @@ class scribe {
|
|
|
126
67
|
}
|
|
127
68
|
mergeDefaults(options) {
|
|
128
69
|
const logLevel = (0, _env.resolveLogLevel)(options?.logLevel) ?? _types.DefaultLogLevel;
|
|
129
|
-
// Resolved logLevel must win over options spread (invalid explicit values
|
|
130
|
-
// would otherwise stick — CU-869emqjq8).
|
|
131
70
|
return {
|
|
71
|
+
logLevel,
|
|
132
72
|
redactions: _types.DefaultRedactions,
|
|
133
|
-
...options
|
|
134
|
-
logLevel
|
|
73
|
+
...options
|
|
135
74
|
};
|
|
136
75
|
}
|
|
137
76
|
}
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2xvZ2dlci5mYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnNvbGVBZGFwdGVyIH0gZnJvbSBcIi4vY29uc29sZS5hZGFwdGVyLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlTG9nTGV2ZWwgfSBmcm9tIFwiLi9lbnYuanNcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCB0eXBlIHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gXCIuL2xvZ2dlci5hZGFwdGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci50eXBlLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0TG9nTGV2ZWwsIERlZmF1bHRSZWRhY3Rpb25zLCB0eXBlIFNjcmliZU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG50eXBlIExvZ2dlckZhY3RvcnlPcHRpb25zPFxuXHRUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG5cdEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZSxcbj4gPSB7XG5cdG9wdGlvbnM/OiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+O1xuXHRhZGFwdGVyOiBMb2dnZXJBZGFwdGVyO1xufTtcblxuZXhwb3J0IGNsYXNzIHNjcmliZSB7XG5cdHByaXZhdGUgbG9nZ2VyUHJvdmlkZXI6IExvZ2dlckFkYXB0ZXI7XG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBzY3JpYmUgPSBuZXcgc2NyaWJlKCk7XG5cblx0cHVibGljIHN0YXRpYyBsb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU/OiBzdHJpbmcsXG5cdFx0Y3VzdG9tTGV2ZWxzPzoge1xuXHRcdFx0W2xldmVsIGluIFRdOiBudW1iZXI7XG5cdFx0fSxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHRyZXR1cm4gc2NyaWJlLmluc3RhbmNlLmdldExvZ2dlcjxULCBDdXN0b21Pbmx5PihuYW1lLCBjdXN0b21MZXZlbHMpIGFzIExvZ2dlcjxcblx0XHRcdFQsXG5cdFx0XHRDdXN0b21Pbmx5XG5cdFx0Pjtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgY29uZmlndXJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0XHRjb25maWdPcHRpb25zOiBMb2dnZXJGYWN0b3J5T3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0c2NyaWJlLmluc3RhbmNlID0gbmV3IHNjcmliZSgpO1xuXHRcdHJldHVybiBzY3JpYmUuaW5zdGFuY2UuY29uZmlndXJlPFQsIEN1c3RvbU9ubHk+KGNvbmZpZ09wdGlvbnMpO1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBnZXQgZXh0ZW5kKCkge1xuXHRcdHJldHVybiBzY3JpYmUuaW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGZsdXNoKGNiPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdHNjcmliZS5pbnN0YW5jZS5sb2dnZXJQcm92aWRlci5mbHVzaChjYik7XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IoKSB7XG5cdFx0Ly8gSW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgY29uc29sZSBhZGFwdGVyXG5cdFx0dGhpcy5sb2dnZXJQcm92aWRlciA9IG5ldyBDb25zb2xlQWRhcHRlcigpO1xuXHRcdGNvbnN0IGRlZmF1bHRPcHRpb25zID0gdGhpcy5tZXJnZURlZmF1bHRzKCk7XG5cdFx0dGhpcy5sb2dnZXJQcm92aWRlci5jb25maWd1cmUoZGVmYXVsdE9wdGlvbnMpO1xuXHR9XG5cblx0cHVibGljIGNvbmZpZ3VyZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0Y29uZmlnT3B0aW9uczogTG9nZ2VyRmFjdG9yeU9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdCk6IChuYW1lPzogc3RyaW5nKSA9PiBMb2dnZXI8VCwgQ3VzdG9tT25seT4ge1xuXHRcdGNvbnN0IHsgYWRhcHRlciwgb3B0aW9ucyB9ID0gY29uZmlnT3B0aW9ucztcblx0XHR0aGlzLmxvZ2dlclByb3ZpZGVyID0gYWRhcHRlcjtcblx0XHRjb25zdCBkZWZhdWx0c0FuZE9wdGlvbnMgPSB0aGlzLm1lcmdlRGVmYXVsdHM8VCwgQ3VzdG9tT25seT4ob3B0aW9ucyk7XG5cdFx0YWRhcHRlci5jb25maWd1cmUoZGVmYXVsdHNBbmRPcHRpb25zKTtcblx0XHRyZXR1cm4gKG5hbWU/OiBzdHJpbmcpID0+IGFkYXB0ZXIuZ2V0TG9nZ2VyKG5hbWUpIGFzIExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU/OiBzdHJpbmcsXG5cdFx0Y3VzdG9tTGV2ZWxzPzoge1xuXHRcdFx0W2xldmVsIGluIFRdOiBudW1iZXI7XG5cdFx0fSxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHQvLyBJZiBjdXN0b20gbGV2ZWxzIGFyZSBwcm92aWRlZCwgd2UgbmVlZCB0byByZWNvbmZpZ3VyZSB0aGUgYWRhcHRlclxuXHRcdGlmIChjdXN0b21MZXZlbHMpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5tZXJnZURlZmF1bHRzKHsgY3VzdG9tTGV2ZWxzIH0pO1xuXHRcdFx0dGhpcy5sb2dnZXJQcm92aWRlci5jb25maWd1cmUoY3VycmVudE9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxvZ2dlciA9IHRoaXMubG9nZ2VyUHJvdmlkZXIuZ2V0TG9nZ2VyKG5hbWUpIGFzIExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcblx0XHR0aGlzLnN1cHBvcnRzTGV2ZWxzKGN1c3RvbUxldmVscywgbG9nZ2VyKTtcblx0XHRyZXR1cm4gbG9nZ2VyO1xuXHR9XG5cblx0cHJpdmF0ZSBzdXBwb3J0c0xldmVsczxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRjdXN0b21MZXZlbHM6IHtcblx0XHRcdFtsZXZlbCBpbiBUXTogbnVtYmVyO1xuXHRcdH0sXG5cdFx0bG9nZ2VyOiBMb2dnZXI8VCwgQ3VzdG9tT25seT4sXG5cdCkge1xuXHRcdGlmICghY3VzdG9tTGV2ZWxzKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWlzc2luZ0xldmVsID0gT2JqZWN0LmVudHJpZXMoY3VzdG9tTGV2ZWxzKS5maW5kKFxuXHRcdFx0KGtleSkgPT4gIWxvZ2dlci5sb2dMZXZlbHNba2V5LmF0KDApLnRvU3RyaW5nKCldLFxuXHRcdCk7XG5cblx0XHRpZiAobWlzc2luZ0xldmVsICE9IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yKFxuXHRcdFx0XHRgQ3VycmVudCBsb2dnZXIgd2FzIG5vdCBjb25maWd1cmVkIGZvciBjdXN0b20gbGV2ZWwgJHttaXNzaW5nTGV2ZWx9LCB2YWxpZCBsZXZlbHMgYXJlOiAke0pTT04uc3RyaW5naWZ5KGxvZ2dlci5sb2dMZXZlbHMpfWAsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4geyBtaXNzaW5nTGV2ZWwgfTtcblx0fVxuXG5cdHByaXZhdGUgbWVyZ2VEZWZhdWx0czxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0b3B0aW9ucz86IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdCk6IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT4ge1xuXHRcdGNvbnN0IGxvZ0xldmVsID0gcmVzb2x2ZUxvZ0xldmVsKG9wdGlvbnM/LmxvZ0xldmVsKSA/PyBEZWZhdWx0TG9nTGV2ZWw7XG5cdFx0cmV0dXJuIHsgbG9nTGV2ZWwsIHJlZGFjdGlvbnM6IERlZmF1bHRSZWRhY3Rpb25zLCAuLi5vcHRpb25zIH07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJzY3JpYmUiLCJsb2dnZXJQcm92aWRlciIsImluc3RhbmNlIiwibG9nZ2VyIiwibmFtZSIsImN1c3RvbUxldmVscyIsImdldExvZ2dlciIsImNvbmZpZ3VyZSIsImNvbmZpZ09wdGlvbnMiLCJleHRlbmQiLCJmbHVzaCIsImNiIiwiQ29uc29sZUFkYXB0ZXIiLCJkZWZhdWx0T3B0aW9ucyIsIm1lcmdlRGVmYXVsdHMiLCJhZGFwdGVyIiwib3B0aW9ucyIsImRlZmF1bHRzQW5kT3B0aW9ucyIsImN1cnJlbnRPcHRpb25zIiwic3VwcG9ydHNMZXZlbHMiLCJtaXNzaW5nTGV2ZWwiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsImtleSIsImxvZ0xldmVscyIsImF0IiwidG9TdHJpbmciLCJMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImxvZ0xldmVsIiwicmVzb2x2ZUxvZ0xldmVsIiwiRGVmYXVsdExvZ0xldmVsIiwicmVkYWN0aW9ucyIsIkRlZmF1bHRSZWRhY3Rpb25zIl0sIm1hcHBpbmdzIjoiOzs7OytCQWVhQTs7O2VBQUFBOzs7Z0NBZmtCO3FCQUNDO3dCQUNVO3VCQUc2QjtBQVVoRSxNQUFNQTtJQUNKQyxlQUE4QjtJQUN0QyxPQUFlQyxXQUFtQixJQUFJRixTQUFTO0lBRS9DLE9BQWNHLE9BQ2JDLElBQWEsRUFDYkMsWUFFQyxFQUN1QjtRQUN4QixPQUFPTCxPQUFPRSxRQUFRLENBQUNJLFNBQVMsQ0FBZ0JGLE1BQU1DO0lBSXZEO0lBRUEsT0FBY0UsVUFDYkMsYUFBa0QsRUFDakQ7UUFDRFIsT0FBT0UsUUFBUSxHQUFHLElBQUlGO1FBQ3RCLE9BQU9BLE9BQU9FLFFBQVEsQ0FBQ0ssU0FBUyxDQUFnQkM7SUFDakQ7SUFFQSxXQUFrQkMsU0FBUztRQUMxQixPQUFPVCxPQUFPRSxRQUFRO0lBQ3ZCO0lBRUEsT0FBY1EsTUFBTUMsRUFBZSxFQUFRO1FBQzFDWCxPQUFPRSxRQUFRLENBQUNELGNBQWMsQ0FBQ1MsS0FBSyxDQUFDQztJQUN0QztJQUVBLGFBQXFCO1FBQ3BCLDBDQUEwQztRQUMxQyxJQUFJLENBQUNWLGNBQWMsR0FBRyxJQUFJVyw4QkFBYztRQUN4QyxNQUFNQyxpQkFBaUIsSUFBSSxDQUFDQyxhQUFhO1FBQ3pDLElBQUksQ0FBQ2IsY0FBYyxDQUFDTSxTQUFTLENBQUNNO0lBQy9CO0lBRU9OLFVBQ05DLGFBQWtELEVBQ1A7UUFDM0MsTUFBTSxFQUFFTyxPQUFPLEVBQUVDLE9BQU8sRUFBRSxHQUFHUjtRQUM3QixJQUFJLENBQUNQLGNBQWMsR0FBR2M7UUFDdEIsTUFBTUUscUJBQXFCLElBQUksQ0FBQ0gsYUFBYSxDQUFnQkU7UUFDN0RELFFBQVFSLFNBQVMsQ0FBQ1U7UUFDbEIsT0FBTyxDQUFDYixPQUFrQlcsUUFBUVQsU0FBUyxDQUFDRjtJQUM3QztJQUVPRSxVQUNORixJQUFhLEVBQ2JDLFlBRUMsRUFDdUI7UUFDeEIsb0VBQW9FO1FBQ3BFLElBQUlBLGNBQWM7WUFDakIsTUFBTWEsaUJBQWlCLElBQUksQ0FBQ0osYUFBYSxDQUFDO2dCQUFFVDtZQUFhO1lBQ3pELElBQUksQ0FBQ0osY0FBYyxDQUFDTSxTQUFTLENBQUNXO1FBQy9CO1FBRUEsTUFBTWYsU0FBUyxJQUFJLENBQUNGLGNBQWMsQ0FBQ0ssU0FBUyxDQUFDRjtRQUM3QyxJQUFJLENBQUNlLGNBQWMsQ0FBQ2QsY0FBY0Y7UUFDbEMsT0FBT0E7SUFDUjtJQUVRZ0IsZUFDUGQsWUFFQyxFQUNERixNQUE2QixFQUM1QjtRQUNELElBQUksQ0FBQ0UsY0FBYztZQUNsQjtRQUNEO1FBRUEsTUFBTWUsZUFBZUMsT0FBT0MsT0FBTyxDQUFDakIsY0FBY2tCLElBQUksQ0FDckQsQ0FBQ0MsTUFBUSxDQUFDckIsT0FBT3NCLFNBQVMsQ0FBQ0QsSUFBSUUsRUFBRSxDQUFDLEdBQUdDLFFBQVEsR0FBRztRQUdqRCxJQUFJUCxnQkFBZ0IsTUFBTTtZQUN6QixNQUFNLElBQUlRLGlDQUF5QixDQUNsQyxDQUFDLG1EQUFtRCxFQUFFUixhQUFhLG9CQUFvQixFQUFFUyxLQUFLQyxTQUFTLENBQUMzQixPQUFPc0IsU0FBUyxHQUFHO1FBRTdIO1FBQ0EsT0FBTztZQUFFTDtRQUFhO0lBQ3ZCO0lBRVFOLGNBQ1BFLE9BQXNDLEVBQ1A7UUFDL0IsTUFBTWUsV0FBV0MsSUFBQUEsb0JBQWUsRUFBQ2hCLFNBQVNlLGFBQWFFLHNCQUFlO1FBQ3RFLE9BQU87WUFBRUY7WUFBVUcsWUFBWUMsd0JBQWlCO1lBQUUsR0FBR25CLE9BQU87UUFBQztJQUM5RDtBQUNEIn0=
|
package/commonjs/src/types.js
CHANGED
|
@@ -9,15 +9,9 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
get DefaultCensor () {
|
|
13
|
-
return DefaultCensor;
|
|
14
|
-
},
|
|
15
12
|
get DefaultLogLevel () {
|
|
16
13
|
return DefaultLogLevel;
|
|
17
14
|
},
|
|
18
|
-
get DefaultRedactionKeys () {
|
|
19
|
-
return DefaultRedactionKeys;
|
|
20
|
-
},
|
|
21
15
|
get DefaultRedactions () {
|
|
22
16
|
return DefaultRedactions;
|
|
23
17
|
},
|
|
@@ -42,18 +36,11 @@ const LogLevels = {
|
|
|
42
36
|
trace: 10
|
|
43
37
|
};
|
|
44
38
|
const DefaultLogLevel = "info";
|
|
45
|
-
const DefaultCensor = "[Redacted]";
|
|
46
|
-
const DefaultRedactionKeys = [
|
|
47
|
-
"password",
|
|
48
|
-
"secret",
|
|
49
|
-
"token",
|
|
50
|
-
"otp",
|
|
51
|
-
"pw",
|
|
52
|
-
"userconfig"
|
|
53
|
-
];
|
|
54
39
|
const DefaultRedactions = {
|
|
55
|
-
paths:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
40
|
+
paths: [
|
|
41
|
+
"*.password",
|
|
42
|
+
"*.secret"
|
|
43
|
+
]
|
|
59
44
|
};
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IExPR19MRVZFTFMgPSBbXCJmYXRhbFwiLCBcImVycm9yXCIsIFwid2FyblwiLCBcImluZm9cIiwgXCJkZWJ1Z1wiLCBcInRyYWNlXCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9IHR5cGVvZiBMT0dfTEVWRUxTO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0TGV2ZWxzID0gTG9nTGV2ZWxbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IExvZ0xldmVscyA9IHtcblx0ZmF0YWw6IDYwLFxuXHRlcnJvcjogNTAsXG5cdHdhcm46IDQwLFxuXHRpbmZvOiAzMCxcblx0ZGVidWc6IDIwLFxuXHR0cmFjZTogMTAsXG59IHNhdGlzZmllcyBSZWNvcmQ8RGVmYXVsdExldmVscywgbnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRMb2dMZXZlbDogRGVmYXVsdExldmVscyA9IFwiaW5mb1wiO1xuXG5leHBvcnQgdHlwZSBSZWRhY3Rpb25PcHRpb25zID0ge1xuXHRwYXRoczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdFJlZGFjdGlvbnM6IFJlZGFjdGlvbk9wdGlvbnMgPSB7IHBhdGhzOiBbXCIqLnBhc3N3b3JkXCIsIFwiKi5zZWNyZXRcIl0gfTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpYmVPcHRpb25zPFxuXHRUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG5cdEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSB1bmRlZmluZWQsXG4+IHtcblx0bG9nTGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nO1xuXHRjdXN0b21MZXZlbHM/OiB7XG5cdFx0W2xldmVsIGluIFRdOiBudW1iZXI7XG5cdH07XG5cdGN1c3RvbU9ubHk/OiBDdXN0b21Pbmx5O1xuXHRyZWRhY3Rpb25zPzogUmVkYWN0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgTG9nQWRhcHRlck9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4iXSwibmFtZXMiOlsiRGVmYXVsdExvZ0xldmVsIiwiRGVmYXVsdFJlZGFjdGlvbnMiLCJMb2dMZXZlbHMiLCJMT0dfTEVWRUxTIiwiZmF0YWwiLCJlcnJvciIsIndhcm4iLCJpbmZvIiwiZGVidWciLCJ0cmFjZSIsInBhdGhzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQWVhQTtlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBZkFDO2VBQUFBOzs7QUFOYixNQUFNQyxhQUFhO0lBQUM7SUFBUztJQUFTO0lBQVE7SUFBUTtJQUFTO0NBQVE7QUFNaEUsTUFBTUQsWUFBWTtJQUN4QkUsT0FBTztJQUNQQyxPQUFPO0lBQ1BDLE1BQU07SUFDTkMsTUFBTTtJQUNOQyxPQUFPO0lBQ1BDLE9BQU87QUFDUjtBQUVPLE1BQU1ULGtCQUFpQztBQU12QyxNQUFNQyxvQkFBc0M7SUFBRVMsT0FBTztRQUFDO1FBQWM7S0FBVztBQUFDIn0=
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { redact } from "./redact.js";
|
|
1
|
+
import { LogAdapter } from "./logger.adapter.js";
|
|
3
2
|
import { DefaultLogLevel, LogLevels } from "./types.js";
|
|
4
3
|
export class ConsoleAdapter extends LogAdapter {
|
|
5
4
|
configuredLevels;
|
|
6
5
|
configuredLogLevel = DefaultLogLevel;
|
|
7
6
|
configuredLogLevelValue = LogLevels.info;
|
|
8
|
-
redactionKeys = redact.fromOptions();
|
|
9
7
|
constructor(_options = {}){
|
|
10
8
|
super();
|
|
11
9
|
}
|
|
12
10
|
configure(scribeOptions) {
|
|
11
|
+
// Get merged log levels (default + custom) using parent class method
|
|
13
12
|
this.configuredLevels = this.getLogLevels(scribeOptions);
|
|
14
13
|
const logLevelStr = scribeOptions.logLevel ?? DefaultLogLevel;
|
|
15
14
|
this.configuredLogLevel = logLevelStr;
|
|
16
15
|
this.configuredLogLevelValue = this.configuredLevels[logLevelStr] ?? LogLevels.info;
|
|
17
|
-
this.redactionKeys = redact.fromOptions(scribeOptions.redactions);
|
|
18
16
|
}
|
|
19
17
|
getLogger(name) {
|
|
20
18
|
const loggerName = name || "default";
|
|
21
19
|
return this.createConsoleLogger(loggerName);
|
|
22
20
|
}
|
|
23
21
|
createConsoleLogger(name) {
|
|
22
|
+
// Use the levels configured during the configure() call
|
|
24
23
|
const allLevels = this.configuredLevels;
|
|
25
24
|
const currentLevel = this.configuredLogLevel;
|
|
26
25
|
const threshold = this.configuredLogLevelValue;
|
|
27
|
-
const redactionKeys = this.redactionKeys;
|
|
28
26
|
const baseLogger = {
|
|
29
27
|
get currentLevel () {
|
|
30
28
|
return currentLevel;
|
|
@@ -37,25 +35,30 @@ export class ConsoleAdapter extends LogAdapter {
|
|
|
37
35
|
const timestamp = new Date().toISOString();
|
|
38
36
|
let message;
|
|
39
37
|
if (typeof msg === "object") {
|
|
40
|
-
message =
|
|
38
|
+
message = JSON.stringify(msg);
|
|
41
39
|
} else {
|
|
42
40
|
message = String(msg);
|
|
43
41
|
}
|
|
44
42
|
const logLine = `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}`;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
console.log(logLine, ...payload);
|
|
43
|
+
if (args.length > 0) {
|
|
44
|
+
console.log(logLine, ...args);
|
|
48
45
|
} else {
|
|
49
46
|
console.log(logLine);
|
|
50
47
|
}
|
|
51
48
|
};
|
|
52
49
|
const noop = ()=>{};
|
|
50
|
+
// Start with base logger and isLevelEnabled method
|
|
53
51
|
const logger = Object.assign(baseLogger, {
|
|
54
52
|
isLevelEnabled: (level)=>(allLevels[level] ?? 0) >= threshold
|
|
55
53
|
});
|
|
54
|
+
// Dynamically add all log level methods (default + custom)
|
|
55
|
+
// Levels below the configured threshold are patched to noop
|
|
56
56
|
for (const [levelName, levelValue] of Object.entries(allLevels)){
|
|
57
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic logger level creation requires any
|
|
57
58
|
logger[levelName] = levelValue >= threshold ? logFunction(levelName) : noop;
|
|
58
59
|
}
|
|
59
60
|
return logger;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2NvbnNvbGUuYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dBZGFwdGVyIH0gZnJvbSBcIi4vbG9nZ2VyLmFkYXB0ZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQmFzZUxvZ2dlciwgTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLnR5cGUuanNcIjtcbmltcG9ydCB7XG5cdERlZmF1bHRMb2dMZXZlbCxcblx0dHlwZSBMb2dBZGFwdGVyT3B0aW9ucyxcblx0TG9nTGV2ZWxzLFxuXHR0eXBlIFNjcmliZU9wdGlvbnMsXG59IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIENvbnNvbGVBZGFwdGVyT3B0aW9ucyA9IHt9ICYgTG9nQWRhcHRlck9wdGlvbnM7XG5cbmV4cG9ydCBjbGFzcyBDb25zb2xlQWRhcHRlciBleHRlbmRzIExvZ0FkYXB0ZXIge1xuXHRwcml2YXRlIGNvbmZpZ3VyZWRMZXZlbHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG5cdHByaXZhdGUgY29uZmlndXJlZExvZ0xldmVsOiBzdHJpbmcgPSBEZWZhdWx0TG9nTGV2ZWw7XG5cdHByaXZhdGUgY29uZmlndXJlZExvZ0xldmVsVmFsdWU6IG51bWJlciA9IExvZ0xldmVscy5pbmZvO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihfb3B0aW9uczogQ29uc29sZUFkYXB0ZXJPcHRpb25zID0ge30pIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0cHVibGljIGNvbmZpZ3VyZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0c2NyaWJlT3B0aW9uczogU2NyaWJlT3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0Ly8gR2V0IG1lcmdlZCBsb2cgbGV2ZWxzIChkZWZhdWx0ICsgY3VzdG9tKSB1c2luZyBwYXJlbnQgY2xhc3MgbWV0aG9kXG5cdFx0dGhpcy5jb25maWd1cmVkTGV2ZWxzID0gdGhpcy5nZXRMb2dMZXZlbHMoc2NyaWJlT3B0aW9ucyk7XG5cdFx0Y29uc3QgbG9nTGV2ZWxTdHIgPSBzY3JpYmVPcHRpb25zLmxvZ0xldmVsID8/IERlZmF1bHRMb2dMZXZlbDtcblx0XHR0aGlzLmNvbmZpZ3VyZWRMb2dMZXZlbCA9IGxvZ0xldmVsU3RyO1xuXHRcdHRoaXMuY29uZmlndXJlZExvZ0xldmVsVmFsdWUgPSB0aGlzLmNvbmZpZ3VyZWRMZXZlbHNbbG9nTGV2ZWxTdHJdID8/IExvZ0xldmVscy5pbmZvO1xuXHR9XG5cblx0cHVibGljIGdldExvZ2dlcjxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0bmFtZT86IHN0cmluZyxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHRjb25zdCBsb2dnZXJOYW1lID0gbmFtZSB8fCBcImRlZmF1bHRcIjtcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVDb25zb2xlTG9nZ2VyPFQsIEN1c3RvbU9ubHk+KGxvZ2dlck5hbWUpO1xuXHR9XG5cblx0cHJpdmF0ZSBjcmVhdGVDb25zb2xlTG9nZ2VyPFxuXHRcdFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcblx0XHRDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2UsXG5cdD4obmFtZTogc3RyaW5nKTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHQvLyBVc2UgdGhlIGxldmVscyBjb25maWd1cmVkIGR1cmluZyB0aGUgY29uZmlndXJlKCkgY2FsbFxuXHRcdGNvbnN0IGFsbExldmVscyA9IHRoaXMuY29uZmlndXJlZExldmVscztcblx0XHRjb25zdCBjdXJyZW50TGV2ZWwgPSB0aGlzLmNvbmZpZ3VyZWRMb2dMZXZlbDtcblx0XHRjb25zdCB0aHJlc2hvbGQgPSB0aGlzLmNvbmZpZ3VyZWRMb2dMZXZlbFZhbHVlO1xuXG5cdFx0Y29uc3QgYmFzZUxvZ2dlcjogQmFzZUxvZ2dlciA9IHtcblx0XHRcdGdldCBjdXJyZW50TGV2ZWwoKSB7XG5cdFx0XHRcdHJldHVybiBjdXJyZW50TGV2ZWw7XG5cdFx0XHR9LFxuXHRcdFx0Z2V0IGxvZ0xldmVscygpIHtcblx0XHRcdFx0cmV0dXJuIGFsbExldmVscztcblx0XHRcdH0sXG5cdFx0fTtcblxuXHRcdGNvbnN0IGxvZ0Z1bmN0aW9uID1cblx0XHRcdChsZXZlbDogc3RyaW5nKSA9PlxuXHRcdFx0KG1zZzogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0Y29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXHRcdFx0XHRsZXQgbWVzc2FnZTogc3RyaW5nO1xuXG5cdFx0XHRcdGlmICh0eXBlb2YgbXNnID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0bWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1zZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bWVzc2FnZSA9IFN0cmluZyhtc2cpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbG9nTGluZSA9IGBbJHt0aW1lc3RhbXB9XSAke2xldmVsLnRvVXBwZXJDYXNlKCl9IFske25hbWV9XTogJHttZXNzYWdlfWA7XG5cblx0XHRcdFx0aWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGxvZ0xpbmUsIC4uLmFyZ3MpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGxvZ0xpbmUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0Y29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5cdFx0Ly8gU3RhcnQgd2l0aCBiYXNlIGxvZ2dlciBhbmQgaXNMZXZlbEVuYWJsZWQgbWV0aG9kXG5cdFx0Y29uc3QgbG9nZ2VyID0gT2JqZWN0LmFzc2lnbihiYXNlTG9nZ2VyLCB7XG5cdFx0XHRpc0xldmVsRW5hYmxlZDogKGxldmVsOiBzdHJpbmcpID0+IChhbGxMZXZlbHNbbGV2ZWxdID8/IDApID49IHRocmVzaG9sZCxcblx0XHR9KTtcblxuXHRcdC8vIER5bmFtaWNhbGx5IGFkZCBhbGwgbG9nIGxldmVsIG1ldGhvZHMgKGRlZmF1bHQgKyBjdXN0b20pXG5cdFx0Ly8gTGV2ZWxzIGJlbG93IHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBhcmUgcGF0Y2hlZCB0byBub29wXG5cdFx0Zm9yIChjb25zdCBbbGV2ZWxOYW1lLCBsZXZlbFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhbGxMZXZlbHMpKSB7XG5cdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IER5bmFtaWMgbG9nZ2VyIGxldmVsIGNyZWF0aW9uIHJlcXVpcmVzIGFueVxuXHRcdFx0KGxvZ2dlciBhcyBhbnkpW2xldmVsTmFtZV0gPSBsZXZlbFZhbHVlID49IHRocmVzaG9sZCA/IGxvZ0Z1bmN0aW9uKGxldmVsTmFtZSkgOiBub29wO1xuXHRcdH1cblxuXHRcdHJldHVybiBsb2dnZXIgYXMgTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXHR9XG59XG4iXSwibmFtZXMiOlsiTG9nQWRhcHRlciIsIkRlZmF1bHRMb2dMZXZlbCIsIkxvZ0xldmVscyIsIkNvbnNvbGVBZGFwdGVyIiwiY29uZmlndXJlZExldmVscyIsImNvbmZpZ3VyZWRMb2dMZXZlbCIsImNvbmZpZ3VyZWRMb2dMZXZlbFZhbHVlIiwiaW5mbyIsIl9vcHRpb25zIiwiY29uZmlndXJlIiwic2NyaWJlT3B0aW9ucyIsImdldExvZ0xldmVscyIsImxvZ0xldmVsU3RyIiwibG9nTGV2ZWwiLCJnZXRMb2dnZXIiLCJuYW1lIiwibG9nZ2VyTmFtZSIsImNyZWF0ZUNvbnNvbGVMb2dnZXIiLCJhbGxMZXZlbHMiLCJjdXJyZW50TGV2ZWwiLCJ0aHJlc2hvbGQiLCJiYXNlTG9nZ2VyIiwibG9nTGV2ZWxzIiwibG9nRnVuY3Rpb24iLCJsZXZlbCIsIm1zZyIsImFyZ3MiLCJ0aW1lc3RhbXAiLCJEYXRlIiwidG9JU09TdHJpbmciLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIlN0cmluZyIsImxvZ0xpbmUiLCJ0b1VwcGVyQ2FzZSIsImxlbmd0aCIsImNvbnNvbGUiLCJsb2ciLCJub29wIiwibG9nZ2VyIiwiT2JqZWN0IiwiYXNzaWduIiwiaXNMZXZlbEVuYWJsZWQiLCJsZXZlbE5hbWUiLCJsZXZlbFZhbHVlIiwiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLHNCQUFzQjtBQUVqRCxTQUNDQyxlQUFlLEVBRWZDLFNBQVMsUUFFSCxhQUFhO0FBSXBCLE9BQU8sTUFBTUMsdUJBQXVCSDtJQUMzQkksaUJBQXlDO0lBQ3pDQyxxQkFBNkJKLGdCQUFnQjtJQUM3Q0ssMEJBQWtDSixVQUFVSyxJQUFJLENBQUM7SUFFekQsWUFBbUJDLFdBQWtDLENBQUMsQ0FBQyxDQUFFO1FBQ3hELEtBQUs7SUFDTjtJQUVPQyxVQUNOQyxhQUEyQyxFQUMxQztRQUNELHFFQUFxRTtRQUNyRSxJQUFJLENBQUNOLGdCQUFnQixHQUFHLElBQUksQ0FBQ08sWUFBWSxDQUFDRDtRQUMxQyxNQUFNRSxjQUFjRixjQUFjRyxRQUFRLElBQUlaO1FBQzlDLElBQUksQ0FBQ0ksa0JBQWtCLEdBQUdPO1FBQzFCLElBQUksQ0FBQ04sdUJBQXVCLEdBQUcsSUFBSSxDQUFDRixnQkFBZ0IsQ0FBQ1EsWUFBWSxJQUFJVixVQUFVSyxJQUFJO0lBQ3BGO0lBRU9PLFVBQ05DLElBQWEsRUFDVztRQUN4QixNQUFNQyxhQUFhRCxRQUFRO1FBQzNCLE9BQU8sSUFBSSxDQUFDRSxtQkFBbUIsQ0FBZ0JEO0lBQ2hEO0lBRVFDLG9CQUdORixJQUFZLEVBQXlCO1FBQ3RDLHdEQUF3RDtRQUN4RCxNQUFNRyxZQUFZLElBQUksQ0FBQ2QsZ0JBQWdCO1FBQ3ZDLE1BQU1lLGVBQWUsSUFBSSxDQUFDZCxrQkFBa0I7UUFDNUMsTUFBTWUsWUFBWSxJQUFJLENBQUNkLHVCQUF1QjtRQUU5QyxNQUFNZSxhQUF5QjtZQUM5QixJQUFJRixnQkFBZTtnQkFDbEIsT0FBT0E7WUFDUjtZQUNBLElBQUlHLGFBQVk7Z0JBQ2YsT0FBT0o7WUFDUjtRQUNEO1FBRUEsTUFBTUssY0FDTCxDQUFDQyxRQUNELENBQUNDLEtBQStCLEdBQUdDO2dCQUNsQyxNQUFNQyxZQUFZLElBQUlDLE9BQU9DLFdBQVc7Z0JBQ3hDLElBQUlDO2dCQUVKLElBQUksT0FBT0wsUUFBUSxVQUFVO29CQUM1QkssVUFBVUMsS0FBS0MsU0FBUyxDQUFDUDtnQkFDMUIsT0FBTztvQkFDTkssVUFBVUcsT0FBT1I7Z0JBQ2xCO2dCQUVBLE1BQU1TLFVBQVUsQ0FBQyxDQUFDLEVBQUVQLFVBQVUsRUFBRSxFQUFFSCxNQUFNVyxXQUFXLEdBQUcsRUFBRSxFQUFFcEIsS0FBSyxHQUFHLEVBQUVlLFNBQVM7Z0JBRTdFLElBQUlKLEtBQUtVLE1BQU0sR0FBRyxHQUFHO29CQUNwQkMsUUFBUUMsR0FBRyxDQUFDSixZQUFZUjtnQkFDekIsT0FBTztvQkFDTlcsUUFBUUMsR0FBRyxDQUFDSjtnQkFDYjtZQUNEO1FBRUQsTUFBTUssT0FBTyxLQUFPO1FBRXBCLG1EQUFtRDtRQUNuRCxNQUFNQyxTQUFTQyxPQUFPQyxNQUFNLENBQUNyQixZQUFZO1lBQ3hDc0IsZ0JBQWdCLENBQUNuQixRQUFrQixBQUFDTixDQUFBQSxTQUFTLENBQUNNLE1BQU0sSUFBSSxDQUFBLEtBQU1KO1FBQy9EO1FBRUEsMkRBQTJEO1FBQzNELDREQUE0RDtRQUM1RCxLQUFLLE1BQU0sQ0FBQ3dCLFdBQVdDLFdBQVcsSUFBSUosT0FBT0ssT0FBTyxDQUFDNUIsV0FBWTtZQUNoRSx5RkFBeUY7WUFDeEZzQixNQUFjLENBQUNJLFVBQVUsR0FBR0MsY0FBY3pCLFlBQVlHLFlBQVlxQixhQUFhTDtRQUNqRjtRQUVBLE9BQU9DO0lBQ1I7QUFDRCJ9
|
package/es6/src/env.js
CHANGED
|
@@ -75,3 +75,5 @@ export function resolveLogLevel(arg) {
|
|
|
75
75
|
}
|
|
76
76
|
return defaultLogLevel;
|
|
77
77
|
}
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2Vudi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlZmF1bHRMZXZlbHMgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzIGNoZWNrZWQgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZS5cbiAqIFRoZSBmaXJzdCBub24tZW1wdHkgdmFsdWUgZm91bmQgaXMgdXNlZC5cbiAqL1xuY29uc3QgRU5WX1ZBUl9OQU1FUyA9IFtcIkxPR19MRVZFTFwiLCBcIlNDUklCRV9MT0dfTEVWRUxcIiwgXCJMT0dHSU5HX0xFVkVMXCJdIGFzIGNvbnN0O1xuXG5jb25zdCBWQUxJRF9MRVZFTFM6IERlZmF1bHRMZXZlbHNbXSA9IFtcImZhdGFsXCIsIFwiZXJyb3JcIiwgXCJ3YXJuXCIsIFwiaW5mb1wiLCBcImRlYnVnXCIsIFwidHJhY2VcIl07XG5cbi8qKlxuICogUmVhZHMgdGhlIGxvZyBsZXZlbCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqIENoZWNrcyBMT0dfTEVWRUwsIFNDUklCRV9MT0dfTEVWRUwsIGFuZCBMT0dHSU5HX0xFVkVMIGluIG9yZGVyLlxuICogUmV0dXJucyBudWxsIGlmIG5vbmUgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0xldmVsRnJvbUVudigpOiBzdHJpbmcgfCBudWxsIHtcblx0Zm9yIChjb25zdCBuYW1lIG9mIEVOVl9WQVJfTkFNRVMpIHtcblx0XHRjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdPy50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVhZHMgYSBsb2ctbGV2ZWwgZmxhZyBmcm9tIGFyZ3YuXG4gKiBTdXBwb3J0czogLS1sb2ctbGV2ZWwgPHZhbHVlPiwgLWwgPHZhbHVlPiwgYW5kIC0tbG9nLWxldmVsPTx2YWx1ZT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0xldmVsRnJvbUFyZ3YoYXJndjogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJndi5sZW5ndGg7IGluZGV4ICs9IDEpIHtcblx0XHRjb25zdCBhcmcgPSBhcmd2W2luZGV4XTtcblx0XHRpZiAoYXJnID09PSBcIi0tbG9nLWxldmVsXCIgfHwgYXJnID09PSBcIi1sXCIpIHtcblx0XHRcdHJldHVybiBhcmd2W2luZGV4ICsgMV07XG5cdFx0fVxuXHRcdGlmIChhcmcuc3RhcnRzV2l0aChcIi0tbG9nLWxldmVsPVwiKSkge1xuXHRcdFx0cmV0dXJuIGFyZy5zbGljZShcIi0tbG9nLWxldmVsPVwiLmxlbmd0aCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHJlY29nbmlzZWQgZGVmYXVsdCBsb2cgbGV2ZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTG9nTGV2ZWwobGV2ZWw6IHN0cmluZyk6IGxldmVsIGlzIERlZmF1bHRMZXZlbHMge1xuXHRyZXR1cm4gKFZBTElEX0xFVkVMUyBhcyBzdHJpbmdbXSkuaW5jbHVkZXMobGV2ZWwpO1xufVxuXG5leHBvcnQgdHlwZSBSZXNvbHZlTG9nTGV2ZWxPcHRpb25zID0ge1xuXHRleHBsaWNpdExvZ0xldmVsPzogc3RyaW5nIHwgbnVsbDtcblx0ZW52TG9nTGV2ZWw/OiBzdHJpbmcgfCBudWxsO1xuXHRkZWZhdWx0TG9nTGV2ZWw6IHN0cmluZztcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgbG9nIGxldmVsIHdpdGggcHJlY2VkZW5jZTogZXhwbGljaXQgPiBlbnYgPiBkZWZhdWx0LlxuICogSW52YWxpZCBleHBsaWNpdC9lbnYgbGV2ZWxzIGZhbGwgYmFjayB0byBkZWZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUxvZ0xldmVsKGV4cGxpY2l0TG9nTGV2ZWw/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTG9nTGV2ZWwob3B0aW9uczogUmVzb2x2ZUxvZ0xldmVsT3B0aW9ucyk6IHN0cmluZztcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTG9nTGV2ZWwoYXJnPzogc3RyaW5nIHwgbnVsbCB8IFJlc29sdmVMb2dMZXZlbE9wdGlvbnMpOiBzdHJpbmcgfCBudWxsIHtcblx0aWYgKHR5cGVvZiBhcmcgPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoaXNWYWxpZExvZ0xldmVsKGFyZykpIHtcblx0XHRcdHJldHVybiBhcmc7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZW52TG9nTGV2ZWwgPSBnZXRMb2dMZXZlbEZyb21FbnYoKTtcblx0XHRpZiAoZW52TG9nTGV2ZWwgIT0gbnVsbCAmJiBpc1ZhbGlkTG9nTGV2ZWwoZW52TG9nTGV2ZWwpKSB7XG5cdFx0XHRyZXR1cm4gZW52TG9nTGV2ZWw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRpZiAoYXJnID09IG51bGwpIHtcblx0XHRjb25zdCBlbnZMb2dMZXZlbCA9IGdldExvZ0xldmVsRnJvbUVudigpO1xuXHRcdGlmIChlbnZMb2dMZXZlbCAhPSBudWxsICYmIGlzVmFsaWRMb2dMZXZlbChlbnZMb2dMZXZlbCkpIHtcblx0XHRcdHJldHVybiBlbnZMb2dMZXZlbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGNvbnN0IHsgZXhwbGljaXRMb2dMZXZlbCwgZW52TG9nTGV2ZWwsIGRlZmF1bHRMb2dMZXZlbCB9ID0gYXJnO1xuXHRpZiAoZXhwbGljaXRMb2dMZXZlbCAhPSBudWxsICYmIGlzVmFsaWRMb2dMZXZlbChleHBsaWNpdExvZ0xldmVsKSkge1xuXHRcdHJldHVybiBleHBsaWNpdExvZ0xldmVsO1xuXHR9XG5cblx0Y29uc3QgcmVzb2x2ZWRFbnZMb2dMZXZlbCA9IGVudkxvZ0xldmVsID8/IGdldExvZ0xldmVsRnJvbUVudigpO1xuXHRpZiAocmVzb2x2ZWRFbnZMb2dMZXZlbCAhPSBudWxsICYmIGlzVmFsaWRMb2dMZXZlbChyZXNvbHZlZEVudkxvZ0xldmVsKSkge1xuXHRcdHJldHVybiByZXNvbHZlZEVudkxvZ0xldmVsO1xuXHR9XG5cblx0cmV0dXJuIGRlZmF1bHRMb2dMZXZlbDtcbn1cbiJdLCJuYW1lcyI6WyJFTlZfVkFSX05BTUVTIiwiVkFMSURfTEVWRUxTIiwiZ2V0TG9nTGV2ZWxGcm9tRW52IiwibmFtZSIsInZhbHVlIiwicHJvY2VzcyIsImVudiIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsImdldExvZ0xldmVsRnJvbUFyZ3YiLCJhcmd2IiwiaW5kZXgiLCJsZW5ndGgiLCJhcmciLCJzdGFydHNXaXRoIiwic2xpY2UiLCJ1bmRlZmluZWQiLCJpc1ZhbGlkTG9nTGV2ZWwiLCJsZXZlbCIsImluY2x1ZGVzIiwicmVzb2x2ZUxvZ0xldmVsIiwiZW52TG9nTGV2ZWwiLCJleHBsaWNpdExvZ0xldmVsIiwiZGVmYXVsdExvZ0xldmVsIiwicmVzb2x2ZWRFbnZMb2dMZXZlbCJdLCJtYXBwaW5ncyI6IkFBRUE7OztDQUdDLEdBQ0QsTUFBTUEsZ0JBQWdCO0lBQUM7SUFBYTtJQUFvQjtDQUFnQjtBQUV4RSxNQUFNQyxlQUFnQztJQUFDO0lBQVM7SUFBUztJQUFRO0lBQVE7SUFBUztDQUFRO0FBRTFGOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVNDO0lBQ2YsS0FBSyxNQUFNQyxRQUFRSCxjQUFlO1FBQ2pDLE1BQU1JLFFBQVFDLFFBQVFDLEdBQUcsQ0FBQ0gsS0FBSyxFQUFFSSxPQUFPQztRQUN4QyxJQUFJSixPQUFPO1lBQ1YsT0FBT0E7UUFDUjtJQUNEO0lBQ0EsT0FBTztBQUNSO0FBRUE7OztDQUdDLEdBQ0QsT0FBTyxTQUFTSyxvQkFBb0JDLElBQXVCO0lBQzFELElBQUssSUFBSUMsUUFBUSxHQUFHQSxRQUFRRCxLQUFLRSxNQUFNLEVBQUVELFNBQVMsRUFBRztRQUNwRCxNQUFNRSxNQUFNSCxJQUFJLENBQUNDLE1BQU07UUFDdkIsSUFBSUUsUUFBUSxpQkFBaUJBLFFBQVEsTUFBTTtZQUMxQyxPQUFPSCxJQUFJLENBQUNDLFFBQVEsRUFBRTtRQUN2QjtRQUNBLElBQUlFLElBQUlDLFVBQVUsQ0FBQyxpQkFBaUI7WUFDbkMsT0FBT0QsSUFBSUUsS0FBSyxDQUFDLGVBQWVILE1BQU07UUFDdkM7SUFDRDtJQUVBLE9BQU9JO0FBQ1I7QUFFQTs7Q0FFQyxHQUNELE9BQU8sU0FBU0MsZ0JBQWdCQyxLQUFhO0lBQzVDLE9BQU8sQUFBQ2pCLGFBQTBCa0IsUUFBUSxDQUFDRDtBQUM1QztBQWNBLE9BQU8sU0FBU0UsZ0JBQWdCUCxHQUE0QztJQUMzRSxJQUFJLE9BQU9BLFFBQVEsVUFBVTtRQUM1QixJQUFJSSxnQkFBZ0JKLE1BQU07WUFDekIsT0FBT0E7UUFDUjtRQUVBLE1BQU1RLGNBQWNuQjtRQUNwQixJQUFJbUIsZUFBZSxRQUFRSixnQkFBZ0JJLGNBQWM7WUFDeEQsT0FBT0E7UUFDUjtRQUVBLE9BQU87SUFDUjtJQUVBLElBQUlSLE9BQU8sTUFBTTtRQUNoQixNQUFNUSxjQUFjbkI7UUFDcEIsSUFBSW1CLGVBQWUsUUFBUUosZ0JBQWdCSSxjQUFjO1lBQ3hELE9BQU9BO1FBQ1I7UUFFQSxPQUFPO0lBQ1I7SUFFQSxNQUFNLEVBQUVDLGdCQUFnQixFQUFFRCxXQUFXLEVBQUVFLGVBQWUsRUFBRSxHQUFHVjtJQUMzRCxJQUFJUyxvQkFBb0IsUUFBUUwsZ0JBQWdCSyxtQkFBbUI7UUFDbEUsT0FBT0E7SUFDUjtJQUVBLE1BQU1FLHNCQUFzQkgsZUFBZW5CO0lBQzNDLElBQUlzQix1QkFBdUIsUUFBUVAsZ0JBQWdCTyxzQkFBc0I7UUFDeEUsT0FBT0E7SUFDUjtJQUVBLE9BQU9EO0FBQ1IifQ==
|
package/es6/src/errors.js
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export class LoggingConfigurationError extends Error {
|
|
2
2
|
}
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2Vycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTG9nZ2luZ0NvbmZpZ3VyYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHt9XG4iXSwibmFtZXMiOlsiTG9nZ2luZ0NvbmZpZ3VyYXRpb25FcnJvciIsIkVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLGtDQUFrQ0M7QUFBTyJ9
|
package/es6/src/index.js
CHANGED
|
@@ -4,5 +4,6 @@ export * from "./errors.js";
|
|
|
4
4
|
export * from "./logger.adapter.js";
|
|
5
5
|
export * from "./logger.factory.js";
|
|
6
6
|
export * from "./logger.type.js";
|
|
7
|
-
export * from "./redact.js";
|
|
8
7
|
export * from "./types.js";
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnNvbGUuYWRhcHRlci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW52LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvZ2dlci5hZGFwdGVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb2dnZXIuZmFjdG9yeS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9nZ2VyLnR5cGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLmpzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxXQUFXO0FBQ3pCLGNBQWMsY0FBYztBQUM1QixjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLGFBQWEifQ==
|
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
import { LogLevels } from "./types.js";
|
|
2
|
-
export function formatError(err) {
|
|
3
|
-
return err.stack ?? err.message;
|
|
4
|
-
}
|
|
5
2
|
export class LogAdapter {
|
|
6
3
|
flush(cb) {
|
|
7
4
|
cb?.();
|
|
8
5
|
}
|
|
9
|
-
|
|
10
|
-
// Console / no-op adapters have nothing to release.
|
|
11
|
-
}
|
|
12
|
-
async stop() {
|
|
13
|
-
await this[Symbol.asyncDispose]();
|
|
14
|
-
}
|
|
15
|
-
async [Symbol.asyncDispose]() {
|
|
16
|
-
// Console / no-op adapters have nothing to release.
|
|
17
|
-
}
|
|
6
|
+
// biome-ignore lint/suspicious/noExplicitAny: Generic utility method needs flexible typing
|
|
18
7
|
getLogLevels(options) {
|
|
19
8
|
const { customOnly, customLevels } = options;
|
|
20
9
|
if (customOnly) {
|
|
@@ -31,3 +20,5 @@ export class LogAdapter {
|
|
|
31
20
|
return unique;
|
|
32
21
|
}
|
|
33
22
|
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2xvZ2dlci5hZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLnR5cGUuanNcIjtcbmltcG9ydCB7IExvZ0xldmVscywgdHlwZSBTY3JpYmVPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJBZGFwdGVyIHtcblx0Y29uZmlndXJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0XHRvcHRpb25zOiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+LFxuXHQpO1xuXHRnZXRMb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU6IHN0cmluZyxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXHRmbHVzaChjYj86ICgpID0+IHZvaWQpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9nQWRhcHRlciBpbXBsZW1lbnRzIExvZ2dlckFkYXB0ZXIge1xuXHRwdWJsaWMgYWJzdHJhY3QgY29uZmlndXJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0XHRvcHRpb25zOiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+LFxuXHQpO1xuXG5cdHB1YmxpYyBhYnN0cmFjdCBnZXRMb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU6IHN0cmluZyxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+O1xuXG5cdHB1YmxpYyBmbHVzaChjYj86ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHRjYj8uKCk7XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IEdlbmVyaWMgdXRpbGl0eSBtZXRob2QgbmVlZHMgZmxleGlibGUgdHlwaW5nXG5cdHByb3RlY3RlZCBnZXRMb2dMZXZlbHMob3B0aW9uczogU2NyaWJlT3B0aW9uczxhbnksIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcblx0XHRjb25zdCB7IGN1c3RvbU9ubHksIGN1c3RvbUxldmVscyB9ID0gb3B0aW9ucztcblx0XHRpZiAoY3VzdG9tT25seSkge1xuXHRcdFx0cmV0dXJuIGN1c3RvbUxldmVscztcblx0XHR9XG5cdFx0Y29uc3QgbGV2ZWxzID0gdGhpcy5nZXRVbmlxdWVMZXZlbHMoTG9nTGV2ZWxzLCBjdXN0b21MZXZlbHMpO1xuXHRcdHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMobGV2ZWxzKTtcblx0fVxuXG5cdHByb3RlY3RlZCBnZXRVbmlxdWVMZXZlbHMoXG5cdFx0ZGVmYXVsdExldmVsczogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcblx0XHRjdXN0b21MZXZlbHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG5cdCkge1xuXHRcdGNvbnN0IGRlZmF1bHRFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZGVmYXVsdExldmVscyA/PyB7fSk7XG5cdFx0Y29uc3QgY3VzdG9tRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGN1c3RvbUxldmVscyA/PyB7fSk7XG5cdFx0Y29uc3QgZGVmYXVsdE5vdEluQ3VzdG9tID0gZGVmYXVsdEVudHJpZXMuZmlsdGVyKFxuXHRcdFx0KFtka10pID0+IGN1c3RvbUVudHJpZXMuZmluZEluZGV4KChbY2tdKSA9PiBjayA9PT0gZGspID09PSAtMSxcblx0XHQpO1xuXG5cdFx0Y29uc3QgdW5pcXVlID0gZGVmYXVsdE5vdEluQ3VzdG9tLmNvbmNhdChjdXN0b21FbnRyaWVzKTtcblx0XHRyZXR1cm4gdW5pcXVlO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiTG9nTGV2ZWxzIiwiTG9nQWRhcHRlciIsImZsdXNoIiwiY2IiLCJnZXRMb2dMZXZlbHMiLCJvcHRpb25zIiwiY3VzdG9tT25seSIsImN1c3RvbUxldmVscyIsImxldmVscyIsImdldFVuaXF1ZUxldmVscyIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiZGVmYXVsdExldmVscyIsImRlZmF1bHRFbnRyaWVzIiwiZW50cmllcyIsImN1c3RvbUVudHJpZXMiLCJkZWZhdWx0Tm90SW5DdXN0b20iLCJmaWx0ZXIiLCJkayIsImZpbmRJbmRleCIsImNrIiwidW5pcXVlIiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxTQUFTLFFBQTRCLGFBQWE7QUFZM0QsT0FBTyxNQUFlQztJQVNkQyxNQUFNQyxFQUFlLEVBQVE7UUFDbkNBO0lBQ0Q7SUFFQSwyRkFBMkY7SUFDakZDLGFBQWFDLE9BQWdDLEVBQTBCO1FBQ2hGLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxZQUFZLEVBQUUsR0FBR0Y7UUFDckMsSUFBSUMsWUFBWTtZQUNmLE9BQU9DO1FBQ1I7UUFDQSxNQUFNQyxTQUFTLElBQUksQ0FBQ0MsZUFBZSxDQUFDVCxXQUFXTztRQUMvQyxPQUFPRyxPQUFPQyxXQUFXLENBQUNIO0lBQzNCO0lBRVVDLGdCQUNURyxhQUFxQyxFQUNyQ0wsWUFBb0MsRUFDbkM7UUFDRCxNQUFNTSxpQkFBaUJILE9BQU9JLE9BQU8sQ0FBQ0YsaUJBQWlCLENBQUM7UUFDeEQsTUFBTUcsZ0JBQWdCTCxPQUFPSSxPQUFPLENBQUNQLGdCQUFnQixDQUFDO1FBQ3RELE1BQU1TLHFCQUFxQkgsZUFBZUksTUFBTSxDQUMvQyxDQUFDLENBQUNDLEdBQUcsR0FBS0gsY0FBY0ksU0FBUyxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxHQUFLQSxPQUFPRixRQUFRLENBQUM7UUFHN0QsTUFBTUcsU0FBU0wsbUJBQW1CTSxNQUFNLENBQUNQO1FBQ3pDLE9BQU9NO0lBQ1I7QUFDRCJ9
|
|
@@ -4,54 +4,20 @@ import { LoggingConfigurationError } from "./errors.js";
|
|
|
4
4
|
import { DefaultLogLevel, DefaultRedactions } from "./types.js";
|
|
5
5
|
export class scribe {
|
|
6
6
|
loggerProvider;
|
|
7
|
-
/** True after `configure({ adapter })` — the constructor’s ConsoleAdapter is only a fallback. */ adapterConfigured = false;
|
|
8
|
-
defaultAdapterWarned = false;
|
|
9
7
|
static instance = new scribe();
|
|
10
8
|
static logger(name, customLevels) {
|
|
11
|
-
|
|
12
|
-
// re-resolves the underlying logger on each use (CU-869egxmg2).
|
|
13
|
-
if (customLevels) {
|
|
14
|
-
scribe.instance.getLogger(name, customLevels);
|
|
15
|
-
}
|
|
16
|
-
return scribe.createLiveLogger(name);
|
|
9
|
+
return scribe.instance.getLogger(name, customLevels);
|
|
17
10
|
}
|
|
18
11
|
static configure(configOptions) {
|
|
19
|
-
const previous = scribe.instance;
|
|
20
|
-
// Sync: stop writes into the old ThreadStream before a new worker starts.
|
|
21
|
-
previous.retire();
|
|
22
12
|
scribe.instance = new scribe();
|
|
23
|
-
scribe.instance.configure(configOptions);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return (name)=>scribe.logger(name);
|
|
13
|
+
return scribe.instance.configure(configOptions);
|
|
14
|
+
}
|
|
15
|
+
static get extend() {
|
|
16
|
+
return scribe.instance;
|
|
28
17
|
}
|
|
29
18
|
static flush(cb) {
|
|
30
19
|
scribe.instance.loggerProvider.flush(cb);
|
|
31
20
|
}
|
|
32
|
-
/** Synchronously stop accepting writes on the active adapter. */ static retire() {
|
|
33
|
-
scribe.instance.retire();
|
|
34
|
-
}
|
|
35
|
-
/** Drain the active adapter and release workers / destinations. */ static async stop() {
|
|
36
|
-
await scribe.instance.stop();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Module-level `const log = scribe.logger(...)` must follow a later
|
|
40
|
-
* `scribe.configure()` (CLI / Flux / HotReloadServer). Forward every use to
|
|
41
|
-
* the active adapter logger for `name`.
|
|
42
|
-
*/ static createLiveLogger(name) {
|
|
43
|
-
return new Proxy({}, {
|
|
44
|
-
get (_target, prop) {
|
|
45
|
-
const underlying = scribe.instance.getLogger(name);
|
|
46
|
-
const value = Reflect.get(underlying, prop, underlying);
|
|
47
|
-
return typeof value === "function" ? value.bind(underlying) : value;
|
|
48
|
-
},
|
|
49
|
-
has (_target, prop) {
|
|
50
|
-
const underlying = scribe.instance.getLogger(name);
|
|
51
|
-
return Reflect.has(underlying, prop);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
21
|
constructor(){
|
|
56
22
|
// Initialize with default console adapter
|
|
57
23
|
this.loggerProvider = new ConsoleAdapter();
|
|
@@ -60,30 +26,12 @@ export class scribe {
|
|
|
60
26
|
}
|
|
61
27
|
configure(configOptions) {
|
|
62
28
|
const { adapter, options } = configOptions;
|
|
63
|
-
const previous = this.loggerProvider;
|
|
64
|
-
if (previous !== adapter) {
|
|
65
|
-
previous.retire();
|
|
66
|
-
}
|
|
67
29
|
this.loggerProvider = adapter;
|
|
68
|
-
this.adapterConfigured = true;
|
|
69
30
|
const defaultsAndOptions = this.mergeDefaults(options);
|
|
70
31
|
adapter.configure(defaultsAndOptions);
|
|
71
|
-
|
|
72
|
-
void previous.stop();
|
|
73
|
-
}
|
|
74
|
-
return (name)=>scribe.logger(name);
|
|
75
|
-
}
|
|
76
|
-
retire() {
|
|
77
|
-
this.loggerProvider.retire();
|
|
78
|
-
}
|
|
79
|
-
async stop() {
|
|
80
|
-
await this.loggerProvider.stop();
|
|
81
|
-
}
|
|
82
|
-
async [Symbol.asyncDispose]() {
|
|
83
|
-
await this.stop();
|
|
32
|
+
return (name)=>adapter.getLogger(name);
|
|
84
33
|
}
|
|
85
34
|
getLogger(name, customLevels) {
|
|
86
|
-
this.warnIfDefaultAdapter();
|
|
87
35
|
// If custom levels are provided, we need to reconfigure the adapter
|
|
88
36
|
if (customLevels) {
|
|
89
37
|
const currentOptions = this.mergeDefaults({
|
|
@@ -95,13 +43,6 @@ export class scribe {
|
|
|
95
43
|
this.supportsLevels(customLevels, logger);
|
|
96
44
|
return logger;
|
|
97
45
|
}
|
|
98
|
-
warnIfDefaultAdapter() {
|
|
99
|
-
if (this.adapterConfigured || this.defaultAdapterWarned) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
this.defaultAdapterWarned = true;
|
|
103
|
-
process.stderr.write("[scribe] No logger adapter configured; using the default ConsoleAdapter. " + "Configure an adapter at your composition root (for production, prefer " + "@decohere/scribe-pino → JSON on stdout). See " + "https://github.com/typesmiths/decohere/blob/main/projects/scribe/README.md\n");
|
|
104
|
-
}
|
|
105
46
|
supportsLevels(customLevels, logger) {
|
|
106
47
|
if (!customLevels) {
|
|
107
48
|
return;
|
|
@@ -116,12 +57,12 @@ export class scribe {
|
|
|
116
57
|
}
|
|
117
58
|
mergeDefaults(options) {
|
|
118
59
|
const logLevel = resolveLogLevel(options?.logLevel) ?? DefaultLogLevel;
|
|
119
|
-
// Resolved logLevel must win over options spread (invalid explicit values
|
|
120
|
-
// would otherwise stick — CU-869emqjq8).
|
|
121
60
|
return {
|
|
61
|
+
logLevel,
|
|
122
62
|
redactions: DefaultRedactions,
|
|
123
|
-
...options
|
|
124
|
-
logLevel
|
|
63
|
+
...options
|
|
125
64
|
};
|
|
126
65
|
}
|
|
127
66
|
}
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2xvZ2dlci5mYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnNvbGVBZGFwdGVyIH0gZnJvbSBcIi4vY29uc29sZS5hZGFwdGVyLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlTG9nTGV2ZWwgfSBmcm9tIFwiLi9lbnYuanNcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCB0eXBlIHsgTG9nZ2VyQWRhcHRlciB9IGZyb20gXCIuL2xvZ2dlci5hZGFwdGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IExvZ2dlciB9IGZyb20gXCIuL2xvZ2dlci50eXBlLmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0TG9nTGV2ZWwsIERlZmF1bHRSZWRhY3Rpb25zLCB0eXBlIFNjcmliZU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG50eXBlIExvZ2dlckZhY3RvcnlPcHRpb25zPFxuXHRUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG5cdEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZSxcbj4gPSB7XG5cdG9wdGlvbnM/OiBTY3JpYmVPcHRpb25zPFQsIEN1c3RvbU9ubHk+O1xuXHRhZGFwdGVyOiBMb2dnZXJBZGFwdGVyO1xufTtcblxuZXhwb3J0IGNsYXNzIHNjcmliZSB7XG5cdHByaXZhdGUgbG9nZ2VyUHJvdmlkZXI6IExvZ2dlckFkYXB0ZXI7XG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBzY3JpYmUgPSBuZXcgc2NyaWJlKCk7XG5cblx0cHVibGljIHN0YXRpYyBsb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU/OiBzdHJpbmcsXG5cdFx0Y3VzdG9tTGV2ZWxzPzoge1xuXHRcdFx0W2xldmVsIGluIFRdOiBudW1iZXI7XG5cdFx0fSxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHRyZXR1cm4gc2NyaWJlLmluc3RhbmNlLmdldExvZ2dlcjxULCBDdXN0b21Pbmx5PihuYW1lLCBjdXN0b21MZXZlbHMpIGFzIExvZ2dlcjxcblx0XHRcdFQsXG5cdFx0XHRDdXN0b21Pbmx5XG5cdFx0Pjtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgY29uZmlndXJlPFQgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlciwgQ3VzdG9tT25seSBleHRlbmRzIHRydWUgfCBmYWxzZSA9IGZhbHNlPihcblx0XHRjb25maWdPcHRpb25zOiBMb2dnZXJGYWN0b3J5T3B0aW9uczxULCBDdXN0b21Pbmx5Pixcblx0KSB7XG5cdFx0c2NyaWJlLmluc3RhbmNlID0gbmV3IHNjcmliZSgpO1xuXHRcdHJldHVybiBzY3JpYmUuaW5zdGFuY2UuY29uZmlndXJlPFQsIEN1c3RvbU9ubHk+KGNvbmZpZ09wdGlvbnMpO1xuXHR9XG5cblx0cHVibGljIHN0YXRpYyBnZXQgZXh0ZW5kKCkge1xuXHRcdHJldHVybiBzY3JpYmUuaW5zdGFuY2U7XG5cdH1cblxuXHRwdWJsaWMgc3RhdGljIGZsdXNoKGNiPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdHNjcmliZS5pbnN0YW5jZS5sb2dnZXJQcm92aWRlci5mbHVzaChjYik7XG5cdH1cblxuXHRwdWJsaWMgY29uc3RydWN0b3IoKSB7XG5cdFx0Ly8gSW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgY29uc29sZSBhZGFwdGVyXG5cdFx0dGhpcy5sb2dnZXJQcm92aWRlciA9IG5ldyBDb25zb2xlQWRhcHRlcigpO1xuXHRcdGNvbnN0IGRlZmF1bHRPcHRpb25zID0gdGhpcy5tZXJnZURlZmF1bHRzKCk7XG5cdFx0dGhpcy5sb2dnZXJQcm92aWRlci5jb25maWd1cmUoZGVmYXVsdE9wdGlvbnMpO1xuXHR9XG5cblx0cHVibGljIGNvbmZpZ3VyZTxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0Y29uZmlnT3B0aW9uczogTG9nZ2VyRmFjdG9yeU9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdCk6IChuYW1lPzogc3RyaW5nKSA9PiBMb2dnZXI8VCwgQ3VzdG9tT25seT4ge1xuXHRcdGNvbnN0IHsgYWRhcHRlciwgb3B0aW9ucyB9ID0gY29uZmlnT3B0aW9ucztcblx0XHR0aGlzLmxvZ2dlclByb3ZpZGVyID0gYWRhcHRlcjtcblx0XHRjb25zdCBkZWZhdWx0c0FuZE9wdGlvbnMgPSB0aGlzLm1lcmdlRGVmYXVsdHM8VCwgQ3VzdG9tT25seT4ob3B0aW9ucyk7XG5cdFx0YWRhcHRlci5jb25maWd1cmUoZGVmYXVsdHNBbmRPcHRpb25zKTtcblx0XHRyZXR1cm4gKG5hbWU/OiBzdHJpbmcpID0+IGFkYXB0ZXIuZ2V0TG9nZ2VyKG5hbWUpIGFzIExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcblx0fVxuXG5cdHB1YmxpYyBnZXRMb2dnZXI8VCBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBDdXN0b21Pbmx5IGV4dGVuZHMgdHJ1ZSB8IGZhbHNlID0gZmFsc2U+KFxuXHRcdG5hbWU/OiBzdHJpbmcsXG5cdFx0Y3VzdG9tTGV2ZWxzPzoge1xuXHRcdFx0W2xldmVsIGluIFRdOiBudW1iZXI7XG5cdFx0fSxcblx0KTogTG9nZ2VyPFQsIEN1c3RvbU9ubHk+IHtcblx0XHQvLyBJZiBjdXN0b20gbGV2ZWxzIGFyZSBwcm92aWRlZCwgd2UgbmVlZCB0byByZWNvbmZpZ3VyZSB0aGUgYWRhcHRlclxuXHRcdGlmIChjdXN0b21MZXZlbHMpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5tZXJnZURlZmF1bHRzKHsgY3VzdG9tTGV2ZWxzIH0pO1xuXHRcdFx0dGhpcy5sb2dnZXJQcm92aWRlci5jb25maWd1cmUoY3VycmVudE9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxvZ2dlciA9IHRoaXMubG9nZ2VyUHJvdmlkZXIuZ2V0TG9nZ2VyKG5hbWUpIGFzIExvZ2dlcjxULCBDdXN0b21Pbmx5Pjtcblx0XHR0aGlzLnN1cHBvcnRzTGV2ZWxzKGN1c3RvbUxldmVscywgbG9nZ2VyKTtcblx0XHRyZXR1cm4gbG9nZ2VyO1xuXHR9XG5cblx0cHJpdmF0ZSBzdXBwb3J0c0xldmVsczxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlID0gdW5kZWZpbmVkPihcblx0XHRjdXN0b21MZXZlbHM6IHtcblx0XHRcdFtsZXZlbCBpbiBUXTogbnVtYmVyO1xuXHRcdH0sXG5cdFx0bG9nZ2VyOiBMb2dnZXI8VCwgQ3VzdG9tT25seT4sXG5cdCkge1xuXHRcdGlmICghY3VzdG9tTGV2ZWxzKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWlzc2luZ0xldmVsID0gT2JqZWN0LmVudHJpZXMoY3VzdG9tTGV2ZWxzKS5maW5kKFxuXHRcdFx0KGtleSkgPT4gIWxvZ2dlci5sb2dMZXZlbHNba2V5LmF0KDApLnRvU3RyaW5nKCldLFxuXHRcdCk7XG5cblx0XHRpZiAobWlzc2luZ0xldmVsICE9IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBMb2dnaW5nQ29uZmlndXJhdGlvbkVycm9yKFxuXHRcdFx0XHRgQ3VycmVudCBsb2dnZXIgd2FzIG5vdCBjb25maWd1cmVkIGZvciBjdXN0b20gbGV2ZWwgJHttaXNzaW5nTGV2ZWx9LCB2YWxpZCBsZXZlbHMgYXJlOiAke0pTT04uc3RyaW5naWZ5KGxvZ2dlci5sb2dMZXZlbHMpfWAsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4geyBtaXNzaW5nTGV2ZWwgfTtcblx0fVxuXG5cdHByaXZhdGUgbWVyZ2VEZWZhdWx0czxUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsIEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSBmYWxzZT4oXG5cdFx0b3B0aW9ucz86IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT4sXG5cdCk6IFNjcmliZU9wdGlvbnM8VCwgQ3VzdG9tT25seT4ge1xuXHRcdGNvbnN0IGxvZ0xldmVsID0gcmVzb2x2ZUxvZ0xldmVsKG9wdGlvbnM/LmxvZ0xldmVsKSA/PyBEZWZhdWx0TG9nTGV2ZWw7XG5cdFx0cmV0dXJuIHsgbG9nTGV2ZWwsIHJlZGFjdGlvbnM6IERlZmF1bHRSZWRhY3Rpb25zLCAuLi5vcHRpb25zIH07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJDb25zb2xlQWRhcHRlciIsInJlc29sdmVMb2dMZXZlbCIsIkxvZ2dpbmdDb25maWd1cmF0aW9uRXJyb3IiLCJEZWZhdWx0TG9nTGV2ZWwiLCJEZWZhdWx0UmVkYWN0aW9ucyIsInNjcmliZSIsImxvZ2dlclByb3ZpZGVyIiwiaW5zdGFuY2UiLCJsb2dnZXIiLCJuYW1lIiwiY3VzdG9tTGV2ZWxzIiwiZ2V0TG9nZ2VyIiwiY29uZmlndXJlIiwiY29uZmlnT3B0aW9ucyIsImV4dGVuZCIsImZsdXNoIiwiY2IiLCJkZWZhdWx0T3B0aW9ucyIsIm1lcmdlRGVmYXVsdHMiLCJhZGFwdGVyIiwib3B0aW9ucyIsImRlZmF1bHRzQW5kT3B0aW9ucyIsImN1cnJlbnRPcHRpb25zIiwic3VwcG9ydHNMZXZlbHMiLCJtaXNzaW5nTGV2ZWwiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsImtleSIsImxvZ0xldmVscyIsImF0IiwidG9TdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwibG9nTGV2ZWwiLCJyZWRhY3Rpb25zIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFjLFFBQVEsdUJBQXVCO0FBQ3RELFNBQVNDLGVBQWUsUUFBUSxXQUFXO0FBQzNDLFNBQVNDLHlCQUF5QixRQUFRLGNBQWM7QUFHeEQsU0FBU0MsZUFBZSxFQUFFQyxpQkFBaUIsUUFBNEIsYUFBYTtBQVVwRixPQUFPLE1BQU1DO0lBQ0pDLGVBQThCO0lBQ3RDLE9BQWVDLFdBQW1CLElBQUlGLFNBQVM7SUFFL0MsT0FBY0csT0FDYkMsSUFBYSxFQUNiQyxZQUVDLEVBQ3VCO1FBQ3hCLE9BQU9MLE9BQU9FLFFBQVEsQ0FBQ0ksU0FBUyxDQUFnQkYsTUFBTUM7SUFJdkQ7SUFFQSxPQUFjRSxVQUNiQyxhQUFrRCxFQUNqRDtRQUNEUixPQUFPRSxRQUFRLEdBQUcsSUFBSUY7UUFDdEIsT0FBT0EsT0FBT0UsUUFBUSxDQUFDSyxTQUFTLENBQWdCQztJQUNqRDtJQUVBLFdBQWtCQyxTQUFTO1FBQzFCLE9BQU9ULE9BQU9FLFFBQVE7SUFDdkI7SUFFQSxPQUFjUSxNQUFNQyxFQUFlLEVBQVE7UUFDMUNYLE9BQU9FLFFBQVEsQ0FBQ0QsY0FBYyxDQUFDUyxLQUFLLENBQUNDO0lBQ3RDO0lBRUEsYUFBcUI7UUFDcEIsMENBQTBDO1FBQzFDLElBQUksQ0FBQ1YsY0FBYyxHQUFHLElBQUlOO1FBQzFCLE1BQU1pQixpQkFBaUIsSUFBSSxDQUFDQyxhQUFhO1FBQ3pDLElBQUksQ0FBQ1osY0FBYyxDQUFDTSxTQUFTLENBQUNLO0lBQy9CO0lBRU9MLFVBQ05DLGFBQWtELEVBQ1A7UUFDM0MsTUFBTSxFQUFFTSxPQUFPLEVBQUVDLE9BQU8sRUFBRSxHQUFHUDtRQUM3QixJQUFJLENBQUNQLGNBQWMsR0FBR2E7UUFDdEIsTUFBTUUscUJBQXFCLElBQUksQ0FBQ0gsYUFBYSxDQUFnQkU7UUFDN0RELFFBQVFQLFNBQVMsQ0FBQ1M7UUFDbEIsT0FBTyxDQUFDWixPQUFrQlUsUUFBUVIsU0FBUyxDQUFDRjtJQUM3QztJQUVPRSxVQUNORixJQUFhLEVBQ2JDLFlBRUMsRUFDdUI7UUFDeEIsb0VBQW9FO1FBQ3BFLElBQUlBLGNBQWM7WUFDakIsTUFBTVksaUJBQWlCLElBQUksQ0FBQ0osYUFBYSxDQUFDO2dCQUFFUjtZQUFhO1lBQ3pELElBQUksQ0FBQ0osY0FBYyxDQUFDTSxTQUFTLENBQUNVO1FBQy9CO1FBRUEsTUFBTWQsU0FBUyxJQUFJLENBQUNGLGNBQWMsQ0FBQ0ssU0FBUyxDQUFDRjtRQUM3QyxJQUFJLENBQUNjLGNBQWMsQ0FBQ2IsY0FBY0Y7UUFDbEMsT0FBT0E7SUFDUjtJQUVRZSxlQUNQYixZQUVDLEVBQ0RGLE1BQTZCLEVBQzVCO1FBQ0QsSUFBSSxDQUFDRSxjQUFjO1lBQ2xCO1FBQ0Q7UUFFQSxNQUFNYyxlQUFlQyxPQUFPQyxPQUFPLENBQUNoQixjQUFjaUIsSUFBSSxDQUNyRCxDQUFDQyxNQUFRLENBQUNwQixPQUFPcUIsU0FBUyxDQUFDRCxJQUFJRSxFQUFFLENBQUMsR0FBR0MsUUFBUSxHQUFHO1FBR2pELElBQUlQLGdCQUFnQixNQUFNO1lBQ3pCLE1BQU0sSUFBSXRCLDBCQUNULENBQUMsbURBQW1ELEVBQUVzQixhQUFhLG9CQUFvQixFQUFFUSxLQUFLQyxTQUFTLENBQUN6QixPQUFPcUIsU0FBUyxHQUFHO1FBRTdIO1FBQ0EsT0FBTztZQUFFTDtRQUFhO0lBQ3ZCO0lBRVFOLGNBQ1BFLE9BQXNDLEVBQ1A7UUFDL0IsTUFBTWMsV0FBV2pDLGdCQUFnQm1CLFNBQVNjLGFBQWEvQjtRQUN2RCxPQUFPO1lBQUUrQjtZQUFVQyxZQUFZL0I7WUFBbUIsR0FBR2dCLE9BQU87UUFBQztJQUM5RDtBQUNEIn0=
|
package/es6/src/logger.type.js
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL2xvZ2dlci50eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVmYXVsdExldmVscyB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUxvZ2dlciB7XG5cdGdldCBjdXJyZW50TGV2ZWwoKTogc3RyaW5nO1xuXHRnZXQgbG9nTGV2ZWxzKCk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbmV4cG9ydCB0eXBlIExvZ0ZuID0gKG1zZzogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIExvZ2dlcjxcblx0Q3VzdG9tTGV2ZWxzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG5cdEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSB1bmRlZmluZWQsXG4+ID0ge1xuXHRbSyBpbiBEZWZhdWx0TGV2ZWxzIGFzIEN1c3RvbU9ubHkgZXh0ZW5kcyBmYWxzZSA/IEsgOiBuZXZlcl06IExvZ0ZuO1xufSAmIHtcblx0W1Byb3BlcnR5IGluIEN1c3RvbUxldmVsc106IExvZ0ZuO1xufSAmIHtcblx0aXNMZXZlbEVuYWJsZWQobGV2ZWw6IHN0cmluZyk6IGJvb2xlYW47XG59ICYgQmFzZUxvZ2dlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxXQVNlIn0=
|
package/es6/src/testing/index.js
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL3Rlc3RpbmcvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVUifQ==
|
package/es6/src/types.js
CHANGED
|
@@ -15,21 +15,11 @@ export const LogLevels = {
|
|
|
15
15
|
trace: 10
|
|
16
16
|
};
|
|
17
17
|
export const DefaultLogLevel = "info";
|
|
18
|
-
/** Pino's default censor. ConsoleAdapter uses the same placeholder. */ export const DefaultCensor = "[Redacted]";
|
|
19
|
-
/**
|
|
20
|
-
* Object keys Scribe redacts. Adapters apply this list — Pino via `redact.paths`
|
|
21
|
-
* (top-level and one nest), ConsoleAdapter via `redact.object`.
|
|
22
|
-
*/ export const DefaultRedactionKeys = [
|
|
23
|
-
"password",
|
|
24
|
-
"secret",
|
|
25
|
-
"token",
|
|
26
|
-
"otp",
|
|
27
|
-
"pw",
|
|
28
|
-
"userconfig"
|
|
29
|
-
];
|
|
30
18
|
export const DefaultRedactions = {
|
|
31
|
-
paths:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
19
|
+
paths: [
|
|
20
|
+
"*.password",
|
|
21
|
+
"*.secret"
|
|
22
|
+
]
|
|
35
23
|
};
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjcmliZS9zY3JpYmUvc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IExPR19MRVZFTFMgPSBbXCJmYXRhbFwiLCBcImVycm9yXCIsIFwid2FyblwiLCBcImluZm9cIiwgXCJkZWJ1Z1wiLCBcInRyYWNlXCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9IHR5cGVvZiBMT0dfTEVWRUxTO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0TGV2ZWxzID0gTG9nTGV2ZWxbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IExvZ0xldmVscyA9IHtcblx0ZmF0YWw6IDYwLFxuXHRlcnJvcjogNTAsXG5cdHdhcm46IDQwLFxuXHRpbmZvOiAzMCxcblx0ZGVidWc6IDIwLFxuXHR0cmFjZTogMTAsXG59IHNhdGlzZmllcyBSZWNvcmQ8RGVmYXVsdExldmVscywgbnVtYmVyPjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRMb2dMZXZlbDogRGVmYXVsdExldmVscyA9IFwiaW5mb1wiO1xuXG5leHBvcnQgdHlwZSBSZWRhY3Rpb25PcHRpb25zID0ge1xuXHRwYXRoczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdFJlZGFjdGlvbnM6IFJlZGFjdGlvbk9wdGlvbnMgPSB7IHBhdGhzOiBbXCIqLnBhc3N3b3JkXCIsIFwiKi5zZWNyZXRcIl0gfTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpYmVPcHRpb25zPFxuXHRUIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG5cdEN1c3RvbU9ubHkgZXh0ZW5kcyB0cnVlIHwgZmFsc2UgPSB1bmRlZmluZWQsXG4+IHtcblx0bG9nTGV2ZWw/OiBEZWZhdWx0TGV2ZWxzIHwgc3RyaW5nO1xuXHRjdXN0b21MZXZlbHM/OiB7XG5cdFx0W2xldmVsIGluIFRdOiBudW1iZXI7XG5cdH07XG5cdGN1c3RvbU9ubHk/OiBDdXN0b21Pbmx5O1xuXHRyZWRhY3Rpb25zPzogUmVkYWN0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgTG9nQWRhcHRlck9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4iXSwibmFtZXMiOlsiTE9HX0xFVkVMUyIsIkxvZ0xldmVscyIsImZhdGFsIiwiZXJyb3IiLCJ3YXJuIiwiaW5mbyIsImRlYnVnIiwidHJhY2UiLCJEZWZhdWx0TG9nTGV2ZWwiLCJEZWZhdWx0UmVkYWN0aW9ucyIsInBhdGhzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxhQUFhO0lBQUM7SUFBUztJQUFTO0lBQVE7SUFBUTtJQUFTO0NBQVE7QUFNdkUsT0FBTyxNQUFNQyxZQUFZO0lBQ3hCQyxPQUFPO0lBQ1BDLE9BQU87SUFDUEMsTUFBTTtJQUNOQyxNQUFNO0lBQ05DLE9BQU87SUFDUEMsT0FBTztBQUNSLEVBQTBDO0FBRTFDLE9BQU8sTUFBTUMsa0JBQWlDLE9BQU87QUFNckQsT0FBTyxNQUFNQyxvQkFBc0M7SUFBRUMsT0FBTztRQUFDO1FBQWM7S0FBVztBQUFDLEVBQUUifQ==
|
package/package.json
CHANGED
|
@@ -6,7 +6,6 @@ export declare class ConsoleAdapter extends LogAdapter {
|
|
|
6
6
|
private configuredLevels;
|
|
7
7
|
private configuredLogLevel;
|
|
8
8
|
private configuredLogLevelValue;
|
|
9
|
-
private redactionKeys;
|
|
10
9
|
constructor(_options?: ConsoleAdapterOptions);
|
|
11
10
|
configure<T extends string = never, CustomOnly extends true | false = false>(scribeOptions: ScribeOptions<T, CustomOnly>): void;
|
|
12
11
|
getLogger<T extends string = never, CustomOnly extends true | false = false>(name?: string): Logger<T, CustomOnly>;
|
package/types/src/index.d.ts
CHANGED
|
@@ -1,29 +1,14 @@
|
|
|
1
1
|
import type { Logger } from "./logger.type.js";
|
|
2
2
|
import { type ScribeOptions } from "./types.js";
|
|
3
|
-
export
|
|
4
|
-
export interface LoggerAdapter extends AsyncDisposable {
|
|
3
|
+
export interface LoggerAdapter {
|
|
5
4
|
configure<T extends string = never, CustomOnly extends true | false = false>(options: ScribeOptions<T, CustomOnly>): any;
|
|
6
5
|
getLogger<T extends string = never, CustomOnly extends true | false = false>(name: string): Logger<T, CustomOnly>;
|
|
7
6
|
flush(cb?: () => void): void;
|
|
8
|
-
/**
|
|
9
|
-
* Synchronously stop accepting writes (kill ThreadStream / close fds).
|
|
10
|
-
* Call before swapping adapters so a dead worker cannot spam on further logs.
|
|
11
|
-
* Idempotent — safe to call more than once.
|
|
12
|
-
*/
|
|
13
|
-
retire(): void;
|
|
14
|
-
/**
|
|
15
|
-
* Drain buffered output and release unmanaged handles (workers, fds).
|
|
16
|
-
* Idempotent — safe to call more than once.
|
|
17
|
-
*/
|
|
18
|
-
stop(): Promise<void>;
|
|
19
7
|
}
|
|
20
8
|
export declare abstract class LogAdapter implements LoggerAdapter {
|
|
21
9
|
abstract configure<T extends string = never, CustomOnly extends true | false = false>(options: ScribeOptions<T, CustomOnly>): any;
|
|
22
10
|
abstract getLogger<T extends string = never, CustomOnly extends true | false = false>(name: string): Logger<T, CustomOnly>;
|
|
23
11
|
flush(cb?: () => void): void;
|
|
24
|
-
retire(): void;
|
|
25
|
-
stop(): Promise<void>;
|
|
26
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
27
12
|
protected getLogLevels(options: ScribeOptions<any, any>): Record<string, number>;
|
|
28
13
|
protected getUniqueLevels(defaultLevels: Record<string, number>, customLevels: Record<string, number>): [string, number][];
|
|
29
14
|
}
|
|
@@ -5,36 +5,20 @@ type LoggerFactoryOptions<T extends string = never, CustomOnly extends true | fa
|
|
|
5
5
|
options?: ScribeOptions<T, CustomOnly>;
|
|
6
6
|
adapter: LoggerAdapter;
|
|
7
7
|
};
|
|
8
|
-
export declare class scribe
|
|
8
|
+
export declare class scribe {
|
|
9
9
|
private loggerProvider;
|
|
10
|
-
/** True after `configure({ adapter })` — the constructor’s ConsoleAdapter is only a fallback. */
|
|
11
|
-
private adapterConfigured;
|
|
12
|
-
private defaultAdapterWarned;
|
|
13
10
|
private static instance;
|
|
14
11
|
static logger<T extends string = never, CustomOnly extends true | false = false>(name?: string, customLevels?: {
|
|
15
12
|
[level in T]: number;
|
|
16
13
|
}): Logger<T, CustomOnly>;
|
|
17
14
|
static configure<T extends string = never, CustomOnly extends true | false = false>(configOptions: LoggerFactoryOptions<T, CustomOnly>): (name?: string) => Logger<T, CustomOnly>;
|
|
15
|
+
static get extend(): scribe;
|
|
18
16
|
static flush(cb?: () => void): void;
|
|
19
|
-
/** Synchronously stop accepting writes on the active adapter. */
|
|
20
|
-
static retire(): void;
|
|
21
|
-
/** Drain the active adapter and release workers / destinations. */
|
|
22
|
-
static stop(): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Module-level `const log = scribe.logger(...)` must follow a later
|
|
25
|
-
* `scribe.configure()` (CLI / Flux / HotReloadServer). Forward every use to
|
|
26
|
-
* the active adapter logger for `name`.
|
|
27
|
-
*/
|
|
28
|
-
private static createLiveLogger;
|
|
29
17
|
constructor();
|
|
30
18
|
configure<T extends string = never, CustomOnly extends true | false = false>(configOptions: LoggerFactoryOptions<T, CustomOnly>): (name?: string) => Logger<T, CustomOnly>;
|
|
31
|
-
retire(): void;
|
|
32
|
-
stop(): Promise<void>;
|
|
33
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
34
19
|
getLogger<T extends string = never, CustomOnly extends true | false = false>(name?: string, customLevels?: {
|
|
35
20
|
[level in T]: number;
|
|
36
21
|
}): Logger<T, CustomOnly>;
|
|
37
|
-
private warnIfDefaultAdapter;
|
|
38
22
|
private supportsLevels;
|
|
39
23
|
private mergeDefaults;
|
|
40
24
|
}
|
package/types/src/types.d.ts
CHANGED
|
@@ -13,13 +13,6 @@ export declare const DefaultLogLevel: DefaultLevels;
|
|
|
13
13
|
export type RedactionOptions = {
|
|
14
14
|
paths: string[];
|
|
15
15
|
};
|
|
16
|
-
/** Pino's default censor. ConsoleAdapter uses the same placeholder. */
|
|
17
|
-
export declare const DefaultCensor = "[Redacted]";
|
|
18
|
-
/**
|
|
19
|
-
* Object keys Scribe redacts. Adapters apply this list — Pino via `redact.paths`
|
|
20
|
-
* (top-level and one nest), ConsoleAdapter via `redact.object`.
|
|
21
|
-
*/
|
|
22
|
-
export declare const DefaultRedactionKeys: readonly ["password", "secret", "token", "otp", "pw", "userconfig"];
|
|
23
16
|
export declare const DefaultRedactions: RedactionOptions;
|
|
24
17
|
export interface ScribeOptions<T extends string = never, CustomOnly extends true | false = undefined> {
|
|
25
18
|
logLevel?: DefaultLevels | string;
|
package/commonjs/src/redact.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "redact", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return redact;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _types = require("./types.js");
|
|
12
|
-
function keysFromPaths(paths) {
|
|
13
|
-
const keys = new Set();
|
|
14
|
-
for (const path of paths){
|
|
15
|
-
const segments = path.split(".").filter((segment)=>segment.length > 0 && segment !== "*");
|
|
16
|
-
const key = segments.at(-1);
|
|
17
|
-
if (key != null) {
|
|
18
|
-
keys.add(key);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return keys;
|
|
22
|
-
}
|
|
23
|
-
function isPlainObject(value) {
|
|
24
|
-
if (value == null || typeof value !== "object" || Array.isArray(value) || value instanceof Error) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
const proto = Object.getPrototypeOf(value);
|
|
28
|
-
return proto === Object.prototype || proto === null;
|
|
29
|
-
}
|
|
30
|
-
function object(value, keys, censor = _types.DefaultCensor, seen = new WeakSet()) {
|
|
31
|
-
if (value == null || typeof value !== "object") {
|
|
32
|
-
return value;
|
|
33
|
-
}
|
|
34
|
-
if (value instanceof Error) {
|
|
35
|
-
return value;
|
|
36
|
-
}
|
|
37
|
-
if (seen.has(value)) {
|
|
38
|
-
return value;
|
|
39
|
-
}
|
|
40
|
-
seen.add(value);
|
|
41
|
-
if (Array.isArray(value)) {
|
|
42
|
-
return value.map((item)=>object(item, keys, censor, seen));
|
|
43
|
-
}
|
|
44
|
-
if (!isPlainObject(value)) {
|
|
45
|
-
return value;
|
|
46
|
-
}
|
|
47
|
-
const out = {};
|
|
48
|
-
for (const [key, nested] of Object.entries(value)){
|
|
49
|
-
out[key] = keys.has(key) ? censor : object(nested, keys, censor, seen);
|
|
50
|
-
}
|
|
51
|
-
return out;
|
|
52
|
-
}
|
|
53
|
-
function fromOptions(options) {
|
|
54
|
-
return keysFromPaths(options?.paths ?? _types.DefaultRedactions.paths);
|
|
55
|
-
}
|
|
56
|
-
const redact = {
|
|
57
|
-
object,
|
|
58
|
-
keysFromPaths,
|
|
59
|
-
fromOptions
|
|
60
|
-
};
|
package/es6/src/redact.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { DefaultCensor, DefaultRedactions } from "./types.js";
|
|
2
|
-
function keysFromPaths(paths) {
|
|
3
|
-
const keys = new Set();
|
|
4
|
-
for (const path of paths){
|
|
5
|
-
const segments = path.split(".").filter((segment)=>segment.length > 0 && segment !== "*");
|
|
6
|
-
const key = segments.at(-1);
|
|
7
|
-
if (key != null) {
|
|
8
|
-
keys.add(key);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return keys;
|
|
12
|
-
}
|
|
13
|
-
function isPlainObject(value) {
|
|
14
|
-
if (value == null || typeof value !== "object" || Array.isArray(value) || value instanceof Error) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
const proto = Object.getPrototypeOf(value);
|
|
18
|
-
return proto === Object.prototype || proto === null;
|
|
19
|
-
}
|
|
20
|
-
function object(value, keys, censor = DefaultCensor, seen = new WeakSet()) {
|
|
21
|
-
if (value == null || typeof value !== "object") {
|
|
22
|
-
return value;
|
|
23
|
-
}
|
|
24
|
-
if (value instanceof Error) {
|
|
25
|
-
return value;
|
|
26
|
-
}
|
|
27
|
-
if (seen.has(value)) {
|
|
28
|
-
return value;
|
|
29
|
-
}
|
|
30
|
-
seen.add(value);
|
|
31
|
-
if (Array.isArray(value)) {
|
|
32
|
-
return value.map((item)=>object(item, keys, censor, seen));
|
|
33
|
-
}
|
|
34
|
-
if (!isPlainObject(value)) {
|
|
35
|
-
return value;
|
|
36
|
-
}
|
|
37
|
-
const out = {};
|
|
38
|
-
for (const [key, nested] of Object.entries(value)){
|
|
39
|
-
out[key] = keys.has(key) ? censor : object(nested, keys, censor, seen);
|
|
40
|
-
}
|
|
41
|
-
return out;
|
|
42
|
-
}
|
|
43
|
-
function fromOptions(options) {
|
|
44
|
-
return keysFromPaths(options?.paths ?? DefaultRedactions.paths);
|
|
45
|
-
}
|
|
46
|
-
export const redact = {
|
|
47
|
-
object,
|
|
48
|
-
keysFromPaths,
|
|
49
|
-
fromOptions
|
|
50
|
-
};
|
package/types/src/redact.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type RedactionOptions } from "./types.js";
|
|
2
|
-
declare function keysFromPaths(paths: string[]): Set<string>;
|
|
3
|
-
declare function object(value: unknown, keys: ReadonlySet<string>, censor?: string, seen?: WeakSet<object>): unknown;
|
|
4
|
-
declare function fromOptions(options?: RedactionOptions): Set<string>;
|
|
5
|
-
export declare const redact: {
|
|
6
|
-
object: typeof object;
|
|
7
|
-
keysFromPaths: typeof keysFromPaths;
|
|
8
|
-
fromOptions: typeof fromOptions;
|
|
9
|
-
};
|
|
10
|
-
export {};
|