emilsoftware-utilities 1.3.6 → 1.3.7

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.
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.boundClass = exports.boundMethod = void 0;
3
+ exports.boundMethod = boundMethod;
4
+ exports.boundClass = boundClass;
5
+ exports.default = autobind;
4
6
  // DECORATOR
5
7
  /**
6
8
  * Return a descriptor removing the value and returning a getter
@@ -47,7 +49,6 @@ function boundMethod(target, key, descriptor) {
47
49
  }
48
50
  };
49
51
  }
50
- exports.boundMethod = boundMethod;
51
52
  /**
52
53
  * Use boundMethod to bind all methods on the target.prototype
53
54
  */
@@ -79,7 +80,6 @@ function boundClass(target) {
79
80
  });
80
81
  return target;
81
82
  }
82
- exports.boundClass = boundClass;
83
83
  function autobind() {
84
84
  var args = [];
85
85
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -92,4 +92,3 @@ function autobind() {
92
92
  // @ts-ignore
93
93
  return boundMethod.apply(void 0, args);
94
94
  }
95
- exports.default = autobind;
@@ -9,8 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
@@ -36,6 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.default = logExecutionTime;
39
40
  // DECORATOR
40
41
  var logger_1 = require("./logger");
41
42
  function logExecutionTime(fileName) {
@@ -76,4 +77,3 @@ function logExecutionTime(fileName) {
76
77
  return descriptor;
77
78
  };
78
79
  }
79
- exports.default = logExecutionTime;
@@ -1,3 +1,4 @@
1
+ import winston from "winston";
1
2
  export declare enum LogLevels {
2
3
  INFO = "INFO",
3
4
  ERROR = "ERROR",
@@ -8,10 +9,16 @@ export declare enum LogLevels {
8
9
  export declare class Logger {
9
10
  private readonly winstonLogger;
10
11
  private readonly tag;
12
+ private readonly logDirectory;
11
13
  private logFormat;
12
- private replaceAll;
13
- constructor(tag: string);
14
+ constructor(tag: string, config?: {
15
+ logDirectory?: string;
16
+ customFormat?: winston.Logform.Format;
17
+ transports?: winston.transport[];
18
+ });
19
+ private initializeDirectory;
14
20
  private getFileName;
21
+ private replaceAll;
15
22
  execStart(prefix?: string): number;
16
23
  execStop(prefix: string, startTime: number, error?: boolean): void;
17
24
  info(...data: Object[]): void;
@@ -19,6 +26,8 @@ export declare class Logger {
19
26
  debug(...data: Object[]): void;
20
27
  log(...data: Object[]): void;
21
28
  error(...data: Object[]): void;
22
- private test;
23
29
  private print;
30
+ static createLogger(tag: string, config?: {
31
+ logDirectory?: string;
32
+ }): Logger;
24
33
  }
package/dist/logger.js ADDED
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
47
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __rest = (this && this.__rest) || function (s, e) {
73
+ var t = {};
74
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
75
+ t[p] = s[p];
76
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
77
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
79
+ t[p[i]] = s[p[i]];
80
+ }
81
+ return t;
82
+ };
83
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
84
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
85
+ if (ar || !(i in from)) {
86
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
87
+ ar[i] = from[i];
88
+ }
89
+ }
90
+ return to.concat(ar || Array.prototype.slice.call(from));
91
+ };
92
+ var __importDefault = (this && this.__importDefault) || function (mod) {
93
+ return (mod && mod.__esModule) ? mod : { "default": mod };
94
+ };
95
+ Object.defineProperty(exports, "__esModule", { value: true });
96
+ exports.Logger = exports.LogLevels = void 0;
97
+ var winston_1 = __importDefault(require("winston"));
98
+ var path = __importStar(require("path"));
99
+ var fs_1 = require("fs");
100
+ var chalk_1 = __importDefault(require("chalk"));
101
+ var LogLevels;
102
+ (function (LogLevels) {
103
+ LogLevels["INFO"] = "INFO";
104
+ LogLevels["ERROR"] = "ERROR";
105
+ LogLevels["DEBUG"] = "DEBUG";
106
+ LogLevels["LOG"] = "LOG";
107
+ LogLevels["DATABASE"] = "DATABASE";
108
+ })(LogLevels || (exports.LogLevels = LogLevels = {}));
109
+ var Logger = /** @class */ (function () {
110
+ function Logger(tag, config) {
111
+ var _this = this;
112
+ this.tag = tag || "[UNTAGGED]";
113
+ this.logDirectory = (config === null || config === void 0 ? void 0 : config.logDirectory) || "logs";
114
+ // Default log format
115
+ this.logFormat =
116
+ (config === null || config === void 0 ? void 0 : config.customFormat) ||
117
+ winston_1.default.format.printf(function (_a) {
118
+ var timestamp = _a.timestamp, file = _a.file, level = _a.level, message = _a.message, meta = __rest(_a, ["timestamp", "file", "level", "message"]);
119
+ return JSON.stringify(__assign({ timestamp: timestamp || new Date().toISOString(), tag: _this.tag, file: _this.replaceAll(file + "", "\\", "/"), level: level, message: message }, meta));
120
+ });
121
+ this.initializeDirectory();
122
+ // Configure logger
123
+ this.winstonLogger = winston_1.default.createLogger({
124
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp(), this.logFormat),
125
+ transports: (config === null || config === void 0 ? void 0 : config.transports) || [
126
+ new winston_1.default.transports.File({
127
+ filename: path.join(this.logDirectory, this.getFileName() + ".json"),
128
+ }),
129
+ ],
130
+ levels: {
131
+ error: 1,
132
+ warn: 2,
133
+ info: 3,
134
+ http: 4,
135
+ verbose: 5,
136
+ debug: 6,
137
+ silly: 7,
138
+ database: 8,
139
+ },
140
+ });
141
+ // Add colors for console logging
142
+ winston_1.default.addColors({
143
+ database: "green",
144
+ error: "red",
145
+ info: "blue",
146
+ debug: "magenta",
147
+ log: "cyan",
148
+ });
149
+ }
150
+ Logger.prototype.initializeDirectory = function () {
151
+ return __awaiter(this, void 0, void 0, function () {
152
+ var exists, err_1;
153
+ return __generator(this, function (_a) {
154
+ switch (_a.label) {
155
+ case 0:
156
+ _a.trys.push([0, 4, , 5]);
157
+ return [4 /*yield*/, fs_1.promises.access(this.logDirectory).then(function () { return true; }).catch(function () { return false; })];
158
+ case 1:
159
+ exists = _a.sent();
160
+ if (!!exists) return [3 /*break*/, 3];
161
+ return [4 /*yield*/, fs_1.promises.mkdir(this.logDirectory)];
162
+ case 2:
163
+ _a.sent();
164
+ _a.label = 3;
165
+ case 3: return [3 /*break*/, 5];
166
+ case 4:
167
+ err_1 = _a.sent();
168
+ console.error("Error initializing log directory:", err_1);
169
+ return [3 /*break*/, 5];
170
+ case 5: return [2 /*return*/];
171
+ }
172
+ });
173
+ });
174
+ };
175
+ Logger.prototype.getFileName = function () {
176
+ var now = new Date();
177
+ var dateString = now.toISOString().split("T")[0]; // YYYY-MM-DD
178
+ return dateString;
179
+ };
180
+ Logger.prototype.replaceAll = function (string, match, replacer) {
181
+ return string.split(match).join(replacer);
182
+ };
183
+ Logger.prototype.execStart = function (prefix) {
184
+ if (prefix === void 0) { prefix = ""; }
185
+ this.print(LogLevels.INFO, "".concat(prefix, " - Execution started"));
186
+ return performance.now();
187
+ };
188
+ Logger.prototype.execStop = function (prefix, startTime, error) {
189
+ if (prefix === void 0) { prefix = ""; }
190
+ if (error === void 0) { error = false; }
191
+ var executionTime = performance.now() - startTime;
192
+ var message = "".concat(prefix, " - Execution ended ").concat(error ? "due to an error" : "successfully", ". Execution time: ").concat(executionTime.toFixed(2), " ms");
193
+ this.print(error ? LogLevels.ERROR : LogLevels.INFO, message);
194
+ };
195
+ Logger.prototype.info = function () {
196
+ var data = [];
197
+ for (var _i = 0; _i < arguments.length; _i++) {
198
+ data[_i] = arguments[_i];
199
+ }
200
+ this.print.apply(this, __spreadArray([LogLevels.INFO], data, false));
201
+ };
202
+ Logger.prototype.dbLog = function () {
203
+ var data = [];
204
+ for (var _i = 0; _i < arguments.length; _i++) {
205
+ data[_i] = arguments[_i];
206
+ }
207
+ this.print.apply(this, __spreadArray([LogLevels.DATABASE], data, false));
208
+ };
209
+ Logger.prototype.debug = function () {
210
+ var data = [];
211
+ for (var _i = 0; _i < arguments.length; _i++) {
212
+ data[_i] = arguments[_i];
213
+ }
214
+ this.print.apply(this, __spreadArray([LogLevels.DEBUG], data, false));
215
+ };
216
+ Logger.prototype.log = function () {
217
+ var data = [];
218
+ for (var _i = 0; _i < arguments.length; _i++) {
219
+ data[_i] = arguments[_i];
220
+ }
221
+ this.print.apply(this, __spreadArray([LogLevels.LOG], data, false));
222
+ };
223
+ Logger.prototype.error = function () {
224
+ var data = [];
225
+ for (var _i = 0; _i < arguments.length; _i++) {
226
+ data[_i] = arguments[_i];
227
+ }
228
+ this.print.apply(this, __spreadArray([LogLevels.ERROR], data, false));
229
+ };
230
+ Logger.prototype.print = function (level) {
231
+ var data = [];
232
+ for (var _i = 1; _i < arguments.length; _i++) {
233
+ data[_i - 1] = arguments[_i];
234
+ }
235
+ var now = new Date();
236
+ var fileName = this.tag.split("\\").pop() || this.tag;
237
+ // Attach metadata to Winston logger
238
+ this.winstonLogger.defaultMeta = {
239
+ file: fileName,
240
+ time: now,
241
+ level: level,
242
+ };
243
+ var logEntry = {
244
+ level: level.toLowerCase(),
245
+ message: __spreadArray([], data, true).join(","),
246
+ };
247
+ // Log to console with colors
248
+ switch (level) {
249
+ case LogLevels.INFO:
250
+ console.info(chalk_1.default.blue("[INFO][".concat(now, "][").concat(fileName, "]")), logEntry.message);
251
+ break;
252
+ case LogLevels.ERROR:
253
+ console.error(chalk_1.default.red("[ERROR][".concat(now, "][").concat(fileName, "]")), logEntry.message);
254
+ break;
255
+ case LogLevels.DEBUG:
256
+ console.debug(chalk_1.default.magenta("[DEBUG][".concat(now, "][").concat(fileName, "]")), logEntry.message);
257
+ break;
258
+ case LogLevels.LOG:
259
+ console.log(chalk_1.default.cyan("[LOG][".concat(now, "][").concat(fileName, "]")), logEntry.message);
260
+ break;
261
+ case LogLevels.DATABASE:
262
+ console.log(chalk_1.default.green("[DATABASE][".concat(now, "][").concat(fileName, "]")), logEntry.message);
263
+ break;
264
+ }
265
+ // Log to file
266
+ this.winstonLogger.log(logEntry);
267
+ };
268
+ Logger.createLogger = function (tag, config) {
269
+ return new Logger(tag, config);
270
+ };
271
+ return Logger;
272
+ }());
273
+ exports.Logger = Logger;
@@ -32,8 +32,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
32
  });
