@pgpmjs/logger 1.3.6 → 1.4.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/esm/index.js +1 -1
- package/esm/logger.js +26 -1
- package/index.d.ts +1 -1
- package/index.js +2 -1
- package/logger.js +26 -1
- package/package.json +3 -3
package/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Logger } from './logger';
|
|
1
|
+
export { Logger, createLogger } from './logger';
|
package/esm/logger.js
CHANGED
|
@@ -16,6 +16,26 @@ const levelColors = {
|
|
|
16
16
|
const hasAnsi = (text) => {
|
|
17
17
|
return typeof text === 'string' && /\u001b\[\d+m/.test(text);
|
|
18
18
|
};
|
|
19
|
+
const safeStringify = (obj) => {
|
|
20
|
+
try {
|
|
21
|
+
return JSON.stringify(obj, null, 2);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return '[Unserializable Object]';
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const formatArg = (arg) => {
|
|
28
|
+
if (typeof arg === 'string')
|
|
29
|
+
return arg;
|
|
30
|
+
if (arg instanceof Error)
|
|
31
|
+
return arg.stack ?? arg.message;
|
|
32
|
+
if (typeof arg === 'bigint')
|
|
33
|
+
return arg.toString();
|
|
34
|
+
if (typeof arg === 'object' || typeof arg === 'function') {
|
|
35
|
+
return safeStringify(arg);
|
|
36
|
+
}
|
|
37
|
+
return arg;
|
|
38
|
+
};
|
|
19
39
|
// Parse LOG_LEVEL from environment
|
|
20
40
|
let globalLogLevel = process.env.LOG_LEVEL?.toLowerCase() ?? 'info';
|
|
21
41
|
// Update log level at runtime
|
|
@@ -77,7 +97,12 @@ export class Logger {
|
|
|
77
97
|
const tag = yanse.bold(`[${this.scope}]`);
|
|
78
98
|
const color = levelColors[level];
|
|
79
99
|
const prefix = color(`${level.toUpperCase()}:`);
|
|
80
|
-
const formattedArgs = args.map(arg =>
|
|
100
|
+
const formattedArgs = args.map(arg => {
|
|
101
|
+
const normalized = formatArg(arg);
|
|
102
|
+
return typeof normalized === 'string' && !hasAnsi(normalized)
|
|
103
|
+
? color(normalized)
|
|
104
|
+
: normalized;
|
|
105
|
+
});
|
|
81
106
|
const stream = level === 'error' ? process.stderr : process.stdout;
|
|
82
107
|
const outputParts = showTimestamp
|
|
83
108
|
? [yanse.dim(`[${new Date().toISOString()}]`), tag, prefix, ...formattedArgs]
|
package/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Logger } from './logger';
|
|
1
|
+
export { Logger, createLogger } from './logger';
|
package/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Logger = void 0;
|
|
3
|
+
exports.createLogger = exports.Logger = void 0;
|
|
4
4
|
var logger_1 = require("./logger");
|
|
5
5
|
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
6
|
+
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
|
package/logger.js
CHANGED
|
@@ -22,6 +22,26 @@ const levelColors = {
|
|
|
22
22
|
const hasAnsi = (text) => {
|
|
23
23
|
return typeof text === 'string' && /\u001b\[\d+m/.test(text);
|
|
24
24
|
};
|
|
25
|
+
const safeStringify = (obj) => {
|
|
26
|
+
try {
|
|
27
|
+
return JSON.stringify(obj, null, 2);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return '[Unserializable Object]';
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const formatArg = (arg) => {
|
|
34
|
+
if (typeof arg === 'string')
|
|
35
|
+
return arg;
|
|
36
|
+
if (arg instanceof Error)
|
|
37
|
+
return arg.stack ?? arg.message;
|
|
38
|
+
if (typeof arg === 'bigint')
|
|
39
|
+
return arg.toString();
|
|
40
|
+
if (typeof arg === 'object' || typeof arg === 'function') {
|
|
41
|
+
return safeStringify(arg);
|
|
42
|
+
}
|
|
43
|
+
return arg;
|
|
44
|
+
};
|
|
25
45
|
// Parse LOG_LEVEL from environment
|
|
26
46
|
let globalLogLevel = process.env.LOG_LEVEL?.toLowerCase() ?? 'info';
|
|
27
47
|
// Update log level at runtime
|
|
@@ -86,7 +106,12 @@ class Logger {
|
|
|
86
106
|
const tag = yanse_1.default.bold(`[${this.scope}]`);
|
|
87
107
|
const color = levelColors[level];
|
|
88
108
|
const prefix = color(`${level.toUpperCase()}:`);
|
|
89
|
-
const formattedArgs = args.map(arg =>
|
|
109
|
+
const formattedArgs = args.map(arg => {
|
|
110
|
+
const normalized = formatArg(arg);
|
|
111
|
+
return typeof normalized === 'string' && !hasAnsi(normalized)
|
|
112
|
+
? color(normalized)
|
|
113
|
+
: normalized;
|
|
114
|
+
});
|
|
90
115
|
const stream = level === 'error' ? process.stderr : process.stdout;
|
|
91
116
|
const outputParts = showTimestamp
|
|
92
117
|
? [yanse_1.default.dim(`[${new Date().toISOString()}]`), tag, prefix, ...formattedArgs]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pgpmjs/logger",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"author": "Constructive <developers@constructive.io>",
|
|
5
5
|
"description": "Simple logger utility",
|
|
6
6
|
"main": "index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"pgpmjs"
|
|
41
41
|
],
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"makage": "^0.1.
|
|
43
|
+
"makage": "^0.1.10"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "481b3a50b4eec2da6b376c4cd1868065e1e28edb"
|
|
46
46
|
}
|