apf-node-common 1.0.109 → 1.0.111

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 (37) hide show
  1. package/ApplicationContextService.js +103 -103
  2. package/CoreUtils.js +59 -59
  3. package/Logger/index.js +93 -93
  4. package/Logger/loggerTransports.js +137 -137
  5. package/SSMConfig.js +44 -44
  6. package/ScheduleCalculationService.js +0 -0
  7. package/auditlog/AuditLogger.js +58 -58
  8. package/auditlog/AuditLoggerRepository.js +38 -38
  9. package/auditlog/AuditLoggerService.js +37 -37
  10. package/config/SSMParameters.js +16 -16
  11. package/constants/CommonMessages.js +14 -14
  12. package/constants/Frequency.js +8 -8
  13. package/constants/TimeZone.js +11 -11
  14. package/constants/UserType.js +9 -9
  15. package/exception/CustomException.js +36 -36
  16. package/exception/SendResponse.js +139 -139
  17. package/index.js +187 -187
  18. package/package.json +29 -29
  19. package/test/AWSUtilityIntegrationTest.js +94 -94
  20. package/test/FrequencyValidatorTest.js +0 -0
  21. package/test/LambdaCommunicationServiceTest.js +83 -83
  22. package/test/ScheduleCalculationServiceTest.js +0 -0
  23. package/utils/HashIds.js +139 -139
  24. package/utils/NumberFormatter.js +253 -253
  25. package/utils/aws/AESEncryptionUsingKMS.js +106 -106
  26. package/utils/aws/AWSAPIKeyGenerator.js +307 -307
  27. package/utils/aws/AWSS3Utils.js +128 -128
  28. package/utils/aws/AWSSMSUtils.js +63 -63
  29. package/utils/aws/AWSSNSBasedEmailDispatcher.js +37 -37
  30. package/utils/aws/AWSSNSBasedSMSDispatcher.js +37 -37
  31. package/utils/aws/AWSSNSUtils.js +35 -38
  32. package/utils/aws/LambdaCommunicationService.js +232 -232
  33. package/utils/enumHelper.js +7 -7
  34. package/utils/thirdparty/URLShorteningService.js +25 -25
  35. package/validation/CoreValidations.js +45 -45
  36. package/validation/FrequencyValidator.js +0 -0
  37. package/validation/SchemaValidation.js +106 -106
