devink 1.0.0 → 1.0.2
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 +12 -5
- package/dist/index.d.mts +26 -1
- package/dist/index.d.ts +26 -1
- package/dist/index.js +2 -141
- package/dist/index.mjs +2 -136
- package/package.json +4 -4
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/media/Devink.png +0 -0
package/README.md
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<br>
|
|
3
|
+
<br>
|
|
4
|
+
<img width="320" src="https://raw.githubusercontent.com/harrymate22/devink/main/media/logo.png" alt="devink">
|
|
5
|
+
<br>
|
|
6
|
+
<br>
|
|
7
|
+
<br>
|
|
8
|
+
</h1>
|
|
9
|
+
|
|
10
|
+
> Fast, lightweight, professional terminal logger. Zero dependencies.
|
|
6
11
|
|
|
7
12
|
[](https://npmjs.com/package/devink)
|
|
8
13
|
[](https://github.com/user/devink/blob/main/LICENSE)
|
|
9
14
|
[](https://www.npmjs.com/package/devink)
|
|
10
15
|
[](https://bundlephobia.com/result?p=devink)
|
|
11
16
|
|
|
17
|
+

|
|
18
|
+
|
|
12
19
|
**Devink** is a production-grade, zero-dependency Node.js logging library featuring custom transports, graceful JSON serialization, a deep-merging theme system, and automatic ANSI color detection.
|
|
13
20
|
|
|
14
21
|
Designed specifically built for high-performance CLI tools, servers, and modern development environments. 🚀
|
package/dist/index.d.mts
CHANGED
|
@@ -31,6 +31,7 @@ declare class Logger {
|
|
|
31
31
|
private transport;
|
|
32
32
|
constructor(options?: LoggerOptions);
|
|
33
33
|
private getTimestamp;
|
|
34
|
+
private highlightJson;
|
|
34
35
|
private formatMessage;
|
|
35
36
|
private stripAnsi;
|
|
36
37
|
private output;
|
|
@@ -44,6 +45,7 @@ declare const createLogger: (options?: LoggerOptions) => Logger;
|
|
|
44
45
|
declare const isColorSupported: string | boolean;
|
|
45
46
|
declare const format: (code: number, text: string) => string;
|
|
46
47
|
declare const reset: (text: string) => string;
|
|
48
|
+
declare const black: (text: string) => string;
|
|
47
49
|
declare const red: (text: string) => string;
|
|
48
50
|
declare const green: (text: string) => string;
|
|
49
51
|
declare const yellow: (text: string) => string;
|
|
@@ -52,11 +54,32 @@ declare const magenta: (text: string) => string;
|
|
|
52
54
|
declare const cyan: (text: string) => string;
|
|
53
55
|
declare const white: (text: string) => string;
|
|
54
56
|
declare const gray: (text: string) => string;
|
|
57
|
+
declare const bgBlack: (text: string) => string;
|
|
58
|
+
declare const bgRed: (text: string) => string;
|
|
59
|
+
declare const bgGreen: (text: string) => string;
|
|
60
|
+
declare const bgYellow: (text: string) => string;
|
|
61
|
+
declare const bgBlue: (text: string) => string;
|
|
62
|
+
declare const bgMagenta: (text: string) => string;
|
|
63
|
+
declare const bgCyan: (text: string) => string;
|
|
64
|
+
declare const bgWhite: (text: string) => string;
|
|
55
65
|
declare const bold: (text: string) => string;
|
|
56
66
|
declare const dim: (text: string) => string;
|
|
57
67
|
declare const italic: (text: string) => string;
|
|
58
68
|
declare const underline: (text: string) => string;
|
|
69
|
+
declare const inverse: (text: string) => string;
|
|
70
|
+
declare const hex: (hexCode: string, text: string) => string;
|
|
71
|
+
declare const bgHex: (hexCode: string, text: string) => string;
|
|
59
72
|
|
|
73
|
+
declare const ansi_bgBlack: typeof bgBlack;
|
|
74
|
+
declare const ansi_bgBlue: typeof bgBlue;
|
|
75
|
+
declare const ansi_bgCyan: typeof bgCyan;
|
|
76
|
+
declare const ansi_bgGreen: typeof bgGreen;
|
|
77
|
+
declare const ansi_bgHex: typeof bgHex;
|
|
78
|
+
declare const ansi_bgMagenta: typeof bgMagenta;
|
|
79
|
+
declare const ansi_bgRed: typeof bgRed;
|
|
80
|
+
declare const ansi_bgWhite: typeof bgWhite;
|
|
81
|
+
declare const ansi_bgYellow: typeof bgYellow;
|
|
82
|
+
declare const ansi_black: typeof black;
|
|
60
83
|
declare const ansi_blue: typeof blue;
|
|
61
84
|
declare const ansi_bold: typeof bold;
|
|
62
85
|
declare const ansi_cyan: typeof cyan;
|
|
@@ -64,6 +87,8 @@ declare const ansi_dim: typeof dim;
|
|
|
64
87
|
declare const ansi_format: typeof format;
|
|
65
88
|
declare const ansi_gray: typeof gray;
|
|
66
89
|
declare const ansi_green: typeof green;
|
|
90
|
+
declare const ansi_hex: typeof hex;
|
|
91
|
+
declare const ansi_inverse: typeof inverse;
|
|
67
92
|
declare const ansi_isColorSupported: typeof isColorSupported;
|
|
68
93
|
declare const ansi_italic: typeof italic;
|
|
69
94
|
declare const ansi_magenta: typeof magenta;
|
|
@@ -73,7 +98,7 @@ declare const ansi_underline: typeof underline;
|
|
|
73
98
|
declare const ansi_white: typeof white;
|
|
74
99
|
declare const ansi_yellow: typeof yellow;
|
|
75
100
|
declare namespace ansi {
|
|
76
|
-
export { ansi_blue as blue, ansi_bold as bold, ansi_cyan as cyan, ansi_dim as dim, ansi_format as format, ansi_gray as gray, ansi_green as green, ansi_isColorSupported as isColorSupported, ansi_italic as italic, ansi_magenta as magenta, ansi_red as red, ansi_reset as reset, ansi_underline as underline, ansi_white as white, ansi_yellow as yellow };
|
|
101
|
+
export { ansi_bgBlack as bgBlack, ansi_bgBlue as bgBlue, ansi_bgCyan as bgCyan, ansi_bgGreen as bgGreen, ansi_bgHex as bgHex, ansi_bgMagenta as bgMagenta, ansi_bgRed as bgRed, ansi_bgWhite as bgWhite, ansi_bgYellow as bgYellow, ansi_black as black, ansi_blue as blue, ansi_bold as bold, ansi_cyan as cyan, ansi_dim as dim, ansi_format as format, ansi_gray as gray, ansi_green as green, ansi_hex as hex, ansi_inverse as inverse, ansi_isColorSupported as isColorSupported, ansi_italic as italic, ansi_magenta as magenta, ansi_red as red, ansi_reset as reset, ansi_underline as underline, ansi_white as white, ansi_yellow as yellow };
|
|
77
102
|
}
|
|
78
103
|
|
|
79
104
|
export { Logger, type LoggerOptions, type Theme, ansi, createLogger, defaultTheme };
|
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ declare class Logger {
|
|
|
31
31
|
private transport;
|
|
32
32
|
constructor(options?: LoggerOptions);
|
|
33
33
|
private getTimestamp;
|
|
34
|
+
private highlightJson;
|
|
34
35
|
private formatMessage;
|
|
35
36
|
private stripAnsi;
|
|
36
37
|
private output;
|
|
@@ -44,6 +45,7 @@ declare const createLogger: (options?: LoggerOptions) => Logger;
|
|
|
44
45
|
declare const isColorSupported: string | boolean;
|
|
45
46
|
declare const format: (code: number, text: string) => string;
|
|
46
47
|
declare const reset: (text: string) => string;
|
|
48
|
+
declare const black: (text: string) => string;
|
|
47
49
|
declare const red: (text: string) => string;
|
|
48
50
|
declare const green: (text: string) => string;
|
|
49
51
|
declare const yellow: (text: string) => string;
|
|
@@ -52,11 +54,32 @@ declare const magenta: (text: string) => string;
|
|
|
52
54
|
declare const cyan: (text: string) => string;
|
|
53
55
|
declare const white: (text: string) => string;
|
|
54
56
|
declare const gray: (text: string) => string;
|
|
57
|
+
declare const bgBlack: (text: string) => string;
|
|
58
|
+
declare const bgRed: (text: string) => string;
|
|
59
|
+
declare const bgGreen: (text: string) => string;
|
|
60
|
+
declare const bgYellow: (text: string) => string;
|
|
61
|
+
declare const bgBlue: (text: string) => string;
|
|
62
|
+
declare const bgMagenta: (text: string) => string;
|
|
63
|
+
declare const bgCyan: (text: string) => string;
|
|
64
|
+
declare const bgWhite: (text: string) => string;
|
|
55
65
|
declare const bold: (text: string) => string;
|
|
56
66
|
declare const dim: (text: string) => string;
|
|
57
67
|
declare const italic: (text: string) => string;
|
|
58
68
|
declare const underline: (text: string) => string;
|
|
69
|
+
declare const inverse: (text: string) => string;
|
|
70
|
+
declare const hex: (hexCode: string, text: string) => string;
|
|
71
|
+
declare const bgHex: (hexCode: string, text: string) => string;
|
|
59
72
|
|
|
73
|
+
declare const ansi_bgBlack: typeof bgBlack;
|
|
74
|
+
declare const ansi_bgBlue: typeof bgBlue;
|
|
75
|
+
declare const ansi_bgCyan: typeof bgCyan;
|
|
76
|
+
declare const ansi_bgGreen: typeof bgGreen;
|
|
77
|
+
declare const ansi_bgHex: typeof bgHex;
|
|
78
|
+
declare const ansi_bgMagenta: typeof bgMagenta;
|
|
79
|
+
declare const ansi_bgRed: typeof bgRed;
|
|
80
|
+
declare const ansi_bgWhite: typeof bgWhite;
|
|
81
|
+
declare const ansi_bgYellow: typeof bgYellow;
|
|
82
|
+
declare const ansi_black: typeof black;
|
|
60
83
|
declare const ansi_blue: typeof blue;
|
|
61
84
|
declare const ansi_bold: typeof bold;
|
|
62
85
|
declare const ansi_cyan: typeof cyan;
|
|
@@ -64,6 +87,8 @@ declare const ansi_dim: typeof dim;
|
|
|
64
87
|
declare const ansi_format: typeof format;
|
|
65
88
|
declare const ansi_gray: typeof gray;
|
|
66
89
|
declare const ansi_green: typeof green;
|
|
90
|
+
declare const ansi_hex: typeof hex;
|
|
91
|
+
declare const ansi_inverse: typeof inverse;
|
|
67
92
|
declare const ansi_isColorSupported: typeof isColorSupported;
|
|
68
93
|
declare const ansi_italic: typeof italic;
|
|
69
94
|
declare const ansi_magenta: typeof magenta;
|
|
@@ -73,7 +98,7 @@ declare const ansi_underline: typeof underline;
|
|
|
73
98
|
declare const ansi_white: typeof white;
|
|
74
99
|
declare const ansi_yellow: typeof yellow;
|
|
75
100
|
declare namespace ansi {
|
|
76
|
-
export { ansi_blue as blue, ansi_bold as bold, ansi_cyan as cyan, ansi_dim as dim, ansi_format as format, ansi_gray as gray, ansi_green as green, ansi_isColorSupported as isColorSupported, ansi_italic as italic, ansi_magenta as magenta, ansi_red as red, ansi_reset as reset, ansi_underline as underline, ansi_white as white, ansi_yellow as yellow };
|
|
101
|
+
export { ansi_bgBlack as bgBlack, ansi_bgBlue as bgBlue, ansi_bgCyan as bgCyan, ansi_bgGreen as bgGreen, ansi_bgHex as bgHex, ansi_bgMagenta as bgMagenta, ansi_bgRed as bgRed, ansi_bgWhite as bgWhite, ansi_bgYellow as bgYellow, ansi_black as black, ansi_blue as blue, ansi_bold as bold, ansi_cyan as cyan, ansi_dim as dim, ansi_format as format, ansi_gray as gray, ansi_green as green, ansi_hex as hex, ansi_inverse as inverse, ansi_isColorSupported as isColorSupported, ansi_italic as italic, ansi_magenta as magenta, ansi_red as red, ansi_reset as reset, ansi_underline as underline, ansi_white as white, ansi_yellow as yellow };
|
|
77
102
|
}
|
|
78
103
|
|
|
79
104
|
export { Logger, type LoggerOptions, type Theme, ansi, createLogger, defaultTheme };
|
package/dist/index.js
CHANGED
|
@@ -1,141 +1,2 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __export = (target, all) => {
|
|
5
|
-
for (var name in all)
|
|
6
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
// source/utils/ansi.ts
|
|
10
|
-
var ansi_exports = {};
|
|
11
|
-
__export(ansi_exports, {
|
|
12
|
-
blue: () => blue,
|
|
13
|
-
bold: () => bold,
|
|
14
|
-
cyan: () => cyan,
|
|
15
|
-
dim: () => dim,
|
|
16
|
-
format: () => format,
|
|
17
|
-
gray: () => gray,
|
|
18
|
-
green: () => green,
|
|
19
|
-
isColorSupported: () => isColorSupported,
|
|
20
|
-
italic: () => italic,
|
|
21
|
-
magenta: () => magenta,
|
|
22
|
-
red: () => red,
|
|
23
|
-
reset: () => reset,
|
|
24
|
-
underline: () => underline,
|
|
25
|
-
white: () => white,
|
|
26
|
-
yellow: () => yellow
|
|
27
|
-
});
|
|
28
|
-
var isColorSupported = !process.env.NO_COLOR && (process.env.FORCE_COLOR || process.stdout?.isTTY || process.env.TERM === "xterm-256color");
|
|
29
|
-
var format = (code, text) => {
|
|
30
|
-
if (!isColorSupported) return text;
|
|
31
|
-
return `\x1B[${code}m${text}\x1B[0m`;
|
|
32
|
-
};
|
|
33
|
-
var reset = (text) => format(0, text);
|
|
34
|
-
var red = (text) => format(31, text);
|
|
35
|
-
var green = (text) => format(32, text);
|
|
36
|
-
var yellow = (text) => format(33, text);
|
|
37
|
-
var blue = (text) => format(34, text);
|
|
38
|
-
var magenta = (text) => format(35, text);
|
|
39
|
-
var cyan = (text) => format(36, text);
|
|
40
|
-
var white = (text) => format(37, text);
|
|
41
|
-
var gray = (text) => format(90, text);
|
|
42
|
-
var bold = (text) => format(1, text);
|
|
43
|
-
var dim = (text) => format(2, text);
|
|
44
|
-
var italic = (text) => format(3, text);
|
|
45
|
-
var underline = (text) => format(4, text);
|
|
46
|
-
|
|
47
|
-
// source/theme.ts
|
|
48
|
-
var defaultTheme = {
|
|
49
|
-
success: (msg) => green(msg),
|
|
50
|
-
error: (msg) => red(bold(msg)),
|
|
51
|
-
warn: (msg) => yellow(msg),
|
|
52
|
-
info: (msg) => blue(msg),
|
|
53
|
-
prefix: {
|
|
54
|
-
success: green("\u2714"),
|
|
55
|
-
error: red("\u2716"),
|
|
56
|
-
warn: yellow("\u26A0"),
|
|
57
|
-
info: blue("\u2139")
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// source/logger.ts
|
|
62
|
-
var defaultTransport = {
|
|
63
|
-
success: console.log,
|
|
64
|
-
error: console.error,
|
|
65
|
-
warn: console.warn,
|
|
66
|
-
info: console.info
|
|
67
|
-
};
|
|
68
|
-
var Logger = class {
|
|
69
|
-
theme;
|
|
70
|
-
timestamps;
|
|
71
|
-
colors;
|
|
72
|
-
transport;
|
|
73
|
-
constructor(options = {}) {
|
|
74
|
-
this.theme = {
|
|
75
|
-
...defaultTheme,
|
|
76
|
-
...options.theme,
|
|
77
|
-
prefix: {
|
|
78
|
-
...defaultTheme.prefix,
|
|
79
|
-
...options.theme?.prefix
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
this.timestamps = options.timestamps ?? false;
|
|
83
|
-
this.colors = options.colors ?? true;
|
|
84
|
-
this.transport = { ...defaultTransport, ...options.transport };
|
|
85
|
-
}
|
|
86
|
-
getTimestamp() {
|
|
87
|
-
if (!this.timestamps) return "";
|
|
88
|
-
const now = /* @__PURE__ */ new Date();
|
|
89
|
-
const time = now.toISOString().split("T")[1]?.split(".")[0];
|
|
90
|
-
return gray(`[${time}] `);
|
|
91
|
-
}
|
|
92
|
-
formatMessage(message) {
|
|
93
|
-
return message.map((m) => {
|
|
94
|
-
if (typeof m === "string") return m;
|
|
95
|
-
try {
|
|
96
|
-
return JSON.stringify(m, null, 2);
|
|
97
|
-
} catch {
|
|
98
|
-
return "[Unserializable Object]";
|
|
99
|
-
}
|
|
100
|
-
}).join(" ");
|
|
101
|
-
}
|
|
102
|
-
stripAnsi(text) {
|
|
103
|
-
return text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
104
|
-
}
|
|
105
|
-
output(level, formattedOutput) {
|
|
106
|
-
const finalOutput = this.colors ? formattedOutput : this.stripAnsi(formattedOutput);
|
|
107
|
-
this.transport[level](finalOutput);
|
|
108
|
-
}
|
|
109
|
-
success(...message) {
|
|
110
|
-
const msg = this.formatMessage(message);
|
|
111
|
-
this.output(
|
|
112
|
-
"success",
|
|
113
|
-
`${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(msg)}`
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
error(...message) {
|
|
117
|
-
const msg = this.formatMessage(message);
|
|
118
|
-
this.output(
|
|
119
|
-
"error",
|
|
120
|
-
`${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(msg)}`
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
warn(...message) {
|
|
124
|
-
const msg = this.formatMessage(message);
|
|
125
|
-
this.output("warn", `${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(msg)}`);
|
|
126
|
-
}
|
|
127
|
-
info(...message) {
|
|
128
|
-
const msg = this.formatMessage(message);
|
|
129
|
-
this.output("info", `${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(msg)}`);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
var createLogger = (options) => {
|
|
133
|
-
return new Logger(options);
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
exports.Logger = Logger;
|
|
137
|
-
exports.ansi = ansi_exports;
|
|
138
|
-
exports.createLogger = createLogger;
|
|
139
|
-
exports.defaultTheme = defaultTheme;
|
|
140
|
-
//# sourceMappingURL=index.js.map
|
|
141
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
'use strict';var h=Object.defineProperty;var x=(t,s)=>{for(var r in s)h(t,r,{get:s[r],enumerable:true});};var l={};x(l,{bgBlack:()=>I,bgBlue:()=>M,bgCyan:()=>E,bgGreen:()=>R,bgHex:()=>g,bgMagenta:()=>S,bgRed:()=>L,bgWhite:()=>N,bgYellow:()=>C,black:()=>d,blue:()=>v,bold:()=>o,cyan:()=>k,dim:()=>j,format:()=>e,gray:()=>m,green:()=>T,hex:()=>n,inverse:()=>z,isColorSupported:()=>p,italic:()=>A,magenta:()=>O,red:()=>w,reset:()=>b,underline:()=>J,white:()=>y,yellow:()=>$});var p=!process.env.NO_COLOR&&(process.env.FORCE_COLOR||process.stdout?.isTTY||process.env.TERM==="xterm-256color"),e=(t,s)=>p?`\x1B[${t}m${s}\x1B[0m`:s,b=t=>e(0,t),d=t=>e(30,t),w=t=>e(31,t),T=t=>e(32,t),$=t=>e(33,t),v=t=>e(34,t),O=t=>e(35,t),k=t=>e(36,t),y=t=>e(37,t),m=t=>e(90,t),I=t=>e(40,t),L=t=>e(41,t),R=t=>e(42,t),C=t=>e(43,t),M=t=>e(44,t),S=t=>e(45,t),E=t=>e(46,t),N=t=>e(47,t),o=t=>e(1,t),j=t=>e(2,t),A=t=>e(3,t),J=t=>e(4,t),z=t=>e(7,t),n=(t,s)=>{if(!p)return s;let r=t.replace(/^#/,"");if(r.length!==6)return s;let i=parseInt(r.substring(0,2),16),u=parseInt(r.substring(2,4),16),f=parseInt(r.substring(4,6),16);return `\x1B[38;2;${i};${u};${f}m${s}\x1B[0m`},g=(t,s)=>{if(!p)return s;let r=t.replace(/^#/,"");if(r.length!==6)return s;let i=parseInt(r.substring(0,2),16),u=parseInt(r.substring(2,4),16),f=parseInt(r.substring(4,6),16);return `\x1B[48;2;${i};${u};${f}m${s}\x1B[0m`};var a={success:t=>t,error:t=>t,warn:t=>t,info:t=>t,prefix:{success:n("#10b981","\u2714")+" "+g("#064e3b",n("#34d399",o(" SUCCESS "))),error:n("#ef4444","\u2716")+" "+g("#7f1d1d",n("#f87171",o(" ERROR "))),warn:n("#f59e0b","\u26A0")+" "+g("#78350f",n("#fbbf24",o(" WARNING "))),info:n("#0ea5e9","\u2139")+" "+g("#0c4a6e",n("#38bdf8",o(" INFO ")))}};var B={success:console.log,error:console.error,warn:console.warn,info:console.info},c=class{theme;timestamps;colors;transport;constructor(s={}){this.theme={...a,...s.theme,prefix:{...a.prefix,...s.theme?.prefix}},this.timestamps=s.timestamps??false,this.colors=s.colors??true,this.transport={...B,...s.transport};}getTimestamp(){if(!this.timestamps)return "";let r=new Date().toISOString().split("T")[1]?.split(".")[0];return m(`[${r}] `)}highlightJson(s){return this.colors?s.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,r=>/^"/.test(r)?/:$/.test(r)?n("#9ca3af",r.slice(0,-1))+":":n("#34d399",r):/true|false/.test(r)?n("#c084fc",r):/null/.test(r)?n("#f87171",r):n("#fbbf24",r)):s}formatMessage(s){return s.map(r=>{if(typeof r=="string")return r;try{let i=JSON.stringify(r,null,2);return `
|
|
2
|
+
`+this.highlightJson(i)}catch{return "[Unserializable Object]"}}).join(" ")}stripAnsi(s){return s.replace(/\x1b\[[0-9;]*m/g,"")}output(s,r){let i=this.colors?r:this.stripAnsi(r);this.transport[s](i);}success(...s){let r=this.formatMessage(s);this.output("success",`${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(r)}`);}error(...s){let r=this.formatMessage(s);this.output("error",`${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(r)}`);}warn(...s){let r=this.formatMessage(s);this.output("warn",`${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(r)}`);}info(...s){let r=this.formatMessage(s);this.output("info",`${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(r)}`);}},F=t=>new c(t);exports.Logger=c;exports.ansi=l;exports.createLogger=F;exports.defaultTheme=a;
|
package/dist/index.mjs
CHANGED
|
@@ -1,136 +1,2 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
for (var name in all)
|
|
4
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
// source/utils/ansi.ts
|
|
8
|
-
var ansi_exports = {};
|
|
9
|
-
__export(ansi_exports, {
|
|
10
|
-
blue: () => blue,
|
|
11
|
-
bold: () => bold,
|
|
12
|
-
cyan: () => cyan,
|
|
13
|
-
dim: () => dim,
|
|
14
|
-
format: () => format,
|
|
15
|
-
gray: () => gray,
|
|
16
|
-
green: () => green,
|
|
17
|
-
isColorSupported: () => isColorSupported,
|
|
18
|
-
italic: () => italic,
|
|
19
|
-
magenta: () => magenta,
|
|
20
|
-
red: () => red,
|
|
21
|
-
reset: () => reset,
|
|
22
|
-
underline: () => underline,
|
|
23
|
-
white: () => white,
|
|
24
|
-
yellow: () => yellow
|
|
25
|
-
});
|
|
26
|
-
var isColorSupported = !process.env.NO_COLOR && (process.env.FORCE_COLOR || process.stdout?.isTTY || process.env.TERM === "xterm-256color");
|
|
27
|
-
var format = (code, text) => {
|
|
28
|
-
if (!isColorSupported) return text;
|
|
29
|
-
return `\x1B[${code}m${text}\x1B[0m`;
|
|
30
|
-
};
|
|
31
|
-
var reset = (text) => format(0, text);
|
|
32
|
-
var red = (text) => format(31, text);
|
|
33
|
-
var green = (text) => format(32, text);
|
|
34
|
-
var yellow = (text) => format(33, text);
|
|
35
|
-
var blue = (text) => format(34, text);
|
|
36
|
-
var magenta = (text) => format(35, text);
|
|
37
|
-
var cyan = (text) => format(36, text);
|
|
38
|
-
var white = (text) => format(37, text);
|
|
39
|
-
var gray = (text) => format(90, text);
|
|
40
|
-
var bold = (text) => format(1, text);
|
|
41
|
-
var dim = (text) => format(2, text);
|
|
42
|
-
var italic = (text) => format(3, text);
|
|
43
|
-
var underline = (text) => format(4, text);
|
|
44
|
-
|
|
45
|
-
// source/theme.ts
|
|
46
|
-
var defaultTheme = {
|
|
47
|
-
success: (msg) => green(msg),
|
|
48
|
-
error: (msg) => red(bold(msg)),
|
|
49
|
-
warn: (msg) => yellow(msg),
|
|
50
|
-
info: (msg) => blue(msg),
|
|
51
|
-
prefix: {
|
|
52
|
-
success: green("\u2714"),
|
|
53
|
-
error: red("\u2716"),
|
|
54
|
-
warn: yellow("\u26A0"),
|
|
55
|
-
info: blue("\u2139")
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// source/logger.ts
|
|
60
|
-
var defaultTransport = {
|
|
61
|
-
success: console.log,
|
|
62
|
-
error: console.error,
|
|
63
|
-
warn: console.warn,
|
|
64
|
-
info: console.info
|
|
65
|
-
};
|
|
66
|
-
var Logger = class {
|
|
67
|
-
theme;
|
|
68
|
-
timestamps;
|
|
69
|
-
colors;
|
|
70
|
-
transport;
|
|
71
|
-
constructor(options = {}) {
|
|
72
|
-
this.theme = {
|
|
73
|
-
...defaultTheme,
|
|
74
|
-
...options.theme,
|
|
75
|
-
prefix: {
|
|
76
|
-
...defaultTheme.prefix,
|
|
77
|
-
...options.theme?.prefix
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
this.timestamps = options.timestamps ?? false;
|
|
81
|
-
this.colors = options.colors ?? true;
|
|
82
|
-
this.transport = { ...defaultTransport, ...options.transport };
|
|
83
|
-
}
|
|
84
|
-
getTimestamp() {
|
|
85
|
-
if (!this.timestamps) return "";
|
|
86
|
-
const now = /* @__PURE__ */ new Date();
|
|
87
|
-
const time = now.toISOString().split("T")[1]?.split(".")[0];
|
|
88
|
-
return gray(`[${time}] `);
|
|
89
|
-
}
|
|
90
|
-
formatMessage(message) {
|
|
91
|
-
return message.map((m) => {
|
|
92
|
-
if (typeof m === "string") return m;
|
|
93
|
-
try {
|
|
94
|
-
return JSON.stringify(m, null, 2);
|
|
95
|
-
} catch {
|
|
96
|
-
return "[Unserializable Object]";
|
|
97
|
-
}
|
|
98
|
-
}).join(" ");
|
|
99
|
-
}
|
|
100
|
-
stripAnsi(text) {
|
|
101
|
-
return text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
102
|
-
}
|
|
103
|
-
output(level, formattedOutput) {
|
|
104
|
-
const finalOutput = this.colors ? formattedOutput : this.stripAnsi(formattedOutput);
|
|
105
|
-
this.transport[level](finalOutput);
|
|
106
|
-
}
|
|
107
|
-
success(...message) {
|
|
108
|
-
const msg = this.formatMessage(message);
|
|
109
|
-
this.output(
|
|
110
|
-
"success",
|
|
111
|
-
`${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(msg)}`
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
error(...message) {
|
|
115
|
-
const msg = this.formatMessage(message);
|
|
116
|
-
this.output(
|
|
117
|
-
"error",
|
|
118
|
-
`${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(msg)}`
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
warn(...message) {
|
|
122
|
-
const msg = this.formatMessage(message);
|
|
123
|
-
this.output("warn", `${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(msg)}`);
|
|
124
|
-
}
|
|
125
|
-
info(...message) {
|
|
126
|
-
const msg = this.formatMessage(message);
|
|
127
|
-
this.output("info", `${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(msg)}`);
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
var createLogger = (options) => {
|
|
131
|
-
return new Logger(options);
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
export { Logger, ansi_exports as ansi, createLogger, defaultTheme };
|
|
135
|
-
//# sourceMappingURL=index.mjs.map
|
|
136
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
var h=Object.defineProperty;var x=(t,s)=>{for(var r in s)h(t,r,{get:s[r],enumerable:true});};var l={};x(l,{bgBlack:()=>I,bgBlue:()=>M,bgCyan:()=>E,bgGreen:()=>R,bgHex:()=>g,bgMagenta:()=>S,bgRed:()=>L,bgWhite:()=>N,bgYellow:()=>C,black:()=>d,blue:()=>v,bold:()=>o,cyan:()=>k,dim:()=>j,format:()=>e,gray:()=>m,green:()=>T,hex:()=>n,inverse:()=>z,isColorSupported:()=>p,italic:()=>A,magenta:()=>O,red:()=>w,reset:()=>b,underline:()=>J,white:()=>y,yellow:()=>$});var p=!process.env.NO_COLOR&&(process.env.FORCE_COLOR||process.stdout?.isTTY||process.env.TERM==="xterm-256color"),e=(t,s)=>p?`\x1B[${t}m${s}\x1B[0m`:s,b=t=>e(0,t),d=t=>e(30,t),w=t=>e(31,t),T=t=>e(32,t),$=t=>e(33,t),v=t=>e(34,t),O=t=>e(35,t),k=t=>e(36,t),y=t=>e(37,t),m=t=>e(90,t),I=t=>e(40,t),L=t=>e(41,t),R=t=>e(42,t),C=t=>e(43,t),M=t=>e(44,t),S=t=>e(45,t),E=t=>e(46,t),N=t=>e(47,t),o=t=>e(1,t),j=t=>e(2,t),A=t=>e(3,t),J=t=>e(4,t),z=t=>e(7,t),n=(t,s)=>{if(!p)return s;let r=t.replace(/^#/,"");if(r.length!==6)return s;let i=parseInt(r.substring(0,2),16),u=parseInt(r.substring(2,4),16),f=parseInt(r.substring(4,6),16);return `\x1B[38;2;${i};${u};${f}m${s}\x1B[0m`},g=(t,s)=>{if(!p)return s;let r=t.replace(/^#/,"");if(r.length!==6)return s;let i=parseInt(r.substring(0,2),16),u=parseInt(r.substring(2,4),16),f=parseInt(r.substring(4,6),16);return `\x1B[48;2;${i};${u};${f}m${s}\x1B[0m`};var a={success:t=>t,error:t=>t,warn:t=>t,info:t=>t,prefix:{success:n("#10b981","\u2714")+" "+g("#064e3b",n("#34d399",o(" SUCCESS "))),error:n("#ef4444","\u2716")+" "+g("#7f1d1d",n("#f87171",o(" ERROR "))),warn:n("#f59e0b","\u26A0")+" "+g("#78350f",n("#fbbf24",o(" WARNING "))),info:n("#0ea5e9","\u2139")+" "+g("#0c4a6e",n("#38bdf8",o(" INFO ")))}};var B={success:console.log,error:console.error,warn:console.warn,info:console.info},c=class{theme;timestamps;colors;transport;constructor(s={}){this.theme={...a,...s.theme,prefix:{...a.prefix,...s.theme?.prefix}},this.timestamps=s.timestamps??false,this.colors=s.colors??true,this.transport={...B,...s.transport};}getTimestamp(){if(!this.timestamps)return "";let r=new Date().toISOString().split("T")[1]?.split(".")[0];return m(`[${r}] `)}highlightJson(s){return this.colors?s.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,r=>/^"/.test(r)?/:$/.test(r)?n("#9ca3af",r.slice(0,-1))+":":n("#34d399",r):/true|false/.test(r)?n("#c084fc",r):/null/.test(r)?n("#f87171",r):n("#fbbf24",r)):s}formatMessage(s){return s.map(r=>{if(typeof r=="string")return r;try{let i=JSON.stringify(r,null,2);return `
|
|
2
|
+
`+this.highlightJson(i)}catch{return "[Unserializable Object]"}}).join(" ")}stripAnsi(s){return s.replace(/\x1b\[[0-9;]*m/g,"")}output(s,r){let i=this.colors?r:this.stripAnsi(r);this.transport[s](i);}success(...s){let r=this.formatMessage(s);this.output("success",`${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(r)}`);}error(...s){let r=this.formatMessage(s);this.output("error",`${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(r)}`);}warn(...s){let r=this.formatMessage(s);this.output("warn",`${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(r)}`);}info(...s){let r=this.formatMessage(s);this.output("info",`${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(r)}`);}},F=t=>new c(t);export{c as Logger,l as ansi,F as createLogger,a as defaultTheme};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devink",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Fast, lightweight, professional logger built with TypeScript. No dependencies.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"dist"
|
|
17
|
-
"media"
|
|
16
|
+
"dist"
|
|
18
17
|
],
|
|
19
18
|
"engines": {
|
|
20
19
|
"node": ">=18.0.0"
|
|
@@ -40,8 +39,9 @@
|
|
|
40
39
|
"structured-logger",
|
|
41
40
|
"zero-dependency"
|
|
42
41
|
],
|
|
43
|
-
"author": "",
|
|
42
|
+
"author": "harrymate22",
|
|
44
43
|
"license": "MIT",
|
|
44
|
+
"repository": "harrymate22/devink",
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@eslint/js": "^9.0.0",
|
|
47
47
|
"@types/node": "^20.0.0",
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../source/utils/ansi.ts","../source/theme.ts","../source/logger.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const isColorSupported =\r\n !process.env.NO_COLOR &&\r\n (process.env.FORCE_COLOR || process.stdout?.isTTY || process.env.TERM === 'xterm-256color');\r\n\r\nexport const format = (code: number, text: string): string => {\r\n if (!isColorSupported) return text;\r\n return `\\x1b[${code}m${text}\\x1b[0m`;\r\n};\r\n\r\nexport const reset = (text: string): string => format(0, text);\r\nexport const red = (text: string): string => format(31, text);\r\nexport const green = (text: string): string => format(32, text);\r\nexport const yellow = (text: string): string => format(33, text);\r\nexport const blue = (text: string): string => format(34, text);\r\nexport const magenta = (text: string): string => format(35, text);\r\nexport const cyan = (text: string): string => format(36, text);\r\nexport const white = (text: string): string => format(37, text);\r\nexport const gray = (text: string): string => format(90, text);\r\n\r\nexport const bold = (text: string): string => format(1, text);\r\nexport const dim = (text: string): string => format(2, text);\r\nexport const italic = (text: string): string => format(3, text);\r\nexport const underline = (text: string): string => format(4, text);\r\n","import { red, green, yellow, blue, gray, bold } from './utils/ansi.js';\r\n\r\nexport interface Theme {\r\n success: (msg: string) => string;\r\n error: (msg: string) => string;\r\n warn: (msg: string) => string;\r\n info: (msg: string) => string;\r\n prefix: {\r\n success: string;\r\n error: string;\r\n warn: string;\r\n info: string;\r\n };\r\n}\r\n\r\nexport const defaultTheme: Theme = {\r\n success: (msg: string) => green(msg),\r\n error: (msg: string) => red(bold(msg)),\r\n warn: (msg: string) => yellow(msg),\r\n info: (msg: string) => blue(msg),\r\n prefix: {\r\n success: green('✔'),\r\n error: red('✖'),\r\n warn: yellow('⚠'),\r\n info: blue('ℹ'),\r\n },\r\n};\r\n","import { defaultTheme, type Theme } from './theme.js';\r\nimport { gray } from './utils/ansi.js';\r\n\r\nexport interface Transport {\r\n success: (...args: unknown[]) => void;\r\n error: (...args: unknown[]) => void;\r\n warn: (...args: unknown[]) => void;\r\n info: (...args: unknown[]) => void;\r\n}\r\n\r\nexport interface LoggerOptions {\r\n theme?: Partial<Theme>;\r\n timestamps?: boolean;\r\n colors?: boolean;\r\n transport?: Partial<Transport>;\r\n}\r\n\r\nconst defaultTransport: Transport = {\r\n success: console.log,\r\n error: console.error,\r\n warn: console.warn,\r\n info: console.info,\r\n};\r\n\r\nexport class Logger {\r\n private theme: Theme;\r\n private timestamps: boolean;\r\n private colors: boolean;\r\n private transport: Transport;\r\n\r\n constructor(options: LoggerOptions = {}) {\r\n this.theme = {\r\n ...defaultTheme,\r\n ...options.theme,\r\n prefix: {\r\n ...defaultTheme.prefix,\r\n ...options.theme?.prefix,\r\n },\r\n };\r\n this.timestamps = options.timestamps ?? false;\r\n this.colors = options.colors ?? true;\r\n this.transport = { ...defaultTransport, ...options.transport };\r\n }\r\n\r\n private getTimestamp(): string {\r\n if (!this.timestamps) return '';\r\n const now = new Date();\r\n const time = now.toISOString().split('T')[1]?.split('.')[0];\r\n return gray(`[${time}] `);\r\n }\r\n\r\n private formatMessage(message: unknown[]): string {\r\n return message\r\n .map((m) => {\r\n if (typeof m === 'string') return m;\r\n try {\r\n return JSON.stringify(m, null, 2);\r\n } catch {\r\n return '[Unserializable Object]';\r\n }\r\n })\r\n .join(' ');\r\n }\r\n\r\n private stripAnsi(text: string): string {\r\n return text.replace(/\\x1b\\[[0-9;]*m/g, '');\r\n }\r\n\r\n private output(level: keyof Transport, formattedOutput: string): void {\r\n const finalOutput = this.colors ? formattedOutput : this.stripAnsi(formattedOutput);\r\n this.transport[level](finalOutput);\r\n }\r\n\r\n public success(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output(\r\n 'success',\r\n `${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(msg)}`,\r\n );\r\n }\r\n\r\n public error(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output(\r\n 'error',\r\n `${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(msg)}`,\r\n );\r\n }\r\n\r\n public warn(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output('warn', `${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(msg)}`);\r\n }\r\n\r\n public info(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output('info', `${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(msg)}`);\r\n }\r\n}\r\n\r\nexport const createLogger = (options?: LoggerOptions): Logger => {\r\n return new Logger(options);\r\n};\r\n"]}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../source/utils/ansi.ts","../source/theme.ts","../source/logger.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["export const isColorSupported =\r\n !process.env.NO_COLOR &&\r\n (process.env.FORCE_COLOR || process.stdout?.isTTY || process.env.TERM === 'xterm-256color');\r\n\r\nexport const format = (code: number, text: string): string => {\r\n if (!isColorSupported) return text;\r\n return `\\x1b[${code}m${text}\\x1b[0m`;\r\n};\r\n\r\nexport const reset = (text: string): string => format(0, text);\r\nexport const red = (text: string): string => format(31, text);\r\nexport const green = (text: string): string => format(32, text);\r\nexport const yellow = (text: string): string => format(33, text);\r\nexport const blue = (text: string): string => format(34, text);\r\nexport const magenta = (text: string): string => format(35, text);\r\nexport const cyan = (text: string): string => format(36, text);\r\nexport const white = (text: string): string => format(37, text);\r\nexport const gray = (text: string): string => format(90, text);\r\n\r\nexport const bold = (text: string): string => format(1, text);\r\nexport const dim = (text: string): string => format(2, text);\r\nexport const italic = (text: string): string => format(3, text);\r\nexport const underline = (text: string): string => format(4, text);\r\n","import { red, green, yellow, blue, gray, bold } from './utils/ansi.js';\r\n\r\nexport interface Theme {\r\n success: (msg: string) => string;\r\n error: (msg: string) => string;\r\n warn: (msg: string) => string;\r\n info: (msg: string) => string;\r\n prefix: {\r\n success: string;\r\n error: string;\r\n warn: string;\r\n info: string;\r\n };\r\n}\r\n\r\nexport const defaultTheme: Theme = {\r\n success: (msg: string) => green(msg),\r\n error: (msg: string) => red(bold(msg)),\r\n warn: (msg: string) => yellow(msg),\r\n info: (msg: string) => blue(msg),\r\n prefix: {\r\n success: green('✔'),\r\n error: red('✖'),\r\n warn: yellow('⚠'),\r\n info: blue('ℹ'),\r\n },\r\n};\r\n","import { defaultTheme, type Theme } from './theme.js';\r\nimport { gray } from './utils/ansi.js';\r\n\r\nexport interface Transport {\r\n success: (...args: unknown[]) => void;\r\n error: (...args: unknown[]) => void;\r\n warn: (...args: unknown[]) => void;\r\n info: (...args: unknown[]) => void;\r\n}\r\n\r\nexport interface LoggerOptions {\r\n theme?: Partial<Theme>;\r\n timestamps?: boolean;\r\n colors?: boolean;\r\n transport?: Partial<Transport>;\r\n}\r\n\r\nconst defaultTransport: Transport = {\r\n success: console.log,\r\n error: console.error,\r\n warn: console.warn,\r\n info: console.info,\r\n};\r\n\r\nexport class Logger {\r\n private theme: Theme;\r\n private timestamps: boolean;\r\n private colors: boolean;\r\n private transport: Transport;\r\n\r\n constructor(options: LoggerOptions = {}) {\r\n this.theme = {\r\n ...defaultTheme,\r\n ...options.theme,\r\n prefix: {\r\n ...defaultTheme.prefix,\r\n ...options.theme?.prefix,\r\n },\r\n };\r\n this.timestamps = options.timestamps ?? false;\r\n this.colors = options.colors ?? true;\r\n this.transport = { ...defaultTransport, ...options.transport };\r\n }\r\n\r\n private getTimestamp(): string {\r\n if (!this.timestamps) return '';\r\n const now = new Date();\r\n const time = now.toISOString().split('T')[1]?.split('.')[0];\r\n return gray(`[${time}] `);\r\n }\r\n\r\n private formatMessage(message: unknown[]): string {\r\n return message\r\n .map((m) => {\r\n if (typeof m === 'string') return m;\r\n try {\r\n return JSON.stringify(m, null, 2);\r\n } catch {\r\n return '[Unserializable Object]';\r\n }\r\n })\r\n .join(' ');\r\n }\r\n\r\n private stripAnsi(text: string): string {\r\n return text.replace(/\\x1b\\[[0-9;]*m/g, '');\r\n }\r\n\r\n private output(level: keyof Transport, formattedOutput: string): void {\r\n const finalOutput = this.colors ? formattedOutput : this.stripAnsi(formattedOutput);\r\n this.transport[level](finalOutput);\r\n }\r\n\r\n public success(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output(\r\n 'success',\r\n `${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(msg)}`,\r\n );\r\n }\r\n\r\n public error(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output(\r\n 'error',\r\n `${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(msg)}`,\r\n );\r\n }\r\n\r\n public warn(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output('warn', `${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(msg)}`);\r\n }\r\n\r\n public info(...message: unknown[]): void {\r\n const msg = this.formatMessage(message);\r\n this.output('info', `${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(msg)}`);\r\n }\r\n}\r\n\r\nexport const createLogger = (options?: LoggerOptions): Logger => {\r\n return new Logger(options);\r\n};\r\n"]}
|
package/media/Devink.png
DELETED
|
Binary file
|