emilsoftware-utilities 1.3.10 → 1.3.11

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,19 @@
1
+ export declare class Autobind {
2
+ /**
3
+ * Binds a method to the instance, ensuring `this` references are preserved.
4
+ */
5
+ static boundMethod(target: any, key: any, descriptor: any): {
6
+ configurable: boolean;
7
+ get(): any;
8
+ set(value: any): void;
9
+ };
10
+ /**
11
+ * Applies `boundMethod` to all methods in the class prototype.
12
+ */
13
+ static boundClass(target: any): any;
14
+ /**
15
+ * Retrieves all property keys (including symbols) from the prototype.
16
+ */
17
+ private static getPrototypeKeys;
18
+ static apply(...args: any[]): any;
19
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Autobind = void 0;
4
+ var Autobind = /** @class */ (function () {
5
+ function Autobind() {
6
+ }
7
+ /**
8
+ * Binds a method to the instance, ensuring `this` references are preserved.
9
+ */
10
+ Autobind.boundMethod = function (target, key, descriptor) {
11
+ var fn = descriptor === null || descriptor === void 0 ? void 0 : descriptor.value;
12
+ if (typeof fn !== 'function') {
13
+ throw new TypeError("@boundMethod decorator can only be applied to methods, not: ".concat(typeof fn));
14
+ }
15
+ var definingProperty = false;
16
+ return {
17
+ configurable: true,
18
+ get: function () {
19
+ if (definingProperty ||
20
+ this === target.prototype ||
21
+ Object.prototype.hasOwnProperty.call(this, key) ||
22
+ typeof fn !== 'function') {
23
+ return fn;
24
+ }
25
+ var boundFn = fn.bind(this);
26
+ definingProperty = true;
27
+ Object.defineProperty(this, key, {
28
+ configurable: true,
29
+ get: function () {
30
+ return boundFn;
31
+ },
32
+ set: function (value) {
33
+ fn = value;
34
+ delete this[key];
35
+ },
36
+ });
37
+ definingProperty = false;
38
+ return boundFn;
39
+ },
40
+ set: function (value) {
41
+ fn = value;
42
+ },
43
+ };
44
+ };
45
+ /**
46
+ * Applies `boundMethod` to all methods in the class prototype.
47
+ */
48
+ Autobind.boundClass = function (target) {
49
+ var keys = Autobind.getPrototypeKeys(target.prototype);
50
+ keys.forEach(function (key) {
51
+ if (key === 'constructor')
52
+ return;
53
+ var descriptor = Object.getOwnPropertyDescriptor(target.prototype, key);
54
+ if (descriptor && typeof descriptor.value === 'function') {
55
+ Object.defineProperty(target.prototype, key, Autobind.boundMethod(target, key, descriptor));
56
+ }
57
+ });
58
+ return target;
59
+ };
60
+ /**
61
+ * Retrieves all property keys (including symbols) from the prototype.
62
+ */
63
+ Autobind.getPrototypeKeys = function (proto) {
64
+ if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {
65
+ return Reflect.ownKeys(proto);
66
+ }
67
+ var keys = Object.getOwnPropertyNames(proto);
68
+ if (typeof Object.getOwnPropertySymbols === 'function') {
69
+ return keys.concat(Object.getOwnPropertySymbols(proto));
70
+ }
71
+ return keys;
72
+ };
73
+ Autobind.apply = function () {
74
+ var args = [];
75
+ for (var _i = 0; _i < arguments.length; _i++) {
76
+ args[_i] = arguments[_i];
77
+ }
78
+ if (args.length === 1) {
79
+ return Autobind.boundClass(args[0]);
80
+ }
81
+ return Autobind.boundMethod(args[0], args[1], args[2]);
82
+ };
83
+ return Autobind;
84
+ }());
85
+ exports.Autobind = Autobind;
@@ -1,4 +1,4 @@
1
- import { Logger } from "./logger";
1
+ import { Logger } from "./Logger";
2
2
  import { Options } from "es-node-firebird";
3
3
  export declare abstract class DatabaseUpdater {
4
4
  protected static options: Options;
@@ -37,8 +37,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.DatabaseUpdater = void 0;
40
- var orm_1 = require("./orm");
41
- var logger_1 = require("./logger");
40
+ var Orm_1 = require("./Orm");
41
+ var Logger_1 = require("./Logger");
42
42
  var DatabaseUpdater = /** @class */ (function () {
43
43
  function DatabaseUpdater() {
44
44
  }
@@ -58,7 +58,7 @@ var DatabaseUpdater = /** @class */ (function () {
58
58
  switch (_a.label) {
59
59
  case 0:
60
60
  query = "\n SELECT 1 \n FROM RDB$RELATION_FIELDS \n WHERE RDB$RELATION_NAME = ? \n AND RDB$FIELD_NAME = ?";
61
- return [4 /*yield*/, orm_1.Orm.query(options, query, [
61
+ return [4 /*yield*/, Orm_1.Orm.query(options, query, [
62
62
  table.toUpperCase(),
63
63
  column.toUpperCase(),
64
64
  ])];
@@ -79,7 +79,7 @@ var DatabaseUpdater = /** @class */ (function () {
79
79
  var parameters;
80
80
  return __generator(this, function (_a) {
81
81
  switch (_a.label) {
82
- case 0: return [4 /*yield*/, orm_1.Orm.query(options, "SELECT CODPAR, DESPAR FROM PARAMETRI WHERE CODPAR = ?", ["VersioneDB"])];
82
+ case 0: return [4 /*yield*/, Orm_1.Orm.query(options, "SELECT CODPAR, DESPAR FROM PARAMETRI WHERE CODPAR = ?", ["VersioneDB"])];
83
83
  case 1:
84
84
  parameters = (_a.sent());
85
85
  return [2 /*return*/, parameters.length > 0 ? parameters[0].DESPAR : null];
@@ -96,7 +96,7 @@ var DatabaseUpdater = /** @class */ (function () {
96
96
  return __awaiter(this, void 0, void 0, function () {
97
97
  return __generator(this, function (_a) {
98
98
  switch (_a.label) {
99
- case 0: return [4 /*yield*/, orm_1.Orm.query(options, "UPDATE PARAMETRI SET DESPAR = ? WHERE CODPAR = ?", [
99
+ case 0: return [4 /*yield*/, Orm_1.Orm.query(options, "UPDATE PARAMETRI SET DESPAR = ? WHERE CODPAR = ?", [
100
100
  version,
101
101
  "VersioneDB",
102
102
  ])];
@@ -126,16 +126,16 @@ var DatabaseUpdater = /** @class */ (function () {
126
126
  if (columnAlreadyExists)
127
127
  return [2 /*return*/];
128
128
  createTableQuery = "\n CREATE TABLE PARAMETRI (\n CODPAR VARCHAR(15) NOT NULL,\n DESPAR VARCHAR(255),\n NOTE BLOB SUB_TYPE 1 SEGMENT SIZE 80,\n GRUPPO VARCHAR(20)\n );";
129
- return [4 /*yield*/, orm_1.Orm.query(options, createTableQuery)];
129
+ return [4 /*yield*/, Orm_1.Orm.query(options, createTableQuery)];
130
130
  case 2:
131
131
  _a.sent();
132
- return [4 /*yield*/, orm_1.Orm.query(options, "ALTER TABLE PARAMETRI ADD CONSTRAINT PK_PARAMETRI PRIMARY KEY (CODPAR);")];
132
+ return [4 /*yield*/, Orm_1.Orm.query(options, "ALTER TABLE PARAMETRI ADD CONSTRAINT PK_PARAMETRI PRIMARY KEY (CODPAR);")];
133
133
  case 3:
134
134
  _a.sent();
135
- return [4 /*yield*/, orm_1.Orm.query(options, "GRANT ALL ON PARAMETRI TO PUBLIC;")];
135
+ return [4 /*yield*/, Orm_1.Orm.query(options, "GRANT ALL ON PARAMETRI TO PUBLIC;")];
136
136
  case 4:
137
137
  _a.sent();
138
- return [4 /*yield*/, orm_1.Orm.query(options, "GRANT SELECT ON PARAMETRI TO TABX;")];
138
+ return [4 /*yield*/, Orm_1.Orm.query(options, "GRANT SELECT ON PARAMETRI TO TABX;")];
139
139
  case 5:
140
140
  _a.sent();
141
141
  return [3 /*break*/, 7];
@@ -148,7 +148,7 @@ var DatabaseUpdater = /** @class */ (function () {
148
148
  versioneDb = _a.sent();
149
149
  if (versioneDb !== null && versioneDb !== undefined)
150
150
  return [2 /*return*/];
151
- return [4 /*yield*/, orm_1.Orm.query(options, "INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?,?,?,?)", ["VersioneDB", "0.0a", "versione", null])];
151
+ return [4 /*yield*/, Orm_1.Orm.query(options, "INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?,?,?,?)", ["VersioneDB", "0.0a", "versione", null])];
152
152
  case 9:
153
153
  _a.sent();
154
154
  return [2 /*return*/];
@@ -156,7 +156,7 @@ var DatabaseUpdater = /** @class */ (function () {
156
156
  });
157
157
  });
158
158
  };
159
- DatabaseUpdater.logger = new logger_1.Logger(DatabaseUpdater.name);
159
+ DatabaseUpdater.logger = new Logger_1.Logger(DatabaseUpdater.name);
160
160
  return DatabaseUpdater;
161
161
  }());
162
162
  exports.DatabaseUpdater = DatabaseUpdater;
@@ -0,0 +1,10 @@
1
+ export declare class ExecutionTimeLogger {
2
+ /**
3
+ * Wraps a method to log its execution time and errors.
4
+ * @param target The target object.
5
+ * @param propertyKey The name of the method.
6
+ * @param descriptor The property descriptor of the method.
7
+ * @description use ExecutionTimeLogger.apply on any method
8
+ */
9
+ static apply(target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
10
+ }
@@ -36,26 +36,37 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = logExecutionTime;
40
- // DECORATOR
41
- var logger_1 = require("./logger");
42
- function logExecutionTime(fileName) {
43
- if (fileName === void 0) { fileName = ""; }
44
- return function (target, propertyKey, descriptor) {
45
- var logger = new logger_1.Logger(fileName);
39
+ exports.ExecutionTimeLogger = void 0;
40
+ var _1 = require("./");
41
+ var ExecutionTimeLogger = /** @class */ (function () {
42
+ function ExecutionTimeLogger() {
43
+ }
44
+ /**
45
+ * Wraps a method to log its execution time and errors.
46
+ * @param target The target object.
47
+ * @param propertyKey The name of the method.
48
+ * @param descriptor The property descriptor of the method.
49
+ * @description use ExecutionTimeLogger.apply on any method
50
+ */
51
+ ExecutionTimeLogger.apply = function (target, propertyKey, descriptor) {
46
52
  var originalMethod = descriptor.value;
53
+ if (typeof originalMethod !== "function") {
54
+ throw new TypeError("ExecutionTimeLogger can only be applied to methods, not: ".concat(typeof originalMethod));
55
+ }
47
56
  descriptor.value = function () {
48
57
  var args = [];
49
58
  for (var _i = 0; _i < arguments.length; _i++) {
50
59
  args[_i] = arguments[_i];
51
60
  }
52
61
  return __awaiter(this, void 0, void 0, function () {
53
- var start, result, end, durationInMilliseconds, error_1;
62
+ var className, logger, start, result, end, durationInMilliseconds, error_1;
54
63
  return __generator(this, function (_a) {
55
64
  switch (_a.label) {
56
65
  case 0:
66
+ className = target.constructor.name;
67
+ logger = new _1.Logger(className);
57
68
  start = process.hrtime();
58
- logger.info(" ".concat(propertyKey, " method execution started . . ."));
69
+ logger.info("[".concat(className, "] ").concat(propertyKey, " method execution started . . ."));
59
70
  _a.label = 1;
60
71
  case 1:
61
72
  _a.trys.push([1, 3, , 4]);
@@ -64,10 +75,11 @@ function logExecutionTime(fileName) {
64
75
  result = _a.sent();
65
76
  end = process.hrtime(start);
66
77
  durationInMilliseconds = end[0] * 1000 + end[1] / 1e6;
67
- logger.info(" ".concat(propertyKey, " method took ").concat(durationInMilliseconds.toFixed(2), " ms to execute"));
78
+ logger.info("[".concat(className, "] ").concat(propertyKey, " method took ").concat(durationInMilliseconds.toFixed(2), " ms to execute"));
68
79
  return [2 /*return*/, result];
69
80
  case 3:
70
81
  error_1 = _a.sent();
82
+ logger.error("[".concat(className, "] ").concat(propertyKey, " method threw an error: ").concat(error_1.message));
71
83
  throw error_1;
72
84
  case 4: return [2 /*return*/];
73
85
  }
@@ -76,4 +88,6 @@ function logExecutionTime(fileName) {
76
88
  };
77
89
  return descriptor;
78
90
  };
79
- }
91
+ return ExecutionTimeLogger;
92
+ }());
93
+ exports.ExecutionTimeLogger = ExecutionTimeLogger;
@@ -0,0 +1,35 @@
1
+ import winston from "winston";
2
+ export declare enum LogLevels {
3
+ INFO = "INFO",
4
+ ERROR = "ERROR",
5
+ WARNING = "WARNING",
6
+ DEBUG = "DEBUG",
7
+ LOG = "LOG",
8
+ DATABASE = "DATABASE"
9
+ }
10
+ export declare class Logger {
11
+ private readonly winstonLogger;
12
+ private readonly tag;
13
+ private readonly logDirectory;
14
+ private logFormat;
15
+ constructor(tag: string, config?: {
16
+ logDirectory?: string;
17
+ customFormat?: winston.Logform.Format;
18
+ transports?: winston.transport[];
19
+ });
20
+ private initializeDirectory;
21
+ private getFileName;
22
+ private replaceAll;
23
+ execStart(prefix?: string): number;
24
+ execStop(prefix: string, startTime: number, error?: boolean): void;
25
+ info(...data: Object[]): void;
26
+ dbLog(...data: Object[]): void;
27
+ debug(...data: Object[]): void;
28
+ warning(...data: Object[]): void;
29
+ log(...data: Object[]): void;
30
+ error(...data: Object[]): void;
31
+ private print;
32
+ static createLogger(tag: string, config?: {
33
+ logDirectory?: string;
34
+ }): Logger;
35
+ }
package/dist/Logger.js ADDED
@@ -0,0 +1,283 @@
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 colorette_1 = require("colorette");
101
+ var LogLevels;
102
+ (function (LogLevels) {
103
+ LogLevels["INFO"] = "INFO";
104
+ LogLevels["ERROR"] = "ERROR";
105
+ LogLevels["WARNING"] = "WARNING";
106
+ LogLevels["DEBUG"] = "DEBUG";
107
+ LogLevels["LOG"] = "LOG";
108
+ LogLevels["DATABASE"] = "DATABASE";
109
+ })(LogLevels || (exports.LogLevels = LogLevels = {}));
110
+ var Logger = /** @class */ (function () {
111
+ function Logger(tag, config) {
112
+ var _this = this;
113
+ this.tag = tag || "[UNTAGGED]";
114
+ this.logDirectory = (config === null || config === void 0 ? void 0 : config.logDirectory) || "logs";
115
+ // Default log format
116
+ this.logFormat =
117
+ (config === null || config === void 0 ? void 0 : config.customFormat) ||
118
+ winston_1.default.format.printf(function (_a) {
119
+ var timestamp = _a.timestamp, file = _a.file, level = _a.level, message = _a.message, meta = __rest(_a, ["timestamp", "file", "level", "message"]);
120
+ return JSON.stringify(__assign({ timestamp: timestamp || new Date().toISOString(), tag: _this.tag, file: _this.replaceAll(file + "", "\\", "/"), level: level, message: message }, meta));
121
+ });
122
+ this.initializeDirectory();
123
+ // Configure logger
124
+ this.winstonLogger = winston_1.default.createLogger({
125
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp(), this.logFormat),
126
+ transports: (config === null || config === void 0 ? void 0 : config.transports) || [
127
+ new winston_1.default.transports.File({
128
+ filename: path.join(this.logDirectory, this.getFileName() + ".json"),
129
+ }),
130
+ ],
131
+ levels: {
132
+ error: 1,
133
+ warn: 2,
134
+ warning: 2,
135
+ info: 3,
136
+ http: 4,
137
+ verbose: 5,
138
+ debug: 6,
139
+ silly: 7,
140
+ database: 8,
141
+ },
142
+ });
143
+ // Add colors for console logging
144
+ winston_1.default.addColors({
145
+ database: "green",
146
+ error: "red",
147
+ warning: "yellow",
148
+ info: "blue",
149
+ debug: "magenta",
150
+ log: "cyan",
151
+ });
152
+ }
153
+ Logger.prototype.initializeDirectory = function () {
154
+ return __awaiter(this, void 0, void 0, function () {
155
+ var exists, err_1;
156
+ return __generator(this, function (_a) {
157
+ switch (_a.label) {
158
+ case 0:
159
+ _a.trys.push([0, 4, , 5]);
160
+ return [4 /*yield*/, fs_1.promises.access(this.logDirectory).then(function () { return true; }).catch(function () { return false; })];
161
+ case 1:
162
+ exists = _a.sent();
163
+ if (!!exists) return [3 /*break*/, 3];
164
+ return [4 /*yield*/, fs_1.promises.mkdir(this.logDirectory)];
165
+ case 2:
166
+ _a.sent();
167
+ _a.label = 3;
168
+ case 3: return [3 /*break*/, 5];
169
+ case 4:
170
+ err_1 = _a.sent();
171
+ console.error("Error initializing log directory:", err_1);
172
+ return [3 /*break*/, 5];
173
+ case 5: return [2 /*return*/];
174
+ }
175
+ });
176
+ });
177
+ };
178
+ Logger.prototype.getFileName = function () {
179
+ var now = new Date();
180
+ var dateString = now.toISOString().split("T")[0]; // YYYY-MM-DD
181
+ return dateString;
182
+ };
183
+ Logger.prototype.replaceAll = function (string, match, replacer) {
184
+ return string.split(match).join(replacer);
185
+ };
186
+ Logger.prototype.execStart = function (prefix) {
187
+ if (prefix === void 0) { prefix = ""; }
188
+ this.print(LogLevels.INFO, "".concat(prefix, " - Execution started"));
189
+ return performance.now();
190
+ };
191
+ Logger.prototype.execStop = function (prefix, startTime, error) {
192
+ if (prefix === void 0) { prefix = ""; }
193
+ if (error === void 0) { error = false; }
194
+ var executionTime = performance.now() - startTime;
195
+ var message = "".concat(prefix, " - Execution ended ").concat(error ? "due to an error" : "successfully", ". Execution time: ").concat(executionTime.toFixed(2), " ms");
196
+ this.print(error ? LogLevels.ERROR : LogLevels.INFO, message);
197
+ };
198
+ Logger.prototype.info = function () {
199
+ var data = [];
200
+ for (var _i = 0; _i < arguments.length; _i++) {
201
+ data[_i] = arguments[_i];
202
+ }
203
+ this.print.apply(this, __spreadArray([LogLevels.INFO], data, false));
204
+ };
205
+ Logger.prototype.dbLog = function () {
206
+ var data = [];
207
+ for (var _i = 0; _i < arguments.length; _i++) {
208
+ data[_i] = arguments[_i];
209
+ }
210
+ this.print.apply(this, __spreadArray([LogLevels.DATABASE], data, false));
211
+ };
212
+ Logger.prototype.debug = function () {
213
+ var data = [];
214
+ for (var _i = 0; _i < arguments.length; _i++) {
215
+ data[_i] = arguments[_i];
216
+ }
217
+ this.print.apply(this, __spreadArray([LogLevels.DEBUG], data, false));
218
+ };
219
+ Logger.prototype.warning = function () {
220
+ var data = [];
221
+ for (var _i = 0; _i < arguments.length; _i++) {
222
+ data[_i] = arguments[_i];
223
+ }
224
+ this.print.apply(this, __spreadArray([LogLevels.WARNING], data, false));
225
+ };
226
+ Logger.prototype.log = function () {
227
+ var data = [];
228
+ for (var _i = 0; _i < arguments.length; _i++) {
229
+ data[_i] = arguments[_i];
230
+ }
231
+ this.print.apply(this, __spreadArray([LogLevels.LOG], data, false));
232
+ };
233
+ Logger.prototype.error = function () {
234
+ var data = [];
235
+ for (var _i = 0; _i < arguments.length; _i++) {
236
+ data[_i] = arguments[_i];
237
+ }
238
+ this.print.apply(this, __spreadArray([LogLevels.ERROR], data, false));
239
+ };
240
+ Logger.prototype.print = function (level) {
241
+ var data = [];
242
+ for (var _i = 1; _i < arguments.length; _i++) {
243
+ data[_i - 1] = arguments[_i];
244
+ }
245
+ var now = new Date();
246
+ var fileName = this.tag.split("\\").pop() || this.tag;
247
+ // Attach metadata to Winston logger
248
+ this.winstonLogger.defaultMeta = {
249
+ file: fileName,
250
+ time: now,
251
+ level: level,
252
+ };
253
+ var logEntry = {
254
+ level: level.toLowerCase(),
255
+ message: __spreadArray([], data, true).join(","),
256
+ };
257
+ // Log to console with colors
258
+ switch (level) {
259
+ case LogLevels.INFO:
260
+ console.info((0, colorette_1.blue)("[INFO][".concat(now, "][").concat(fileName, "]")), logEntry.message);
261
+ break;
262
+ case LogLevels.ERROR:
263
+ console.error((0, colorette_1.red)("[ERROR][".concat(now, "][").concat(fileName, "]")), logEntry.message);
264
+ break;
265
+ case LogLevels.DEBUG:
266
+ console.debug((0, colorette_1.magenta)("[DEBUG][".concat(now, "][").concat(fileName, "]")), logEntry.message);
267
+ break;
268
+ case LogLevels.LOG:
269
+ console.log((0, colorette_1.cyan)("[LOG][".concat(now, "][").concat(fileName, "]")), logEntry.message);
270
+ break;
271
+ case LogLevels.DATABASE:
272
+ console.log((0, colorette_1.green)("[DATABASE][".concat(now, "][").concat(fileName, "]")), logEntry.message);
273
+ break;
274
+ }
275
+ // Log to file
276
+ this.winstonLogger.log(logEntry);
277
+ };
278
+ Logger.createLogger = function (tag, config) {
279
+ return new Logger(tag, config);
280
+ };
281
+ return Logger;
282
+ }());
283
+ exports.Logger = Logger;
package/dist/Orm.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { Database, Options, Transaction } from "es-node-firebird";
2
+ export declare class Orm {
3
+ private static logger;
4
+ static quote(value: string): string;
5
+ static testConnection(options: Options): Promise<boolean>;
6
+ static query(options: Options, query: string, parameters?: any[], logQuery?: boolean): Promise<any>;
7
+ static execute(options: Options, query: string, parameters?: any, logQuery?: boolean): Promise<any>;
8
+ static trimParam(param: any): string;
9
+ static connect(options: Options): Promise<Database>;
10
+ static startTransaction(db: Database): Promise<Transaction>;
11
+ static commitTransaction(transaction: Transaction): Promise<string>;
12
+ static rollbackTransaction(transaction: Transaction): Promise<string>;
13
+ static executeMultiple(options: Options, queriesWithParams: {
14
+ query: string;
15
+ params: any[];
16
+ }[]): Promise<string>;
17
+ static executeQueries(transaction: Transaction, queries: string[], params: any[]): Promise<any>;
18
+ }