@agimon-ai/foundation-universal-logger 0.2.0 → 0.2.1
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/{index.d.ts → index.d.mts} +5 -5
- package/dist/index.mjs +1 -0
- package/dist/{logger.d.ts → logger.d.mts} +1 -1
- package/dist/logger.mjs +2 -0
- package/dist/logger.mjs.map +1 -0
- package/dist/{logger2.d.ts → logger2.d.mts} +2 -2
- package/dist/transports/{console.d.ts → console.d.mts} +2 -2
- package/dist/transports/console.mjs +2 -0
- package/dist/transports/console.mjs.map +1 -0
- package/dist/utils/{logFilter.d.ts → logFilter.d.mts} +2 -2
- package/dist/utils/{logFilter.js → logFilter.mjs} +1 -1
- package/dist/utils/logFilter.mjs.map +1 -0
- package/dist/utils/{logFormatter.d.ts → logFormatter.d.mts} +2 -2
- package/dist/utils/{logFormatter.js → logFormatter.mjs} +1 -1
- package/dist/utils/logFormatter.mjs.map +1 -0
- package/package.json +3 -8
- package/dist/index.js +0 -1
- package/dist/logger.js +0 -2
- package/dist/logger.js.map +0 -1
- package/dist/transports/console.js +0 -2
- package/dist/transports/console.js.map +0 -1
- package/dist/utils/logFilter.js.map +0 -1
- package/dist/utils/logFormatter.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as LogFormatter, c as Transport, i as LogFilter, l as UniversalLogger, n as LogContext, o as LogLevel, r as LogEntry, s as LoggerOptions, t as Environment } from "./logger.
|
|
2
|
-
import { Logger, createLogger } from "./logger2.
|
|
3
|
-
import { ConsoleTransport } from "./transports/console.
|
|
4
|
-
import { CompositeLogFilter, DefaultLogFilter, RegexLogFilter } from "./utils/logFilter.
|
|
5
|
-
import { DefaultLogFormatter, JsonLogFormatter } from "./utils/logFormatter.
|
|
1
|
+
import { a as LogFormatter, c as Transport, i as LogFilter, l as UniversalLogger, n as LogContext, o as LogLevel, r as LogEntry, s as LoggerOptions, t as Environment } from "./logger.mjs";
|
|
2
|
+
import { Logger, createLogger } from "./logger2.mjs";
|
|
3
|
+
import { ConsoleTransport } from "./transports/console.mjs";
|
|
4
|
+
import { CompositeLogFilter, DefaultLogFilter, RegexLogFilter } from "./utils/logFilter.mjs";
|
|
5
|
+
import { DefaultLogFormatter, JsonLogFormatter } from "./utils/logFormatter.mjs";
|
|
6
6
|
export { CompositeLogFilter, ConsoleTransport, DefaultLogFilter, DefaultLogFormatter, type Environment, JsonLogFormatter, type LogContext, type LogEntry, type LogFilter, type LogFormatter, type LogLevel, Logger, type LoggerOptions, RegexLogFilter, type Transport, type UniversalLogger, createLogger };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{DefaultLogFormatter as e,JsonLogFormatter as t}from"./utils/logFormatter.mjs";import{ConsoleTransport as n}from"./transports/console.mjs";import{CompositeLogFilter as r,DefaultLogFilter as i,RegexLogFilter as a}from"./utils/logFilter.mjs";import{Logger as o,createLogger as s}from"./logger.mjs";export{r as CompositeLogFilter,n as ConsoleTransport,i as DefaultLogFilter,e as DefaultLogFormatter,t as JsonLogFormatter,o as Logger,a as RegexLogFilter,s as createLogger};
|
|
@@ -46,4 +46,4 @@ interface LogFilter {
|
|
|
46
46
|
}
|
|
47
47
|
//#endregion
|
|
48
48
|
export { LogFormatter as a, Transport as c, LogFilter as i, UniversalLogger as l, LogContext as n, LogLevel as o, LogEntry as r, LoggerOptions as s, Environment as t };
|
|
49
|
-
//# sourceMappingURL=logger.d.
|
|
49
|
+
//# sourceMappingURL=logger.d.mts.map
|
package/dist/logger.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ConsoleTransport as e}from"./transports/console.mjs";import{DefaultLogFilter as t}from"./utils/logFilter.mjs";import{trace as n}from"@opentelemetry/api";const r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60,silent:100};var i=class i{service;level;transports;context;filter;constructor(n){this.service=n?.service,this.level=n?.level||`info`,this.context=n?.context||{},this.filter=new t,this.transports=n?.transports&&n.transports.length>0?n.transports:[new e]}shouldLog(e){return r[e]>=r[this.level]}async logEntry(e){if(!this.shouldLog(e.level)||!this.filter.shouldLog(e,this.level))return;let t={};try{let e=n.getActiveSpan();if(e){let n=e.spanContext();n.traceId&&(t.traceId=n.traceId),n.spanId&&(t.spanId=n.spanId)}}catch{}let i={...e,context:{...this.context,...t,...e.context},service:this.service},a=this.transports.map(t=>{try{return t.level&&r[e.level]<r[t.level]?Promise.resolve():Promise.resolve(t.log(i))}catch(e){return console.error(`Transport error:`,e),Promise.resolve()}});await Promise.all(a)}parseArgs(e){let t,n;for(let r of e)r instanceof Error?n=r:typeof r==`object`&&r&&!Array.isArray(r)&&(t={...t,...r});return{context:t,error:n}}trace(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`trace`,message:e,timestamp:new Date,context:n,error:r})}debug(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`debug`,message:e,timestamp:new Date,context:n,error:r})}info(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`info`,message:e,timestamp:new Date,context:n,error:r})}warn(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`warn`,message:e,timestamp:new Date,context:n,error:r})}error(e,t,...n){let{context:r}=this.parseArgs(n);this.logEntry({level:`error`,message:e,timestamp:new Date,context:r,error:t})}fatal(e,t,...n){let{context:r}=this.parseArgs(n);this.logEntry({level:`fatal`,message:e,timestamp:new Date,context:r,error:t})}child(e){return new i({service:this.service,level:this.level,transports:this.transports,context:{...this.context,...e}})}setLevel(e){this.level=e}getLevel(){return this.level}};function a(e){return new i(e)}export{i as Logger,a as createLogger};
|
|
2
|
+
//# sourceMappingURL=logger.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.mjs","names":[],"sources":["../src/logger.ts"],"sourcesContent":["import { trace } from '@opentelemetry/api';\nimport { ConsoleTransport } from './transports/console';\nimport type {\n LogContext,\n LogEntry,\n LogFilter,\n LogLevel,\n LoggerOptions,\n Transport,\n UniversalLogger,\n} from './types/logger';\nimport { DefaultLogFilter } from './utils/logFilter';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60,\n silent: 100,\n};\n\nexport class Logger implements UniversalLogger {\n private readonly service?: string;\n private level: LogLevel;\n private readonly transports: Transport[];\n private readonly context: LogContext;\n private readonly filter: LogFilter;\n\n constructor(options?: LoggerOptions) {\n this.service = options?.service;\n this.level = options?.level || 'info';\n this.context = options?.context || {};\n this.filter = new DefaultLogFilter();\n\n this.transports =\n options?.transports && options.transports.length > 0 ? options.transports : [new ConsoleTransport()];\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private async logEntry(entry: LogEntry): Promise<void> {\n if (!this.shouldLog(entry.level)) {\n return;\n }\n\n if (!this.filter.shouldLog(entry, this.level)) {\n return;\n }\n\n const traceContext: LogContext = {};\n try {\n const activeSpan = trace.getActiveSpan();\n if (activeSpan) {\n const spanContext = activeSpan.spanContext();\n if (spanContext.traceId) {\n traceContext.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n traceContext.spanId = spanContext.spanId;\n }\n }\n } catch {\n // Gracefully handle cases where OTEL is not initialized\n }\n\n const fullEntry: LogEntry = {\n ...entry,\n context: {\n ...this.context,\n ...traceContext,\n ...entry.context,\n },\n service: this.service,\n };\n\n const promises = this.transports.map((transport) => {\n try {\n if (transport.level && LOG_LEVELS[entry.level] < LOG_LEVELS[transport.level]) {\n return Promise.resolve();\n }\n return Promise.resolve(transport.log(fullEntry));\n } catch (error) {\n console.error('Transport error:', error);\n return Promise.resolve();\n }\n });\n\n await Promise.all(promises);\n }\n\n private parseArgs(args: unknown[]): { context?: LogContext; error?: unknown } {\n let context: LogContext | undefined;\n let error: unknown;\n\n for (const arg of args) {\n if (arg instanceof Error) {\n error = arg;\n } else if (typeof arg === 'object' && arg !== null && !Array.isArray(arg)) {\n context = { ...context, ...(arg as LogContext) };\n }\n }\n\n return { context, error };\n }\n\n trace(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'trace', message, timestamp: new Date(), context, error });\n }\n\n debug(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'debug', message, timestamp: new Date(), context, error });\n }\n\n info(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'info', message, timestamp: new Date(), context, error });\n }\n\n warn(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'warn', message, timestamp: new Date(), context, error });\n }\n\n error(message: string, error?: unknown, ...args: unknown[]): void {\n const { context } = this.parseArgs(args);\n void this.logEntry({ level: 'error', message, timestamp: new Date(), context, error });\n }\n\n fatal(message: string, error?: unknown, ...args: unknown[]): void {\n const { context } = this.parseArgs(args);\n void this.logEntry({ level: 'fatal', message, timestamp: new Date(), context, error });\n }\n\n child(childContext: LogContext): UniversalLogger {\n return new Logger({\n service: this.service,\n level: this.level,\n transports: this.transports,\n context: {\n ...this.context,\n ...childContext,\n },\n });\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n}\n\nexport function createLogger(options?: LoggerOptions): UniversalLogger {\n return new Logger(options);\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as UniversalLogger, n as LogContext, o as LogLevel, s as LoggerOptions } from "./logger.
|
|
1
|
+
import { l as UniversalLogger, n as LogContext, o as LogLevel, s as LoggerOptions } from "./logger.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/logger.d.ts
|
|
4
4
|
declare class Logger implements UniversalLogger {
|
|
@@ -24,4 +24,4 @@ declare class Logger implements UniversalLogger {
|
|
|
24
24
|
declare function createLogger(options?: LoggerOptions): UniversalLogger;
|
|
25
25
|
//#endregion
|
|
26
26
|
export { Logger, createLogger };
|
|
27
|
-
//# sourceMappingURL=logger2.d.
|
|
27
|
+
//# sourceMappingURL=logger2.d.mts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as Transport, r as LogEntry } from "../logger.
|
|
1
|
+
import { c as Transport, r as LogEntry } from "../logger.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/transports/console.d.ts
|
|
4
4
|
declare class ConsoleTransport implements Transport {
|
|
@@ -8,4 +8,4 @@ declare class ConsoleTransport implements Transport {
|
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
export { ConsoleTransport };
|
|
11
|
-
//# sourceMappingURL=console.d.
|
|
11
|
+
//# sourceMappingURL=console.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{DefaultLogFormatter as e}from"../utils/logFormatter.mjs";var t=class{name=`console`;formatter=new e;log(e){let t=this.formatter.format(e);switch(e.level){case`trace`:case`debug`:typeof console.debug==`function`?console.debug(t):console.log(t);break;case`info`:typeof console.info==`function`?console.info(t):console.log(t);break;case`warn`:typeof console.warn==`function`?console.warn(t):console.log(t);break;case`error`:case`fatal`:typeof console.error==`function`?console.error(t):console.log(t);break;default:console.log(t)}}};export{t as ConsoleTransport};
|
|
2
|
+
//# sourceMappingURL=console.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.mjs","names":[],"sources":["../../src/transports/console.ts"],"sourcesContent":["import type { LogEntry, Transport } from '../types/logger';\nimport { DefaultLogFormatter } from '../utils/logFormatter';\n\nexport class ConsoleTransport implements Transport {\n name = 'console';\n private formatter = new DefaultLogFormatter();\n\n log(entry: LogEntry): void {\n const formatted = this.formatter.format(entry);\n\n switch (entry.level) {\n case 'trace':\n case 'debug':\n if (typeof console.debug === 'function') {\n console.debug(formatted);\n } else {\n console.log(formatted);\n }\n break;\n case 'info':\n if (typeof console.info === 'function') {\n console.info(formatted);\n } else {\n console.log(formatted);\n }\n break;\n case 'warn':\n if (typeof console.warn === 'function') {\n console.warn(formatted);\n } else {\n console.log(formatted);\n }\n break;\n case 'error':\n case 'fatal':\n if (typeof console.error === 'function') {\n console.error(formatted);\n } else {\n console.log(formatted);\n }\n break;\n default:\n console.log(formatted);\n }\n }\n}\n"],"mappings":"gEAGA,IAAa,EAAb,KAAmD,CACjD,KAAO,UACP,UAAoB,IAAI,EAExB,IAAI,EAAuB,CACzB,IAAM,EAAY,KAAK,UAAU,OAAO,EAAM,CAE9C,OAAQ,EAAM,MAAd,CACE,IAAK,QACL,IAAK,QACC,OAAO,QAAQ,OAAU,WAC3B,QAAQ,MAAM,EAAU,CAExB,QAAQ,IAAI,EAAU,CAExB,MACF,IAAK,OACC,OAAO,QAAQ,MAAS,WAC1B,QAAQ,KAAK,EAAU,CAEvB,QAAQ,IAAI,EAAU,CAExB,MACF,IAAK,OACC,OAAO,QAAQ,MAAS,WAC1B,QAAQ,KAAK,EAAU,CAEvB,QAAQ,IAAI,EAAU,CAExB,MACF,IAAK,QACL,IAAK,QACC,OAAO,QAAQ,OAAU,WAC3B,QAAQ,MAAM,EAAU,CAExB,QAAQ,IAAI,EAAU,CAExB,MACF,QACE,QAAQ,IAAI,EAAU"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as LogFilter, o as LogLevel, r as LogEntry } from "../logger.
|
|
1
|
+
import { i as LogFilter, o as LogLevel, r as LogEntry } from "../logger.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/utils/logFilter.d.ts
|
|
4
4
|
declare class DefaultLogFilter implements LogFilter {
|
|
@@ -17,4 +17,4 @@ declare class CompositeLogFilter implements LogFilter {
|
|
|
17
17
|
}
|
|
18
18
|
//#endregion
|
|
19
19
|
export { CompositeLogFilter, DefaultLogFilter, RegexLogFilter };
|
|
20
|
-
//# sourceMappingURL=logFilter.d.
|
|
20
|
+
//# sourceMappingURL=logFilter.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var e=class{shouldLog(e,t){return!0}},t=class{constructor(e,t=!0){this.pattern=e,this.include=t}shouldLog(e,t){let n=this.pattern.test(e.message);return this.include?n:!n}},n=class{constructor(e){this.filters=e}shouldLog(e,t){return this.filters.every(n=>n.shouldLog(e,t))}};export{n as CompositeLogFilter,e as DefaultLogFilter,t as RegexLogFilter};
|
|
2
|
-
//# sourceMappingURL=logFilter.
|
|
2
|
+
//# sourceMappingURL=logFilter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logFilter.mjs","names":[],"sources":["../../src/utils/logFilter.ts"],"sourcesContent":["import type { LogEntry, LogFilter, LogLevel } from '../types/logger';\n\nexport class DefaultLogFilter implements LogFilter {\n shouldLog(_entry: LogEntry, _minLevel: LogLevel): boolean {\n return true;\n }\n}\n\nexport class RegexLogFilter implements LogFilter {\n constructor(\n private readonly pattern: RegExp,\n private readonly include: boolean = true,\n ) {}\n\n shouldLog(entry: LogEntry, _minLevel: LogLevel): boolean {\n const matches = this.pattern.test(entry.message);\n return this.include ? matches : !matches;\n }\n}\n\nexport class CompositeLogFilter implements LogFilter {\n constructor(private readonly filters: LogFilter[]) {}\n\n shouldLog(entry: LogEntry, minLevel: LogLevel): boolean {\n return this.filters.every((filter) => filter.shouldLog(entry, minLevel));\n }\n}\n"],"mappings":"AAEA,IAAa,EAAb,KAAmD,CACjD,UAAU,EAAkB,EAA8B,CACxD,MAAO,KAIE,EAAb,KAAiD,CAC/C,YACE,EACA,EAAoC,GACpC,CAFiB,KAAA,QAAA,EACA,KAAA,QAAA,EAGnB,UAAU,EAAiB,EAA8B,CACvD,IAAM,EAAU,KAAK,QAAQ,KAAK,EAAM,QAAQ,CAChD,OAAO,KAAK,QAAU,EAAU,CAAC,IAIxB,EAAb,KAAqD,CACnD,YAAY,EAAuC,CAAtB,KAAA,QAAA,EAE7B,UAAU,EAAiB,EAA6B,CACtD,OAAO,KAAK,QAAQ,MAAO,GAAW,EAAO,UAAU,EAAO,EAAS,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as LogFormatter, r as LogEntry } from "../logger.
|
|
1
|
+
import { a as LogFormatter, r as LogEntry } from "../logger.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/utils/logFormatter.d.ts
|
|
4
4
|
declare class DefaultLogFormatter implements LogFormatter {
|
|
@@ -9,4 +9,4 @@ declare class JsonLogFormatter implements LogFormatter {
|
|
|
9
9
|
}
|
|
10
10
|
//#endregion
|
|
11
11
|
export { DefaultLogFormatter, JsonLogFormatter };
|
|
12
|
-
//# sourceMappingURL=logFormatter.d.
|
|
12
|
+
//# sourceMappingURL=logFormatter.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var e=class{format(e){let t=`${e.timestamp.toISOString()} ${e.level.toUpperCase().padEnd(5)} ${e.service?`[${e.service}]`:``} ${e.message}`.trim();return e.context&&Object.keys(e.context).length>0&&(t+=` ${JSON.stringify(e.context)}`),e.error&&(e.error instanceof Error?(t+=`\n Error: ${e.error.message}`,e.error.stack&&(t+=`\n Stack: ${e.error.stack}`)):t+=`\n Error: ${JSON.stringify(e.error)}`),t}},t=class{format(e){let t={timestamp:e.timestamp.toISOString(),level:e.level,message:e.message};return e.service&&(t.service=e.service),e.context&&(t.context=e.context),e.error&&(e.error instanceof Error?t.error={message:e.error.message,stack:e.error.stack,name:e.error.name}:t.error=e.error),JSON.stringify(t)}};export{e as DefaultLogFormatter,t as JsonLogFormatter};
|
|
2
|
-
//# sourceMappingURL=logFormatter.
|
|
2
|
+
//# sourceMappingURL=logFormatter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logFormatter.mjs","names":[],"sources":["../../src/utils/logFormatter.ts"],"sourcesContent":["import type { LogEntry, LogFormatter } from '../types/logger';\n\nexport class DefaultLogFormatter implements LogFormatter {\n format(entry: LogEntry): string {\n const timestamp = entry.timestamp.toISOString();\n const level = entry.level.toUpperCase().padEnd(5);\n const service = entry.service ? `[${entry.service}]` : '';\n\n let message = `${timestamp} ${level} ${service} ${entry.message}`.trim();\n\n if (entry.context && Object.keys(entry.context).length > 0) {\n message += ` ${JSON.stringify(entry.context)}`;\n }\n\n if (entry.error) {\n if (entry.error instanceof Error) {\n message += `\\n Error: ${entry.error.message}`;\n if (entry.error.stack) {\n message += `\\n Stack: ${entry.error.stack}`;\n }\n } else {\n message += `\\n Error: ${JSON.stringify(entry.error)}`;\n }\n }\n\n return message;\n }\n}\n\nexport class JsonLogFormatter implements LogFormatter {\n format(entry: LogEntry): string {\n const logObject: Record<string, unknown> = {\n timestamp: entry.timestamp.toISOString(),\n level: entry.level,\n message: entry.message,\n };\n\n if (entry.service) {\n logObject.service = entry.service;\n }\n\n if (entry.context) {\n logObject.context = entry.context;\n }\n\n if (entry.error) {\n if (entry.error instanceof Error) {\n logObject.error = {\n message: entry.error.message,\n stack: entry.error.stack,\n name: entry.error.name,\n };\n } else {\n logObject.error = entry.error;\n }\n }\n\n return JSON.stringify(logObject);\n }\n}\n"],"mappings":"AAEA,IAAa,EAAb,KAAyD,CACvD,OAAO,EAAyB,CAK9B,IAAI,EAAU,GAJI,EAAM,UAAU,aAAa,CAIpB,GAHb,EAAM,MAAM,aAAa,CAAC,OAAO,EAAE,CAGb,GAFpB,EAAM,QAAU,IAAI,EAAM,QAAQ,GAAK,GAER,GAAG,EAAM,UAAU,MAAM,CAiBxE,OAfI,EAAM,SAAW,OAAO,KAAK,EAAM,QAAQ,CAAC,OAAS,IACvD,GAAW,IAAI,KAAK,UAAU,EAAM,QAAQ,IAG1C,EAAM,QACJ,EAAM,iBAAiB,OACzB,GAAW,cAAc,EAAM,MAAM,UACjC,EAAM,MAAM,QACd,GAAW,cAAc,EAAM,MAAM,UAGvC,GAAW,cAAc,KAAK,UAAU,EAAM,MAAM,IAIjD,IAIE,EAAb,KAAsD,CACpD,OAAO,EAAyB,CAC9B,IAAM,EAAqC,CACzC,UAAW,EAAM,UAAU,aAAa,CACxC,MAAO,EAAM,MACb,QAAS,EAAM,QAChB,CAsBD,OApBI,EAAM,UACR,EAAU,QAAU,EAAM,SAGxB,EAAM,UACR,EAAU,QAAU,EAAM,SAGxB,EAAM,QACJ,EAAM,iBAAiB,MACzB,EAAU,MAAQ,CAChB,QAAS,EAAM,MAAM,QACrB,MAAO,EAAM,MAAM,MACnB,KAAM,EAAM,MAAM,KACnB,CAED,EAAU,MAAQ,EAAM,OAIrB,KAAK,UAAU,EAAU"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/foundation-universal-logger",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "A universal logger package with TypeScript support for frontend and backend environments",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
|
-
"types": "./dist/index.d.
|
|
7
|
+
"types": "./dist/index.d.cts",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
@@ -23,31 +23,26 @@
|
|
|
23
23
|
"type": "module",
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|
|
26
|
-
"types": "./dist/index.d.mts",
|
|
27
26
|
"import": "./dist/index.mjs",
|
|
28
27
|
"require": "./dist/index.cjs"
|
|
29
28
|
},
|
|
30
29
|
"./logger": {
|
|
31
|
-
"types": "./dist/logger.d.mts",
|
|
32
30
|
"import": "./dist/logger.mjs",
|
|
33
31
|
"require": "./dist/logger.cjs"
|
|
34
32
|
},
|
|
35
33
|
"./transports/console": {
|
|
36
|
-
"types": "./dist/transports/console.d.mts",
|
|
37
34
|
"import": "./dist/transports/console.mjs",
|
|
38
35
|
"require": "./dist/transports/console.cjs"
|
|
39
36
|
},
|
|
40
37
|
"./utils/logFilter": {
|
|
41
|
-
"types": "./dist/utils/logFilter.d.mts",
|
|
42
38
|
"import": "./dist/utils/logFilter.mjs",
|
|
43
39
|
"require": "./dist/utils/logFilter.cjs"
|
|
44
40
|
},
|
|
45
41
|
"./utils/logFormatter": {
|
|
46
|
-
"types": "./dist/utils/logFormatter.d.mts",
|
|
47
42
|
"import": "./dist/utils/logFormatter.mjs",
|
|
48
43
|
"require": "./dist/utils/logFormatter.cjs"
|
|
49
44
|
},
|
|
50
|
-
"
|
|
45
|
+
"./package.json": "./package.json"
|
|
51
46
|
},
|
|
52
47
|
"files": [
|
|
53
48
|
"dist",
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{DefaultLogFormatter as e,JsonLogFormatter as t}from"./utils/logFormatter.js";import{ConsoleTransport as n}from"./transports/console.js";import{CompositeLogFilter as r,DefaultLogFilter as i,RegexLogFilter as a}from"./utils/logFilter.js";import{Logger as o,createLogger as s}from"./logger.js";export{r as CompositeLogFilter,n as ConsoleTransport,i as DefaultLogFilter,e as DefaultLogFormatter,t as JsonLogFormatter,o as Logger,a as RegexLogFilter,s as createLogger};
|
package/dist/logger.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ConsoleTransport as e}from"./transports/console.js";import{DefaultLogFilter as t}from"./utils/logFilter.js";import{trace as n}from"@opentelemetry/api";const r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60,silent:100};var i=class i{service;level;transports;context;filter;constructor(n){this.service=n?.service,this.level=n?.level||`info`,this.context=n?.context||{},this.filter=new t,this.transports=n?.transports&&n.transports.length>0?n.transports:[new e]}shouldLog(e){return r[e]>=r[this.level]}async logEntry(e){if(!this.shouldLog(e.level)||!this.filter.shouldLog(e,this.level))return;let t={};try{let e=n.getActiveSpan();if(e){let n=e.spanContext();n.traceId&&(t.traceId=n.traceId),n.spanId&&(t.spanId=n.spanId)}}catch{}let i={...e,context:{...this.context,...t,...e.context},service:this.service},a=this.transports.map(t=>{try{return t.level&&r[e.level]<r[t.level]?Promise.resolve():Promise.resolve(t.log(i))}catch(e){return console.error(`Transport error:`,e),Promise.resolve()}});await Promise.all(a)}parseArgs(e){let t,n;for(let r of e)r instanceof Error?n=r:typeof r==`object`&&r&&!Array.isArray(r)&&(t={...t,...r});return{context:t,error:n}}trace(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`trace`,message:e,timestamp:new Date,context:n,error:r})}debug(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`debug`,message:e,timestamp:new Date,context:n,error:r})}info(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`info`,message:e,timestamp:new Date,context:n,error:r})}warn(e,...t){let{context:n,error:r}=this.parseArgs(t);this.logEntry({level:`warn`,message:e,timestamp:new Date,context:n,error:r})}error(e,t,...n){let{context:r}=this.parseArgs(n);this.logEntry({level:`error`,message:e,timestamp:new Date,context:r,error:t})}fatal(e,t,...n){let{context:r}=this.parseArgs(n);this.logEntry({level:`fatal`,message:e,timestamp:new Date,context:r,error:t})}child(e){return new i({service:this.service,level:this.level,transports:this.transports,context:{...this.context,...e}})}setLevel(e){this.level=e}getLevel(){return this.level}};function a(e){return new i(e)}export{i as Logger,a as createLogger};
|
|
2
|
-
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":[],"sources":["../src/logger.ts"],"sourcesContent":["import { trace } from '@opentelemetry/api';\nimport { ConsoleTransport } from './transports/console';\nimport type {\n LogContext,\n LogEntry,\n LogFilter,\n LogLevel,\n LoggerOptions,\n Transport,\n UniversalLogger,\n} from './types/logger';\nimport { DefaultLogFilter } from './utils/logFilter';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60,\n silent: 100,\n};\n\nexport class Logger implements UniversalLogger {\n private readonly service?: string;\n private level: LogLevel;\n private readonly transports: Transport[];\n private readonly context: LogContext;\n private readonly filter: LogFilter;\n\n constructor(options?: LoggerOptions) {\n this.service = options?.service;\n this.level = options?.level || 'info';\n this.context = options?.context || {};\n this.filter = new DefaultLogFilter();\n\n this.transports =\n options?.transports && options.transports.length > 0 ? options.transports : [new ConsoleTransport()];\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private async logEntry(entry: LogEntry): Promise<void> {\n if (!this.shouldLog(entry.level)) {\n return;\n }\n\n if (!this.filter.shouldLog(entry, this.level)) {\n return;\n }\n\n const traceContext: LogContext = {};\n try {\n const activeSpan = trace.getActiveSpan();\n if (activeSpan) {\n const spanContext = activeSpan.spanContext();\n if (spanContext.traceId) {\n traceContext.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n traceContext.spanId = spanContext.spanId;\n }\n }\n } catch {\n // Gracefully handle cases where OTEL is not initialized\n }\n\n const fullEntry: LogEntry = {\n ...entry,\n context: {\n ...this.context,\n ...traceContext,\n ...entry.context,\n },\n service: this.service,\n };\n\n const promises = this.transports.map((transport) => {\n try {\n if (transport.level && LOG_LEVELS[entry.level] < LOG_LEVELS[transport.level]) {\n return Promise.resolve();\n }\n return Promise.resolve(transport.log(fullEntry));\n } catch (error) {\n console.error('Transport error:', error);\n return Promise.resolve();\n }\n });\n\n await Promise.all(promises);\n }\n\n private parseArgs(args: unknown[]): { context?: LogContext; error?: unknown } {\n let context: LogContext | undefined;\n let error: unknown;\n\n for (const arg of args) {\n if (arg instanceof Error) {\n error = arg;\n } else if (typeof arg === 'object' && arg !== null && !Array.isArray(arg)) {\n context = { ...context, ...(arg as LogContext) };\n }\n }\n\n return { context, error };\n }\n\n trace(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'trace', message, timestamp: new Date(), context, error });\n }\n\n debug(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'debug', message, timestamp: new Date(), context, error });\n }\n\n info(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'info', message, timestamp: new Date(), context, error });\n }\n\n warn(message: string, ...args: unknown[]): void {\n const { context, error } = this.parseArgs(args);\n void this.logEntry({ level: 'warn', message, timestamp: new Date(), context, error });\n }\n\n error(message: string, error?: unknown, ...args: unknown[]): void {\n const { context } = this.parseArgs(args);\n void this.logEntry({ level: 'error', message, timestamp: new Date(), context, error });\n }\n\n fatal(message: string, error?: unknown, ...args: unknown[]): void {\n const { context } = this.parseArgs(args);\n void this.logEntry({ level: 'fatal', message, timestamp: new Date(), context, error });\n }\n\n child(childContext: LogContext): UniversalLogger {\n return new Logger({\n service: this.service,\n level: this.level,\n transports: this.transports,\n context: {\n ...this.context,\n ...childContext,\n },\n });\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n}\n\nexport function createLogger(options?: LoggerOptions): UniversalLogger {\n return new Logger(options);\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{DefaultLogFormatter as e}from"../utils/logFormatter.js";var t=class{name=`console`;formatter=new e;log(e){let t=this.formatter.format(e);switch(e.level){case`trace`:case`debug`:typeof console.debug==`function`?console.debug(t):console.log(t);break;case`info`:typeof console.info==`function`?console.info(t):console.log(t);break;case`warn`:typeof console.warn==`function`?console.warn(t):console.log(t);break;case`error`:case`fatal`:typeof console.error==`function`?console.error(t):console.log(t);break;default:console.log(t)}}};export{t as ConsoleTransport};
|
|
2
|
-
//# sourceMappingURL=console.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","names":[],"sources":["../../src/transports/console.ts"],"sourcesContent":["import type { LogEntry, Transport } from '../types/logger';\nimport { DefaultLogFormatter } from '../utils/logFormatter';\n\nexport class ConsoleTransport implements Transport {\n name = 'console';\n private formatter = new DefaultLogFormatter();\n\n log(entry: LogEntry): void {\n const formatted = this.formatter.format(entry);\n\n switch (entry.level) {\n case 'trace':\n case 'debug':\n if (typeof console.debug === 'function') {\n console.debug(formatted);\n } else {\n console.log(formatted);\n }\n break;\n case 'info':\n if (typeof console.info === 'function') {\n console.info(formatted);\n } else {\n console.log(formatted);\n }\n break;\n case 'warn':\n if (typeof console.warn === 'function') {\n console.warn(formatted);\n } else {\n console.log(formatted);\n }\n break;\n case 'error':\n case 'fatal':\n if (typeof console.error === 'function') {\n console.error(formatted);\n } else {\n console.log(formatted);\n }\n break;\n default:\n console.log(formatted);\n }\n }\n}\n"],"mappings":"+DAGA,IAAa,EAAb,KAAmD,CACjD,KAAO,UACP,UAAoB,IAAI,EAExB,IAAI,EAAuB,CACzB,IAAM,EAAY,KAAK,UAAU,OAAO,EAAM,CAE9C,OAAQ,EAAM,MAAd,CACE,IAAK,QACL,IAAK,QACC,OAAO,QAAQ,OAAU,WAC3B,QAAQ,MAAM,EAAU,CAExB,QAAQ,IAAI,EAAU,CAExB,MACF,IAAK,OACC,OAAO,QAAQ,MAAS,WAC1B,QAAQ,KAAK,EAAU,CAEvB,QAAQ,IAAI,EAAU,CAExB,MACF,IAAK,OACC,OAAO,QAAQ,MAAS,WAC1B,QAAQ,KAAK,EAAU,CAEvB,QAAQ,IAAI,EAAU,CAExB,MACF,IAAK,QACL,IAAK,QACC,OAAO,QAAQ,OAAU,WAC3B,QAAQ,MAAM,EAAU,CAExB,QAAQ,IAAI,EAAU,CAExB,MACF,QACE,QAAQ,IAAI,EAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logFilter.js","names":[],"sources":["../../src/utils/logFilter.ts"],"sourcesContent":["import type { LogEntry, LogFilter, LogLevel } from '../types/logger';\n\nexport class DefaultLogFilter implements LogFilter {\n shouldLog(_entry: LogEntry, _minLevel: LogLevel): boolean {\n return true;\n }\n}\n\nexport class RegexLogFilter implements LogFilter {\n constructor(\n private readonly pattern: RegExp,\n private readonly include: boolean = true,\n ) {}\n\n shouldLog(entry: LogEntry, _minLevel: LogLevel): boolean {\n const matches = this.pattern.test(entry.message);\n return this.include ? matches : !matches;\n }\n}\n\nexport class CompositeLogFilter implements LogFilter {\n constructor(private readonly filters: LogFilter[]) {}\n\n shouldLog(entry: LogEntry, minLevel: LogLevel): boolean {\n return this.filters.every((filter) => filter.shouldLog(entry, minLevel));\n }\n}\n"],"mappings":"AAEA,IAAa,EAAb,KAAmD,CACjD,UAAU,EAAkB,EAA8B,CACxD,MAAO,KAIE,EAAb,KAAiD,CAC/C,YACE,EACA,EAAoC,GACpC,CAFiB,KAAA,QAAA,EACA,KAAA,QAAA,EAGnB,UAAU,EAAiB,EAA8B,CACvD,IAAM,EAAU,KAAK,QAAQ,KAAK,EAAM,QAAQ,CAChD,OAAO,KAAK,QAAU,EAAU,CAAC,IAIxB,EAAb,KAAqD,CACnD,YAAY,EAAuC,CAAtB,KAAA,QAAA,EAE7B,UAAU,EAAiB,EAA6B,CACtD,OAAO,KAAK,QAAQ,MAAO,GAAW,EAAO,UAAU,EAAO,EAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logFormatter.js","names":[],"sources":["../../src/utils/logFormatter.ts"],"sourcesContent":["import type { LogEntry, LogFormatter } from '../types/logger';\n\nexport class DefaultLogFormatter implements LogFormatter {\n format(entry: LogEntry): string {\n const timestamp = entry.timestamp.toISOString();\n const level = entry.level.toUpperCase().padEnd(5);\n const service = entry.service ? `[${entry.service}]` : '';\n\n let message = `${timestamp} ${level} ${service} ${entry.message}`.trim();\n\n if (entry.context && Object.keys(entry.context).length > 0) {\n message += ` ${JSON.stringify(entry.context)}`;\n }\n\n if (entry.error) {\n if (entry.error instanceof Error) {\n message += `\\n Error: ${entry.error.message}`;\n if (entry.error.stack) {\n message += `\\n Stack: ${entry.error.stack}`;\n }\n } else {\n message += `\\n Error: ${JSON.stringify(entry.error)}`;\n }\n }\n\n return message;\n }\n}\n\nexport class JsonLogFormatter implements LogFormatter {\n format(entry: LogEntry): string {\n const logObject: Record<string, unknown> = {\n timestamp: entry.timestamp.toISOString(),\n level: entry.level,\n message: entry.message,\n };\n\n if (entry.service) {\n logObject.service = entry.service;\n }\n\n if (entry.context) {\n logObject.context = entry.context;\n }\n\n if (entry.error) {\n if (entry.error instanceof Error) {\n logObject.error = {\n message: entry.error.message,\n stack: entry.error.stack,\n name: entry.error.name,\n };\n } else {\n logObject.error = entry.error;\n }\n }\n\n return JSON.stringify(logObject);\n }\n}\n"],"mappings":"AAEA,IAAa,EAAb,KAAyD,CACvD,OAAO,EAAyB,CAK9B,IAAI,EAAU,GAJI,EAAM,UAAU,aAAa,CAIpB,GAHb,EAAM,MAAM,aAAa,CAAC,OAAO,EAAE,CAGb,GAFpB,EAAM,QAAU,IAAI,EAAM,QAAQ,GAAK,GAER,GAAG,EAAM,UAAU,MAAM,CAiBxE,OAfI,EAAM,SAAW,OAAO,KAAK,EAAM,QAAQ,CAAC,OAAS,IACvD,GAAW,IAAI,KAAK,UAAU,EAAM,QAAQ,IAG1C,EAAM,QACJ,EAAM,iBAAiB,OACzB,GAAW,cAAc,EAAM,MAAM,UACjC,EAAM,MAAM,QACd,GAAW,cAAc,EAAM,MAAM,UAGvC,GAAW,cAAc,KAAK,UAAU,EAAM,MAAM,IAIjD,IAIE,EAAb,KAAsD,CACpD,OAAO,EAAyB,CAC9B,IAAM,EAAqC,CACzC,UAAW,EAAM,UAAU,aAAa,CACxC,MAAO,EAAM,MACb,QAAS,EAAM,QAChB,CAsBD,OApBI,EAAM,UACR,EAAU,QAAU,EAAM,SAGxB,EAAM,UACR,EAAU,QAAU,EAAM,SAGxB,EAAM,QACJ,EAAM,iBAAiB,MACzB,EAAU,MAAQ,CAChB,QAAS,EAAM,MAAM,QACrB,MAAO,EAAM,MAAM,MACnB,KAAM,EAAM,MAAM,KACnB,CAED,EAAU,MAAQ,EAAM,OAIrB,KAAK,UAAU,EAAU"}
|