@noego/logger 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/abstract_logger.cjs +6 -2
- package/dist/core/abstract_logger.cjs.map +1 -1
- package/dist/core/abstract_logger.d.cts +3 -1
- package/dist/core/abstract_logger.d.ts +3 -1
- package/dist/core/abstract_logger.js +7 -3
- package/dist/core/abstract_logger.js.map +1 -1
- package/dist/core/log_level.cjs +55 -37
- package/dist/core/log_level.cjs.map +1 -1
- package/dist/core/log_level.d.cts +17 -9
- package/dist/core/log_level.d.ts +17 -9
- package/dist/core/log_level.js +52 -36
- package/dist/core/log_level.js.map +1 -1
- package/dist/core/logging_manager.cjs +8 -4
- package/dist/core/logging_manager.cjs.map +1 -1
- package/dist/core/logging_manager.d.cts +9 -8
- package/dist/core/logging_manager.d.ts +9 -8
- package/dist/core/logging_manager.js +9 -5
- package/dist/core/logging_manager.js.map +1 -1
- package/dist/get_logger.d.cts +1 -1
- package/dist/get_logger.d.ts +1 -1
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/transports/console.cjs.map +1 -1
- package/dist/transports/console.d.cts +1 -1
- package/dist/transports/console.d.ts +1 -1
- package/dist/transports/console.js.map +1 -1
- package/dist/transports/console_transport.cjs +196 -13
- package/dist/transports/console_transport.cjs.map +1 -1
- package/dist/transports/console_transport.d.cts +11 -1
- package/dist/transports/console_transport.d.ts +11 -1
- package/dist/transports/console_transport.js +196 -13
- package/dist/transports/console_transport.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LogLevelInput, LogLevelDefinition, LogLevelValue } from './log_level.js';
|
|
2
2
|
import { LogTransport, LogEntry } from './log_transport.js';
|
|
3
3
|
|
|
4
4
|
interface ConfigureLoggingOptions {
|
|
5
|
-
level?:
|
|
6
|
-
loggers?: Record<string,
|
|
5
|
+
level?: LogLevelInput;
|
|
6
|
+
loggers?: Record<string, LogLevelInput>;
|
|
7
|
+
levels?: LogLevelDefinition[];
|
|
7
8
|
transports?: LogTransport[];
|
|
8
9
|
serviceName?: string;
|
|
9
10
|
}
|
|
@@ -14,17 +15,17 @@ declare class LoggingManager {
|
|
|
14
15
|
private readonly environment;
|
|
15
16
|
private loggerLevels;
|
|
16
17
|
constructor();
|
|
17
|
-
getLevel():
|
|
18
|
-
setLevel(level:
|
|
19
|
-
setLoggerLevel(name: string, level:
|
|
20
|
-
shouldLog(level:
|
|
18
|
+
getLevel(): LogLevelValue;
|
|
19
|
+
setLevel(level: LogLevelInput): void;
|
|
20
|
+
setLoggerLevel(name: string, level: LogLevelInput): void;
|
|
21
|
+
shouldLog(level: LogLevelInput, loggerName?: string): boolean;
|
|
21
22
|
addTransport(transport: LogTransport): void;
|
|
22
23
|
setTransports(transports: LogTransport[]): void;
|
|
23
24
|
clearTransports(): void;
|
|
24
25
|
setServiceName(name: string): void;
|
|
25
26
|
log(entry: Omit<LogEntry, "environment" | "service">): void;
|
|
26
27
|
closeAll(): Promise<void>;
|
|
27
|
-
formatMessage(level:
|
|
28
|
+
formatMessage(level: LogLevelInput, name: string, message: string): string;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
31
|
* Gets the global LoggingManager singleton instance.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { logLevelName, parseLogLevel } from "./log_level.js";
|
|
1
|
+
import { logLevelName, parseLogLevel, registerLogLevels } from "./log_level.js";
|
|
2
2
|
import { ConsoleTransport } from "../transports/console_transport.js";
|
|
3
3
|
const MANAGER_SYMBOL = /* @__PURE__ */ Symbol.for("@noego/logger");
|
|
4
4
|
class LoggingManager {
|
|
@@ -16,19 +16,20 @@ class LoggingManager {
|
|
|
16
16
|
return this.level;
|
|
17
17
|
}
|
|
18
18
|
setLevel(level) {
|
|
19
|
-
this.level = level;
|
|
19
|
+
this.level = parseLogLevel(level);
|
|
20
20
|
}
|
|
21
21
|
setLoggerLevel(name, level) {
|
|
22
|
-
this.loggerLevels.set(name, level);
|
|
22
|
+
this.loggerLevels.set(name, parseLogLevel(level));
|
|
23
23
|
}
|
|
24
24
|
shouldLog(level, loggerName) {
|
|
25
|
+
const parsedLevel = parseLogLevel(level);
|
|
25
26
|
if (loggerName) {
|
|
26
27
|
const loggerLevel = this.loggerLevels.get(loggerName);
|
|
27
28
|
if (loggerLevel !== void 0) {
|
|
28
|
-
return
|
|
29
|
+
return parsedLevel >= loggerLevel;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
return
|
|
32
|
+
return parsedLevel >= this.level;
|
|
32
33
|
}
|
|
33
34
|
addTransport(transport) {
|
|
34
35
|
this.transports.push(transport);
|
|
@@ -75,6 +76,9 @@ function getManager() {
|
|
|
75
76
|
}
|
|
76
77
|
function configureLogging(options) {
|
|
77
78
|
const manager = getManager();
|
|
79
|
+
if (options.levels) {
|
|
80
|
+
registerLogLevels(options.levels);
|
|
81
|
+
}
|
|
78
82
|
if (options.level !== void 0) {
|
|
79
83
|
manager.setLevel(options.level);
|
|
80
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/logging_manager.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/core/logging_manager.ts"],"sourcesContent":["import { type LogLevelDefinition, type LogLevelInput, type LogLevelValue, logLevelName, parseLogLevel, registerLogLevels } from \"./log_level.js\";\nimport type { LogEntry, LogTransport } from \"./log_transport.js\";\nimport { ConsoleTransport } from \"../transports/console_transport.js\";\n\nconst MANAGER_SYMBOL = Symbol.for(\"@noego/logger\");\n\ninterface GlobalWithManager {\n [MANAGER_SYMBOL]?: LoggingManager;\n}\n\nexport interface ConfigureLoggingOptions {\n level?: LogLevelInput;\n loggers?: Record<string, LogLevelInput>;\n levels?: LogLevelDefinition[];\n transports?: LogTransport[];\n serviceName?: string;\n}\n\nexport class LoggingManager {\n private level: LogLevelValue;\n private transports: LogTransport[] = [];\n private service: string;\n private readonly environment: string;\n private loggerLevels: Map<string, LogLevelValue> = new Map();\n\n constructor() {\n const logLevelEnv =\n typeof process !== \"undefined\" ? process.env?.LOG_LEVEL : undefined;\n const serviceNameEnv =\n typeof process !== \"undefined\" ? process.env?.SERVICE_NAME : undefined;\n const nodeEnv =\n typeof process !== \"undefined\" ? process.env?.NODE_ENV : undefined;\n\n this.level = parseLogLevel(logLevelEnv);\n this.service = serviceNameEnv ?? \"noego\";\n this.environment = nodeEnv ?? \"development\";\n }\n\n getLevel(): LogLevelValue {\n return this.level;\n }\n\n setLevel(level: LogLevelInput): void {\n this.level = parseLogLevel(level);\n }\n\n setLoggerLevel(name: string, level: LogLevelInput): void {\n this.loggerLevels.set(name, parseLogLevel(level));\n }\n\n shouldLog(level: LogLevelInput, loggerName?: string): boolean {\n const parsedLevel = parseLogLevel(level);\n\n if (loggerName) {\n const loggerLevel = this.loggerLevels.get(loggerName);\n if (loggerLevel !== undefined) {\n return parsedLevel >= loggerLevel;\n }\n }\n return parsedLevel >= this.level;\n }\n\n addTransport(transport: LogTransport): void {\n this.transports.push(transport);\n }\n\n setTransports(transports: LogTransport[]): void {\n this.transports = [...transports];\n }\n\n clearTransports(): void {\n this.transports = [];\n }\n\n setServiceName(name: string): void {\n this.service = name;\n }\n\n log(entry: Omit<LogEntry, \"environment\" | \"service\">): void {\n const fullEntry: LogEntry = {\n ...entry,\n environment: this.environment,\n service: this.service,\n };\n\n for (const transport of this.transports) {\n transport.log(fullEntry);\n }\n }\n\n async closeAll(): Promise<void> {\n for (const transport of this.transports) {\n if (transport.close) {\n await transport.close();\n }\n }\n }\n\n formatMessage(level: LogLevelInput, name: string, message: string): string {\n const timestamp = new Date().toISOString();\n return `[${timestamp}] [${name}] [${logLevelName(level)}] ${message}`;\n }\n}\n\n/**\n * Gets the global LoggingManager singleton instance.\n * Creates one with a default ConsoleTransport if it doesn't exist.\n */\nexport function getManager(): LoggingManager {\n const global = globalThis as GlobalWithManager;\n\n if (!global[MANAGER_SYMBOL]) {\n const manager = new LoggingManager();\n\n // Add default ConsoleTransport\n manager.addTransport(new ConsoleTransport());\n\n global[MANAGER_SYMBOL] = manager;\n }\n\n return global[MANAGER_SYMBOL];\n}\n\n/**\n * Configures the global LoggingManager instance.\n * This mutates the singleton instance returned by getManager().\n */\nexport function configureLogging(options: ConfigureLoggingOptions): void {\n const manager = getManager();\n\n if (options.levels) {\n registerLogLevels(options.levels);\n }\n\n if (options.level !== undefined) {\n manager.setLevel(options.level);\n }\n\n if (options.loggers) {\n for (const [name, level] of Object.entries(options.loggers)) {\n manager.setLoggerLevel(name, level);\n }\n }\n\n if (options.transports) {\n // Clear existing transports and add new ones\n manager.setTransports(options.transports);\n }\n\n if (options.serviceName) {\n // Update service name\n manager.setServiceName(options.serviceName);\n }\n}\n\n/**\n * Shuts down the global LoggingManager by closing all transports.\n */\nexport async function shutdown(): Promise<void> {\n const manager = getManager();\n await manager.closeAll();\n}\n"],"mappings":"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","names":[]}
|
package/dist/get_logger.d.cts
CHANGED
package/dist/get_logger.d.ts
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -26,6 +26,8 @@ __export(index_exports, {
|
|
|
26
26
|
getManager: () => import_logging_manager.getManager,
|
|
27
27
|
logLevelName: () => import_log_level.logLevelName,
|
|
28
28
|
parseLogLevel: () => import_log_level.parseLogLevel,
|
|
29
|
+
registerLogLevel: () => import_log_level.registerLogLevel,
|
|
30
|
+
registerLogLevels: () => import_log_level.registerLogLevels,
|
|
29
31
|
shutdown: () => import_logging_manager.shutdown
|
|
30
32
|
});
|
|
31
33
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -43,6 +45,8 @@ var import_console_transport = require("./transports/console_transport.cjs");
|
|
|
43
45
|
getManager,
|
|
44
46
|
logLevelName,
|
|
45
47
|
parseLogLevel,
|
|
48
|
+
registerLogLevel,
|
|
49
|
+
registerLogLevels,
|
|
46
50
|
shutdown
|
|
47
51
|
});
|
|
48
52
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { LogLevel, parseLogLevel,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { LogLevel, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels } from './core/log_level.cjs';\nexport type { LogLevelDefinition, LogLevelInput, LogLevelValue } from './core/log_level.cjs';\nexport type { LogEntry, LogTransport } from './core/log_transport.cjs';\nexport type { Logger } from './core/abstract_logger.cjs';\nexport { getLogger } from './get_logger.cjs';\nexport { getManager, configureLogging, shutdown, LoggingManager } from './core/logging_manager.cjs';\nexport type { ConfigureLoggingOptions } from './core/logging_manager.cjs';\nexport { ConsoleTransport } from './transports/console_transport.cjs';\nexport type { ConsoleTransportOptions, ConsoleWriter } from './transports/console_transport.cjs';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA2F;AAI3F,wBAA0B;AAC1B,6BAAuE;AAEvE,+BAAiC;","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { LogLevel, logLevelName, parseLogLevel } from './core/log_level.cjs';
|
|
1
|
+
export { LogLevel, LogLevelDefinition, LogLevelInput, LogLevelValue, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels } from './core/log_level.cjs';
|
|
2
2
|
export { LogEntry, LogTransport } from './core/log_transport.cjs';
|
|
3
3
|
export { Logger } from './core/abstract_logger.cjs';
|
|
4
4
|
export { getLogger } from './get_logger.cjs';
|
|
5
5
|
export { ConfigureLoggingOptions, LoggingManager, configureLogging, getManager, shutdown } from './core/logging_manager.cjs';
|
|
6
|
-
export { ConsoleTransport } from './transports/console_transport.cjs';
|
|
6
|
+
export { ConsoleTransport, ConsoleTransportOptions, ConsoleWriter } from './transports/console_transport.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { LogLevel, logLevelName, parseLogLevel } from './core/log_level.js';
|
|
1
|
+
export { LogLevel, LogLevelDefinition, LogLevelInput, LogLevelValue, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels } from './core/log_level.js';
|
|
2
2
|
export { LogEntry, LogTransport } from './core/log_transport.js';
|
|
3
3
|
export { Logger } from './core/abstract_logger.js';
|
|
4
4
|
export { getLogger } from './get_logger.js';
|
|
5
5
|
export { ConfigureLoggingOptions, LoggingManager, configureLogging, getManager, shutdown } from './core/logging_manager.js';
|
|
6
|
-
export { ConsoleTransport } from './transports/console_transport.js';
|
|
6
|
+
export { ConsoleTransport, ConsoleTransportOptions, ConsoleWriter } from './transports/console_transport.js';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LogLevel, parseLogLevel,
|
|
1
|
+
import { LogLevel, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels } from "./core/log_level.js";
|
|
2
2
|
import { getLogger } from "./get_logger.js";
|
|
3
3
|
import { getManager, configureLogging, shutdown, LoggingManager } from "./core/logging_manager.js";
|
|
4
4
|
import { ConsoleTransport } from "./transports/console_transport.js";
|
|
@@ -11,6 +11,8 @@ export {
|
|
|
11
11
|
getManager,
|
|
12
12
|
logLevelName,
|
|
13
13
|
parseLogLevel,
|
|
14
|
+
registerLogLevel,
|
|
15
|
+
registerLogLevels,
|
|
14
16
|
shutdown
|
|
15
17
|
};
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { LogLevel, parseLogLevel,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { LogLevel, logLevelName, parseLogLevel, registerLogLevel, registerLogLevels } from './core/log_level.js';\nexport type { LogLevelDefinition, LogLevelInput, LogLevelValue } from './core/log_level.js';\nexport type { LogEntry, LogTransport } from './core/log_transport.js';\nexport type { Logger } from './core/abstract_logger.js';\nexport { getLogger } from './get_logger.js';\nexport { getManager, configureLogging, shutdown, LoggingManager } from './core/logging_manager.js';\nexport type { ConfigureLoggingOptions } from './core/logging_manager.js';\nexport { ConsoleTransport } from './transports/console_transport.js';\nexport type { ConsoleTransportOptions, ConsoleWriter } from './transports/console_transport.js';\n"],"mappings":"AAAA,SAAS,UAAU,cAAc,eAAe,kBAAkB,yBAAyB;AAI3F,SAAS,iBAAiB;AAC1B,SAAS,YAAY,kBAAkB,UAAU,sBAAsB;AAEvE,SAAS,wBAAwB;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/transports/console.ts"],"sourcesContent":["// Re-export everything from console_transport for the ./transports/console entry point\nexport { ConsoleTransport } from './console_transport.cjs';\nexport { ConsoleTransport as default } from './console_transport.cjs';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,+BAAiC;
|
|
1
|
+
{"version":3,"sources":["../../src/transports/console.ts"],"sourcesContent":["// Re-export everything from console_transport for the ./transports/console entry point\nexport { ConsoleTransport } from './console_transport.cjs';\nexport type { ConsoleTransportOptions, ConsoleWriter } from './console_transport.cjs';\nexport { ConsoleTransport as default } from './console_transport.cjs';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,+BAAiC;AAEjC,IAAAA,4BAA4C;","names":["import_console_transport"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ConsoleTransport, ConsoleTransport as default } from './console_transport.cjs';
|
|
1
|
+
export { ConsoleTransport, ConsoleTransportOptions, ConsoleWriter, ConsoleTransport as default } from './console_transport.cjs';
|
|
2
2
|
import '../core/log_transport.cjs';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ConsoleTransport, ConsoleTransport as default } from './console_transport.js';
|
|
1
|
+
export { ConsoleTransport, ConsoleTransportOptions, ConsoleWriter, ConsoleTransport as default } from './console_transport.js';
|
|
2
2
|
import '../core/log_transport.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/transports/console.ts"],"sourcesContent":["// Re-export everything from console_transport for the ./transports/console entry point\nexport { ConsoleTransport } from './console_transport.js';\nexport { ConsoleTransport as default } from './console_transport.js';\n"],"mappings":"AACA,SAAS,wBAAwB;
|
|
1
|
+
{"version":3,"sources":["../../src/transports/console.ts"],"sourcesContent":["// Re-export everything from console_transport for the ./transports/console entry point\nexport { ConsoleTransport } from './console_transport.js';\nexport type { ConsoleTransportOptions, ConsoleWriter } from './console_transport.js';\nexport { ConsoleTransport as default } from './console_transport.js';\n"],"mappings":"AACA,SAAS,wBAAwB;AAEjC,SAA6B,oBAApBA,yBAAmC;","names":["ConsoleTransport"]}
|
|
@@ -22,23 +22,206 @@ __export(console_transport_exports, {
|
|
|
22
22
|
default: () => console_transport_default
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(console_transport_exports);
|
|
25
|
+
const MAX_LINE_LENGTH = 16 * 1024;
|
|
26
|
+
const MAX_STRING_LENGTH = 4 * 1024;
|
|
27
|
+
const MAX_DEPTH = 6;
|
|
28
|
+
const MAX_COLLECTION_ENTRIES = 50;
|
|
29
|
+
const MAX_NORMALIZED_VALUES = 200;
|
|
30
|
+
const TRUNCATION_SUFFIX = "...[truncated]";
|
|
31
|
+
const defaultStdoutWriter = (line) => console.log(line);
|
|
32
|
+
const defaultStderrWriter = (line) => console.error(line);
|
|
25
33
|
class ConsoleTransport {
|
|
34
|
+
constructor(options = {}) {
|
|
35
|
+
this.stdoutWriter = options.stdout ?? defaultStdoutWriter;
|
|
36
|
+
this.stderrWriter = options.stderr ?? defaultStderrWriter;
|
|
37
|
+
}
|
|
26
38
|
log(entry) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
let level = "UNKNOWN";
|
|
40
|
+
let formatted = "[unknown-time] [unknown-logger] [UNKNOWN] [formatting failed]";
|
|
41
|
+
try {
|
|
42
|
+
level = this.readLevel(entry);
|
|
43
|
+
formatted = this.formatEntry(entry, level);
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
const writer = level === "ERROR" || level === "FATAL" ? this.stderrWriter : this.stdoutWriter;
|
|
47
|
+
try {
|
|
48
|
+
writer(formatted);
|
|
49
|
+
} catch {
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
formatEntry(entry, level) {
|
|
53
|
+
const timestamp = toBoundedText(readProperty(entry, "timestamp"), "unknown-time", 128);
|
|
54
|
+
const logger = toBoundedText(readProperty(entry, "logger"), "unknown-logger", 256);
|
|
55
|
+
const message = toBoundedText(readProperty(entry, "message"), "[unavailable message]", MAX_STRING_LENGTH);
|
|
56
|
+
const context = readProperty(entry, "context");
|
|
57
|
+
const contextSuffix = context === void 0 ? "" : ` ${serializeContext(context)}`;
|
|
58
|
+
return truncate(`[${timestamp}] [${logger}] [${level}] ${message}${contextSuffix}`, MAX_LINE_LENGTH);
|
|
59
|
+
}
|
|
60
|
+
readLevel(entry) {
|
|
61
|
+
return toBoundedText(readProperty(entry, "level"), "UNKNOWN", 32).toUpperCase();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function readProperty(value, key) {
|
|
65
|
+
try {
|
|
66
|
+
return Reflect.get(value, key);
|
|
67
|
+
} catch (error) {
|
|
68
|
+
return `[Property access failed: ${describeFailure(error)}]`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function serializeContext(context) {
|
|
72
|
+
try {
|
|
73
|
+
const normalized = normalizeValue(context, {
|
|
74
|
+
active: /* @__PURE__ */ new WeakSet(),
|
|
75
|
+
remainingValues: MAX_NORMALIZED_VALUES
|
|
76
|
+
}, 0);
|
|
77
|
+
return truncate(JSON.stringify(normalized), MAX_LINE_LENGTH);
|
|
78
|
+
} catch {
|
|
79
|
+
return '"[Context serialization failed]"';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function normalizeValue(value, state, depth) {
|
|
83
|
+
if (state.remainingValues <= 0) {
|
|
84
|
+
return "[Value limit reached]";
|
|
85
|
+
}
|
|
86
|
+
state.remainingValues -= 1;
|
|
87
|
+
switch (typeof value) {
|
|
88
|
+
case "undefined":
|
|
89
|
+
return "[undefined]";
|
|
90
|
+
case "string":
|
|
91
|
+
return truncate(value, MAX_STRING_LENGTH);
|
|
92
|
+
case "boolean":
|
|
93
|
+
return value;
|
|
94
|
+
case "number":
|
|
95
|
+
return Number.isFinite(value) ? value : String(value);
|
|
96
|
+
case "bigint":
|
|
97
|
+
return `${value.toString()}n`;
|
|
98
|
+
case "symbol":
|
|
99
|
+
return toBoundedText(value, "[Symbol]", MAX_STRING_LENGTH);
|
|
100
|
+
case "function":
|
|
101
|
+
return describeFunction(value);
|
|
102
|
+
case "object":
|
|
103
|
+
return normalizeObjectValue(value, state, depth);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function normalizeObjectValue(value, state, depth) {
|
|
107
|
+
if (value === null) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
if (depth >= MAX_DEPTH) {
|
|
111
|
+
return `[Depth limit ${MAX_DEPTH} reached]`;
|
|
112
|
+
}
|
|
113
|
+
if (state.active.has(value)) {
|
|
114
|
+
return "[Circular]";
|
|
115
|
+
}
|
|
116
|
+
state.active.add(value);
|
|
117
|
+
try {
|
|
118
|
+
if (isError(value)) {
|
|
119
|
+
return normalizeError(value, state, depth + 1);
|
|
120
|
+
}
|
|
121
|
+
if (Array.isArray(value)) {
|
|
122
|
+
return normalizeArray(value, state, depth + 1);
|
|
123
|
+
}
|
|
124
|
+
return normalizeRecord(value, state, depth + 1);
|
|
125
|
+
} catch (error) {
|
|
126
|
+
return `[Object serialization failed: ${describeFailure(error)}]`;
|
|
127
|
+
} finally {
|
|
128
|
+
state.active.delete(value);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function normalizeError(error, state, depth) {
|
|
132
|
+
const normalized = createNormalizedRecord();
|
|
133
|
+
normalized.name = normalizeValue(readProperty(error, "name"), state, depth);
|
|
134
|
+
normalized.message = normalizeValue(readProperty(error, "message"), state, depth);
|
|
135
|
+
const stack = readProperty(error, "stack");
|
|
136
|
+
if (stack !== void 0) {
|
|
137
|
+
normalized.stack = normalizeValue(stack, state, depth);
|
|
138
|
+
}
|
|
139
|
+
const cause = readProperty(error, "cause");
|
|
140
|
+
if (cause !== void 0) {
|
|
141
|
+
normalized.cause = normalizeValue(cause, state, depth);
|
|
142
|
+
}
|
|
143
|
+
appendEnumerableProperties(error, normalized, state, depth, /* @__PURE__ */ new Set(["name", "message", "stack", "cause"]));
|
|
144
|
+
return normalized;
|
|
145
|
+
}
|
|
146
|
+
function normalizeArray(value, state, depth) {
|
|
147
|
+
const length = value.length;
|
|
148
|
+
const normalized = [];
|
|
149
|
+
const includedLength = Math.min(length, MAX_COLLECTION_ENTRIES);
|
|
150
|
+
for (let index = 0; index < includedLength; index += 1) {
|
|
151
|
+
normalized.push(normalizeOwnProperty(value, String(index), state, depth, "[Empty]"));
|
|
152
|
+
}
|
|
153
|
+
if (length > includedLength) {
|
|
154
|
+
normalized.push(`[${length - includedLength} more items]`);
|
|
155
|
+
}
|
|
156
|
+
return normalized;
|
|
157
|
+
}
|
|
158
|
+
function normalizeRecord(value, state, depth) {
|
|
159
|
+
const normalized = createNormalizedRecord();
|
|
160
|
+
appendEnumerableProperties(value, normalized, state, depth);
|
|
161
|
+
return normalized;
|
|
162
|
+
}
|
|
163
|
+
function appendEnumerableProperties(value, target, state, depth, excludedKeys = /* @__PURE__ */ new Set()) {
|
|
164
|
+
const keys = Object.keys(value).filter((key) => !excludedKeys.has(key));
|
|
165
|
+
const includedKeys = keys.slice(0, MAX_COLLECTION_ENTRIES);
|
|
166
|
+
for (const key of includedKeys) {
|
|
167
|
+
target[key] = normalizeOwnProperty(value, key, state, depth, "[Unavailable]");
|
|
168
|
+
}
|
|
169
|
+
if (keys.length > includedKeys.length) {
|
|
170
|
+
target["[Truncated properties]"] = `${keys.length - includedKeys.length} more properties`;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function normalizeOwnProperty(value, key, state, depth, unavailableValue) {
|
|
174
|
+
try {
|
|
175
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
176
|
+
if (!descriptor) {
|
|
177
|
+
return unavailableValue;
|
|
40
178
|
}
|
|
179
|
+
if ("value" in descriptor) {
|
|
180
|
+
return normalizeValue(descriptor.value, state, depth);
|
|
181
|
+
}
|
|
182
|
+
return descriptor.get ? "[Getter]" : "[Setter]";
|
|
183
|
+
} catch (error) {
|
|
184
|
+
return `[Property serialization failed: ${describeFailure(error)}]`;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function createNormalizedRecord() {
|
|
188
|
+
return /* @__PURE__ */ Object.create(null);
|
|
189
|
+
}
|
|
190
|
+
function describeFunction(value) {
|
|
191
|
+
try {
|
|
192
|
+
return truncate(value.name ? `[Function ${value.name}]` : "[Function]", MAX_STRING_LENGTH);
|
|
193
|
+
} catch {
|
|
194
|
+
return "[Function]";
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function isError(value) {
|
|
198
|
+
try {
|
|
199
|
+
return value instanceof Error || Object.prototype.toString.call(value) === "[object Error]";
|
|
200
|
+
} catch {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function describeFailure(error) {
|
|
205
|
+
if (error instanceof Error) {
|
|
206
|
+
return toBoundedText(error.message, error.name || "Error", 256);
|
|
207
|
+
}
|
|
208
|
+
return toBoundedText(error, "unknown failure", 256);
|
|
209
|
+
}
|
|
210
|
+
function toBoundedText(value, fallback, maxLength) {
|
|
211
|
+
try {
|
|
212
|
+
return truncate(typeof value === "string" ? value : String(value), maxLength);
|
|
213
|
+
} catch {
|
|
214
|
+
return fallback;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function truncate(value, maxLength) {
|
|
218
|
+
if (value.length <= maxLength) {
|
|
219
|
+
return value;
|
|
220
|
+
}
|
|
221
|
+
if (maxLength <= TRUNCATION_SUFFIX.length) {
|
|
222
|
+
return TRUNCATION_SUFFIX.slice(0, maxLength);
|
|
41
223
|
}
|
|
224
|
+
return `${value.slice(0, maxLength - TRUNCATION_SUFFIX.length)}${TRUNCATION_SUFFIX}`;
|
|
42
225
|
}
|
|
43
226
|
var console_transport_default = ConsoleTransport;
|
|
44
227
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/transports/console_transport.ts"],"sourcesContent":["import type { LogEntry, LogTransport } from \"../core/log_transport.cjs\";\n\nexport class ConsoleTransport implements LogTransport {\n log(entry: LogEntry): void {\n const contextStr = entry.context !== undefined ? ` ${JSON.stringify(entry.context)}` : \"\";\n const formatted = `[${entry.timestamp}] [${entry.logger}] [${entry.level}] ${entry.message}${contextStr}`;\n\n switch (entry.level) {\n case \"ERROR\":\n case \"FATAL\":\n console.error(formatted);\n break;\n case \"WARN\":\n console.warn(formatted);\n break;\n default:\n console.log(formatted);\n break;\n }\n }\n}\n\nexport default ConsoleTransport;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,iBAAyC;AAAA,EACpD,IAAI,OAAuB;AACzB,UAAM,aAAa,MAAM,YAAY,SAAY,IAAI,KAAK,UAAU,MAAM,OAAO,CAAC,KAAK;AACvF,UAAM,YAAY,IAAI,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,GAAG,UAAU;AAEvG,YAAQ,MAAM,OAAO;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ,MAAM,SAAS;AACvB;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,SAAS;AACtB;AAAA,MACF;AACE,gBAAQ,IAAI,SAAS;AACrB;AAAA,IACJ;AAAA,EACF;AACF;AAEA,IAAO,4BAAQ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/transports/console_transport.ts"],"sourcesContent":["import type { LogEntry, LogTransport } from \"../core/log_transport.cjs\";\n\nconst MAX_LINE_LENGTH = 16 * 1024;\nconst MAX_STRING_LENGTH = 4 * 1024;\nconst MAX_DEPTH = 6;\nconst MAX_COLLECTION_ENTRIES = 50;\nconst MAX_NORMALIZED_VALUES = 200;\nconst TRUNCATION_SUFFIX = \"...[truncated]\";\n\nexport type ConsoleWriter = (line: string) => void;\n\nexport interface ConsoleTransportOptions {\n stdout?: ConsoleWriter;\n stderr?: ConsoleWriter;\n}\n\ntype NormalizedValue =\n | null\n | boolean\n | number\n | string\n | NormalizedValue[]\n | { [key: string]: NormalizedValue };\n\ninterface NormalizationState {\n readonly active: WeakSet<object>;\n remainingValues: number;\n}\n\nconst defaultStdoutWriter: ConsoleWriter = (line) => console.log(line);\nconst defaultStderrWriter: ConsoleWriter = (line) => console.error(line);\n\nexport class ConsoleTransport implements LogTransport {\n private readonly stdoutWriter: ConsoleWriter;\n private readonly stderrWriter: ConsoleWriter;\n\n constructor(options: ConsoleTransportOptions = {}) {\n this.stdoutWriter = options.stdout ?? defaultStdoutWriter;\n this.stderrWriter = options.stderr ?? defaultStderrWriter;\n }\n\n log(entry: LogEntry): void {\n let level = \"UNKNOWN\";\n let formatted = \"[unknown-time] [unknown-logger] [UNKNOWN] [formatting failed]\";\n\n try {\n level = this.readLevel(entry);\n formatted = this.formatEntry(entry, level);\n } catch {\n // Logging must never make the caller fail.\n }\n\n const writer = level === \"ERROR\" || level === \"FATAL\"\n ? this.stderrWriter\n : this.stdoutWriter;\n\n try {\n writer(formatted);\n } catch {\n // Console and injected writer failures are intentionally isolated.\n }\n }\n\n private formatEntry(entry: LogEntry, level: string): string {\n const timestamp = toBoundedText(readProperty(entry, \"timestamp\"), \"unknown-time\", 128);\n const logger = toBoundedText(readProperty(entry, \"logger\"), \"unknown-logger\", 256);\n const message = toBoundedText(readProperty(entry, \"message\"), \"[unavailable message]\", MAX_STRING_LENGTH);\n const context = readProperty(entry, \"context\");\n const contextSuffix = context === undefined ? \"\" : ` ${serializeContext(context)}`;\n\n return truncate(`[${timestamp}] [${logger}] [${level}] ${message}${contextSuffix}`, MAX_LINE_LENGTH);\n }\n\n private readLevel(entry: LogEntry): string {\n return toBoundedText(readProperty(entry, \"level\"), \"UNKNOWN\", 32).toUpperCase();\n }\n}\n\nfunction readProperty(value: object, key: PropertyKey): unknown {\n try {\n return Reflect.get(value, key);\n } catch (error) {\n return `[Property access failed: ${describeFailure(error)}]`;\n }\n}\n\nfunction serializeContext(context: unknown): string {\n try {\n const normalized = normalizeValue(context, {\n active: new WeakSet<object>(),\n remainingValues: MAX_NORMALIZED_VALUES,\n }, 0);\n\n return truncate(JSON.stringify(normalized), MAX_LINE_LENGTH);\n } catch {\n return '\"[Context serialization failed]\"';\n }\n}\n\nfunction normalizeValue(\n value: unknown,\n state: NormalizationState,\n depth: number,\n): NormalizedValue {\n if (state.remainingValues <= 0) {\n return \"[Value limit reached]\";\n }\n state.remainingValues -= 1;\n\n switch (typeof value) {\n case \"undefined\":\n return \"[undefined]\";\n case \"string\":\n return truncate(value, MAX_STRING_LENGTH);\n case \"boolean\":\n return value;\n case \"number\":\n return Number.isFinite(value) ? value : String(value);\n case \"bigint\":\n return `${value.toString()}n`;\n case \"symbol\":\n return toBoundedText(value, \"[Symbol]\", MAX_STRING_LENGTH);\n case \"function\":\n return describeFunction(value);\n case \"object\":\n return normalizeObjectValue(value, state, depth);\n }\n}\n\nfunction normalizeObjectValue(\n value: object | null,\n state: NormalizationState,\n depth: number,\n): NormalizedValue {\n if (value === null) {\n return null;\n }\n if (depth >= MAX_DEPTH) {\n return `[Depth limit ${MAX_DEPTH} reached]`;\n }\n if (state.active.has(value)) {\n return \"[Circular]\";\n }\n\n state.active.add(value);\n try {\n if (isError(value)) {\n return normalizeError(value, state, depth + 1);\n }\n if (Array.isArray(value)) {\n return normalizeArray(value, state, depth + 1);\n }\n return normalizeRecord(value, state, depth + 1);\n } catch (error) {\n return `[Object serialization failed: ${describeFailure(error)}]`;\n } finally {\n state.active.delete(value);\n }\n}\n\nfunction normalizeError(\n error: object,\n state: NormalizationState,\n depth: number,\n): { [key: string]: NormalizedValue } {\n const normalized = createNormalizedRecord();\n normalized.name = normalizeValue(readProperty(error, \"name\"), state, depth);\n normalized.message = normalizeValue(readProperty(error, \"message\"), state, depth);\n\n const stack = readProperty(error, \"stack\");\n if (stack !== undefined) {\n normalized.stack = normalizeValue(stack, state, depth);\n }\n\n const cause = readProperty(error, \"cause\");\n if (cause !== undefined) {\n normalized.cause = normalizeValue(cause, state, depth);\n }\n\n appendEnumerableProperties(error, normalized, state, depth, new Set([\"name\", \"message\", \"stack\", \"cause\"]));\n return normalized;\n}\n\nfunction normalizeArray(\n value: unknown[],\n state: NormalizationState,\n depth: number,\n): NormalizedValue[] {\n const length = value.length;\n const normalized: NormalizedValue[] = [];\n const includedLength = Math.min(length, MAX_COLLECTION_ENTRIES);\n\n for (let index = 0; index < includedLength; index += 1) {\n normalized.push(normalizeOwnProperty(value, String(index), state, depth, \"[Empty]\"));\n }\n if (length > includedLength) {\n normalized.push(`[${length - includedLength} more items]`);\n }\n\n return normalized;\n}\n\nfunction normalizeRecord(\n value: object,\n state: NormalizationState,\n depth: number,\n): { [key: string]: NormalizedValue } {\n const normalized = createNormalizedRecord();\n appendEnumerableProperties(value, normalized, state, depth);\n return normalized;\n}\n\nfunction appendEnumerableProperties(\n value: object,\n target: { [key: string]: NormalizedValue },\n state: NormalizationState,\n depth: number,\n excludedKeys: ReadonlySet<string> = new Set(),\n): void {\n const keys = Object.keys(value).filter((key) => !excludedKeys.has(key));\n const includedKeys = keys.slice(0, MAX_COLLECTION_ENTRIES);\n\n for (const key of includedKeys) {\n target[key] = normalizeOwnProperty(value, key, state, depth, \"[Unavailable]\");\n }\n if (keys.length > includedKeys.length) {\n target[\"[Truncated properties]\"] = `${keys.length - includedKeys.length} more properties`;\n }\n}\n\nfunction normalizeOwnProperty(\n value: object,\n key: string,\n state: NormalizationState,\n depth: number,\n unavailableValue: string,\n): NormalizedValue {\n try {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor) {\n return unavailableValue;\n }\n if (\"value\" in descriptor) {\n return normalizeValue(descriptor.value, state, depth);\n }\n return descriptor.get ? \"[Getter]\" : \"[Setter]\";\n } catch (error) {\n return `[Property serialization failed: ${describeFailure(error)}]`;\n }\n}\n\nfunction createNormalizedRecord(): { [key: string]: NormalizedValue } {\n return Object.create(null) as { [key: string]: NormalizedValue };\n}\n\nfunction describeFunction(value: Function): string {\n try {\n return truncate(value.name ? `[Function ${value.name}]` : \"[Function]\", MAX_STRING_LENGTH);\n } catch {\n return \"[Function]\";\n }\n}\n\nfunction isError(value: object): boolean {\n try {\n return value instanceof Error || Object.prototype.toString.call(value) === \"[object Error]\";\n } catch {\n return false;\n }\n}\n\nfunction describeFailure(error: unknown): string {\n if (error instanceof Error) {\n return toBoundedText(error.message, error.name || \"Error\", 256);\n }\n return toBoundedText(error, \"unknown failure\", 256);\n}\n\nfunction toBoundedText(value: unknown, fallback: string, maxLength: number): string {\n try {\n return truncate(typeof value === \"string\" ? value : String(value), maxLength);\n } catch {\n return fallback;\n }\n}\n\nfunction truncate(value: string, maxLength: number): string {\n if (value.length <= maxLength) {\n return value;\n }\n if (maxLength <= TRUNCATION_SUFFIX.length) {\n return TRUNCATION_SUFFIX.slice(0, maxLength);\n }\n return `${value.slice(0, maxLength - TRUNCATION_SUFFIX.length)}${TRUNCATION_SUFFIX}`;\n}\n\nexport default ConsoleTransport;\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { LogTransport, LogEntry } from '../core/log_transport.cjs';
|
|
2
2
|
|
|
3
|
+
type ConsoleWriter = (line: string) => void;
|
|
4
|
+
interface ConsoleTransportOptions {
|
|
5
|
+
stdout?: ConsoleWriter;
|
|
6
|
+
stderr?: ConsoleWriter;
|
|
7
|
+
}
|
|
3
8
|
declare class ConsoleTransport implements LogTransport {
|
|
9
|
+
private readonly stdoutWriter;
|
|
10
|
+
private readonly stderrWriter;
|
|
11
|
+
constructor(options?: ConsoleTransportOptions);
|
|
4
12
|
log(entry: LogEntry): void;
|
|
13
|
+
private formatEntry;
|
|
14
|
+
private readLevel;
|
|
5
15
|
}
|
|
6
16
|
|
|
7
|
-
export { ConsoleTransport, ConsoleTransport as default };
|
|
17
|
+
export { ConsoleTransport, type ConsoleTransportOptions, type ConsoleWriter, ConsoleTransport as default };
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { LogTransport, LogEntry } from '../core/log_transport.js';
|
|
2
2
|
|
|
3
|
+
type ConsoleWriter = (line: string) => void;
|
|
4
|
+
interface ConsoleTransportOptions {
|
|
5
|
+
stdout?: ConsoleWriter;
|
|
6
|
+
stderr?: ConsoleWriter;
|
|
7
|
+
}
|
|
3
8
|
declare class ConsoleTransport implements LogTransport {
|
|
9
|
+
private readonly stdoutWriter;
|
|
10
|
+
private readonly stderrWriter;
|
|
11
|
+
constructor(options?: ConsoleTransportOptions);
|
|
4
12
|
log(entry: LogEntry): void;
|
|
13
|
+
private formatEntry;
|
|
14
|
+
private readLevel;
|
|
5
15
|
}
|
|
6
16
|
|
|
7
|
-
export { ConsoleTransport, ConsoleTransport as default };
|
|
17
|
+
export { ConsoleTransport, type ConsoleTransportOptions, type ConsoleWriter, ConsoleTransport as default };
|