33
33
  };
34
34
  var __generator = (this && this.__generator) || function (thisArg, body) {
35
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
36
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.routesLogger = void 0;
3
+ exports.routesLogger = routesLogger;
4
4
  // Middleware per misurare il tempo di esecuzione
5
5
  function routesLogger(req, res, next, logger) {
6
6
  var start = new Date();
@@ -13,4 +13,3 @@ function routesLogger(req, res, next, logger) {
13
13
  // Continua l'esecuzione della catena middleware
14
14
  return next();
15
15
  }
16
- exports.routesLogger = routesLogger;
package/package.json CHANGED
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "name": "emilsoftware-utilities",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "Utilities for EmilSoftware",
5
- "main": "index.js",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
6
8
  "scripts": {
7
9
  "test": "echo \"Error: no test specified\" && exit 1",
8
10
  "build": "tsc",
@@ -19,12 +21,16 @@
19
21
  },
20
22
  "homepage": "https://github.com/mttdev382/emilsoftware-utilities#readme",
21
23
  "dependencies": {
22
- "es-node-firebird": "^1.2.5",
24
+ "chalk": "^5.3.0",
25
+ "es-node-firebird": "^1.2.6",
23
26
  "winston": "^3.11.0"
24
27
  },
25
28
  "devDependencies": {
26
29
  "@types/express": "^4.17.21",
27
30
  "@types/node": "^20.10.5",
28
31
  "typescript": "^5.3.3"
29
- }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ]
30
36
  }
