@levrbet/shared 0.2.12 → 0.2.14

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.
@@ -31,17 +31,7 @@ const dotenv_1 = require("./dotenv");
31
31
  logger.info("Using default logger")
32
32
  *
33
33
  */
34
- const { combine, timestamp, errors, json, colorize, printf, splat } = winston_1.default.format;
35
- // Define custom colors for Winston
36
- winston_1.default.addColors({
37
- error: "red",
38
- warn: "yellow",
39
- info: "cyan",
40
- http: "magenta",
41
- verbose: "gray",
42
- debug: "blue",
43
- silly: "gray",
44
- });
34
+ const { combine, timestamp, errors, json, printf, splat } = winston_1.default.format;
45
35
  // Determine log level based on environment
46
36
  const getLogLevel = () => {
47
37
  switch (dotenv_1.LEVR_ENV) {
@@ -57,14 +47,55 @@ const getLogLevel = () => {
57
47
  return "info";
58
48
  }
59
49
  };
50
+ // Color mapping for manual colorization
51
+ const colors = {
52
+ error: "\x1b[31m", // red
53
+ warn: "\x1b[33m", // yellow
54
+ info: "\x1b[36m", // cyan
55
+ http: "\x1b[35m", // magenta
56
+ verbose: "\x1b[90m", // gray
57
+ debug: "\x1b[34m", // blue
58
+ silly: "\x1b[90m", // gray
59
+ };
60
+ const reset = "\x1b[0m";
61
+ // Helper to detect if object is array-like with numeric keys
62
+ const isArrayLikeObject = (obj) => {
63
+ if (typeof obj !== "object" || obj === null)
64
+ return false;
65
+ const keys = Object.keys(obj);
66
+ return keys.length > 0 && keys.every((key) => /^\d+$/.test(key));
67
+ };
68
+ // Safe stringify that handles array-like objects
69
+ const safeStringify = (value) => {
70
+ if (value === null || value === undefined)
71
+ return "";
72
+ if (typeof value === "string")
73
+ return value;
74
+ if (typeof value === "number" || typeof value === "boolean")
75
+ return String(value);
76
+ // Check if it's an array-like object (string that got converted to object)
77
+ if (isArrayLikeObject(value)) {
78
+ // Reconstruct the original string
79
+ const keys = Object.keys(value).sort((a, b) => parseInt(a) - parseInt(b));
80
+ return keys.map((key) => value[key]).join("");
81
+ }
82
+ try {
83
+ return JSON.stringify(value);
84
+ }
85
+ catch (err) {
86
+ return String(value);
87
+ }
88
+ };
60
89
  // Custom format for console output in non-production
61
90
  const consoleFormat = printf(({ level, message, timestamp, stack, service, ...metadata }) => {
62
- let msg = `${timestamp} [${level}]`;
91
+ const color = colors[level] || "";
92
+ const coloredLevel = dotenv_1.LEVR_ENV === "prod" ? level : `${color}${level}${reset}`;
93
+ let msg = `${timestamp} [${coloredLevel}]`;
63
94
  if (service) {
64
95
  msg += ` [${service}]`;
65
96
  }
66
- // Ensure message is properly stringified
67
- const formattedMessage = typeof message === "object" ? JSON.stringify(message) : String(message);
97
+ // Ensure message is properly stringified, handling array-like objects
98
+ const formattedMessage = safeStringify(message);
68
99
  msg += `: ${formattedMessage}`;
69
100
  // Add stack trace if error
70
101
  if (stack) {
@@ -73,7 +104,10 @@ const consoleFormat = printf(({ level, message, timestamp, stack, service, ...me
73
104
  // Add metadata if present
74
105
  const metaKeys = Object.keys(metadata).filter((key) => key !== "environment");
75
106
  if (metaKeys.length > 0) {
76
- const filteredMeta = Object.fromEntries(metaKeys.map((key) => [key, metadata[key]]));
107
+ const filteredMeta = {};
108
+ for (const key of metaKeys) {
109
+ filteredMeta[key] = isArrayLikeObject(metadata[key]) ? safeStringify(metadata[key]) : metadata[key];
110
+ }
77
111
  msg += `\n${JSON.stringify(filteredMeta, null, 2)}`;
78
112
  }
79
113
  return msg;
@@ -81,7 +115,7 @@ const consoleFormat = printf(({ level, message, timestamp, stack, service, ...me
81
115
  // Production format (structured JSON for OTEL)
82
116
  const productionFormat = combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), errors({ stack: true }), splat(), json());
83
117
  // Development format (human-readable)
84
- const developmentFormat = combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), errors({ stack: true }), splat(), colorize({ all: true }), consoleFormat);
118
+ const developmentFormat = combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), errors({ stack: true }), splat(), consoleFormat);
85
119
  const createLogger = (options = {}) => {
86
120
  const { service = "@levrbet/shared", level = getLogLevel(), additionalMeta = {} } = options;
87
121
  const logger = winston_1.default.createLogger({
@@ -1 +1 @@
1
- {"version":3,"file":"winston.js","sourceRoot":"","sources":["../../../src/server/config/winston.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"winston.js","sourceRoot":"","sources":["../../../src/server/config/winston.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levrbet/shared",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {