drapcode-utility 1.0.0

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.
Files changed (39) hide show
  1. package/build/encryption/index.d.ts +15 -0
  2. package/build/encryption/index.js +255 -0
  3. package/build/errors/app-error.d.ts +6 -0
  4. package/build/errors/app-error.js +30 -0
  5. package/build/errors/axios-error.d.ts +13 -0
  6. package/build/errors/axios-error.js +78 -0
  7. package/build/errors/bad-request-error.d.ts +9 -0
  8. package/build/errors/bad-request-error.js +32 -0
  9. package/build/errors/custom-error.d.ts +8 -0
  10. package/build/errors/custom-error.js +26 -0
  11. package/build/errors/not-found.d.ts +8 -0
  12. package/build/errors/not-found.js +31 -0
  13. package/build/index.d.ts +17 -0
  14. package/build/index.js +29 -0
  15. package/build/middlewares/api-limiter.d.ts +1 -0
  16. package/build/middlewares/api-limiter.js +21 -0
  17. package/build/middlewares/error-logger.d.ts +3 -0
  18. package/build/middlewares/error-logger.js +74 -0
  19. package/build/middlewares/interceptor-logger-new.d.ts +2 -0
  20. package/build/middlewares/interceptor-logger-new.js +54 -0
  21. package/build/middlewares/interceptor-logger.d.ts +2 -0
  22. package/build/middlewares/interceptor-logger.js +42 -0
  23. package/build/middlewares/redis/request-log.d.ts +1 -0
  24. package/build/middlewares/redis/request-log.js +79 -0
  25. package/build/utils/check-error.d.ts +9 -0
  26. package/build/utils/check-error.js +188 -0
  27. package/build/utils/date-util.d.ts +8 -0
  28. package/build/utils/date-util.js +104 -0
  29. package/build/utils/prepare-query.d.ts +132 -0
  30. package/build/utils/prepare-query.js +94 -0
  31. package/build/utils/query-parser.d.ts +11 -0
  32. package/build/utils/query-parser.js +778 -0
  33. package/build/utils/query-paser-new.d.ts +1 -0
  34. package/build/utils/query-paser-new.js +682 -0
  35. package/build/utils/util.d.ts +27 -0
  36. package/build/utils/util.js +373 -0
  37. package/build/utils/uuid-generator.d.ts +1 -0
  38. package/build/utils/uuid-generator.js +65 -0
  39. package/package.json +47 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.errorLogger = void 0;
