@youpaichris/logger 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
+ <excludeFolder url="file://$MODULE_DIR$/temp" />
7
+ <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
+ </content>
9
+ <orderEntry type="inheritedJdk" />
10
+ <orderEntry type="sourceFolder" forTests="false" />
11
+ </component>
12
+ </module>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="JavaScriptLibraryMappings">
4
+ <includedPredefinedLibrary name="Node.js Core" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/Logger.iml" filepath="$PROJECT_DIR$/.idea/Logger.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
package/index.js ADDED
@@ -0,0 +1,231 @@
1
+ /*!
2
+ * JavaScript logger
3
+ * Logger - v1.0.0 (2021-01-15T14:55:51+0800)
4
+ * Chris / QQ:10512
5
+ */
6
+
7
+ const __warn = console.warn;
8
+ console.warn = function () {
9
+ if (arguments[3] === '\x1B[41m') {
10
+ arguments[4] = "\b" + arguments[4];
11
+ arguments[arguments.length-1] += consoleStyles['redBG'][1] + consoleStyles['bold'][1] + '\b';
12
+ }
13
+ return __warn.apply(this, arguments)
14
+ }
15
+ const loggerConfig = {
16
+ Date: (() => {
17
+ return Date
18
+ })(),
19
+ warn: (() => {
20
+ return console.warn
21
+ })(),
22
+ Error: (() => {
23
+ return Error
24
+ })(),
25
+ RegExp: (() => {
26
+ return RegExp
27
+ })(),
28
+
29
+ }
30
+
31
+ const _error = console.error;
32
+ console.error = (...msg) => {
33
+ let isOutput = true;
34
+ [...msg].forEach(v => {
35
+ if (v?.includes?.(`Setting the NODE_TLS_REJECT_UNAUTHORIZED`)) {
36
+ isOutput = false;
37
+ }
38
+ })
39
+ isOutput && _error(...msg);
40
+ }
41
+ Object.defineProperty(global, '__stack', {
42
+ get: function () {
43
+ return new Error().stack.split('\n').slice(2);
44
+ }
45
+ });
46
+ Object.defineProperty(global, '__line', {
47
+ get: function () {
48
+ const stack = new Error().stack.split('\n').slice(2);
49
+ const caller = stack[1].trim();
50
+ const index = caller.indexOf('at ') + 3;
51
+ const clean = caller.slice(index);
52
+ const parts = clean.split(':');
53
+ return parts[parts.length - 2];
54
+ }
55
+ });
56
+
57
+ function dateFormat(fmt, date) {
58
+ let ret;
59
+ const opt = {
60
+ "Y+": date.getFullYear().toString(),
61
+ "m+": (date.getMonth() + 1).toString(),
62
+ "d+": date.getDate().toString(),
63
+ "H+": date.getHours().toString(),
64
+ "M+": date.getMinutes().toString(),
65
+ "S+": date.getSeconds().toString(),
66
+ "ms+": (date.getMilliseconds().toString()).padStart(3, "0"),
67
+ };
68
+ for (let k in opt) {
69
+ ret = new loggerConfig.RegExp("(" + k + ")").exec(fmt);
70
+ if (ret) {
71
+ fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
72
+ }
73
+ }
74
+ return fmt;
75
+ }
76
+
77
+ const consoleStyles = {
78
+ 'bold': ['\x1B[1m', '\x1B[22m'],
79
+ 'italic': ['\x1B[3m', '\x1B[23m'],
80
+ 'underline': ['\x1B[4m', '\x1B[24m'],
81
+ 'inverse': ['\x1B[7m', '\x1B[27m'],
82
+ 'strikethrough': ['\x1B[9m', '\x1B[29m'],
83
+ 'white': ['\x1B[37m', '\x1B[39m'],
84
+ 'grey': ['\x1B[90m', '\x1B[39m'],
85
+ 'blue': ['\x1B[34m', '\x1B[39m'],
86
+ 'cyan': ['\x1B[36m', '\x1B[39m'],
87
+ 'green': ['\x1B[32m', '\x1B[39m'],
88
+ 'magenta': ['\x1B[35m', '\x1B[39m'],
89
+ 'red': ['\x1B[31m', '\x1B[39m'],
90
+ 'yellow': ['\x1B[33m', '\x1B[39m'],
91
+ 'whiteBG': ['\x1B[47m', '\x1B[49m'],
92
+ 'greyBG': ['\x1B[49;5;8m', '\x1B[49m'],
93
+ 'blueBG': ['\x1B[40m', '\x1B[49m'],
94
+ 'cyanBG': ['\x1B[46m', '\x1B[49m'],
95
+ 'greenBG': ['\x1B[42m', '\x1B[49m'],
96
+ 'magentaBG': ['\x1B[45m', '\x1B[49m'],
97
+ 'redBG': ['\x1B[41m', '\x1B[49m'],
98
+ 'yellowBG': ['\x1B[43m', '\x1B[49m']
99
+ }
100
+
101
+ function getCallerPath() {
102
+ const stack = new Error().stack.split('\n');
103
+ if (stack.length >= 4) {
104
+ const callerLine = stack[3];
105
+ let callerPath = callerLine.trim().substring(callerLine.indexOf('(') + 1, callerLine.lastIndexOf(':'));
106
+ callerPath = callerPath.replaceAll("\\", "/");
107
+ const regex = /\/([^\/]+:\d+:\d+)/;
108
+ const match = callerPath.match(regex);
109
+ if (match && match[1]) {
110
+ const fileNameWithLine = match[1];
111
+ return fileNameWithLine.split(':')[0];
112
+ }
113
+ }
114
+ return "Anonymous";
115
+ }
116
+
117
+ class Logger {
118
+ constructor(path) {
119
+ this.path = path ? path : getCallerPath();
120
+ }
121
+
122
+ info(...msg) {
123
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
124
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
125
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
126
+ consoleStyles['bold'][0] + consoleStyles['blue'][0] + "INFO " + consoleStyles['red'][0] + " |" +
127
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['blue'][0]}📡`, consoleStyles['blue'][0],
128
+ ...msg,
129
+ consoleStyles['blue'][1] + consoleStyles['bold'][1] + '\b'
130
+ );
131
+ };
132
+
133
+ warn(...msg) {
134
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
135
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
136
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
137
+ consoleStyles['bold'][0] + consoleStyles['yellow'][0] + "WARNING " + consoleStyles['red'][0] + " |" +
138
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['yellow'][0]}💡`, consoleStyles['yellow'][0],
139
+ ...msg,
140
+ consoleStyles['yellow'][1] + consoleStyles['bold'][1] + '\b'
141
+ );
142
+ };
143
+
144
+ error(...msg) {
145
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
146
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
147
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
148
+ consoleStyles['bold'][0] + consoleStyles['red'][0] + "ERROR " + consoleStyles['red'][0] + " |" +
149
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['red'][0]}🚨`, consoleStyles['red'][0],
150
+ ...msg,
151
+ consoleStyles['red'][1] + consoleStyles['bold'][1] + '\b'
152
+ );
153
+ };
154
+
155
+ success(...msg) {
156
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
157
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
158
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
159
+ consoleStyles['bold'][0] + consoleStyles['green'][0] + "SUCCESS " + consoleStyles['red'][0] + " |" +
160
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['green'][0]}🎯`, consoleStyles['green'][0],
161
+ ...msg,
162
+ consoleStyles['green'][1] + consoleStyles['bold'][1] + '\b'
163
+ );
164
+ };
165
+
166
+ debug(...msg) {
167
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
168
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
169
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
170
+ consoleStyles['bold'][0] + consoleStyles['magenta'][0] + "DEBUG " + consoleStyles['red'][0] + " |" +
171
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['magenta'][0]}🚧`, consoleStyles['magenta'][0],
172
+ ...msg,
173
+ consoleStyles['magenta'][1] + consoleStyles['bold'][1] + '\b'
174
+ );
175
+ };
176
+
177
+ call(...msg) {
178
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
179
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
180
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
181
+ consoleStyles['bold'][0] + consoleStyles['cyan'][0] + "CALL " + consoleStyles['red'][0] + " |" +
182
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['cyan'][0]}🔔`, consoleStyles['cyan'][0],
183
+ ...msg,
184
+ consoleStyles['cyan'][1] + consoleStyles['bold'][1] + '\b'
185
+ );
186
+ };
187
+
188
+ critical(...msg) {
189
+ let pathLine = this?.path ? `[${this.path}:${__line}]` : "Anonymous";
190
+ loggerConfig.warn(consoleStyles['green'][0] + dateFormat("YYYY-mm-dd HH:MM:SS.ms", new loggerConfig.Date()),
191
+ consoleStyles['red'][0] + consoleStyles['bold'][0] + "| " +
192
+ consoleStyles['bold'][0] + consoleStyles['redBG'][0] + consoleStyles['white'][0] + "CRITICAL" + consoleStyles['redBG'][1] + consoleStyles['red'][0] + " |" +
193
+ consoleStyles['blue'][0], ` ${pathLine.padEnd(22, " ")}${consoleStyles['cyan'][0]}🔴 ${consoleStyles['white'][0]}`, consoleStyles['redBG'][0],
194
+ ...msg
195
+ // consoleStyles['redBG'][1] + consoleStyles['bold'][1] + '\b'
196
+ );
197
+ };
198
+
199
+
200
+ }
201
+
202
+ // export default Logger;
203
+ /* es6:
204
+ How to use:
205
+ import Logger from "./Logger.js";
206
+ import path from "path";
207
+ import {fileURLToPath} from 'url';
208
+
209
+ const __filename = fileURLToPath(import.meta.url)
210
+ const logger = new Logger(path.basename(__filename));
211
+ logger.info("Hello World!");
212
+ logger.debug("Hello World!");
213
+ logger.warn("Hello World!");
214
+ logger.error("Hello World!");
215
+ logger.success("Hello World!");
216
+ logger.call("Hello World!");
217
+ */
218
+
219
+ module.exports = Logger;
220
+
221
+ /* How to use:
222
+ const logger = new Logger();
223
+ logger.info(`info`);
224
+ logger.debug("debug")
225
+ logger.warn("warn")
226
+ logger.call("call")
227
+ logger.error("error")
228
+ logger.critical("critical.", 2, 3, "4")
229
+ logger.info("info again");
230
+ */
231
+
package/package.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@youpaichris/logger",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "author": "",
10
+ "license": "ISC"
11
+ }