package/.idea/.name DELETED
@@ -1 +0,0 @@
1
- emilsoftware-utilities
@@ -1,12 +0,0 @@
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>
@@ -1,10 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
5
- <Languages>
6
- <language minSize="63" name="TypeScript" />
7
- </Languages>
8
- </inspection_tool>
9
- </profile>
10
- </component>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
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/emilsoftware-utilities.iml" filepath="$PROJECT_DIR$/.idea/emilsoftware-utilities.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
package/logger.js DELETED
@@ -1,195 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
26
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
- if (ar || !(i in from)) {
28
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
- ar[i] = from[i];
30
- }
31
- }
32
- return to.concat(ar || Array.prototype.slice.call(from));
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.Logger = exports.LogLevels = void 0;
39
- var winston_1 = __importDefault(require("winston"));
40
- var path = __importStar(require("path"));
41
- var fs = __importStar(require("fs"));
42
- var LogLevels;
43
- (function (LogLevels) {
44
- LogLevels["INFO"] = "INFO";
45
- LogLevels["ERROR"] = "ERROR";
46
- LogLevels["DEBUG"] = "DEBUG";
47
- LogLevels["LOG"] = "LOG";
48
- LogLevels["DATABASE"] = "DATABASE";
49
- })(LogLevels || (exports.LogLevels = LogLevels = {}));
50
- var Logger = /** @class */ (function () {
51
- function Logger(tag) {
52
- var _this = this;
53
- this.tag = "[UNTAGGED]";
54
- this.logFormat = winston_1.default.format.printf(function (tmp) {
55
- var time = tmp.time, file = tmp.file, level = tmp.level, message = tmp.message;
56
- return "".concat(JSON.stringify({ time: time, file: _this.replaceAll(file, "\\", "/"), level: level, message: message }), ",");
57
- });
58
- var fileName = this.getFileName();
59
- var logsDirectory = "logs";
60
- var logFilePath = path.join(logsDirectory, fileName + ".json");
61
- if (!fs.existsSync(logsDirectory)) {
62
- fs.mkdirSync(logsDirectory);
63
- }
64
- this.tag = tag;
65
- winston_1.default.addColors({
66
- database: 'green',
67
- });
68
- this.winstonLogger = winston_1.default.createLogger({
69
- format: winston_1.default.format.json(),
70
- transports: [new winston_1.default.transports.File({ filename: logFilePath, format: this.logFormat })],
71
- levels: {
72
- error: 1, warn: 2, info: 3, http: 4, verbose: 5, debug: 6, silly: 7, database: 8
73
- }
74
- });
75
- }
76
- Logger.prototype.replaceAll = function (string, match, replacer) {
77
- var _a;
78
- // @ts-ignore
79
- return (_a = ("" + string)) === null || _a === void 0 ? void 0 : _a.replaceAll(match, replacer);
80
- };
81
- Logger.prototype.getFileName = function () {
82
- var now = new Date();
83
- var date = now.getDate();
84
- var dateString = "" + date;
85
- if (date < 10)
86
- dateString = "0" + dateString;
87
- var month = (now.getMonth() + 1);
88
- var monthString = "" + month;
89
- if (month < 10)
90
- monthString = "0" + monthString;
91
- var yearString = now.getFullYear() + "";
92
- return dateString + "-" + monthString + "-" + yearString;
93
- };
94
- Logger.prototype.execStart = function (prefix) {
95
- if (prefix === void 0) { prefix = ""; }
96
- this.print(LogLevels.INFO, "".concat(prefix, " - Execution started"));
97
- return performance.now();
98
- };
99
- Logger.prototype.execStop = function (prefix, startTime, error) {
100
- if (prefix === void 0) { prefix = ""; }
101
- if (error === void 0) { error = false; }
102
- switch (error) {
103
- case true: {
104
- this.print(LogLevels.ERROR, "".concat(prefix, " - Execution ended due to an error. Execution time: ").concat(performance.now() - startTime, " ms"));
105
- break;
106
- }
107
- case false: {
108
- this.print(LogLevels.INFO, "".concat(prefix, " - Execution ended successfully. Execution time: ").concat(performance.now() - startTime, " ms"));
109
- break;
110
- }
111
- }
112
- };
113
- Logger.prototype.info = function () {
114
- var data = [];
115
- for (var _i = 0; _i < arguments.length; _i++) {
116
- data[_i] = arguments[_i];
117
- }
118
- this.print.apply(this, __spreadArray([LogLevels.INFO], data, false));
119
- };
120
- Logger.prototype.dbLog = function () {
121
- var data = [];
122
- for (var _i = 0; _i < arguments.length; _i++) {
123
- data[_i] = arguments[_i];
124
- }
125
- this.print.apply(this, __spreadArray([LogLevels.DATABASE], data, false));
126
- };
127
- Logger.prototype.debug = function () {
128
- var data = [];
129
- for (var _i = 0; _i < arguments.length; _i++) {
130
- data[_i] = arguments[_i];
131
- }
132
- this.print.apply(this, __spreadArray([LogLevels.DEBUG], data, false));
133
- };
134
- Logger.prototype.log = function () {
135
- var data = [];
136
- for (var _i = 0; _i < arguments.length; _i++) {
137
- data[_i] = arguments[_i];
138
- }
139
- this.print.apply(this, __spreadArray([LogLevels.LOG], data, false));
140
- };
141
- Logger.prototype.error = function () {
142
- var data = [];
143
- for (var _i = 0; _i < arguments.length; _i++) {
144
- data[_i] = arguments[_i];
145
- }
146
- this.print.apply(this, __spreadArray([LogLevels.ERROR], data, false));
147
- };
148
- Logger.prototype.test = function () {
149
- var startTime = this.execStart("test");
150
- this.execStop("test", startTime);
151
- this.debug("test");
152
- this.log("test");
153
- this.error("test");
154
- this.dbLog("test");
155
- };
156
- Logger.prototype.print = function (level) {
157
- if (level === void 0) { level = LogLevels.INFO; }
158
- var data = [];
159
- for (var _i = 1; _i < arguments.length; _i++) {
160
- data[_i - 1] = arguments[_i];
161
- }
162
- var now = new Date();
163
- var tag = this.tag.split("\\").pop();
164
- this.winstonLogger.defaultMeta = {
165
- file: tag, time: now,
166
- level: level
167
- };
168
- var logEntry = { level: level.toLowerCase(), message: __spreadArray([], data, true).join(",") };
169
- //JSON.stringify([...data]);
170
- switch (level) {
171
- case LogLevels.INFO:
172
- this.winstonLogger.info(logEntry);
173
- console.info("[INFO][".concat(now, "][").concat(tag, "]"), logEntry.message);
174
- break;
175
- case LogLevels.ERROR:
176
- this.winstonLogger.error(logEntry);
177
- console.error("[ERROR][".concat(now, "][").concat(tag, "]"), logEntry.message);
178
- break;
179
- case LogLevels.DEBUG:
180
- this.winstonLogger.debug(logEntry);
181
- console.debug("[DEBUG][".concat(now, "][").concat(tag, "]"), logEntry.message);
182
- break;
183
- case LogLevels.LOG: {
184
- this.winstonLogger.log(logEntry);
185
- console.log("[LOG][".concat(now, "][").concat(tag, "]"), logEntry.message);
186
- }
187
- case LogLevels.DATABASE: {
188
- this.winstonLogger.info(logEntry);
189
- console.log("[DATABASE][".concat(now, "][").concat(tag, "]"), logEntry.message);
190
- }
191
- }
192
- };
193
- return Logger;
194
- }());
195
- exports.Logger = Logger;