badmfck-api-server 1.3.6 → 1.3.8
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/apiServer/APIService.js +6 -3
- package/dist/apiServer/BaseEndpoint.d.ts +2 -1
- package/dist/apiServer/BaseEndpoint.js +6 -4
- package/dist/apiServer/BaseService.js +2 -1
- package/dist/apiServer/LogService.d.ts +14 -6
- package/dist/apiServer/LogService.js +26 -11
- package/dist/apiServer/structures/DefaultErrors.d.ts +4 -4
- package/dist/apiServer/structures/Interfaces.d.ts +3 -2
- package/package.json +1 -1
@@ -43,7 +43,7 @@ async function Initializer(services) {
|
|
43
43
|
exports.Initializer = Initializer;
|
44
44
|
class APIService extends BaseService_1.BaseService {
|
45
45
|
static nextLogID = 0;
|
46
|
-
version = "1.3.
|
46
|
+
version = "1.3.8";
|
47
47
|
options;
|
48
48
|
netLog = [];
|
49
49
|
constructor(options) {
|
@@ -177,7 +177,7 @@ class APIService extends BaseService_1.BaseService {
|
|
177
177
|
}, tme, req.path);
|
178
178
|
});
|
179
179
|
app.listen(this.options.port, () => {
|
180
|
-
|
180
|
+
(0, LogService_1.logCrit)('API Service started at: ' + this.options.port + ", with base endpoint:" + this.options.baseEndPoint + ", ver.: " + this.version);
|
181
181
|
});
|
182
182
|
}
|
183
183
|
sendResponse(res, data, requestTime, endpoint, log) {
|
@@ -204,7 +204,10 @@ class APIService extends BaseService_1.BaseService {
|
|
204
204
|
for (let i in data.headers)
|
205
205
|
res.setHeader(i, data.headers[i]);
|
206
206
|
}
|
207
|
-
|
207
|
+
if (data.error && data.error.httpStatus && data.error.httpStatus > 99)
|
208
|
+
res.statusCode = data.error.httpStatus;
|
209
|
+
else
|
210
|
+
res.statusCode = data.httpStatus ?? 200;
|
208
211
|
if (data.rawResponse) {
|
209
212
|
res.send(data.data);
|
210
213
|
if (log)
|
@@ -7,8 +7,9 @@ export interface IBaseEndpoint {
|
|
7
7
|
}
|
8
8
|
export interface IEndpointHandler {
|
9
9
|
endpoint: string;
|
10
|
-
handler
|
10
|
+
handler?: (req: HTTPRequestVO) => Promise<TransferPacketVO<any>>;
|
11
11
|
ignoreInterceptor?: boolean;
|
12
|
+
independed?: boolean;
|
12
13
|
}
|
13
14
|
export declare class BaseEndpoint implements IBaseEndpoint {
|
14
15
|
endpoints?: IEndpointHandler[];
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.BaseEndpoint = void 0;
|
7
|
+
const LogService_1 = require("./LogService");
|
7
8
|
const DefaultErrors_1 = __importDefault(require("./structures/DefaultErrors"));
|
8
9
|
class BaseEndpoint {
|
9
10
|
endpoints;
|
@@ -34,23 +35,24 @@ class BaseEndpoint {
|
|
34
35
|
i.endpoint = i.endpoint.substring(1);
|
35
36
|
if (i.endpoint.endsWith("/"))
|
36
37
|
i.endpoint = i.endpoint.substring(0, i.endpoint.length - 1);
|
37
|
-
|
38
|
+
if (!i.independed)
|
39
|
+
i.endpoint = this.endpoint + i.endpoint;
|
38
40
|
}
|
39
41
|
this.endpoints = endpoints;
|
40
42
|
}
|
41
43
|
async init() {
|
42
44
|
if (!this.endpoints) {
|
43
|
-
|
45
|
+
(0, LogService_1.logInfo)("No endpoints registered for " + this.endpoint);
|
44
46
|
return;
|
45
47
|
}
|
46
48
|
for (let i of this.endpoints)
|
47
|
-
|
49
|
+
(0, LogService_1.logInfo)("endpoint: " + i.endpoint + " initalized, ignoreInterceptor: " + (i.ignoreInterceptor ?? "false"));
|
48
50
|
}
|
49
51
|
;
|
50
52
|
async execute(req) {
|
51
53
|
if (this.endpoints && this.endpoints.length > 0) {
|
52
54
|
for (let i of this.endpoints) {
|
53
|
-
if (BaseEndpoint.entrypoint + i.endpoint === req.endpoint)
|
55
|
+
if (BaseEndpoint.entrypoint + i.endpoint === req.endpoint && i.handler && typeof i.handler === "function")
|
54
56
|
return i.handler(req);
|
55
57
|
}
|
56
58
|
}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.BaseService = void 0;
|
4
|
+
const LogService_1 = require("./LogService");
|
4
5
|
class BaseService {
|
5
6
|
name;
|
6
7
|
constructor(name) {
|
7
8
|
this.name = name;
|
8
9
|
}
|
9
10
|
async init() {
|
10
|
-
|
11
|
+
(0, LogService_1.logInfo)("Service: " + this.name + " initialized");
|
11
12
|
}
|
12
13
|
applicationReady() { }
|
13
14
|
}
|
@@ -1,9 +1,15 @@
|
|
1
1
|
import Signal, { Req } from "badmfck-signal";
|
2
2
|
import { BaseService } from "./BaseService";
|
3
|
-
export
|
3
|
+
export declare enum LOG_LEVEL {
|
4
|
+
ALL = 0,
|
5
|
+
INFO = 1,
|
6
|
+
WARN = 2,
|
7
|
+
ERROR = 3,
|
8
|
+
CRIT = 4
|
9
|
+
}
|
4
10
|
export interface ILogItem {
|
5
11
|
id: number;
|
6
|
-
level:
|
12
|
+
level: LOG_LEVEL;
|
7
13
|
time: number;
|
8
14
|
text: string;
|
9
15
|
date: string;
|
@@ -18,18 +24,20 @@ export declare const logWarn: (message: any, ...optional: any[]) => void;
|
|
18
24
|
export declare const logCrit: (message: any, ...optional: any[]) => void;
|
19
25
|
export declare const logError: (message: any, ...optional: any[]) => void;
|
20
26
|
export declare const S_LOG: Signal<{
|
21
|
-
level:
|
27
|
+
level: LOG_LEVEL;
|
22
28
|
data: any[];
|
23
29
|
}>;
|
24
30
|
export declare const S_LOG_CREATED: Signal<ILogItem>;
|
25
|
-
export declare const S_LOG_CHANGE_LEVEL: Signal<
|
31
|
+
export declare const S_LOG_CHANGE_LEVEL: Signal<LOG_LEVEL>;
|
26
32
|
export declare const S_LOG_FLUSH: Signal<void>;
|
27
|
-
export declare const REQ_LOG: Req<
|
33
|
+
export declare const REQ_LOG: Req<{
|
34
|
+
lastID: number;
|
35
|
+
} | null | undefined, ILogItem[]>;
|
28
36
|
export declare class LogService extends BaseService {
|
29
37
|
epoch: number;
|
30
38
|
log: ILogItem[];
|
31
39
|
options: ILogServiceOptions;
|
32
|
-
level:
|
40
|
+
level: LOG_LEVEL;
|
33
41
|
constructor(opt?: ILogServiceOptions);
|
34
42
|
init(): Promise<void>;
|
35
43
|
createDate(d?: Date): string;
|
@@ -23,22 +23,30 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
23
|
return result;
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
exports.LogService = exports.REQ_LOG = exports.S_LOG_FLUSH = exports.S_LOG_CHANGE_LEVEL = exports.S_LOG_CREATED = exports.S_LOG = exports.logError = exports.logCrit = exports.logWarn = exports.logInfo = exports.getDefaultLogOptions = void 0;
|
26
|
+
exports.LogService = exports.REQ_LOG = exports.S_LOG_FLUSH = exports.S_LOG_CHANGE_LEVEL = exports.S_LOG_CREATED = exports.S_LOG = exports.logError = exports.logCrit = exports.logWarn = exports.logInfo = exports.getDefaultLogOptions = exports.LOG_LEVEL = void 0;
|
27
27
|
const badmfck_signal_1 = __importStar(require("badmfck-signal"));
|
28
28
|
const BaseService_1 = require("./BaseService");
|
29
|
+
var LOG_LEVEL;
|
30
|
+
(function (LOG_LEVEL) {
|
31
|
+
LOG_LEVEL[LOG_LEVEL["ALL"] = 0] = "ALL";
|
32
|
+
LOG_LEVEL[LOG_LEVEL["INFO"] = 1] = "INFO";
|
33
|
+
LOG_LEVEL[LOG_LEVEL["WARN"] = 2] = "WARN";
|
34
|
+
LOG_LEVEL[LOG_LEVEL["ERROR"] = 3] = "ERROR";
|
35
|
+
LOG_LEVEL[LOG_LEVEL["CRIT"] = 4] = "CRIT";
|
36
|
+
})(LOG_LEVEL || (exports.LOG_LEVEL = LOG_LEVEL = {}));
|
29
37
|
const getDefaultLogOptions = () => {
|
30
38
|
return {
|
31
39
|
stackSize: 1000
|
32
40
|
};
|
33
41
|
};
|
34
42
|
exports.getDefaultLogOptions = getDefaultLogOptions;
|
35
|
-
const logInfo = (message, ...optional) => { exports.S_LOG.invoke({ level:
|
43
|
+
const logInfo = (message, ...optional) => { exports.S_LOG.invoke({ level: LOG_LEVEL.INFO, data: [message, optional] }); };
|
36
44
|
exports.logInfo = logInfo;
|
37
|
-
const logWarn = (message, ...optional) => { exports.S_LOG.invoke({ level:
|
45
|
+
const logWarn = (message, ...optional) => { exports.S_LOG.invoke({ level: LOG_LEVEL.WARN, data: [message, optional] }); };
|
38
46
|
exports.logWarn = logWarn;
|
39
|
-
const logCrit = (message, ...optional) => { exports.S_LOG.invoke({ level:
|
47
|
+
const logCrit = (message, ...optional) => { exports.S_LOG.invoke({ level: LOG_LEVEL.CRIT, data: [message, optional] }); };
|
40
48
|
exports.logCrit = logCrit;
|
41
|
-
const logError = (message, ...optional) => { exports.S_LOG.invoke({ level:
|
49
|
+
const logError = (message, ...optional) => { exports.S_LOG.invoke({ level: LOG_LEVEL.ERROR, data: [message, optional] }); };
|
42
50
|
exports.logError = logError;
|
43
51
|
exports.S_LOG = new badmfck_signal_1.default();
|
44
52
|
exports.S_LOG_CREATED = new badmfck_signal_1.default();
|
@@ -49,7 +57,7 @@ class LogService extends BaseService_1.BaseService {
|
|
49
57
|
epoch = 1699476234961;
|
50
58
|
log = [];
|
51
59
|
options;
|
52
|
-
level =
|
60
|
+
level = LOG_LEVEL.ALL;
|
53
61
|
constructor(opt) {
|
54
62
|
super("LogService");
|
55
63
|
if (!opt)
|
@@ -58,14 +66,19 @@ class LogService extends BaseService_1.BaseService {
|
|
58
66
|
}
|
59
67
|
async init() {
|
60
68
|
super.init();
|
61
|
-
exports.REQ_LOG.listener = async () =>
|
69
|
+
exports.REQ_LOG.listener = async (req) => {
|
70
|
+
if (req && req.lastID) {
|
71
|
+
let result = this.log.filter(val => val.id > req.lastID);
|
72
|
+
return result;
|
73
|
+
}
|
74
|
+
else
|
75
|
+
return [...this.log];
|
76
|
+
};
|
62
77
|
exports.S_LOG_CHANGE_LEVEL.subscribe(l => { this.level = l; });
|
63
78
|
exports.S_LOG_FLUSH.subscribe(() => this.log = []);
|
64
79
|
exports.S_LOG.subscribe((log) => {
|
65
|
-
if (log.level
|
66
|
-
|
67
|
-
return;
|
68
|
-
}
|
80
|
+
if (log.level < this.level)
|
81
|
+
return;
|
69
82
|
const msg = log.data[0];
|
70
83
|
const optional = log.data[1];
|
71
84
|
let text = this.createText(msg);
|
@@ -121,6 +134,8 @@ class LogService extends BaseService_1.BaseService {
|
|
121
134
|
res = `${data}`;
|
122
135
|
}
|
123
136
|
}
|
137
|
+
if (Array.isArray(data))
|
138
|
+
res + ", total items: " + data.length;
|
124
139
|
}
|
125
140
|
else {
|
126
141
|
res = data + "";
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import {
|
1
|
+
import { IError } from "./Interfaces";
|
2
2
|
declare class DefaultErrors {
|
3
|
-
static NOT_IMPLEMENTED:
|
4
|
-
static UNKNOWN_REQUEST:
|
5
|
-
static JSON_MALFORMED:
|
3
|
+
static NOT_IMPLEMENTED: IError;
|
4
|
+
static UNKNOWN_REQUEST: IError;
|
5
|
+
static JSON_MALFORMED: IError;
|
6
6
|
}
|
7
7
|
export default DefaultErrors;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
export interface TransferPacketVO<T> {
|
2
2
|
data?: T | null;
|
3
|
-
error?:
|
3
|
+
error?: IError | null;
|
4
4
|
responseTime?: number;
|
5
5
|
version?: string;
|
6
6
|
endpoint?: string;
|
@@ -22,8 +22,9 @@ export interface HTTPRequestVO {
|
|
22
22
|
endpoint: string;
|
23
23
|
interceptorResult?: TransferPacketVO<any>;
|
24
24
|
}
|
25
|
-
export interface
|
25
|
+
export interface IError {
|
26
26
|
code: number;
|
27
27
|
message: string;
|
28
28
|
details?: string;
|
29
|
+
httpStatus?: number;
|
29
30
|
}
|