akeyless-server-commons 1.0.107 → 1.0.108
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/cjs/helpers/start.d.ts +2 -2
- package/dist/cjs/helpers/start.js +2 -1
- package/dist/cjs/helpers/start.js.map +1 -1
- package/dist/cjs/middlewares/error_handling.js +2 -1
- package/dist/cjs/middlewares/error_handling.js.map +1 -1
- package/dist/cjs/middlewares/global_mw.d.ts +3 -1
- package/dist/cjs/middlewares/global_mw.js +22 -1
- package/dist/cjs/middlewares/global_mw.js.map +1 -1
- package/dist/cjs/types/interfaces/global.d.ts +6 -2
- package/dist/cjs/types/types/global.d.ts +2 -0
- package/dist/esm/helpers/start.d.ts +2 -2
- package/dist/esm/helpers/start.js +3 -2
- package/dist/esm/helpers/start.js.map +1 -1
- package/dist/esm/middlewares/error_handling.js +2 -1
- package/dist/esm/middlewares/error_handling.js.map +1 -1
- package/dist/esm/middlewares/global_mw.d.ts +3 -1
- package/dist/esm/middlewares/global_mw.js +20 -0
- package/dist/esm/middlewares/global_mw.js.map +1 -1
- package/dist/esm/types/interfaces/global.d.ts +6 -2
- package/dist/esm/types/types/global.d.ts +2 -0
- package/dist/helpers/boards_helpers.js +11 -0
- package/dist/helpers/email_helpers.js +69 -0
- package/dist/helpers/firebase_helpers.js +379 -0
- package/dist/helpers/global_helpers.js +145 -0
- package/dist/helpers/index.js +10 -0
- package/dist/helpers/login_helpers.js +18 -0
- package/dist/helpers/notification_helpers.js +230 -0
- package/dist/helpers/phone_number_helpers.js +88 -0
- package/dist/helpers/start.js +35 -0
- package/dist/helpers/tasks_helpers.js +125 -0
- package/dist/helpers/time_helpers.js +63 -0
- package/dist/index.js +5 -0
- package/dist/managers/cache_manager.js +27 -0
- package/dist/managers/index.js +3 -0
- package/dist/managers/logger_manager.js +51 -0
- package/dist/managers/translation_manager.js +38 -0
- package/dist/middlewares/auth_mw.js +49 -0
- package/dist/middlewares/error_handling.js +19 -0
- package/dist/middlewares/global_mw.js +70 -0
- package/dist/middlewares/index.js +4 -0
- package/dist/middlewares/trim_mw.js +7 -0
- package/dist/test.js +1 -0
- package/dist/types/enums/global.js +18 -0
- package/dist/types/enums/index.js +1 -0
- package/dist/types/helpers/boards_helpers.d.ts +7 -0
- package/dist/types/helpers/email_helpers.d.ts +2 -0
- package/dist/types/helpers/firebase_helpers.d.ts +37 -0
- package/dist/types/helpers/global_helpers.d.ts +15 -0
- package/dist/types/helpers/index.d.ts +10 -0
- package/dist/types/helpers/login_helpers.d.ts +4 -0
- package/dist/types/helpers/notification_helpers.d.ts +11 -0
- package/dist/types/helpers/phone_number_helpers.d.ts +13 -0
- package/dist/types/helpers/start.d.ts +4 -0
- package/dist/types/helpers/tasks_helpers.d.ts +20 -0
- package/dist/types/helpers/time_helpers.d.ts +26 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +3 -0
- package/dist/types/interfaces/email.js +1 -0
- package/dist/types/interfaces/global.js +1 -0
- package/dist/types/interfaces/index.js +2 -0
- package/dist/types/managers/cache_manager.d.ts +11 -0
- package/dist/types/managers/index.d.ts +3 -0
- package/dist/types/managers/logger_manager.d.ts +12 -0
- package/dist/types/managers/translation_manager.d.ts +14 -0
- package/dist/types/middlewares/auth_mw.d.ts +4 -0
- package/dist/types/middlewares/error_handling.d.ts +11 -0
- package/dist/types/middlewares/global_mw.d.ts +4 -0
- package/dist/types/middlewares/index.d.ts +4 -0
- package/dist/types/middlewares/trim_mw.d.ts +2 -0
- package/dist/types/test.d.ts +0 -0
- package/dist/types/types/enums/global.d.ts +16 -0
- package/dist/types/types/enums/index.d.ts +1 -0
- package/dist/types/types/firebase_types.js +1 -0
- package/dist/types/types/global.js +1 -0
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/index.js +2 -0
- package/dist/types/types/interfaces/email.d.ts +24 -0
- package/dist/types/types/interfaces/global.d.ts +16 -0
- package/dist/types/types/interfaces/index.d.ts +2 -0
- package/dist/types/types/types/firebase_types.d.ts +30 -0
- package/dist/types/types/types/global.d.ts +17 -0
- package/dist/types/types/types/index.d.ts +2 -0
- package/package.json +1 -1
- package/dist/cjs/helpers/tasks.d.ts +0 -12
- package/dist/cjs/helpers/tasks.js +0 -62
- package/dist/cjs/helpers/tasks.js.map +0 -1
- package/dist/cjs/managers/cacche_manager2.d.ts +0 -18
- package/dist/cjs/managers/cacche_manager2.js +0 -41
- package/dist/cjs/managers/cacche_manager2.js.map +0 -1
- package/dist/cjs/managers/socket_manager.d.ts +0 -41
- package/dist/cjs/managers/socket_manager.js +0 -246
- package/dist/cjs/managers/socket_manager.js.map +0 -1
- package/dist/esm/helpers/tasks.d.ts +0 -12
- package/dist/esm/helpers/tasks.js +0 -58
- package/dist/esm/helpers/tasks.js.map +0 -1
- package/dist/esm/managers/cacche_manager2.d.ts +0 -18
- package/dist/esm/managers/cacche_manager2.js +0 -37
- package/dist/esm/managers/cacche_manager2.js.map +0 -1
- package/dist/esm/managers/socket_manager.d.ts +0 -41
- package/dist/esm/managers/socket_manager.js +0 -243
- package/dist/esm/managers/socket_manager.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Express } from "express";
|
|
2
|
-
import { MainRouter } from "../types";
|
|
3
|
-
export declare const start_server: (main_router: MainRouter, project_name: string, version: string, port?: number) => Promise<Express>;
|
|
2
|
+
import { LogRequests, MainRouter } from "../types";
|
|
3
|
+
export declare const start_server: (main_router: MainRouter, project_name: string, version: string, port?: number, log_requests?: LogRequests) => Promise<Express>;
|
|
4
4
|
export declare const basic_init: (main_router: MainRouter, project_name: string, version: string, port?: number) => Promise<Express>;
|
|
@@ -19,13 +19,14 @@ const managers_1 = require("../managers");
|
|
|
19
19
|
const _1 = require("./");
|
|
20
20
|
const error_handling_1 = require("../middlewares/error_handling");
|
|
21
21
|
const middlewares_1 = require("../middlewares");
|
|
22
|
-
const start_server = (
|
|
22
|
+
const start_server = (main_router_1, project_name_1, version_1, port_1, ...args_1) => __awaiter(void 0, [main_router_1, project_name_1, version_1, port_1, ...args_1], void 0, function* (main_router, project_name, version, port, log_requests = {}) {
|
|
23
23
|
const app = (0, express_1.default)();
|
|
24
24
|
let env_data = (0, _1.init_env_variables)(["mode"]);
|
|
25
25
|
port = port || Number(env_data.port);
|
|
26
26
|
app.use((0, cors_1.default)());
|
|
27
27
|
app.use(express_1.default.json());
|
|
28
28
|
app.use((0, middlewares_1.trim_body_middleware)());
|
|
29
|
+
app.use((0, middlewares_1.request_logger)(log_requests));
|
|
29
30
|
main_router(app);
|
|
30
31
|
app.use(error_handling_1.error_handler);
|
|
31
32
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/helpers/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA2C;AAC3C,gDAAwB;AACxB,0CAAqC;AACrC,yBAAwD;AAExD,kEAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/helpers/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA2C;AAC3C,gDAAwB;AACxB,0CAAqC;AACrC,yBAAwD;AAExD,kEAA8D;AAC9D,gDAAsE;AAE/D,MAAM,YAAY,GAAG,8DAMR,EAAE,qGALlB,WAAuB,EACvB,YAAoB,EACpB,OAAe,EACf,IAAa,EACb,eAA4B,EAAE;IAE9B,MAAM,GAAG,GAAY,IAAA,iBAAO,GAAE,CAAC;IAC/B,IAAI,QAAQ,GAAG,IAAA,qBAAkB,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,IAAA,kCAAoB,GAAE,CAAC,CAAC;IAChC,GAAG,CAAC,GAAG,CAAC,IAAA,4BAAc,EAAC,YAAY,CAAC,CAAC,CAAC;IACtC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjB,GAAG,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC;IAEvB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAClB,iBAAM,CAAC,GAAG,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;YAC5D,iBAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAA,CAAC;AAxBW,QAAA,YAAY,gBAwBvB;AAEK,MAAM,UAAU,GAAG,CAAO,WAAuB,EAAE,YAAoB,EAAE,OAAe,EAAE,IAAa,EAAoB,EAAE;IAChI,IAAI,CAAC;QACD,MAAM,IAAA,iBAAc,GAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAY,EAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACzE,OAAO,GAAG,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,iBAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAA,CAAC;AATW,QAAA,UAAU,cASrB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.async_error_handler = exports.error_handler = void 0;
|
|
4
|
+
const managers_1 = require("../managers");
|
|
4
5
|
/**
|
|
5
6
|
* Utility to handle async errors
|
|
6
7
|
*/
|
|
@@ -14,7 +15,7 @@ exports.async_error_handler = async_error_handler;
|
|
|
14
15
|
* Global error-handling middleware.
|
|
15
16
|
*/
|
|
16
17
|
const error_handler = (err, req, res, next) => {
|
|
17
|
-
|
|
18
|
+
managers_1.logger.error("Global Error Handler:", err.stack);
|
|
18
19
|
res.status(500).json({
|
|
19
20
|
status: "error",
|
|
20
21
|
message: err.message || "Internal Server Error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error_handling.js","sourceRoot":"","sources":["../../../src/middlewares/error_handling.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"error_handling.js","sourceRoot":"","sources":["../../../src/middlewares/error_handling.ts"],"names":[],"mappings":";;;AAEA,0CAAqC;AAErC;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACvD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;AACN,CAAC,CAAC;AAcsB,kDAAmB;AAZ3C;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,GAAU,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAClF,iBAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,uBAAuB;KAClD,CAAC,CAAC;AACP,CAAC,CAAC;AAEO,sCAAa"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RequestHandler } from "express";
|
|
2
|
+
import { LogRequests, MandatoryParams, MW } from "../types";
|
|
2
3
|
export declare const mandatory: ({ body, headers }: MandatoryParams) => MW;
|
|
4
|
+
export declare const request_logger: (log_requests: LogRequests) => RequestHandler;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mandatory = void 0;
|
|
3
|
+
exports.request_logger = exports.mandatory = void 0;
|
|
4
4
|
const helpers_1 = require("../helpers");
|
|
5
|
+
const managers_1 = require("../managers");
|
|
5
6
|
const validateParameter = (data, parameter) => {
|
|
6
7
|
if (data[parameter.key] === undefined) {
|
|
7
8
|
throw `missing mandatory parameter: ${parameter.key}`;
|
|
@@ -52,4 +53,24 @@ const mandatory = ({ body, headers }) => {
|
|
|
52
53
|
};
|
|
53
54
|
};
|
|
54
55
|
exports.mandatory = mandatory;
|
|
56
|
+
const request_logger = (log_requests) => {
|
|
57
|
+
return (req, res, next) => {
|
|
58
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.url) {
|
|
59
|
+
managers_1.logger.log(`${req.method} ${req.originalUrl}`);
|
|
60
|
+
}
|
|
61
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.headers) {
|
|
62
|
+
managers_1.logger.log("Headers:", req.headers);
|
|
63
|
+
}
|
|
64
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.query) {
|
|
65
|
+
managers_1.logger.log("Query:", req.query);
|
|
66
|
+
}
|
|
67
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.body) {
|
|
68
|
+
if (["POST", "PUT", "PATCH"].includes(req.method)) {
|
|
69
|
+
managers_1.logger.log("Body:", req.body);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
next();
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
exports.request_logger = request_logger;
|
|
55
76
|
//# sourceMappingURL=global_mw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_mw.js","sourceRoot":"","sources":["../../../src/middlewares/global_mw.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"global_mw.js","sourceRoot":"","sources":["../../../src/middlewares/global_mw.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,9 @@ export interface MandatoryParams {
|
|
|
8
8
|
body?: MandatoryObject[];
|
|
9
9
|
headers?: MandatoryObject[];
|
|
10
10
|
}
|
|
11
|
-
export
|
|
12
|
-
|
|
11
|
+
export interface LogRequests {
|
|
12
|
+
url?: boolean;
|
|
13
|
+
headers?: boolean;
|
|
14
|
+
query?: boolean;
|
|
15
|
+
body?: boolean;
|
|
16
|
+
}
|
|
@@ -13,3 +13,5 @@ export type MW = (req: Request, res: Response, next: NextFunction) => void;
|
|
|
13
13
|
export type Service = (req: Request, res: Response) => void;
|
|
14
14
|
export type Route = (req: Request, res: Response, next?: NextFunction) => Response;
|
|
15
15
|
export type AddAuditRecord = (action: string, entity: string, details: TObject<any>, user?: NxUser) => Promise<void>;
|
|
16
|
+
export type LangOptions = "he" | "en" | "ru" | (string & {});
|
|
17
|
+
export type EntityOptions = "nx_devices" | (string & {});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Express } from "express";
|
|
2
|
-
import { MainRouter } from "../types";
|
|
3
|
-
export declare const start_server: (main_router: MainRouter, project_name: string, version: string, port?: number) => Promise<Express>;
|
|
2
|
+
import { LogRequests, MainRouter } from "../types";
|
|
3
|
+
export declare const start_server: (main_router: MainRouter, project_name: string, version: string, port?: number, log_requests?: LogRequests) => Promise<Express>;
|
|
4
4
|
export declare const basic_init: (main_router: MainRouter, project_name: string, version: string, port?: number) => Promise<Express>;
|
|
@@ -12,14 +12,15 @@ import cors from "cors";
|
|
|
12
12
|
import { logger } from "../managers";
|
|
13
13
|
import { init_env_variables, init_snapshots } from "./";
|
|
14
14
|
import { error_handler } from "../middlewares/error_handling";
|
|
15
|
-
import { trim_body_middleware } from "../middlewares";
|
|
16
|
-
export const start_server = (
|
|
15
|
+
import { request_logger, trim_body_middleware } from "../middlewares";
|
|
16
|
+
export const start_server = (main_router_1, project_name_1, version_1, port_1, ...args_1) => __awaiter(void 0, [main_router_1, project_name_1, version_1, port_1, ...args_1], void 0, function* (main_router, project_name, version, port, log_requests = {}) {
|
|
17
17
|
const app = express();
|
|
18
18
|
let env_data = init_env_variables(["mode"]);
|
|
19
19
|
port = port || Number(env_data.port);
|
|
20
20
|
app.use(cors());
|
|
21
21
|
app.use(express.json());
|
|
22
22
|
app.use(trim_body_middleware());
|
|
23
|
+
app.use(request_logger(log_requests));
|
|
23
24
|
main_router(app);
|
|
24
25
|
app.use(error_handler);
|
|
25
26
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/helpers/start.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAoB,MAAM,SAAS,CAAC;AAC3C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/helpers/start.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,OAAoB,MAAM,SAAS,CAAC;AAC3C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,CAAC,MAAM,YAAY,GAAG,8DAMR,EAAE,qGALlB,WAAuB,EACvB,YAAoB,EACpB,OAAe,EACf,IAAa,EACb,eAA4B,EAAE;IAE9B,MAAM,GAAG,GAAY,OAAO,EAAE,CAAC;IAC/B,IAAI,QAAQ,GAAG,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAChC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEvB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAO,WAAuB,EAAE,YAAoB,EAAE,OAAe,EAAE,IAAa,EAAoB,EAAE;IAChI,IAAI,CAAC;QACD,MAAM,cAAc,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACzE,OAAO,GAAG,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAA,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { logger } from "../managers";
|
|
1
2
|
/**
|
|
2
3
|
* Utility to handle async errors
|
|
3
4
|
*/
|
|
@@ -10,7 +11,7 @@ const async_error_handler = (service) => {
|
|
|
10
11
|
* Global error-handling middleware.
|
|
11
12
|
*/
|
|
12
13
|
const error_handler = (err, req, res, next) => {
|
|
13
|
-
|
|
14
|
+
logger.error("Global Error Handler:", err.stack);
|
|
14
15
|
res.status(500).json({
|
|
15
16
|
status: "error",
|
|
16
17
|
message: err.message || "Internal Server Error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error_handling.js","sourceRoot":"","sources":["../../../src/middlewares/error_handling.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error_handling.js","sourceRoot":"","sources":["../../../src/middlewares/error_handling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACvD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,GAAU,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAClF,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,uBAAuB;KAClD,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RequestHandler } from "express";
|
|
2
|
+
import { LogRequests, MandatoryParams, MW } from "../types";
|
|
2
3
|
export declare const mandatory: ({ body, headers }: MandatoryParams) => MW;
|
|
4
|
+
export declare const request_logger: (log_requests: LogRequests) => RequestHandler;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { json_failed } from "../helpers";
|
|
2
|
+
import { logger } from "../managers";
|
|
2
3
|
const validateParameter = (data, parameter) => {
|
|
3
4
|
if (data[parameter.key] === undefined) {
|
|
4
5
|
throw `missing mandatory parameter: ${parameter.key}`;
|
|
@@ -48,4 +49,23 @@ export const mandatory = ({ body, headers }) => {
|
|
|
48
49
|
}
|
|
49
50
|
};
|
|
50
51
|
};
|
|
52
|
+
export const request_logger = (log_requests) => {
|
|
53
|
+
return (req, res, next) => {
|
|
54
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.url) {
|
|
55
|
+
logger.log(`${req.method} ${req.originalUrl}`);
|
|
56
|
+
}
|
|
57
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.headers) {
|
|
58
|
+
logger.log("Headers:", req.headers);
|
|
59
|
+
}
|
|
60
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.query) {
|
|
61
|
+
logger.log("Query:", req.query);
|
|
62
|
+
}
|
|
63
|
+
if (log_requests === null || log_requests === void 0 ? void 0 : log_requests.body) {
|
|
64
|
+
if (["POST", "PUT", "PATCH"].includes(req.method)) {
|
|
65
|
+
logger.log("Body:", req.body);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
next();
|
|
69
|
+
};
|
|
70
|
+
};
|
|
51
71
|
//# sourceMappingURL=global_mw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global_mw.js","sourceRoot":"","sources":["../../../src/middlewares/global_mw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"global_mw.js","sourceRoot":"","sources":["../../../src/middlewares/global_mw.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,9 @@ export interface MandatoryParams {
|
|
|
8
8
|
body?: MandatoryObject[];
|
|
9
9
|
headers?: MandatoryObject[];
|
|
10
10
|
}
|
|
11
|
-
export
|
|
12
|
-
|
|
11
|
+
export interface LogRequests {
|
|
12
|
+
url?: boolean;
|
|
13
|
+
headers?: boolean;
|
|
14
|
+
query?: boolean;
|
|
15
|
+
body?: boolean;
|
|
16
|
+
}
|
|
@@ -13,3 +13,5 @@ export type MW = (req: Request, res: Response, next: NextFunction) => void;
|
|
|
13
13
|
export type Service = (req: Request, res: Response) => void;
|
|
14
14
|
export type Route = (req: Request, res: Response, next?: NextFunction) => Response;
|
|
15
15
|
export type AddAuditRecord = (action: string, entity: string, details: TObject<any>, user?: NxUser) => Promise<void>;
|
|
16
|
+
export type LangOptions = "he" | "en" | "ru" | (string & {});
|
|
17
|
+
export type EntityOptions = "nx_devices" | (string & {});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const extract_board_types_from_settings = (settings) => {
|
|
2
|
+
const { erm_board_types, jimi_board_types, jimi_iothub_board_types, ruptela_board_types, servision_board_types } = settings;
|
|
3
|
+
const result = [
|
|
4
|
+
{ board_provider: "erm", board_types: erm_board_types.values },
|
|
5
|
+
{ board_provider: "jimi", board_types: jimi_board_types.values },
|
|
6
|
+
{ board_provider: "ruptela", board_types: ruptela_board_types.values },
|
|
7
|
+
{ board_provider: "servision", board_types: servision_board_types.values },
|
|
8
|
+
{ board_provider: "jimi_iothub", board_types: jimi_iothub_board_types.values },
|
|
9
|
+
];
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import sendgrid from "@sendgrid/mail";
|
|
2
|
+
import { add_audit_record, get_document_by_id } from ".";
|
|
3
|
+
import { logger } from "../managers";
|
|
4
|
+
export const send_email = async (email_data) => {
|
|
5
|
+
try {
|
|
6
|
+
const emails_settings = (await get_document_by_id("nx-settings", "emails"));
|
|
7
|
+
const { sendgrid_api_key, groups, default_from } = emails_settings;
|
|
8
|
+
let { from, to, cc, group_name, body_html, body_plain_text, subject, entity_for_audit } = email_data;
|
|
9
|
+
/// validate data
|
|
10
|
+
if (!to?.length && !group_name?.length) {
|
|
11
|
+
throw "must supply a 'group_name' or 'to' value ";
|
|
12
|
+
}
|
|
13
|
+
if (!body_html?.length && !body_plain_text?.length) {
|
|
14
|
+
throw "must supply a 'body_plain_text' or 'html' value ";
|
|
15
|
+
}
|
|
16
|
+
/// merge to and cc
|
|
17
|
+
if (group_name) {
|
|
18
|
+
if (!groups[group_name]) {
|
|
19
|
+
throw "must supply a valid 'group_name'";
|
|
20
|
+
}
|
|
21
|
+
if (!to) {
|
|
22
|
+
to = groups[group_name].to;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
to = typeof to === "string" ? [...groups[group_name].to, to] : [...groups[group_name].to, ...to];
|
|
26
|
+
}
|
|
27
|
+
if (!cc) {
|
|
28
|
+
if (groups[group_name].cc?.length) {
|
|
29
|
+
cc = groups[group_name].cc;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
cc = typeof cc === "string" ? [...(groups[group_name].cc || []), cc] : [...(groups[group_name].cc || []), ...cc];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/// set sendgrid account
|
|
37
|
+
sendgrid.setApiKey(sendgrid_api_key);
|
|
38
|
+
/// prepare message
|
|
39
|
+
const msg = body_html
|
|
40
|
+
? {
|
|
41
|
+
subject,
|
|
42
|
+
from: from || default_from,
|
|
43
|
+
to,
|
|
44
|
+
cc,
|
|
45
|
+
html: body_html,
|
|
46
|
+
}
|
|
47
|
+
: {
|
|
48
|
+
subject,
|
|
49
|
+
from: from || default_from,
|
|
50
|
+
to,
|
|
51
|
+
cc,
|
|
52
|
+
text: body_plain_text,
|
|
53
|
+
};
|
|
54
|
+
if (!msg.cc) {
|
|
55
|
+
delete msg.cc;
|
|
56
|
+
}
|
|
57
|
+
/// send email
|
|
58
|
+
const email_result = await sendgrid.send(msg);
|
|
59
|
+
if (email_result[0].statusCode !== 202) {
|
|
60
|
+
throw email_result[0].body;
|
|
61
|
+
}
|
|
62
|
+
/// add audit
|
|
63
|
+
logger.log("email send successfully", { ...email_data, ...msg });
|
|
64
|
+
await add_audit_record("send_email", entity_for_audit, { ...email_data, ...msg });
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
logger.error("error sending email", { error, email_data });
|
|
68
|
+
}
|
|
69
|
+
};
|