@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 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 => typeof arg === 'string' && !hasAnsi(arg) ? color(arg) : 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 => typeof arg === 'string' && !hasAnsi(arg) ? color(arg) : 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.6",
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.9"
43
+ "makage": "^0.1.10"
44
44
  },
45
- "gitHead": "e53cd1f303d796268d94b47e95cde30916e39c1f"
45
+ "gitHead": "481b3a50b4eec2da6b376c4cd1868065e1e28edb"
46
46
  }