@@ -1,103 +1,103 @@
1
- //const log = require('./Logger/index').getLogger();
2
-
3
- const sendResponse= require('./exception/SendResponse')
4
- var jwt = require('jsonwebtoken');
5
- const {UserType} = require('./constants/UserType');
6
-
7
- exports.setContextAttributes = async (req, res,httpContext, next)=>{
8
- const log = require('./index').Logger;
9
- let authToken=req.get('Authorization');
10
- log.info('httpContext : ' + httpContext);
11
-
12
- if (!authToken) {
13
-
14
- // console.log('authToken ' + authToken);
15
- // const result = sendResponse.unAuthorizedAccess(res);
16
- // res.status(result.statuscode).send(result.response);
17
- next();
18
-
19
- } else {
20
- try{
21
-
22
-
23
-
24
- authToken = authToken.replace('Bearer','').trim();
25
- const payload = jwt.decode(authToken, {complete: true}).payload;
26
-
27
- if (payload) {
28
- log.info(JSON.stringify(payload));
29
-
30
- if (payload.Admin=='1' && (payload.UserType).toLowerCase()===UserType.GLOBAL) {
31
- httpContext.set('IsGlobalAdmin',true);
32
- httpContext.set('IsAdmin',true);
33
-
34
- log.info(`Context - IsGlobalAdmin - ${httpContext.get('IsGlobalAdmin')}`);
35
- log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
36
-
37
- } else if ((payload.Admin==='1') && ((payload.UserType).toLowerCase()==UserType.MERCHANT)) {
38
- httpContext.set('IsAdmin',true);
39
- httpContext.set('IsMerchantAdmin',true);
40
-
41
- log.info(`Context - IsMerchantAdmin - ${httpContext.get('IsMerchantAdmin')}`);
42
- log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
43
-
44
- } else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.RESELLER) {
45
- httpContext.set('IsResellerAdmin',true);
46
- httpContext.set('IsAdmin',true);
47
-
48
- log.info(`Context - IsResellerAdmin - ${httpContext.get('IsResellerAdmin')}`);
49
- log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
50
-
51
- } else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.PARTNER) {
52
- httpContext.set('IsPartnerAdmin',true);
53
- httpContext.set('IsAdmin',true);
54
-
55
- log.info(`Context - IsPartnerAdmin - ${httpContext.get('IsPartnerAdmin')}`);
56
- log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
57
-
58
- }else if(payload.Admin==='1' && (payload.UserType).toLowerCase() === UserType.CUSTOMER){
59
- httpContext.set('IsAdmin',true);
60
- httpContext.set('CustomerUserName',payload.Id);
61
-
62
- log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
63
- }else if (payload.Admin==='0'){
64
- httpContext.set('IsAdmin',false);
65
- log.info(`Context - UserType - ${payload.UserType}`);
66
- log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
67
- }
68
- httpContext.set('ParentId',payload.ParentId)
69
- httpContext.set('ResellerId',payload.ResellerId)
70
- httpContext.set('PartnerId',payload.PartnerId)
71
- httpContext.set('MerchantId',payload.MerchantId)
72
- httpContext.set('CustomerId',payload.CustomerId)
73
- httpContext.set('UserType', payload.UserType)
74
- httpContext.set('Admin', payload.Admin)
75
-
76
- httpContext.set('username',payload.sub)
77
- httpContext.set('TimeZone',payload.TimeZone)
78
-
79
- log.info(`username - ${httpContext.get('username')}`);
80
- next();
81
- } else {
82
- return sendResponse.unAuthorizedAccess(res);
83
- }
84
- }catch(error){
85
- const result = sendResponse.unAuthorizedAccess(res);
86
- res.status(result.statuscode).send(result.response);
87
- }
88
- }
89
- }
90
-
91
- // function userMiddleware (req, res, next) {
92
- // getUserViaJWT(req.headers.authentication)
93
- // .then(function(user) {
94
- // req.user = user
95
- // next()
96
- // })
97
- // .catch(function (error) {
98
- // res.status(401).end() //replace with proper error handling
99
- // })
100
- // }
101
- // app.use(userMiddleware)
102
-
103
-
1
+ //const log = require('./Logger/index').getLogger();
2
+
3
+ const sendResponse= require('./exception/SendResponse')
4
+ var jwt = require('jsonwebtoken');
5
+ const {UserType} = require('./constants/UserType');
6
+
7
+ exports.setContextAttributes = async (req, res,httpContext, next)=>{
8
+ const log = require('./index').Logger;
9
+ let authToken=req.get('Authorization');
10
+ log.info('httpContext : ' + httpContext);
11
+
12
+ if (!authToken) {
13
+
14
+ // console.log('authToken ' + authToken);
15
+ // const result = sendResponse.unAuthorizedAccess(res);
16
+ // res.status(result.statuscode).send(result.response);
17
+ next();
18
+
19
+ } else {
20
+ try{
21
+
22
+
23
+
24
+ authToken = authToken.replace('Bearer','').trim();
25
+ const payload = jwt.decode(authToken, {complete: true}).payload;
26
+
27
+ if (payload) {
28
+ log.info(JSON.stringify(payload));
29
+
30
+ if (payload.Admin=='1' && (payload.UserType).toLowerCase()===UserType.GLOBAL) {
31
+ httpContext.set('IsGlobalAdmin',true);
32
+ httpContext.set('IsAdmin',true);
33
+
34
+ log.info(`Context - IsGlobalAdmin - ${httpContext.get('IsGlobalAdmin')}`);
35
+ log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
36
+
37
+ } else if ((payload.Admin==='1') && ((payload.UserType).toLowerCase()==UserType.MERCHANT)) {
38
+ httpContext.set('IsAdmin',true);
39
+ httpContext.set('IsMerchantAdmin',true);
40
+
41
+ log.info(`Context - IsMerchantAdmin - ${httpContext.get('IsMerchantAdmin')}`);
42
+ log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
43
+
44
+ } else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.RESELLER) {
45
+ httpContext.set('IsResellerAdmin',true);
46
+ httpContext.set('IsAdmin',true);
47
+
48
+ log.info(`Context - IsResellerAdmin - ${httpContext.get('IsResellerAdmin')}`);
49
+ log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
50
+
51
+ } else if (payload.Admin==='1' && (payload.UserType).toLowerCase()===UserType.PARTNER) {
52
+ httpContext.set('IsPartnerAdmin',true);
53
+ httpContext.set('IsAdmin',true);
54
+
55
+ log.info(`Context - IsPartnerAdmin - ${httpContext.get('IsPartnerAdmin')}`);
56
+ log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
57
+
58
+ }else if(payload.Admin==='1' && (payload.UserType).toLowerCase() === UserType.CUSTOMER){
59
+ httpContext.set('IsAdmin',true);
60
+ httpContext.set('CustomerUserName',payload.Id);
61
+
62
+ log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
63
+ }else if (payload.Admin==='0'){
64
+ httpContext.set('IsAdmin',false);
65
+ log.info(`Context - UserType - ${payload.UserType}`);
66
+ log.info(`Context - IsAdmin - ${httpContext.get('IsAdmin')}`);
67
+ }
68
+ httpContext.set('ParentId',payload.ParentId)
69
+ httpContext.set('ResellerId',payload.ResellerId)
70
+ httpContext.set('PartnerId',payload.PartnerId)
71
+ httpContext.set('MerchantId',payload.MerchantId)
72
+ httpContext.set('CustomerId',payload.CustomerId)
73
+ httpContext.set('UserType', payload.UserType)
74
+ httpContext.set('Admin', payload.Admin)
75
+
76
+ httpContext.set('username',payload.sub)
77
+ httpContext.set('TimeZone',payload.TimeZone)
78
+
79
+ log.info(`username - ${httpContext.get('username')}`);
80
+ next();
81
+ } else {
82
+ return sendResponse.unAuthorizedAccess(res);
83
+ }
84
+ }catch(error){
85
+ const result = sendResponse.unAuthorizedAccess(res);
86
+ res.status(result.statuscode).send(result.response);
87
+ }
88
+ }
89
+ }
90
+
91
+ // function userMiddleware (req, res, next) {
92
+ // getUserViaJWT(req.headers.authentication)
93
+ // .then(function(user) {
94
+ // req.user = user
95
+ // next()
96
+ // })
97
+ // .catch(function (error) {
98
+ // res.status(401).end() //replace with proper error handling
99
+ // })
100
+ // }
101
+ // app.use(userMiddleware)
102
+
103
+
package/CoreUtils.js CHANGED
@@ -1,60 +1,60 @@
1
- const moment = require("moment");
2
- const momentTz = require('moment-timezone');
3
- const timeZoneConvertor = require('./utils/TimeZoneConverter');
4
- const EnumHelper = require('./utils/enumHelper')
5
- const TimeZone = require('./constants/TimeZone')
6
- const DATE_TIME_DB_FORMAT = 'YYYY-MM-DD HH:mm:ss';
7
-
8
-
9
- convertUCfirst = (string) => {
10
- return string.charAt(0).toUpperCase() + string.slice(1);
11
- }
12
-
13
- //handles upto 10 digit number
14
- prefixPad = (num, size) => {
15
- return ('000000000' + num).substr(-size);
16
- }
17
-
18
- //supported date 2020-05-05T00:36:55.000Z
19
- getUTCDate = (dateValue, timezone) => {
20
-
21
- let dateWithoutTimezone = moment(dateValue, "MM-DD-YYYY HH:mm:ss").format("YYYY-MM-DD HH:mm:ss");
22
- var formattedDate = momentTz.tz(dateWithoutTimezone, EnumHelper.getEnumByValue(TimeZone, timezone));
23
- var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
24
- return utcDate;
25
- }
26
-
27
- isISOFormat = (inputDate) => {
28
- var ISO_8601_FULL = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|Z)?$/i
29
- return ISO_8601_FULL.test(inputDate);
30
- }
31
- isInputDateTime = (inputDate) => {
32
- var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
33
- return INPUT_DATE.test(inputDate);
34
- }
35
-
36
- isInputDate = (inputDate) => {
37
- var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d$/;
38
- return INPUT_DATE.test(inputDate);
39
- }
40
-
41
-
42
- formatSearchToDate = (timezone, toDate) => {
43
- let toMerchantTimeZone = timeZoneConvertor.timeZoneConvert(parseInt(timezone), moment(toDate).utc(true));
44
- let endDay = moment(toMerchantTimeZone).endOf('day').format(DATE_TIME_DB_FORMAT);
45
-
46
- var formattedDate = momentTz.tz(endDay, EnumHelper.getEnumByValue(TimeZone, timezone));
47
- var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
48
- return utcDate;
49
- }
50
-
51
-
52
- module.exports = {
53
- convertUCfirst: convertUCfirst,
54
- prefixPad: prefixPad,
55
- getUTCDate: getUTCDate,
56
- isISOFormat: isISOFormat,
57
- isInputDateTime: isInputDateTime,
58
- isInputDate: isInputDate,
59
- formatSearchToDate: formatSearchToDate
1
+ const moment = require("moment");
2
+ const momentTz = require('moment-timezone');
3
+ const timeZoneConvertor = require('./utils/TimeZoneConverter');
4
+ const EnumHelper = require('./utils/enumHelper')
5
+ const TimeZone = require('./constants/TimeZone')
6
+ const DATE_TIME_DB_FORMAT = 'YYYY-MM-DD HH:mm:ss';
7
+
8
+
9
+ convertUCfirst = (string) => {
10
+ return string.charAt(0).toUpperCase() + string.slice(1);
11
+ }
12
+
13
+ //handles upto 10 digit number
14
+ prefixPad = (num, size) => {
15
+ return ('000000000' + num).substr(-size);
16
+ }
17
+
18
+ //supported date 2020-05-05T00:36:55.000Z
19
+ getUTCDate = (dateValue, timezone) => {
20
+
21
+ let dateWithoutTimezone = moment(dateValue, "MM-DD-YYYY HH:mm:ss").format("YYYY-MM-DD HH:mm:ss");
22
+ var formattedDate = momentTz.tz(dateWithoutTimezone, EnumHelper.getEnumByValue(TimeZone, timezone));
23
+ var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
24
+ return utcDate;
25
+ }
26
+
27
+ isISOFormat = (inputDate) => {
28
+ var ISO_8601_FULL = /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?(([+-]\d\d:\d\d)|Z)?$/i
29
+ return ISO_8601_FULL.test(inputDate);
30
+ }
31
+ isInputDateTime = (inputDate) => {
32
+ var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
33
+ return INPUT_DATE.test(inputDate);
34
+ }
35
+
36
+ isInputDate = (inputDate) => {
37
+ var INPUT_DATE = /^([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01]))-\d\d\d\d$/;
38
+ return INPUT_DATE.test(inputDate);
39
+ }
40
+
41
+
42
+ formatSearchToDate = (timezone, toDate) => {
43
+ let toMerchantTimeZone = timeZoneConvertor.timeZoneConvert(parseInt(timezone), moment(toDate).utc(true));
44
+ let endDay = moment(toMerchantTimeZone).endOf('day').format(DATE_TIME_DB_FORMAT);
45
+
46
+ var formattedDate = momentTz.tz(endDay, EnumHelper.getEnumByValue(TimeZone, timezone));
47
+ var utcDate = formattedDate.utc().format(DATE_TIME_DB_FORMAT);
48
+ return utcDate;
49
+ }
50
+
51
+
52
+ module.exports = {
53
+ convertUCfirst: convertUCfirst,
54
+ prefixPad: prefixPad,
55
+ getUTCDate: getUTCDate,
56
+ isISOFormat: isISOFormat,
57
+ isInputDateTime: isInputDateTime,
58
+ isInputDate: isInputDate,
59
+ formatSearchToDate: formatSearchToDate
60
60
  }
