@microsoft/teams.common 2.0.2 → 2.0.3
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/README.md +2 -2
- package/dist/logging/console.d.mts +4 -2
- package/dist/logging/console.d.ts +4 -2
- package/dist/logging/console.js +73 -4
- package/dist/logging/console.js.map +1 -1
- package/dist/logging/console.mjs +73 -4
- package/dist/logging/console.mjs.map +1 -1
- package/dist/logging/logger.d.mts +11 -2
- package/dist/logging/logger.d.ts +11 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<a href="https://www.npmjs.com/package/@microsoft/teams.common" target="_blank">
|
|
14
14
|
<img src="https://img.shields.io/npm/dw/@microsoft/teams.common" />
|
|
15
15
|
</a>
|
|
16
|
-
<a href="https://microsoft.github.io/teams-
|
|
16
|
+
<a href="https://microsoft.github.io/teams-sdk" target="_blank">
|
|
17
17
|
<img src="https://img.shields.io/badge/📖 docs-open-blue" />
|
|
18
18
|
</a>
|
|
19
19
|
</p>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
Common modules used to provide utility functionality to the other packages while
|
|
22
22
|
minimizing external dependencies.
|
|
23
23
|
|
|
24
|
-
<a href="https://microsoft.github.io/teams-
|
|
24
|
+
<a href="https://microsoft.github.io/teams-sdk" target="_blank">
|
|
25
25
|
<img src="https://img.shields.io/badge/📖 Getting Started-blue?style=for-the-badge" />
|
|
26
26
|
</a>
|
|
27
27
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ILogger,
|
|
1
|
+
import { ILogger, ILoggerOptions, LogLevel } from './logger.mjs';
|
|
2
2
|
|
|
3
3
|
declare class ConsoleLogger implements ILogger {
|
|
4
|
+
readonly loggerOptions: ILoggerOptions;
|
|
4
5
|
protected readonly name: string;
|
|
5
6
|
protected readonly level: LogLevel;
|
|
6
7
|
private readonly _enabled;
|
|
@@ -11,8 +12,9 @@ declare class ConsoleLogger implements ILogger {
|
|
|
11
12
|
warn(...msg: any[]): void;
|
|
12
13
|
info(...msg: any[]): void;
|
|
13
14
|
debug(...msg: any[]): void;
|
|
15
|
+
trace(...msg: any[]): void;
|
|
14
16
|
log(level: LogLevel, ...msg: any[]): void;
|
|
15
|
-
child(name: string): ConsoleLogger;
|
|
17
|
+
child(name: string, overrideOptions?: ILoggerOptions): ConsoleLogger;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export { ConsoleLogger };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ILogger,
|
|
1
|
+
import { ILogger, ILoggerOptions, LogLevel } from './logger.js';
|
|
2
2
|
|
|
3
3
|
declare class ConsoleLogger implements ILogger {
|
|
4
|
+
readonly loggerOptions: ILoggerOptions;
|
|
4
5
|
protected readonly name: string;
|
|
5
6
|
protected readonly level: LogLevel;
|
|
6
7
|
private readonly _enabled;
|
|
@@ -11,8 +12,9 @@ declare class ConsoleLogger implements ILogger {
|
|
|
11
12
|
warn(...msg: any[]): void;
|
|
12
13
|
info(...msg: any[]): void;
|
|
13
14
|
debug(...msg: any[]): void;
|
|
15
|
+
trace(...msg: any[]): void;
|
|
14
16
|
log(level: LogLevel, ...msg: any[]): void;
|
|
15
|
-
child(name: string): ConsoleLogger;
|
|
17
|
+
child(name: string, overrideOptions?: ILoggerOptions): ConsoleLogger;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export { ConsoleLogger };
|
package/dist/logging/console.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var ansi = require('./ansi');
|
|
4
4
|
|
|
5
5
|
class ConsoleLogger {
|
|
6
|
+
loggerOptions;
|
|
6
7
|
name;
|
|
7
8
|
level;
|
|
8
9
|
_enabled;
|
|
@@ -10,13 +11,15 @@ class ConsoleLogger {
|
|
|
10
11
|
error: 100,
|
|
11
12
|
warn: 200,
|
|
12
13
|
info: 300,
|
|
13
|
-
debug: 400
|
|
14
|
+
debug: 400,
|
|
15
|
+
trace: 500
|
|
14
16
|
};
|
|
15
17
|
_colors = {
|
|
16
18
|
error: ansi.ANSI.ForegroundRed,
|
|
17
19
|
warn: ansi.ANSI.ForegroundYellow,
|
|
18
20
|
info: ansi.ANSI.ForegroundCyan,
|
|
19
|
-
debug: ansi.ANSI.ForegroundMagenta
|
|
21
|
+
debug: ansi.ANSI.ForegroundMagenta,
|
|
22
|
+
trace: ansi.ANSI.BackgroundBlue
|
|
20
23
|
};
|
|
21
24
|
constructor(name, options) {
|
|
22
25
|
this.name = name;
|
|
@@ -24,6 +27,10 @@ class ConsoleLogger {
|
|
|
24
27
|
const logNamePattern = env?.LOG || options?.pattern || "*";
|
|
25
28
|
this._enabled = parseMagicExpr(logNamePattern).test(name);
|
|
26
29
|
this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || "info";
|
|
30
|
+
this.loggerOptions = options ?? {
|
|
31
|
+
level: this.level,
|
|
32
|
+
pattern: logNamePattern
|
|
33
|
+
};
|
|
27
34
|
}
|
|
28
35
|
error(...msg) {
|
|
29
36
|
this.log("error", ...msg);
|
|
@@ -37,6 +44,9 @@ class ConsoleLogger {
|
|
|
37
44
|
debug(...msg) {
|
|
38
45
|
this.log("debug", ...msg);
|
|
39
46
|
}
|
|
47
|
+
trace(...msg) {
|
|
48
|
+
this.log("trace", ...msg);
|
|
49
|
+
}
|
|
40
50
|
log(level, ...msg) {
|
|
41
51
|
if (!this._enabled) {
|
|
42
52
|
return;
|
|
@@ -56,13 +66,48 @@ class ConsoleLogger {
|
|
|
56
66
|
}
|
|
57
67
|
}
|
|
58
68
|
}
|
|
59
|
-
child(name) {
|
|
69
|
+
child(name, overrideOptions) {
|
|
70
|
+
const mergedPattern = mergePatterns(
|
|
71
|
+
this.loggerOptions.pattern,
|
|
72
|
+
overrideOptions?.pattern
|
|
73
|
+
);
|
|
60
74
|
return new ConsoleLogger(`${this.name}/${name}`, {
|
|
61
|
-
|
|
75
|
+
...this.loggerOptions,
|
|
76
|
+
...overrideOptions,
|
|
77
|
+
pattern: mergedPattern
|
|
62
78
|
});
|
|
63
79
|
}
|
|
64
80
|
}
|
|
81
|
+
function parsePatternString(pattern) {
|
|
82
|
+
const patterns = pattern.split(",").map((p) => p.trim());
|
|
83
|
+
const inclusions = [];
|
|
84
|
+
const exclusions = [];
|
|
85
|
+
for (const p of patterns) {
|
|
86
|
+
if (p.startsWith("-")) {
|
|
87
|
+
exclusions.push(p.substring(1));
|
|
88
|
+
} else {
|
|
89
|
+
inclusions.push(p);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return { inclusions, exclusions };
|
|
93
|
+
}
|
|
65
94
|
function parseMagicExpr(pattern) {
|
|
95
|
+
const { inclusions: inclusionPatterns, exclusions: exclusionPatterns } = parsePatternString(pattern);
|
|
96
|
+
const inclusions = inclusionPatterns.map((p) => patternToRegex(p));
|
|
97
|
+
const exclusions = exclusionPatterns.map((p) => patternToRegex(p));
|
|
98
|
+
if (inclusions.length === 0 && exclusions.length > 0) {
|
|
99
|
+
inclusions.push(/.*/);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
test: (name) => {
|
|
103
|
+
const matchesInclusion = inclusions.some((regex) => regex.test(name));
|
|
104
|
+
if (!matchesInclusion) return false;
|
|
105
|
+
const matchesExclusion = exclusions.some((regex) => regex.test(name));
|
|
106
|
+
return !matchesExclusion;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function patternToRegex(pattern) {
|
|
66
111
|
let res = "";
|
|
67
112
|
const parts = pattern.split("*");
|
|
68
113
|
for (let i = 0; i < parts.length; i++) {
|
|
@@ -73,6 +118,29 @@ function parseMagicExpr(pattern) {
|
|
|
73
118
|
}
|
|
74
119
|
return new RegExp(res);
|
|
75
120
|
}
|
|
121
|
+
function mergePatterns(parentPattern, childPattern) {
|
|
122
|
+
if (!parentPattern && !childPattern) {
|
|
123
|
+
return "*";
|
|
124
|
+
}
|
|
125
|
+
if (!parentPattern) {
|
|
126
|
+
return childPattern;
|
|
127
|
+
}
|
|
128
|
+
if (!childPattern) {
|
|
129
|
+
return parentPattern;
|
|
130
|
+
}
|
|
131
|
+
const parent = parsePatternString(parentPattern);
|
|
132
|
+
const child = parsePatternString(childPattern);
|
|
133
|
+
let allInclusions = [.../* @__PURE__ */ new Set([...parent.inclusions, ...child.inclusions])];
|
|
134
|
+
if (allInclusions.length === 0) {
|
|
135
|
+
allInclusions = ["*"];
|
|
136
|
+
}
|
|
137
|
+
const optimizedInclusions = allInclusions.includes("*") ? ["*"] : allInclusions;
|
|
138
|
+
const allExclusions = [.../* @__PURE__ */ new Set([...parent.exclusions, ...child.exclusions])];
|
|
139
|
+
const inclusionStrings = optimizedInclusions;
|
|
140
|
+
const exclusionStrings = allExclusions.map((e) => "-" + e);
|
|
141
|
+
const allPatterns = [...inclusionStrings, ...exclusionStrings];
|
|
142
|
+
return allPatterns.join(",");
|
|
143
|
+
}
|
|
76
144
|
function parseLogLevel(level) {
|
|
77
145
|
const value = level?.toLowerCase();
|
|
78
146
|
switch (value) {
|
|
@@ -80,6 +148,7 @@ function parseLogLevel(level) {
|
|
|
80
148
|
case "warn":
|
|
81
149
|
case "info":
|
|
82
150
|
case "debug":
|
|
151
|
+
case "trace":
|
|
83
152
|
return value;
|
|
84
153
|
default:
|
|
85
154
|
return void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/console.ts"],"names":["ANSI"],"mappings":"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","file":"console.js","sourcesContent":["import { ANSI } from './ansi';\nimport { ILogger, ILoggerOptions, LogLevel } from './logger';\n\nexport class ConsoleLogger implements ILogger {\n protected readonly name: string;\n protected readonly level: LogLevel;\n\n private readonly _enabled: boolean;\n private readonly _levels = {\n error: 100,\n warn: 200,\n info: 300,\n debug: 400,\n };\n\n private readonly _colors = {\n error: ANSI.ForegroundRed,\n warn: ANSI.ForegroundYellow,\n info: ANSI.ForegroundCyan,\n debug: ANSI.ForegroundMagenta,\n };\n\n constructor(name: string, options?: ILoggerOptions) {\n this.name = name;\n\n const env = typeof process === 'undefined' ? undefined : process.env;\n const logNamePattern = env?.LOG || options?.pattern || '*';\n this._enabled = parseMagicExpr(logNamePattern).test(name);\n this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || 'info';\n }\n\n error(...msg: any[]) {\n this.log('error', ...msg);\n }\n\n warn(...msg: any[]) {\n this.log('warn', ...msg);\n }\n\n info(...msg: any[]) {\n this.log('info', ...msg);\n }\n\n debug(...msg: any[]) {\n this.log('debug', ...msg);\n }\n\n log(level: LogLevel, ...msg: any[]) {\n if (!this._enabled) {\n return;\n }\n\n if (this._levels[level] > this._levels[this.level]) {\n return;\n }\n\n const prefix = [this._colors[level], ANSI.Bold, `[${level.toUpperCase()}]`];\n const name = [this.name, ANSI.ForegroundReset, ANSI.BoldReset];\n\n for (const m of msg) {\n let text = new String(m);\n\n if (typeof m === 'object') {\n text = JSON.stringify(m, null, 2);\n }\n\n for (const line of text.split('\\n')) {\n console[level](prefix.join(''), name.join(''), line);\n }\n }\n }\n\n child(name: string) {\n return new ConsoleLogger(`${this.name}/${name}`, {\n level: this.level,\n });\n }\n}\n\nfunction parseMagicExpr(pattern: string) {\n let res = '';\n const parts = pattern.split('*');\n\n for (let i = 0; i < parts.length; i++) {\n if (i > 0) {\n res += '.*';\n }\n\n res += parts[i];\n }\n\n return new RegExp(res);\n}\n\nfunction parseLogLevel(level?: string): LogLevel | undefined {\n const value = level?.toLowerCase();\n switch (value) {\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n return value;\n default:\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/logging/console.ts"],"names":["ANSI"],"mappings":"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","file":"console.js","sourcesContent":["import { ANSI } from './ansi';\nimport { ILogger, ILoggerOptions, LogLevel } from './logger';\n\nexport class ConsoleLogger implements ILogger {\n readonly loggerOptions: ILoggerOptions;\n\n protected readonly name: string;\n protected readonly level: LogLevel;\n\n private readonly _enabled: boolean;\n private readonly _levels = {\n error: 100,\n warn: 200,\n info: 300,\n debug: 400,\n trace: 500,\n };\n\n private readonly _colors = {\n error: ANSI.ForegroundRed,\n warn: ANSI.ForegroundYellow,\n info: ANSI.ForegroundCyan,\n debug: ANSI.ForegroundMagenta,\n trace: ANSI.BackgroundBlue\n };\n\n constructor(name: string, options?: ILoggerOptions) {\n this.name = name;\n\n const env = typeof process === 'undefined' ? undefined : process.env;\n const logNamePattern = env?.LOG || options?.pattern || '*';\n this._enabled = parseMagicExpr(logNamePattern).test(name);\n this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || 'info';\n this.loggerOptions = options ?? {\n level: this.level,\n pattern: logNamePattern,\n };\n }\n\n error(...msg: any[]) {\n this.log('error', ...msg);\n }\n\n warn(...msg: any[]) {\n this.log('warn', ...msg);\n }\n\n info(...msg: any[]) {\n this.log('info', ...msg);\n }\n\n debug(...msg: any[]) {\n this.log('debug', ...msg);\n }\n\n trace(...msg: any[]) {\n this.log('trace', ...msg);\n }\n\n log(level: LogLevel, ...msg: any[]) {\n if (!this._enabled) {\n return;\n }\n\n if (this._levels[level] > this._levels[this.level]) {\n return;\n }\n\n const prefix = [this._colors[level], ANSI.Bold, `[${level.toUpperCase()}]`];\n const name = [this.name, ANSI.ForegroundReset, ANSI.BoldReset];\n\n for (const m of msg) {\n let text = new String(m);\n\n if (typeof m === 'object') {\n text = JSON.stringify(m, null, 2);\n }\n\n for (const line of text.split('\\n')) {\n console[level](prefix.join(''), name.join(''), line);\n }\n }\n }\n\n child(name: string, overrideOptions?: ILoggerOptions) {\n const mergedPattern = mergePatterns(\n this.loggerOptions.pattern,\n overrideOptions?.pattern\n );\n\n return new ConsoleLogger(`${this.name}/${name}`, {\n ...this.loggerOptions,\n ...overrideOptions,\n pattern: mergedPattern\n });\n }\n}\n\nfunction parsePatternString(pattern: string): { inclusions: string[]; exclusions: string[] } {\n const patterns = pattern.split(',').map(p => p.trim());\n const inclusions: string[] = [];\n const exclusions: string[] = [];\n\n for (const p of patterns) {\n if (p.startsWith('-')) {\n exclusions.push(p.substring(1));\n } else {\n inclusions.push(p);\n }\n }\n\n return { inclusions, exclusions };\n}\n\nfunction parseMagicExpr(pattern: string) {\n const { inclusions: inclusionPatterns, exclusions: exclusionPatterns } = parsePatternString(pattern);\n\n const inclusions: RegExp[] = inclusionPatterns.map(p => patternToRegex(p));\n const exclusions: RegExp[] = exclusionPatterns.map(p => patternToRegex(p));\n\n // If only exclusions specified, implicitly include everything\n if (inclusions.length === 0 && exclusions.length > 0) {\n inclusions.push(/.*/);\n }\n\n return {\n test: (name: string) => {\n // Check if name matches any inclusion pattern\n const matchesInclusion = inclusions.some(regex => regex.test(name));\n if (!matchesInclusion) return false;\n\n // Check if name matches any exclusion pattern\n const matchesExclusion = exclusions.some(regex => regex.test(name));\n\n // Must match inclusion AND not match any exclusion\n return !matchesExclusion;\n }\n };\n}\n\nfunction patternToRegex(pattern: string): RegExp {\n let res = '';\n const parts = pattern.split('*');\n\n for (let i = 0; i < parts.length; i++) {\n if (i > 0) {\n res += '.*';\n }\n\n res += parts[i];\n }\n\n return new RegExp(res);\n}\n\nfunction mergePatterns(parentPattern?: string, childPattern?: string): string {\n if (!parentPattern && !childPattern) {\n return '*';\n }\n\n if (!parentPattern) {\n return childPattern!;\n }\n\n if (!childPattern) {\n return parentPattern;\n }\n\n const parent = parsePatternString(parentPattern);\n const child = parsePatternString(childPattern);\n\n // Combine and deduplicate inclusions\n let allInclusions = [...new Set([...parent.inclusions, ...child.inclusions])];\n\n // If only exclusions specified, implicitly include everything\n if (allInclusions.length === 0) {\n allInclusions = ['*'];\n }\n\n // Optimize: If '*' exists, it matches everything, so remove other inclusions\n const optimizedInclusions = allInclusions.includes('*') ? ['*'] : allInclusions;\n\n // Combine and deduplicate exclusions\n const allExclusions = [...new Set([...parent.exclusions, ...child.exclusions])];\n\n // Build merged pattern: combine inclusions and exclusions\n const inclusionStrings = optimizedInclusions;\n const exclusionStrings = allExclusions.map(e => '-' + e);\n const allPatterns = [...inclusionStrings, ...exclusionStrings];\n\n return allPatterns.join(',');\n}\n\nfunction parseLogLevel(level?: string): LogLevel | undefined {\n const value = level?.toLowerCase();\n switch (value) {\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return value;\n default:\n return undefined;\n }\n}\n"]}
|
package/dist/logging/console.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ANSI } from './ansi';
|
|
2
2
|
|
|
3
3
|
class ConsoleLogger {
|
|
4
|
+
loggerOptions;
|
|
4
5
|
name;
|
|
5
6
|
level;
|
|
6
7
|
_enabled;
|
|
@@ -8,13 +9,15 @@ class ConsoleLogger {
|
|
|
8
9
|
error: 100,
|
|
9
10
|
warn: 200,
|
|
10
11
|
info: 300,
|
|
11
|
-
debug: 400
|
|
12
|
+
debug: 400,
|
|
13
|
+
trace: 500
|
|
12
14
|
};
|
|
13
15
|
_colors = {
|
|
14
16
|
error: ANSI.ForegroundRed,
|
|
15
17
|
warn: ANSI.ForegroundYellow,
|
|
16
18
|
info: ANSI.ForegroundCyan,
|
|
17
|
-
debug: ANSI.ForegroundMagenta
|
|
19
|
+
debug: ANSI.ForegroundMagenta,
|
|
20
|
+
trace: ANSI.BackgroundBlue
|
|
18
21
|
};
|
|
19
22
|
constructor(name, options) {
|
|
20
23
|
this.name = name;
|
|
@@ -22,6 +25,10 @@ class ConsoleLogger {
|
|
|
22
25
|
const logNamePattern = env?.LOG || options?.pattern || "*";
|
|
23
26
|
this._enabled = parseMagicExpr(logNamePattern).test(name);
|
|
24
27
|
this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || "info";
|
|
28
|
+
this.loggerOptions = options ?? {
|
|
29
|
+
level: this.level,
|
|
30
|
+
pattern: logNamePattern
|
|
31
|
+
};
|
|
25
32
|
}
|
|
26
33
|
error(...msg) {
|
|
27
34
|
this.log("error", ...msg);
|
|
@@ -35,6 +42,9 @@ class ConsoleLogger {
|
|
|
35
42
|
debug(...msg) {
|
|
36
43
|
this.log("debug", ...msg);
|
|
37
44
|
}
|
|
45
|
+
trace(...msg) {
|
|
46
|
+
this.log("trace", ...msg);
|
|
47
|
+
}
|
|
38
48
|
log(level, ...msg) {
|
|
39
49
|
if (!this._enabled) {
|
|
40
50
|
return;
|
|
@@ -54,13 +64,48 @@ class ConsoleLogger {
|
|
|
54
64
|
}
|
|
55
65
|
}
|
|
56
66
|
}
|
|
57
|
-
child(name) {
|
|
67
|
+
child(name, overrideOptions) {
|
|
68
|
+
const mergedPattern = mergePatterns(
|
|
69
|
+
this.loggerOptions.pattern,
|
|
70
|
+
overrideOptions?.pattern
|
|
71
|
+
);
|
|
58
72
|
return new ConsoleLogger(`${this.name}/${name}`, {
|
|
59
|
-
|
|
73
|
+
...this.loggerOptions,
|
|
74
|
+
...overrideOptions,
|
|
75
|
+
pattern: mergedPattern
|
|
60
76
|
});
|
|
61
77
|
}
|
|
62
78
|
}
|
|
79
|
+
function parsePatternString(pattern) {
|
|
80
|
+
const patterns = pattern.split(",").map((p) => p.trim());
|
|
81
|
+
const inclusions = [];
|
|
82
|
+
const exclusions = [];
|
|
83
|
+
for (const p of patterns) {
|
|
84
|
+
if (p.startsWith("-")) {
|
|
85
|
+
exclusions.push(p.substring(1));
|
|
86
|
+
} else {
|
|
87
|
+
inclusions.push(p);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { inclusions, exclusions };
|
|
91
|
+
}
|
|
63
92
|
function parseMagicExpr(pattern) {
|
|
93
|
+
const { inclusions: inclusionPatterns, exclusions: exclusionPatterns } = parsePatternString(pattern);
|
|
94
|
+
const inclusions = inclusionPatterns.map((p) => patternToRegex(p));
|
|
95
|
+
const exclusions = exclusionPatterns.map((p) => patternToRegex(p));
|
|
96
|
+
if (inclusions.length === 0 && exclusions.length > 0) {
|
|
97
|
+
inclusions.push(/.*/);
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
test: (name) => {
|
|
101
|
+
const matchesInclusion = inclusions.some((regex) => regex.test(name));
|
|
102
|
+
if (!matchesInclusion) return false;
|
|
103
|
+
const matchesExclusion = exclusions.some((regex) => regex.test(name));
|
|
104
|
+
return !matchesExclusion;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function patternToRegex(pattern) {
|
|
64
109
|
let res = "";
|
|
65
110
|
const parts = pattern.split("*");
|
|
66
111
|
for (let i = 0; i < parts.length; i++) {
|
|
@@ -71,6 +116,29 @@ function parseMagicExpr(pattern) {
|
|
|
71
116
|
}
|
|
72
117
|
return new RegExp(res);
|
|
73
118
|
}
|
|
119
|
+
function mergePatterns(parentPattern, childPattern) {
|
|
120
|
+
if (!parentPattern && !childPattern) {
|
|
121
|
+
return "*";
|
|
122
|
+
}
|
|
123
|
+
if (!parentPattern) {
|
|
124
|
+
return childPattern;
|
|
125
|
+
}
|
|
126
|
+
if (!childPattern) {
|
|
127
|
+
return parentPattern;
|
|
128
|
+
}
|
|
129
|
+
const parent = parsePatternString(parentPattern);
|
|
130
|
+
const child = parsePatternString(childPattern);
|
|
131
|
+
let allInclusions = [.../* @__PURE__ */ new Set([...parent.inclusions, ...child.inclusions])];
|
|
132
|
+
if (allInclusions.length === 0) {
|
|
133
|
+
allInclusions = ["*"];
|
|
134
|
+
}
|
|
135
|
+
const optimizedInclusions = allInclusions.includes("*") ? ["*"] : allInclusions;
|
|
136
|
+
const allExclusions = [.../* @__PURE__ */ new Set([...parent.exclusions, ...child.exclusions])];
|
|
137
|
+
const inclusionStrings = optimizedInclusions;
|
|
138
|
+
const exclusionStrings = allExclusions.map((e) => "-" + e);
|
|
139
|
+
const allPatterns = [...inclusionStrings, ...exclusionStrings];
|
|
140
|
+
return allPatterns.join(",");
|
|
141
|
+
}
|
|
74
142
|
function parseLogLevel(level) {
|
|
75
143
|
const value = level?.toLowerCase();
|
|
76
144
|
switch (value) {
|
|
@@ -78,6 +146,7 @@ function parseLogLevel(level) {
|
|
|
78
146
|
case "warn":
|
|
79
147
|
case "info":
|
|
80
148
|
case "debug":
|
|
149
|
+
case "trace":
|
|
81
150
|
return value;
|
|
82
151
|
default:
|
|
83
152
|
return void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/logging/console.ts"],"names":[],"mappings":"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","file":"console.mjs","sourcesContent":["import { ANSI } from './ansi';\nimport { ILogger, ILoggerOptions, LogLevel } from './logger';\n\nexport class ConsoleLogger implements ILogger {\n protected readonly name: string;\n protected readonly level: LogLevel;\n\n private readonly _enabled: boolean;\n private readonly _levels = {\n error: 100,\n warn: 200,\n info: 300,\n debug: 400,\n };\n\n private readonly _colors = {\n error: ANSI.ForegroundRed,\n warn: ANSI.ForegroundYellow,\n info: ANSI.ForegroundCyan,\n debug: ANSI.ForegroundMagenta,\n };\n\n constructor(name: string, options?: ILoggerOptions) {\n this.name = name;\n\n const env = typeof process === 'undefined' ? undefined : process.env;\n const logNamePattern = env?.LOG || options?.pattern || '*';\n this._enabled = parseMagicExpr(logNamePattern).test(name);\n this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || 'info';\n }\n\n error(...msg: any[]) {\n this.log('error', ...msg);\n }\n\n warn(...msg: any[]) {\n this.log('warn', ...msg);\n }\n\n info(...msg: any[]) {\n this.log('info', ...msg);\n }\n\n debug(...msg: any[]) {\n this.log('debug', ...msg);\n }\n\n log(level: LogLevel, ...msg: any[]) {\n if (!this._enabled) {\n return;\n }\n\n if (this._levels[level] > this._levels[this.level]) {\n return;\n }\n\n const prefix = [this._colors[level], ANSI.Bold, `[${level.toUpperCase()}]`];\n const name = [this.name, ANSI.ForegroundReset, ANSI.BoldReset];\n\n for (const m of msg) {\n let text = new String(m);\n\n if (typeof m === 'object') {\n text = JSON.stringify(m, null, 2);\n }\n\n for (const line of text.split('\\n')) {\n console[level](prefix.join(''), name.join(''), line);\n }\n }\n }\n\n child(name: string) {\n return new ConsoleLogger(`${this.name}/${name}`, {\n level: this.level,\n });\n }\n}\n\nfunction parseMagicExpr(pattern: string) {\n let res = '';\n const parts = pattern.split('*');\n\n for (let i = 0; i < parts.length; i++) {\n if (i > 0) {\n res += '.*';\n }\n\n res += parts[i];\n }\n\n return new RegExp(res);\n}\n\nfunction parseLogLevel(level?: string): LogLevel | undefined {\n const value = level?.toLowerCase();\n switch (value) {\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n return value;\n default:\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/logging/console.ts"],"names":[],"mappings":";;AAGO,MAAM,aAAiC,CAAA;AAAA,EACnC,aAAA;AAAA,EAEU,IAAA;AAAA,EACA,KAAA;AAAA,EAEF,QAAA;AAAA,EACA,OAAU,GAAA;AAAA,IACzB,KAAO,EAAA,GAAA;AAAA,IACP,IAAM,EAAA,GAAA;AAAA,IACN,IAAM,EAAA,GAAA;AAAA,IACN,KAAO,EAAA,GAAA;AAAA,IACP,KAAO,EAAA;AAAA,GACT;AAAA,EAEiB,OAAU,GAAA;AAAA,IACzB,OAAO,IAAK,CAAA,aAAA;AAAA,IACZ,MAAM,IAAK,CAAA,gBAAA;AAAA,IACX,MAAM,IAAK,CAAA,cAAA;AAAA,IACX,OAAO,IAAK,CAAA,iBAAA;AAAA,IACZ,OAAO,IAAK,CAAA;AAAA,GACd;AAAA,EAEA,WAAA,CAAY,MAAc,OAA0B,EAAA;AAClD,IAAA,IAAA,CAAK,IAAO,GAAA,IAAA;AAEZ,IAAA,MAAM,GAAM,GAAA,OAAO,OAAY,KAAA,WAAA,GAAc,SAAY,OAAQ,CAAA,GAAA;AACjE,IAAA,MAAM,cAAiB,GAAA,GAAA,EAAK,GAAO,IAAA,OAAA,EAAS,OAAW,IAAA,GAAA;AACvD,IAAA,IAAA,CAAK,QAAW,GAAA,cAAA,CAAe,cAAc,CAAA,CAAE,KAAK,IAAI,CAAA;AACxD,IAAA,IAAA,CAAK,QAAQ,aAAc,CAAA,GAAA,EAAK,SAAS,CAAA,IAAK,SAAS,KAAS,IAAA,MAAA;AAChE,IAAA,IAAA,CAAK,gBAAgB,OAAW,IAAA;AAAA,MAC9B,OAAO,IAAK,CAAA,KAAA;AAAA,MACZ,OAAS,EAAA;AAAA,KACX;AAAA;AACF,EAEA,SAAS,GAAY,EAAA;AACnB,IAAK,IAAA,CAAA,GAAA,CAAI,OAAS,EAAA,GAAG,GAAG,CAAA;AAAA;AAC1B,EAEA,QAAQ,GAAY,EAAA;AAClB,IAAK,IAAA,CAAA,GAAA,CAAI,MAAQ,EAAA,GAAG,GAAG,CAAA;AAAA;AACzB,EAEA,QAAQ,GAAY,EAAA;AAClB,IAAK,IAAA,CAAA,GAAA,CAAI,MAAQ,EAAA,GAAG,GAAG,CAAA;AAAA;AACzB,EAEA,SAAS,GAAY,EAAA;AACnB,IAAK,IAAA,CAAA,GAAA,CAAI,OAAS,EAAA,GAAG,GAAG,CAAA;AAAA;AAC1B,EAEA,SAAS,GAAY,EAAA;AACnB,IAAK,IAAA,CAAA,GAAA,CAAI,OAAS,EAAA,GAAG,GAAG,CAAA;AAAA;AAC1B,EAEA,GAAA,CAAI,UAAoB,GAAY,EAAA;AAClC,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAA;AAAA;AAGF,IAAI,IAAA,IAAA,CAAK,QAAQ,KAAK,CAAA,GAAI,KAAK,OAAQ,CAAA,IAAA,CAAK,KAAK,CAAG,EAAA;AAClD,MAAA;AAAA;AAGF,IAAA,MAAM,MAAS,GAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,KAAK,CAAA,EAAG,IAAK,CAAA,IAAA,EAAM,CAAI,CAAA,EAAA,KAAA,CAAM,WAAY,EAAC,CAAG,CAAA,CAAA,CAAA;AAC1E,IAAA,MAAM,OAAO,CAAC,IAAA,CAAK,MAAM,IAAK,CAAA,eAAA,EAAiB,KAAK,SAAS,CAAA;AAE7D,IAAA,KAAA,MAAW,KAAK,GAAK,EAAA;AACnB,MAAI,IAAA,IAAA,GAAO,IAAI,MAAA,CAAO,CAAC,CAAA;AAEvB,MAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AACzB,QAAA,IAAA,GAAO,IAAK,CAAA,SAAA,CAAU,CAAG,EAAA,IAAA,EAAM,CAAC,CAAA;AAAA;AAGlC,MAAA,KAAA,MAAW,IAAQ,IAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAG,EAAA;AACnC,QAAQ,OAAA,CAAA,KAAK,CAAE,CAAA,MAAA,CAAO,IAAK,CAAA,EAAE,GAAG,IAAK,CAAA,IAAA,CAAK,EAAE,CAAA,EAAG,IAAI,CAAA;AAAA;AACrD;AACF;AACF,EAEA,KAAA,CAAM,MAAc,eAAkC,EAAA;AACpD,IAAA,MAAM,aAAgB,GAAA,aAAA;AAAA,MACpB,KAAK,aAAc,CAAA,OAAA;AAAA,MACnB,eAAiB,EAAA;AAAA,KACnB;AAEA,IAAA,OAAO,IAAI,aAAc,CAAA,CAAA,EAAG,KAAK,IAAI,CAAA,CAAA,EAAI,IAAI,CAAI,CAAA,EAAA;AAAA,MAC/C,GAAG,IAAK,CAAA,aAAA;AAAA,MACR,GAAG,eAAA;AAAA,MACH,OAAS,EAAA;AAAA,KACV,CAAA;AAAA;AAEL;AAEA,SAAS,mBAAmB,OAAiE,EAAA;AAC3F,EAAM,MAAA,QAAA,GAAW,QAAQ,KAAM,CAAA,GAAG,EAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,IAAA,EAAM,CAAA;AACrD,EAAA,MAAM,aAAuB,EAAC;AAC9B,EAAA,MAAM,aAAuB,EAAC;AAE9B,EAAA,KAAA,MAAW,KAAK,QAAU,EAAA;AACxB,IAAI,IAAA,CAAA,CAAE,UAAW,CAAA,GAAG,CAAG,EAAA;AACrB,MAAA,UAAA,CAAW,IAAK,CAAA,CAAA,CAAE,SAAU,CAAA,CAAC,CAAC,CAAA;AAAA,KACzB,MAAA;AACL,MAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA;AACnB;AAGF,EAAO,OAAA,EAAE,YAAY,UAAW,EAAA;AAClC;AAEA,SAAS,eAAe,OAAiB,EAAA;AACvC,EAAA,MAAM,EAAE,UAAY,EAAA,iBAAA,EAAmB,YAAY,iBAAkB,EAAA,GAAI,mBAAmB,OAAO,CAAA;AAEnG,EAAA,MAAM,aAAuB,iBAAkB,CAAA,GAAA,CAAI,CAAK,CAAA,KAAA,cAAA,CAAe,CAAC,CAAC,CAAA;AACzE,EAAA,MAAM,aAAuB,iBAAkB,CAAA,GAAA,CAAI,CAAK,CAAA,KAAA,cAAA,CAAe,CAAC,CAAC,CAAA;AAGzE,EAAA,IAAI,UAAW,CAAA,MAAA,KAAW,CAAK,IAAA,UAAA,CAAW,SAAS,CAAG,EAAA;AACpD,IAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA;AAGtB,EAAO,OAAA;AAAA,IACL,IAAA,EAAM,CAAC,IAAiB,KAAA;AAEtB,MAAA,MAAM,mBAAmB,UAAW,CAAA,IAAA,CAAK,WAAS,KAAM,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAClE,MAAI,IAAA,CAAC,kBAAyB,OAAA,KAAA;AAG9B,MAAA,MAAM,mBAAmB,UAAW,CAAA,IAAA,CAAK,WAAS,KAAM,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAGlE,MAAA,OAAO,CAAC,gBAAA;AAAA;AACV,GACF;AACF;AAEA,SAAS,eAAe,OAAyB,EAAA;AAC/C,EAAA,IAAI,GAAM,GAAA,EAAA;AACV,EAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA;AAE/B,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AACrC,IAAA,IAAI,IAAI,CAAG,EAAA;AACT,MAAO,GAAA,IAAA,IAAA;AAAA;AAGT,IAAA,GAAA,IAAO,MAAM,CAAC,CAAA;AAAA;AAGhB,EAAO,OAAA,IAAI,OAAO,GAAG,CAAA;AACvB;AAEA,SAAS,aAAA,CAAc,eAAwB,YAA+B,EAAA;AAC5E,EAAI,IAAA,CAAC,aAAiB,IAAA,CAAC,YAAc,EAAA;AACnC,IAAO,OAAA,GAAA;AAAA;AAGT,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,YAAA;AAAA;AAGT,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAO,OAAA,aAAA;AAAA;AAGT,EAAM,MAAA,MAAA,GAAS,mBAAmB,aAAa,CAAA;AAC/C,EAAM,MAAA,KAAA,GAAQ,mBAAmB,YAAY,CAAA;AAG7C,EAAA,IAAI,aAAgB,GAAA,CAAC,mBAAG,IAAI,GAAI,CAAA,CAAC,GAAG,MAAA,CAAO,UAAY,EAAA,GAAG,KAAM,CAAA,UAAU,CAAC,CAAC,CAAA;AAG5E,EAAI,IAAA,aAAA,CAAc,WAAW,CAAG,EAAA;AAC9B,IAAA,aAAA,GAAgB,CAAC,GAAG,CAAA;AAAA;AAItB,EAAA,MAAM,sBAAsB,aAAc,CAAA,QAAA,CAAS,GAAG,CAAI,GAAA,CAAC,GAAG,CAAI,GAAA,aAAA;AAGlE,EAAA,MAAM,aAAgB,GAAA,CAAC,mBAAG,IAAI,GAAI,CAAA,CAAC,GAAG,MAAA,CAAO,UAAY,EAAA,GAAG,KAAM,CAAA,UAAU,CAAC,CAAC,CAAA;AAG9E,EAAA,MAAM,gBAAmB,GAAA,mBAAA;AACzB,EAAA,MAAM,gBAAmB,GAAA,aAAA,CAAc,GAAI,CAAA,CAAA,CAAA,KAAK,MAAM,CAAC,CAAA;AACvD,EAAA,MAAM,WAAc,GAAA,CAAC,GAAG,gBAAA,EAAkB,GAAG,gBAAgB,CAAA;AAE7D,EAAO,OAAA,WAAA,CAAY,KAAK,GAAG,CAAA;AAC7B;AAEA,SAAS,cAAc,KAAsC,EAAA;AAC3D,EAAM,MAAA,KAAA,GAAQ,OAAO,WAAY,EAAA;AACjC,EAAA,QAAQ,KAAO;AAAA,IACb,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,OAAA;AACH,MAAO,OAAA,KAAA;AAAA,IACT;AACE,MAAO,OAAA,MAAA;AAAA;AAEb","file":"console.mjs","sourcesContent":["import { ANSI } from './ansi';\nimport { ILogger, ILoggerOptions, LogLevel } from './logger';\n\nexport class ConsoleLogger implements ILogger {\n readonly loggerOptions: ILoggerOptions;\n\n protected readonly name: string;\n protected readonly level: LogLevel;\n\n private readonly _enabled: boolean;\n private readonly _levels = {\n error: 100,\n warn: 200,\n info: 300,\n debug: 400,\n trace: 500,\n };\n\n private readonly _colors = {\n error: ANSI.ForegroundRed,\n warn: ANSI.ForegroundYellow,\n info: ANSI.ForegroundCyan,\n debug: ANSI.ForegroundMagenta,\n trace: ANSI.BackgroundBlue\n };\n\n constructor(name: string, options?: ILoggerOptions) {\n this.name = name;\n\n const env = typeof process === 'undefined' ? undefined : process.env;\n const logNamePattern = env?.LOG || options?.pattern || '*';\n this._enabled = parseMagicExpr(logNamePattern).test(name);\n this.level = parseLogLevel(env?.LOG_LEVEL) || options?.level || 'info';\n this.loggerOptions = options ?? {\n level: this.level,\n pattern: logNamePattern,\n };\n }\n\n error(...msg: any[]) {\n this.log('error', ...msg);\n }\n\n warn(...msg: any[]) {\n this.log('warn', ...msg);\n }\n\n info(...msg: any[]) {\n this.log('info', ...msg);\n }\n\n debug(...msg: any[]) {\n this.log('debug', ...msg);\n }\n\n trace(...msg: any[]) {\n this.log('trace', ...msg);\n }\n\n log(level: LogLevel, ...msg: any[]) {\n if (!this._enabled) {\n return;\n }\n\n if (this._levels[level] > this._levels[this.level]) {\n return;\n }\n\n const prefix = [this._colors[level], ANSI.Bold, `[${level.toUpperCase()}]`];\n const name = [this.name, ANSI.ForegroundReset, ANSI.BoldReset];\n\n for (const m of msg) {\n let text = new String(m);\n\n if (typeof m === 'object') {\n text = JSON.stringify(m, null, 2);\n }\n\n for (const line of text.split('\\n')) {\n console[level](prefix.join(''), name.join(''), line);\n }\n }\n }\n\n child(name: string, overrideOptions?: ILoggerOptions) {\n const mergedPattern = mergePatterns(\n this.loggerOptions.pattern,\n overrideOptions?.pattern\n );\n\n return new ConsoleLogger(`${this.name}/${name}`, {\n ...this.loggerOptions,\n ...overrideOptions,\n pattern: mergedPattern\n });\n }\n}\n\nfunction parsePatternString(pattern: string): { inclusions: string[]; exclusions: string[] } {\n const patterns = pattern.split(',').map(p => p.trim());\n const inclusions: string[] = [];\n const exclusions: string[] = [];\n\n for (const p of patterns) {\n if (p.startsWith('-')) {\n exclusions.push(p.substring(1));\n } else {\n inclusions.push(p);\n }\n }\n\n return { inclusions, exclusions };\n}\n\nfunction parseMagicExpr(pattern: string) {\n const { inclusions: inclusionPatterns, exclusions: exclusionPatterns } = parsePatternString(pattern);\n\n const inclusions: RegExp[] = inclusionPatterns.map(p => patternToRegex(p));\n const exclusions: RegExp[] = exclusionPatterns.map(p => patternToRegex(p));\n\n // If only exclusions specified, implicitly include everything\n if (inclusions.length === 0 && exclusions.length > 0) {\n inclusions.push(/.*/);\n }\n\n return {\n test: (name: string) => {\n // Check if name matches any inclusion pattern\n const matchesInclusion = inclusions.some(regex => regex.test(name));\n if (!matchesInclusion) return false;\n\n // Check if name matches any exclusion pattern\n const matchesExclusion = exclusions.some(regex => regex.test(name));\n\n // Must match inclusion AND not match any exclusion\n return !matchesExclusion;\n }\n };\n}\n\nfunction patternToRegex(pattern: string): RegExp {\n let res = '';\n const parts = pattern.split('*');\n\n for (let i = 0; i < parts.length; i++) {\n if (i > 0) {\n res += '.*';\n }\n\n res += parts[i];\n }\n\n return new RegExp(res);\n}\n\nfunction mergePatterns(parentPattern?: string, childPattern?: string): string {\n if (!parentPattern && !childPattern) {\n return '*';\n }\n\n if (!parentPattern) {\n return childPattern!;\n }\n\n if (!childPattern) {\n return parentPattern;\n }\n\n const parent = parsePatternString(parentPattern);\n const child = parsePatternString(childPattern);\n\n // Combine and deduplicate inclusions\n let allInclusions = [...new Set([...parent.inclusions, ...child.inclusions])];\n\n // If only exclusions specified, implicitly include everything\n if (allInclusions.length === 0) {\n allInclusions = ['*'];\n }\n\n // Optimize: If '*' exists, it matches everything, so remove other inclusions\n const optimizedInclusions = allInclusions.includes('*') ? ['*'] : allInclusions;\n\n // Combine and deduplicate exclusions\n const allExclusions = [...new Set([...parent.exclusions, ...child.exclusions])];\n\n // Build merged pattern: combine inclusions and exclusions\n const inclusionStrings = optimizedInclusions;\n const exclusionStrings = allExclusions.map(e => '-' + e);\n const allPatterns = [...inclusionStrings, ...exclusionStrings];\n\n return allPatterns.join(',');\n}\n\nfunction parseLogLevel(level?: string): LogLevel | undefined {\n const value = level?.toLowerCase();\n switch (value) {\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return value;\n default:\n return undefined;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type LogLevel = 'error' | 'warn' | 'info' | 'debug';
|
|
1
|
+
type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace';
|
|
2
2
|
interface ILoggerOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Minimum severity level to log. When provided, log entries with lower severity are ignored.
|
|
@@ -11,6 +11,10 @@ interface ILoggerOptions {
|
|
|
11
11
|
readonly pattern?: string;
|
|
12
12
|
}
|
|
13
13
|
interface ILogger {
|
|
14
|
+
/**
|
|
15
|
+
* Active logger options for this logger
|
|
16
|
+
*/
|
|
17
|
+
loggerOptions?: ILoggerOptions;
|
|
14
18
|
/**
|
|
15
19
|
* Output debug message
|
|
16
20
|
* @param msg any data to log
|
|
@@ -31,6 +35,11 @@ interface ILogger {
|
|
|
31
35
|
* @param msg any data to log
|
|
32
36
|
*/
|
|
33
37
|
error(...msg: any[]): void;
|
|
38
|
+
/**
|
|
39
|
+
* Output trace messages (with stack trace)
|
|
40
|
+
* @param msg any data to log
|
|
41
|
+
*/
|
|
42
|
+
trace(...msg: any[]): void;
|
|
34
43
|
/**
|
|
35
44
|
* Output log message
|
|
36
45
|
* @param msg any data to log
|
|
@@ -39,7 +48,7 @@ interface ILogger {
|
|
|
39
48
|
/**
|
|
40
49
|
* Create a child logger instance
|
|
41
50
|
*/
|
|
42
|
-
child(name: string): ILogger;
|
|
51
|
+
child(name: string, overrides?: ILoggerOptions): ILogger;
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
export type { ILogger, ILoggerOptions, LogLevel };
|
package/dist/logging/logger.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type LogLevel = 'error' | 'warn' | 'info' | 'debug';
|
|
1
|
+
type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace';
|
|
2
2
|
interface ILoggerOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Minimum severity level to log. When provided, log entries with lower severity are ignored.
|
|
@@ -11,6 +11,10 @@ interface ILoggerOptions {
|
|
|
11
11
|
readonly pattern?: string;
|
|
12
12
|
}
|
|
13
13
|
interface ILogger {
|
|
14
|
+
/**
|
|
15
|
+
* Active logger options for this logger
|
|
16
|
+
*/
|
|
17
|
+
loggerOptions?: ILoggerOptions;
|
|
14
18
|
/**
|
|
15
19
|
* Output debug message
|
|
16
20
|
* @param msg any data to log
|
|
@@ -31,6 +35,11 @@ interface ILogger {
|
|
|
31
35
|
* @param msg any data to log
|
|
32
36
|
*/
|
|
33
37
|
error(...msg: any[]): void;
|
|
38
|
+
/**
|
|
39
|
+
* Output trace messages (with stack trace)
|
|
40
|
+
* @param msg any data to log
|
|
41
|
+
*/
|
|
42
|
+
trace(...msg: any[]): void;
|
|
34
43
|
/**
|
|
35
44
|
* Output log message
|
|
36
45
|
* @param msg any data to log
|
|
@@ -39,7 +48,7 @@ interface ILogger {
|
|
|
39
48
|
/**
|
|
40
49
|
* Create a child logger instance
|
|
41
50
|
*/
|
|
42
|
-
child(name: string): ILogger;
|
|
51
|
+
child(name: string, overrides?: ILoggerOptions): ILogger;
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
export type { ILogger, ILoggerOptions, LogLevel };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/teams.common",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"axios": "^1.12.0"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@microsoft/teams.config": "2.0.
|
|
83
|
+
"@microsoft/teams.config": "2.0.3",
|
|
84
84
|
"@types/jest": "^29.5.12",
|
|
85
85
|
"jest": "^29.7.0",
|
|
86
86
|
"rimraf": "^6.0.1",
|