@astrive-ai/logger 1.0.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.
@@ -0,0 +1,2 @@
1
+ export * from './logger.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './logger.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { ILogger, LoggerConfig } from '@astrive-ai/types';
2
+ export declare class Logger implements ILogger {
3
+ private level;
4
+ private prefix;
5
+ private colors;
6
+ private timestamp;
7
+ private context;
8
+ private readonly levels;
9
+ constructor(config: LoggerConfig, context?: Record<string, unknown>);
10
+ private formatMessage;
11
+ private log;
12
+ debug(message: string, ...args: unknown[]): void;
13
+ info(message: string, ...args: unknown[]): void;
14
+ warn(message: string, ...args: unknown[]): void;
15
+ error(message: string, ...args: unknown[]): void;
16
+ child(context: Record<string, unknown>): ILogger;
17
+ }
18
+ export declare function createLogger(config: LoggerConfig): ILogger;
19
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAY,MAAM,mBAAmB,CAAC;AAEpE,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,OAAO,CAA0B;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMrB;gBAEU,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAQvE,OAAO,CAAC,aAAa;IAoCrB,OAAO,CAAC,GAAG;IAeX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAQjD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE1D"}
package/dist/logger.js ADDED
@@ -0,0 +1,98 @@
1
+ export class Logger {
2
+ level;
3
+ prefix;
4
+ colors;
5
+ timestamp;
6
+ context;
7
+ levels = {
8
+ debug: 0,
9
+ info: 1,
10
+ warn: 2,
11
+ error: 3,
12
+ silent: 4
13
+ };
14
+ constructor(config, context = {}) {
15
+ this.level = config.level || 'info';
16
+ this.prefix = config.prefix || '';
17
+ this.colors = config.colors !== false;
18
+ this.timestamp = config.timestamp !== false;
19
+ this.context = context;
20
+ }
21
+ formatMessage(level, message, ...args) {
22
+ const parts = [];
23
+ if (this.timestamp) {
24
+ parts.push(`[${new Date().toISOString()}]`);
25
+ }
26
+ let levelStr = `[${level.toUpperCase()}]`;
27
+ if (this.colors) {
28
+ switch (level) {
29
+ case 'debug':
30
+ levelStr = `\x1b[90m${levelStr}\x1b[0m`;
31
+ break;
32
+ case 'info':
33
+ levelStr = `\x1b[36m${levelStr}\x1b[0m`;
34
+ break;
35
+ case 'warn':
36
+ levelStr = `\x1b[33m${levelStr}\x1b[0m`;
37
+ break;
38
+ case 'error':
39
+ levelStr = `\x1b[31m${levelStr}\x1b[0m`;
40
+ break;
41
+ }
42
+ }
43
+ parts.push(levelStr);
44
+ if (this.prefix) {
45
+ parts.push(`[${this.prefix}]`);
46
+ }
47
+ let msg = parts.join(' ') + ' ' + message;
48
+ if (args.length > 0) {
49
+ const argsStr = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ');
50
+ msg += ' ' + argsStr;
51
+ }
52
+ if (Object.keys(this.context).length > 0) {
53
+ msg += ' ' + JSON.stringify(this.context);
54
+ }
55
+ return msg;
56
+ }
57
+ log(level, message, ...args) {
58
+ if (this.levels[level] >= this.levels[this.level]) {
59
+ const formatted = this.formatMessage(level, message, ...args);
60
+ if (level === 'error') {
61
+ console.error(formatted);
62
+ }
63
+ else if (level === 'warn') {
64
+ console.warn(formatted);
65
+ }
66
+ else if (level === 'info') {
67
+ console.info(formatted);
68
+ }
69
+ else {
70
+ console.log(formatted);
71
+ }
72
+ }
73
+ }
74
+ debug(message, ...args) {
75
+ this.log('debug', message, ...args);
76
+ }
77
+ info(message, ...args) {
78
+ this.log('info', message, ...args);
79
+ }
80
+ warn(message, ...args) {
81
+ this.log('warn', message, ...args);
82
+ }
83
+ error(message, ...args) {
84
+ this.log('error', message, ...args);
85
+ }
86
+ child(context) {
87
+ return new Logger({
88
+ level: this.level,
89
+ prefix: this.prefix,
90
+ colors: this.colors,
91
+ timestamp: this.timestamp
92
+ }, { ...this.context, ...context });
93
+ }
94
+ }
95
+ export function createLogger(config) {
96
+ return new Logger(config);
97
+ }
98
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@astrive-ai/logger",
3
+ "version": "1.0.1",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "clean": "rm -rf dist"
16
+ },
17
+ "dependencies": {
18
+ "@astrive-ai/types": "*"
19
+ },
20
+ "devDependencies": {
21
+ "typescript": "5.4.5"
22
+ }
23
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './logger.js';
package/src/logger.ts ADDED
@@ -0,0 +1,105 @@
1
+ import { ILogger, LoggerConfig, LogLevel } from '@astrive-ai/types';
2
+
3
+ export class Logger implements ILogger {
4
+ private level: LogLevel;
5
+ private prefix: string;
6
+ private colors: boolean;
7
+ private timestamp: boolean;
8
+ private context: Record<string, unknown>;
9
+
10
+ private readonly levels: Record<LogLevel, number> = {
11
+ debug: 0,
12
+ info: 1,
13
+ warn: 2,
14
+ error: 3,
15
+ silent: 4
16
+ };
17
+
18
+ constructor(config: LoggerConfig, context: Record<string, unknown> = {}) {
19
+ this.level = config.level || 'info';
20
+ this.prefix = config.prefix || '';
21
+ this.colors = config.colors !== false;
22
+ this.timestamp = config.timestamp !== false;
23
+ this.context = context;
24
+ }
25
+
26
+ private formatMessage(level: LogLevel, message: string, ...args: unknown[]): string {
27
+ const parts = [];
28
+
29
+ if (this.timestamp) {
30
+ parts.push(`[${new Date().toISOString()}]`);
31
+ }
32
+
33
+ let levelStr = `[${level.toUpperCase()}]`;
34
+ if (this.colors) {
35
+ switch (level) {
36
+ case 'debug': levelStr = `\x1b[90m${levelStr}\x1b[0m`; break;
37
+ case 'info': levelStr = `\x1b[36m${levelStr}\x1b[0m`; break;
38
+ case 'warn': levelStr = `\x1b[33m${levelStr}\x1b[0m`; break;
39
+ case 'error': levelStr = `\x1b[31m${levelStr}\x1b[0m`; break;
40
+ }
41
+ }
42
+ parts.push(levelStr);
43
+
44
+ if (this.prefix) {
45
+ parts.push(`[${this.prefix}]`);
46
+ }
47
+
48
+ let msg = parts.join(' ') + ' ' + message;
49
+
50
+ if (args.length > 0) {
51
+ const argsStr = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ');
52
+ msg += ' ' + argsStr;
53
+ }
54
+
55
+ if (Object.keys(this.context).length > 0) {
56
+ msg += ' ' + JSON.stringify(this.context);
57
+ }
58
+
59
+ return msg;
60
+ }
61
+
62
+ private log(level: LogLevel, message: string, ...args: unknown[]) {
63
+ if (this.levels[level] >= this.levels[this.level]) {
64
+ const formatted = this.formatMessage(level, message, ...args);
65
+ if (level === 'error') {
66
+ console.error(formatted);
67
+ } else if (level === 'warn') {
68
+ console.warn(formatted);
69
+ } else if (level === 'info') {
70
+ console.info(formatted);
71
+ } else {
72
+ console.log(formatted);
73
+ }
74
+ }
75
+ }
76
+
77
+ debug(message: string, ...args: unknown[]): void {
78
+ this.log('debug', message, ...args);
79
+ }
80
+
81
+ info(message: string, ...args: unknown[]): void {
82
+ this.log('info', message, ...args);
83
+ }
84
+
85
+ warn(message: string, ...args: unknown[]): void {
86
+ this.log('warn', message, ...args);
87
+ }
88
+
89
+ error(message: string, ...args: unknown[]): void {
90
+ this.log('error', message, ...args);
91
+ }
92
+
93
+ child(context: Record<string, unknown>): ILogger {
94
+ return new Logger({
95
+ level: this.level,
96
+ prefix: this.prefix,
97
+ colors: this.colors,
98
+ timestamp: this.timestamp
99
+ }, { ...this.context, ...context });
100
+ }
101
+ }
102
+
103
+ export function createLogger(config: LoggerConfig): ILogger {
104
+ return new Logger(config);
105
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src"
6
+ },
7
+ "include": ["src"]
8
+ }