package/Logger/index.js CHANGED
@@ -1,94 +1,94 @@
1
- 'use strict'
2
-
3
- const winstonAwsCloudWatch = require('winston-aws-cloudwatch');
4
- const winston = require('winston');
5
- const config = require('./loggerTransports');
6
-
7
- class Logger {
8
-
9
- getLogger(module) {
10
- const logType = process.env.LOG_TYPE || 'console';
11
- const level = process.env.LOG_LEVEL || "info";
12
- let logger;
13
- console.log(logType);
14
- switch (logType) {
15
- case 'off':
16
- console.log('Logging is off');
17
- logger = winston.createLogger(config.offTransport());
18
- logger.cli();
19
- break;
20
-
21
- case 'console':
22
- console.log('***********Logging to console***********');
23
- logger = winston.createLogger(config.consoleTransport());
24
- logger.format = winston.format.combine(winston.format.colorize(), winston.format.simple())
25
- break;
26
-
27
-
28
- case 'aws':
29
- console.log('***********Logging to aws****************');
30
- logger = winston.createLogger(config.awsTransport(module));
31
- break;
32
-
33
- case 'file':
34
- console.log('***********Logging to file****************');
35
- logger = winston.createLogger(config.fileTransport());
36
- break;
37
-
38
- default:
39
- console.log('***********Default chosen:Logging to console***********');
40
- logger = (config.consoleTransport());
41
- logger.cli();
42
- break;
43
-
44
- }
45
- logger.level = level;
46
- logger.format = this.getRequestLogFormatter();
47
- // Call exceptions.handle with a transport to handle exceptions
48
- // logger.exceptions.handle(
49
- // new winston.transports.File({ filename: 'exceptions.log' })
50
- // );
51
-
52
- /* const DailyRotateFile = require('winston-daily-rotate-file');
53
- logger.configure({
54
- level: 'verbose',
55
- transports: [
56
- new DailyRotateFile(opts)
57
- ]
58
- });*/
59
- logger.exitOnError = false; //winston will not exit after logging an uncaughtException
60
- return logger;
61
- }
62
-
63
- getRequestLogFormatter() {
64
- const { combine, timestamp, printf } = winston.format;
65
-
66
- return combine(
67
- timestamp({
68
- format: 'YYYY-MM-DD HH:mm:ss'
69
- }),
70
- // [${info.label}] winston.format.label({ label: path.basename(process.mainModule.filename) }),
71
- winston.format.printf(info => `${info.timestamp} ${info.level} : ${info.message}`)
72
-
73
- );
74
- }
75
-
76
-
77
- logError(err, req, res, next) {
78
- logger.error(err)
79
- next();
80
- }
81
-
82
- logRequest(req, res, next, log) {
83
- log.info('hello');
84
- next();
85
- }
86
-
87
- getLog() {
88
- return this.logger;
89
- }
90
-
91
-
92
-
93
- }
1
+ 'use strict'
2
+
3
+ const winstonAwsCloudWatch = require('winston-aws-cloudwatch');
4
+ const winston = require('winston');
5
+ const config = require('./loggerTransports');
6
+
7
+ class Logger {
8
+
9
+ getLogger(module) {
10
+ const logType = process.env.LOG_TYPE || 'console';
11
+ const level = process.env.LOG_LEVEL || "info";
12
+ let logger;
13
+ console.log(logType);
14
+ switch (logType) {
15
+ case 'off':
16
+ console.log('Logging is off');
17
+ logger = winston.createLogger(config.offTransport());
18
+ logger.cli();
19
+ break;
20
+
21
+ case 'console':
22
+ console.log('***********Logging to console***********');
23
+ logger = winston.createLogger(config.consoleTransport());
24
+ logger.format = winston.format.combine(winston.format.colorize(), winston.format.simple())
25
+ break;
26
+
27
+
28
+ case 'aws':
29
+ console.log('***********Logging to aws****************');
30
+ logger = winston.createLogger(config.awsTransport(module));
31
+ break;
32
+
33
+ case 'file':
34
+ console.log('***********Logging to file****************');
35
+ logger = winston.createLogger(config.fileTransport());
36
+ break;
37
+
38
+ default:
39
+ console.log('***********Default chosen:Logging to console***********');
40
+ logger = (config.consoleTransport());
41
+ logger.cli();
42
+ break;
43
+
44
+ }
45
+ logger.level = level;
46
+ logger.format = this.getRequestLogFormatter();
47
+ // Call exceptions.handle with a transport to handle exceptions
48
+ // logger.exceptions.handle(
49
+ // new winston.transports.File({ filename: 'exceptions.log' })
50
+ // );
51
+
52
+ /* const DailyRotateFile = require('winston-daily-rotate-file');
53
+ logger.configure({
54
+ level: 'verbose',
55
+ transports: [
56
+ new DailyRotateFile(opts)
57
+ ]
58
+ });*/
59
+ logger.exitOnError = false; //winston will not exit after logging an uncaughtException
60
+ return logger;
61
+ }
62
+
63
+ getRequestLogFormatter() {
64
+ const { combine, timestamp, printf } = winston.format;
65
+
66
+ return combine(
67
+ timestamp({
68
+ format: 'YYYY-MM-DD HH:mm:ss'
69
+ }),
70
+ // [${info.label}] winston.format.label({ label: path.basename(process.mainModule.filename) }),
71
+ winston.format.printf(info => `${info.timestamp} ${info.level} : ${info.message}`)
72
+
73
+ );
74
+ }
75
+
76
+
77
+ logError(err, req, res, next) {
78
+ logger.error(err)
79
+ next();
80
+ }
81
+
82
+ logRequest(req, res, next, log) {
83
+ log.info('hello');
84
+ next();
85
+ }
86
+
87
+ getLog() {
88
+ return this.logger;
89
+ }
90
+
91
+
92
+
93
+ }
94
94
  module.exports = new Logger;