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.
- package/dist/Autbobind.d.ts +19 -0
- package/dist/Autbobind.js +85 -0
- package/dist/DatabaseUpdater.d.ts +1 -1
- package/dist/DatabaseUpdater.js +11 -11
- package/dist/ExecutionTimeLogger.d.ts +10 -0
- package/dist/{log-execution-time.js → ExecutionTimeLogger.js} +25 -11
- package/dist/Logger.d.ts +35 -0
- package/dist/Logger.js +283 -0
- package/dist/Orm.d.ts +18 -0
- package/dist/Orm.js +383 -0
- package/dist/RoutesLoggerMiddleware.d.ts +20 -0
- package/dist/RoutesLoggerMiddleware.js +36 -0
- package/dist/Utilities.d.ts +114 -0
- package/dist/Utilities.js +245 -0
- package/dist/index.d.ts +8 -6
- package/dist/index.js +30 -14
- package/dist/orm.d.ts +16 -18
- package/dist/orm.js +309 -232
- package/dist/utilities.d.ts +112 -18
- package/dist/utilities.js +237 -158
- package/package.json +1 -1
- package/dist/autobind.d.ts +0 -15
- package/dist/autobind.js +0 -94
- package/dist/log-execution-time.d.ts +0 -1
- package/dist/node-firebird.d.ts +0 -1
- package/dist/node-firebird.js +0 -17
- package/dist/routes-logger.d.ts +0 -3
- package/dist/routes-logger.js +0 -15
|
@@ -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;
|
package/dist/DatabaseUpdater.js
CHANGED
|
@@ -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
|
|
41
|
-
var
|
|
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*/,
|
|
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*/,
|
|
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*/,
|
|
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*/,
|
|
129
|
+
return [4 /*yield*/, Orm_1.Orm.query(options, createTableQuery)];
|
|
130
130
|
case 2:
|
|
131
131
|
_a.sent();
|
|
132
|
-
return [4 /*yield*/,
|
|
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*/,
|
|
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*/,
|
|
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*/,
|
|
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
|
|
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.
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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;
|
package/dist/Logger.d.ts
ADDED
|
@@ -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
|
+
}
|