7
+ var drapcode_logger_1 = require("drapcode-logger");
8
+ var date_util_1 = require("../utils/date-util");
9
+ var fs_1 = __importDefault(require("fs"));
10
+ var parse_error = function (err) {
11
+ if (!err.stack)
12
+ return err;
13
+ var caller_line = err.stack.split("\n");
14
+ if (caller_line) {
15
+ var index = caller_line.filter(function (x) {
16
+ var result = x.trim();
17
+ var res = false;
18
+ if (x) {
19
+ result = x.match(/at _callee/g);
20
+ res = result && result.lenght > 0;
21
+ }
22
+ return res;
23
+ });
24
+ if (index.length > 0) {
25
+ return index[0].trim();
26
+ }
27
+ }
28
+ return err.stack;
29
+ };
30
+ var errorLogger = function (err, req, res, next) {
31
+ var loggerPath = process.env.LOG_FOLDER_PATH || "/tmp/log";
32
+ var originalUrl = req.originalUrl, method = req.method, body = req.body, params = req.params, query = req.query, db = req.db, projectName = req.projectName, projectId = req.projectId, ip = req.ip;
33
+ var PreviouseFilePath;
34
+ if (projectName) {
35
+ loggerPath = loggerPath + "/" + projectName + "/" + date_util_1.createLoggerDateFormat() + "/output";
36
+ PreviouseFilePath = loggerPath + "/" + projectName + "/" + date_util_1.createLoggerPreviouseDateFormat() + "/";
37
+ }
38
+ else if (projectId) {
39
+ loggerPath = loggerPath + "/" + projectId + "/" + date_util_1.createLoggerDateFormat() + "/output";
40
+ PreviouseFilePath = loggerPath + "/" + projectId + "/" + date_util_1.createLoggerPreviouseDateFormat() + "/";
41
+ }
42
+ else {
43
+ loggerPath = loggerPath + "/" + date_util_1.createLoggerDateFormat() + "/output";
44
+ PreviouseFilePath = loggerPath + "/" + date_util_1.createLoggerPreviouseDateFormat() + "/";
45
+ }
46
+ if (fs_1.default.existsSync(PreviouseFilePath)) {
47
+ fs_1.default.rmSync(PreviouseFilePath, { recursive: true, force: true });
48
+ }
49
+ var reqObject = {
50
+ uri: originalUrl,
51
+ method: method,
52
+ body: body,
53
+ params: params,
54
+ query: query,
55
+ dbName: "",
56
+ message: "",
57
+ line: "",
58
+ ip: ip,
59
+ };
60
+ if (db) {
61
+ reqObject["dbName"] = db.name;
62
+ }
63
+ if (err) {
64
+ reqObject.message = err.message || err;
65
+ reqObject.line = parse_error(err) || "";
66
+ var logger = new drapcode_logger_1.FileLogger(loggerPath).createLogger();
67
+ logger.error(reqObject);
68
+ return res.status(err.statusCode || 500).json({
69
+ errors: [{ message: err.message || "something went wrong!!" }],
70
+ });
71
+ }
72
+ next();
73
+ };
74
+ exports.errorLogger = errorLogger;
@@ -0,0 +1,2 @@
1
+ import { NextFunction } from "express";
2
+ export declare const interceptLoggerNew: (req: any, res: any, next: NextFunction) => void;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.interceptLoggerNew = void 0;
7
+ var drapcode_logger_1 = require("drapcode-logger");
8
+ var date_util_1 = require("../utils/date-util");
9
+ var request_log_1 = require("./redis/request-log");
10
+ var fs_1 = __importDefault(require("fs"));
11
+ var interceptLoggerNew = function (req, res, next) {
12
+ var todayFilePath = "/tmp/log";
13
+ var loggerPath = process.env.LOG_FOLDER_PATH || todayFilePath;
14
+ var originalUrl = req.originalUrl, method = req.method, body = req.body, params = req.params, query = req.query, db = req.db, projectName = req.projectName, projectId = req.projectId, ip = req.ip;
15
+ var reqObject = {
16
+ uri: originalUrl,
17
+ method: method,
18
+ body: body,
19
+ params: params,
20
+ query: query,
21
+ dbName: "",
22
+ message: "",
23
+ line: "",
24
+ ip: ip,
25
+ };
26
+ if (db) {
27
+ reqObject["dbName"] = db.name;
28
+ }
29
+ var PreviouseFilePath;
30
+ if (projectName) {
31
+ loggerPath = loggerPath + "/" + projectName + "/" + date_util_1.createLoggerDateFormat() + "/output";
32
+ PreviouseFilePath = loggerPath + "/" + projectName + "/" + date_util_1.createLoggerPreviouseDateFormat() + "/";
33
+ }
34
+ else if (projectId) {
35
+ loggerPath = loggerPath + "/" + projectId + "/" + date_util_1.createLoggerDateFormat() + "/output";
36
+ PreviouseFilePath = loggerPath + "/" + projectId + "/" + date_util_1.createLoggerPreviouseDateFormat() + "/";
37
+ }
38
+ else {
39
+ loggerPath = loggerPath + "/" + date_util_1.createLoggerDateFormat() + "/output";
40
+ PreviouseFilePath = loggerPath + "/" + date_util_1.createLoggerPreviouseDateFormat() + "/";
41
+ }
42
+ if (fs_1.default.existsSync(PreviouseFilePath)) {
43
+ fs_1.default.rmSync(PreviouseFilePath, { recursive: true, force: true });
44
+ }
45
+ var logger = new drapcode_logger_1.FileLogger(loggerPath).createLogger();
46
+ var oldSend = res.send;
47
+ res.send = function (data) {
48
+ logger.info(data);
49
+ oldSend.apply(res, arguments);
50
+ request_log_1.saveRequest(req, data);
51
+ };
52
+ next();
53
+ };
54
+ exports.interceptLoggerNew = interceptLoggerNew;
@@ -0,0 +1,2 @@
1
+ import { NextFunction } from "express";
2
+ export declare const interceptLogger: (req: any, res: any, next: NextFunction) => void;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interceptLogger = void 0;
4
+ var drapcode_logger_1 = require("drapcode-logger");
5
+ var date_util_1 = require("../utils/date-util");
6
+ var request_log_1 = require("./redis/request-log");
7
+ var interceptLogger = function (req, res, next) {
8
+ var loggerPath = process.env.LOG_FOLDER_PATH || "/tmp/logs";
9
+ var originalUrl = req.originalUrl, method = req.method, body = req.body, params = req.params, query = req.query, db = req.db, projectName = req.projectName, projectId = req.projectId, ip = req.ip;
10
+ var reqObject = {
11
+ uri: originalUrl,
12
+ method: method,
13
+ body: body,
14
+ params: params,
15
+ query: query,
16
+ dbName: "",
17
+ message: "",
18
+ line: "",
19
+ ip: ip,
20
+ };
21
+ if (db) {
22
+ reqObject["dbName"] = db.name;
23
+ }
24
+ if (projectName) {
25
+ loggerPath = loggerPath + "/" + projectName + "/" + date_util_1.createLoggerDateFormat();
26
+ }
27
+ else if (projectId) {
28
+ loggerPath = loggerPath + "/" + projectId + "/" + date_util_1.createLoggerDateFormat();
29
+ }
30
+ else {
31
+ loggerPath = loggerPath + "/" + date_util_1.createLoggerDateFormat();
32
+ }
33
+ var logger = new drapcode_logger_1.FileLogger(loggerPath).createLogger();
34
+ var oldSend = res.send;
35
+ res.send = function (data) {
36
+ logger.info(data);
37
+ oldSend.apply(res, arguments);
38
+ request_log_1.saveRequest(req, data);
39
+ };
40
+ next();
41
+ };
42
+ exports.interceptLogger = interceptLogger;
@@ -0,0 +1 @@
1
+ export declare const saveRequest: (req?: any, res?: any) => Promise<void>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
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;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.saveRequest = void 0;
40
+ var drapcode_redis_1 = require("drapcode-redis");
41
+ var util_1 = require("../../utils/util");
42
+ var saveRequest = function (req, res) {
43
+ if (req === void 0) { req = {}; }
44
+ if (res === void 0) { res = {}; }
45
+ return __awaiter(void 0, void 0, void 0, function () {
46
+ var redisData, ip, respObj;
47
+ return __generator(this, function (_a) {
48
+ switch (_a.label) {
49
+ case 0:
50
+ req.body = util_1.isEmpty(req.body) ? req.query : req.body;
51
+ ip = req.headers["x-forwarded-for"] ||
52
+ req.connection.remoteAddress ||
53
+ req.socket.remoteAddress ||
54
+ (req.connection.socket ? req.connection.socket.remoteAddress : null);
55
+ respObj = {
56
+ projectId: req.projectId,
57
+ projectName: req.projectName,
58
+ route: req.originalUrl,
59
+ method: req.method,
60
+ statusCode: res.statusCode || 200,
61
+ request: JSON.stringify(req.body),
62
+ response: JSON.stringify(res),
63
+ ipAddress: ip,
64
+ };
65
+ return [4 /*yield*/, drapcode_redis_1.redis_get_method("requestLog")];
66
+ case 1:
67
+ redisData = _a.sent();
68
+ if (!redisData)
69
+ redisData = [];
70
+ redisData.push(respObj);
71
+ return [4 /*yield*/, drapcode_redis_1.redis_set_method("requestLog", redisData)];
72
+ case 2:
73
+ _a.sent();
74
+ return [2 /*return*/];
75
+ }
76
+ });
77
+ });
78
+ };
79
+ exports.saveRequest = saveRequest;
@@ -0,0 +1,9 @@
1
+ export declare const checkForError: (result: any, errors: Array<any>, mapping: any, status: number) => Promise<{
2
+ status: number;
3
+ responseData: string;
4
+ noError: boolean;
5
+ } | {
6
+ noError: boolean;
7
+ status?: undefined;
8
+ responseData?: undefined;
9
+ }>;
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
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;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
39
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
40
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
41
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
42
+ r[k] = a[j];
43
+ return r;
44
+ };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.checkForError = void 0;
50
+ var lodash_1 = __importDefault(require("lodash"));
51
+ var voca_1 = __importDefault(require("voca"));
52
+ var checkForError = function (result, errors, mapping, status) { return __awaiter(void 0, void 0, void 0, function () {
53
+ var finalErrors, errorMsgPath, errorValue, fError, finalFinalStatus_1, finalMessage, finalMessages_1;
54
+ return __generator(this, function (_a) {
55
+ finalErrors = [];
56
+ console.log("errors", errors);
57
+ if (errors && errors.length > 0) {
58
+ console.log("I have multi error setting");
59
+ errors.forEach(function (error, index) {
60
+ console.log("Checking for error ", index);
61
+ var fError = handleMultErrorConfig(error, result, status);
62
+ console.log("Error has been checked ", index);
63
+ console.log("fError", fError);
64
+ if (fError) {
65
+ finalErrors.push(fError);
66
+ }
67
+ });
68
+ }
69
+ else {
70
+ console.log("This is response data mapping error");
71
+ errorMsgPath = mapping.errorMsgPath, errorValue = mapping.errorValue;
72
+ fError = handleMultErrorConfig({ message: errorMsgPath, value: errorValue, path: errorValue }, result, status);
73
+ console.log("fError", fError);
74
+ if (fError) {
75
+ finalErrors.push(fError);
76
+ }
77
+ }
78
+ console.log("finalErrors", finalErrors);
79
+ if (finalErrors.length > 0) {
80
+ finalFinalStatus_1 = 400;
81
+ finalMessage = "";
82
+ console.log("finalMessage", finalMessage);
83
+ console.log("finalFinalStatus", finalFinalStatus_1);
84
+ finalMessages_1 = [];
85
+ finalErrors.forEach(function (errObj) {
86
+ var status = errObj.status, message = errObj.message;
87
+ if (status !== 400) {
88
+ finalFinalStatus_1 = +status;
89
+ }
90
+ finalMessages_1.push(message);
91
+ });
92
+ console.log("finalMessages", finalMessages_1);
93
+ finalMessage = finalMessages_1.join("\n").toString();
94
+ console.log("finalMessage", finalMessage);
95
+ return [2 /*return*/, {
96
+ status: finalFinalStatus_1,
97
+ responseData: finalMessage || "Error from source",
98
+ noError: false,
99
+ }];
100
+ }
101
+ else {
102
+ return [2 /*return*/, { noError: true }];
103
+ }
104
+ return [2 /*return*/];
105
+ });
106
+ }); };
107
+ exports.checkForError = checkForError;
108
+ var handleMultErrorConfig = function (error, result, status) {
109
+ if (!error || Object.keys(error).length === 0) {
110
+ return null;
111
+ }
112
+ var message = error.message, path = error.path, value = error.value;
113
+ console.log("handleMultErrorConfig message", message);
114
+ console.log("handleMultErrorConfig path", path);
115
+ console.log("handleMultErrorConfig value", value);
116
+ var apiErrorMessage;
117
+ var apiErrorValue;
118
+ if (result && result !== "undefined" && result !== "null") {
119
+ console.log("handleMultErrorConfig result :>> " + Object.keys(result));
120
+ apiErrorMessage = lodash_1.default.get(result, message);
121
+ if (apiErrorMessage) {
122
+ if (typeof apiErrorMessage == "string") {
123
+ console.log("It's string so leave");
124
+ }
125
+ else if (Array.isArray(apiErrorMessage)) {
126
+ apiErrorMessage = apiErrorMessage.join("\n").toString();
127
+ }
128
+ else {
129
+ var messages = nestedValue(apiErrorMessage);
130
+ apiErrorMessage = messages.join("\n");
131
+ }
132
+ }
133
+ if (path) {
134
+ console.log("Since we already have errorPath");
135
+ apiErrorValue = lodash_1.default.get(result, path);
136
+ }
137
+ else {
138
+ apiErrorValue = status;
139
+ }
140
+ }
141
+ else {
142
+ console.log("result", result);
143
+ apiErrorValue = status;
144
+ }
145
+ apiErrorValue = "" + apiErrorValue;
146
+ console.log("apiErrorMessage", apiErrorMessage);
147
+ console.log("apiErrorValue", apiErrorValue);
148
+ if (value && apiErrorValue == value) {
149
+ return {
150
+ status: 400,
151
+ message: apiErrorMessage,
152
+ };
153
+ }
154
+ else if (["false", "error", "fail", "failed"].includes(apiErrorValue.toLowerCase())) {
155
+ return {
156
+ status: 400,
157
+ message: apiErrorMessage,
158
+ };
159
+ }
160
+ else if (voca_1.default.startsWith(apiErrorValue, "3") ||
161
+ voca_1.default.startsWith(apiErrorValue, "4") ||
162
+ voca_1.default.startsWith(apiErrorValue, "5")) {
163
+ return {
164
+ status: apiErrorValue,
165
+ message: apiErrorMessage,
166
+ };
167
+ }
168
+ return null;
169
+ };
170
+ var nestedValue = function (data, messages) {
171
+ if (messages === void 0) { messages = []; }
172
+ var keys = Object.keys(data);
173
+ keys.forEach(function (key) {
174
+ var value = data[key];
175
+ if (typeof value == "string") {
176
+ messages.push(value);
177
+ }
178
+ else if (Array.isArray(value)) {
179
+ messages = __spreadArrays(messages, value);
180
+ }
181
+ else {
182
+ if (Object.keys(value).length) {
183
+ messages = nestedValue(value, messages);
184
+ }
185
+ }
186
+ });
187
+ return messages;
188
+ };
@@ -0,0 +1,8 @@
1
+ export declare const DATE_REGEX: RegExp;
2
+ export declare const createLoggerDateFormat: () => any;
3
+ export declare const createLoggerPreviouseDateFormat: () => any;
4
+ export declare const createLogsDateFormat: () => any;
5
+ export declare const getDateValue: (value: string) => any;
6
+ export declare const nextDayDate: (date: any) => any;
7
+ export declare const timezoneDateParse: (value: string, nextDay?: boolean, prevDay?: boolean) => Date;
8
+ export declare const formatProjectDates: (item: any, dateFormat: string, fields: Array<object>, reverse: boolean) => any;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatProjectDates = exports.timezoneDateParse = exports.nextDayDate = exports.getDateValue = exports.createLogsDateFormat = exports.createLoggerPreviouseDateFormat = exports.createLoggerDateFormat = exports.DATE_REGEX = void 0;
4
+ var drapcode_constant_1 = require("drapcode-constant");
5
+ var moment = require("moment");
6
+ exports.DATE_REGEX = /^[12]\d{3}(-(0[1-9]|1[0-2])(-(0[1-9]|[12][0-9]|3[01]))?)(T| )?(([01][0-9]|2[0-3]):[0-5]\d(:[0-5]\d(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?$/;
7
+ var createLoggerDateFormat = function () {
8
+ return moment().format("YYYY-MM-DD");
9
+ };
10
+ exports.createLoggerDateFormat = createLoggerDateFormat;
11
+ var createLoggerPreviouseDateFormat = function () {
12
+ return moment().subtract(10, "days").format("YYYY-MM-DD");
13
+ };
14
+ exports.createLoggerPreviouseDateFormat = createLoggerPreviouseDateFormat;
15
+ var createLogsDateFormat = function () {
16
+ return moment().format("YYYY-MM-DDTHH:mm:ss.SSS");
17
+ };
18
+ exports.createLogsDateFormat = createLogsDateFormat;
19
+ var getDateValue = function (value) {
20
+ if (!value)
21
+ return exports.createLogsDateFormat();
22
+ var dateFormat = "YYYY-MM-DDTHH:mm:ss.SSS";
23
+ var _a = value.split(":"), type = _a[0], number = _a[1], unit = _a[2];
24
+ var dateUnit = getDateUnit(unit);
25
+ if (type === "ADD") {
26
+ return moment().add(number, dateUnit).format(dateFormat);
27
+ }
28
+ else if (type === "SUB") {
29
+ return moment().subtract(number, dateUnit).format(dateFormat);
30
+ }
31
+ else
32
+ return exports.createLogsDateFormat();
33
+ };
34
+ exports.getDateValue = getDateValue;
35
+ var getDateUnit = function (unit) {
36
+ switch (unit) {
37
+ case drapcode_constant_1.HOUR:
38
+ return "hour";
39
+ case drapcode_constant_1.DAY:
40
+ return "days";
41
+ case drapcode_constant_1.WEEK:
42
+ return "weeks";
43
+ case drapcode_constant_1.MONTH:
44
+ return "months";
45
+ case drapcode_constant_1.YEAR:
46
+ return "years";
47
+ default:
48
+ return "";
49
+ }
50
+ };
51
+ var nextDayDate = function (date) {
52
+ date = new Date(date);
53
+ return moment(date).add(1, "days").format("YYYY-MM-DD");
54
+ };
55
+ exports.nextDayDate = nextDayDate;
56
+ var timezoneDateParse = function (value, nextDay, prevDay) {
57
+ if (nextDay === void 0) { nextDay = false; }
58
+ if (prevDay === void 0) { prevDay = false; }
59
+ console.log("value", value);
60
+ console.log("");
61
+ var timeZoneDate = moment(value);
62
+ console.log("After Parse Date String into Date", timeZoneDate);
63
+ if (nextDay && value.length <= 10) {
64
+ timeZoneDate = timeZoneDate.add(1, "days");
65
+ }
66
+ if (prevDay && value.length <= 10) {
67
+ timeZoneDate = timeZoneDate.subtract(1, "days");
68
+ }
69
+ console.log("If it was for end date " + nextDay + " then", timeZoneDate);
70
+ timeZoneDate = timeZoneDate.format("YYYY-MM-DDTHH:mm:ss");
71
+ console.log("Format Date into date string", timeZoneDate);
72
+ return new Date(timeZoneDate);
73
+ };
74
+ exports.timezoneDateParse = timezoneDateParse;
75
+ var formatItemDates = function (item, fields, dateFormat, reverse) {
76
+ var dateFormat1 = reverse ? dateFormat : "YYYY-MM-DD";
77
+ var dateFormat2 = reverse ? "YYYY-MM-DD" : dateFormat;
78
+ Object.keys(item).forEach(function (fieldName) {
79
+ var _a;
80
+ var field = fields.find(function (field) { return field.fieldName === fieldName; });
81
+ if (field && (field === null || field === void 0 ? void 0 : field.type) === "date") {
82
+ if (moment(item[fieldName]).isValid()) {
83
+ item[fieldName] =
84
+ ((_a = field === null || field === void 0 ? void 0 : field.extraFieldSetting) === null || _a === void 0 ? void 0 : _a.dateDisplayType) === "datetime-local"
85
+ ? item[fieldName]
86
+ : moment(item[fieldName], dateFormat1).format(dateFormat2);
87
+ }
88
+ else
89
+ item[fieldName] = "";
90
+ }
91
+ });
92
+ return item;
93
+ };
94
+ var formatProjectDates = function (item, dateFormat, fields, reverse) {
95
+ if (Array.isArray(item)) {
96
+ item = item.map(function (item) {
97
+ return formatItemDates(item, fields, dateFormat, reverse);
98
+ });
99
+ }
100
+ else
101
+ item = formatItemDates(item, fields, dateFormat, reverse);
102
+ return item;
103
+ };
104
+ exports.formatProjectDates = formatProjectDates;