devink 1.0.0 → 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.
- package/README.md +10 -5
- package/dist/index.js +1 -141
- package/dist/index.mjs +1 -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,8 +1,13 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<br>
|
|
3
|
+
<br>
|
|
4
|
+
<img width="320" src="media/Devink.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)
|
package/dist/index.js
CHANGED
|
@@ -1,141 +1 @@
|
|
|
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 l=Object.defineProperty;var x=(t,r)=>{for(var s in r)l(t,s,{get:r[s],enumerable:true});};var h={};x(h,{blue:()=>g,bold:()=>m,cyan:()=>d,dim:()=>b,format:()=>e,gray:()=>c,green:()=>o,isColorSupported:()=>u,italic:()=>$,magenta:()=>T,red:()=>n,reset:()=>w,underline:()=>y,white:()=>v,yellow:()=>i});var u=!process.env.NO_COLOR&&(process.env.FORCE_COLOR||process.stdout?.isTTY||process.env.TERM==="xterm-256color"),e=(t,r)=>u?`\x1B[${t}m${r}\x1B[0m`:r,w=t=>e(0,t),n=t=>e(31,t),o=t=>e(32,t),i=t=>e(33,t),g=t=>e(34,t),T=t=>e(35,t),d=t=>e(36,t),v=t=>e(37,t),c=t=>e(90,t),m=t=>e(1,t),b=t=>e(2,t),$=t=>e(3,t),y=t=>e(4,t);var p={success:t=>o(t),error:t=>n(m(t)),warn:t=>i(t),info:t=>g(t),prefix:{success:o("\u2714"),error:n("\u2716"),warn:i("\u26A0"),info:g("\u2139")}};var O={success:console.log,error:console.error,warn:console.warn,info:console.info},a=class{theme;timestamps;colors;transport;constructor(r={}){this.theme={...p,...r.theme,prefix:{...p.prefix,...r.theme?.prefix}},this.timestamps=r.timestamps??false,this.colors=r.colors??true,this.transport={...O,...r.transport};}getTimestamp(){if(!this.timestamps)return "";let s=new Date().toISOString().split("T")[1]?.split(".")[0];return c(`[${s}] `)}formatMessage(r){return r.map(s=>{if(typeof s=="string")return s;try{return JSON.stringify(s,null,2)}catch{return "[Unserializable Object]"}}).join(" ")}stripAnsi(r){return r.replace(/\x1b\[[0-9;]*m/g,"")}output(r,s){let f=this.colors?s:this.stripAnsi(s);this.transport[r](f);}success(...r){let s=this.formatMessage(r);this.output("success",`${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(s)}`);}error(...r){let s=this.formatMessage(r);this.output("error",`${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(s)}`);}warn(...r){let s=this.formatMessage(r);this.output("warn",`${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(s)}`);}info(...r){let s=this.formatMessage(r);this.output("info",`${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(s)}`);}},k=t=>new a(t);exports.Logger=a;exports.ansi=h;exports.createLogger=k;exports.defaultTheme=p;
|
package/dist/index.mjs
CHANGED
|
@@ -1,136 +1 @@
|
|
|
1
|
-
var
|
|
2
|
-
var __export = (target, all) => {
|
|
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 l=Object.defineProperty;var x=(t,r)=>{for(var s in r)l(t,s,{get:r[s],enumerable:true});};var h={};x(h,{blue:()=>g,bold:()=>m,cyan:()=>d,dim:()=>b,format:()=>e,gray:()=>c,green:()=>o,isColorSupported:()=>u,italic:()=>$,magenta:()=>T,red:()=>n,reset:()=>w,underline:()=>y,white:()=>v,yellow:()=>i});var u=!process.env.NO_COLOR&&(process.env.FORCE_COLOR||process.stdout?.isTTY||process.env.TERM==="xterm-256color"),e=(t,r)=>u?`\x1B[${t}m${r}\x1B[0m`:r,w=t=>e(0,t),n=t=>e(31,t),o=t=>e(32,t),i=t=>e(33,t),g=t=>e(34,t),T=t=>e(35,t),d=t=>e(36,t),v=t=>e(37,t),c=t=>e(90,t),m=t=>e(1,t),b=t=>e(2,t),$=t=>e(3,t),y=t=>e(4,t);var p={success:t=>o(t),error:t=>n(m(t)),warn:t=>i(t),info:t=>g(t),prefix:{success:o("\u2714"),error:n("\u2716"),warn:i("\u26A0"),info:g("\u2139")}};var O={success:console.log,error:console.error,warn:console.warn,info:console.info},a=class{theme;timestamps;colors;transport;constructor(r={}){this.theme={...p,...r.theme,prefix:{...p.prefix,...r.theme?.prefix}},this.timestamps=r.timestamps??false,this.colors=r.colors??true,this.transport={...O,...r.transport};}getTimestamp(){if(!this.timestamps)return "";let s=new Date().toISOString().split("T")[1]?.split(".")[0];return c(`[${s}] `)}formatMessage(r){return r.map(s=>{if(typeof s=="string")return s;try{return JSON.stringify(s,null,2)}catch{return "[Unserializable Object]"}}).join(" ")}stripAnsi(r){return r.replace(/\x1b\[[0-9;]*m/g,"")}output(r,s){let f=this.colors?s:this.stripAnsi(s);this.transport[r](f);}success(...r){let s=this.formatMessage(r);this.output("success",`${this.getTimestamp()}${this.theme.prefix.success} ${this.theme.success(s)}`);}error(...r){let s=this.formatMessage(r);this.output("error",`${this.getTimestamp()}${this.theme.prefix.error} ${this.theme.error(s)}`);}warn(...r){let s=this.formatMessage(r);this.output("warn",`${this.getTimestamp()}${this.theme.prefix.warn} ${this.theme.warn(s)}`);}info(...r){let s=this.formatMessage(r);this.output("info",`${this.getTimestamp()}${this.theme.prefix.info} ${this.theme.info(s)}`);}},k=t=>new a(t);export{a as Logger,h as ansi,k as createLogger,p as defaultTheme};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devink",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
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
|