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.
- package/ApplicationContextService.js +103 -103
- package/CoreUtils.js +59 -59
- package/Logger/index.js +93 -93
- package/Logger/loggerTransports.js +137 -137
- package/SSMConfig.js +44 -44
- package/ScheduleCalculationService.js +0 -0
- package/auditlog/AuditLogger.js +58 -58
- package/auditlog/AuditLoggerRepository.js +38 -38
- package/auditlog/AuditLoggerService.js +37 -37
- package/config/SSMParameters.js +16 -16
- package/constants/CommonMessages.js +14 -14
- package/constants/Frequency.js +8 -8
- package/constants/TimeZone.js +11 -11
- package/constants/UserType.js +9 -9
- package/exception/CustomException.js +36 -36
- package/exception/SendResponse.js +139 -139
- package/index.js +187 -187
- package/package.json +29 -29
- package/test/AWSUtilityIntegrationTest.js +94 -94
- package/test/FrequencyValidatorTest.js +0 -0
- package/test/LambdaCommunicationServiceTest.js +83 -83
- package/test/ScheduleCalculationServiceTest.js +0 -0
- package/utils/HashIds.js +139 -139
- package/utils/NumberFormatter.js +253 -253
- package/utils/aws/AESEncryptionUsingKMS.js +106 -106
- package/utils/aws/AWSAPIKeyGenerator.js +307 -307
- package/utils/aws/AWSS3Utils.js +128 -128
- package/utils/aws/AWSSMSUtils.js +63 -63
- package/utils/aws/AWSSNSBasedEmailDispatcher.js +37 -37
- package/utils/aws/AWSSNSBasedSMSDispatcher.js +37 -37
- package/utils/aws/AWSSNSUtils.js +35 -38
- package/utils/aws/LambdaCommunicationService.js +232 -232
- package/utils/enumHelper.js +7 -7
- package/utils/thirdparty/URLShorteningService.js +25 -25
- package/validation/CoreValidations.js +45 -45
- package/validation/FrequencyValidator.js +0 -0
- package/validation/SchemaValidation.js +106 -106
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
var Ajv = require('ajv');
|
|
2
|
-
var ajv = new Ajv({ v5: true, $data: true, allErrors: true, jsonPointers: true });
|
|
3
|
-
// Ajv options allErrors and jsonPointers are required
|
|
4
|
-
require('ajv-keywords')(ajv /*, {singleError: true} */ );
|
|
5
|
-
require('ajv-errors')(ajv);
|
|
6
|
-
const moment = require('moment');
|
|
7
|
-
const coreUtils = require('../CoreUtils');
|
|
8
|
-
const sendResponse = require('../exception/SendResponse');
|
|
9
|
-
const dateTimeRegex = /^\d\d\d\d-([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01])) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
|
|
10
|
-
|
|
11
|
-
validateRequest = (schema, dto) => {
|
|
12
|
-
const log = require('../index').Logger;
|
|
13
|
-
|
|
14
|
-
ajv.addFormat('date-time', {
|
|
15
|
-
validate: (dateTimeString) => dateTimeRegex.test(dateTimeString),
|
|
16
|
-
compare: (first,second)=> {
|
|
17
|
-
if(moment(first).isBefore(moment(second))){
|
|
18
|
-
return -1;
|
|
19
|
-
}else if(moment(first).isAfter(moment(second))){
|
|
20
|
-
return 1;
|
|
21
|
-
}else if(moment(first).isSame(moment(second))){
|
|
22
|
-
return 0
|
|
23
|
-
}
|
|
24
|
-
}});
|
|
25
|
-
if(!ajv.getKeyword('isNotEmpty')){
|
|
26
|
-
ajv.addKeyword('isNotEmpty', {
|
|
27
|
-
type: 'string',
|
|
28
|
-
validate: function (schema, data) {
|
|
29
|
-
return typeof data === 'string' && data.trim() !== ''
|
|
30
|
-
},
|
|
31
|
-
errors: false
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
var validate = ajv.compile(schema);
|
|
36
|
-
var valid = validate(dto);
|
|
37
|
-
|
|
38
|
-
if (!valid) {
|
|
39
|
-
log.error('dto validation failed');
|
|
40
|
-
let validationResponse = validate.errors; // processed errors
|
|
41
|
-
log.info('raw dto errors:: ' + JSON.stringify(validationResponse));
|
|
42
|
-
let customErrorResponse = createErrorResponse(validationResponse);
|
|
43
|
-
return sendResponse.validationException(customErrorResponse);
|
|
44
|
-
} else {
|
|
45
|
-
log.info('dto validation passed');
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
createErrorResponse = (validationResponse) => {
|
|
51
|
-
var errors = [];
|
|
52
|
-
|
|
53
|
-
//console.info('createErrorResponse:' + JSON.stringify(validationResponse));
|
|
54
|
-
validationResponse.forEach(function(errorRow) {
|
|
55
|
-
var error;
|
|
56
|
-
if (errorRow.dataPath) {
|
|
57
|
-
if (errorRow.keyword === 'required') {
|
|
58
|
-
let property = errorRow.params.missingProperty
|
|
59
|
-
error = {
|
|
60
|
-
"message": "Key_" + coreUtils.convertUCfirst(property) + "CannotBeBlank",
|
|
61
|
-
"field": errorRow.dataPath + "/" + property
|
|
62
|
-
}
|
|
63
|
-
errors.push(error);
|
|
64
|
-
} else if(errorRow.keyword != 'if'){ // to ignore if error message provided by ajv.
|
|
65
|
-
error = {
|
|
66
|
-
"message": errorRow.message,
|
|
67
|
-
"field": errorRow.dataPath.slice(1)
|
|
68
|
-
}
|
|
69
|
-
errors.push(error);
|
|
70
|
-
}
|
|
71
|
-
} else {
|
|
72
|
-
let internalErrorRow = errorRow;
|
|
73
|
-
if (internalErrorRow.keyword === 'dependencies') {
|
|
74
|
-
let firstProperty = internalErrorRow.params.property
|
|
75
|
-
let secondProperty = internalErrorRow.params.missingProperty
|
|
76
|
-
error = {
|
|
77
|
-
"message": "Key_" + coreUtils.convertUCfirst(firstProperty) +
|
|
78
|
-
"And" + coreUtils.convertUCfirst(secondProperty) + "NotToBeEmpty",
|
|
79
|
-
"field": firstProperty + "," + secondProperty
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
if (internalErrorRow.keyword === 'required') {
|
|
84
|
-
let property = internalErrorRow.params.missingProperty
|
|
85
|
-
error = {
|
|
86
|
-
"message": "Key_" + coreUtils.convertUCfirst(property) + "CannotBeBlank",
|
|
87
|
-
"field": property
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (internalErrorRow.keyword === 'additionalProperties') {
|
|
91
|
-
let property = internalErrorRow.params.additionalProperty
|
|
92
|
-
error = {
|
|
93
|
-
"message": "Key_" + coreUtils.convertUCfirst(property) + "isNotRequired",
|
|
94
|
-
"field": property
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (error) {
|
|
98
|
-
errors.push(error);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
return errors;
|
|
104
|
-
}
|
|
105
|
-
module.exports = {
|
|
106
|
-
validateRequest
|
|
1
|
+
var Ajv = require('ajv');
|
|
2
|
+
var ajv = new Ajv({ v5: true, $data: true, allErrors: true, jsonPointers: true });
|
|
3
|
+
// Ajv options allErrors and jsonPointers are required
|
|
4
|
+
require('ajv-keywords')(ajv /*, {singleError: true} */ );
|
|
5
|
+
require('ajv-errors')(ajv);
|
|
6
|
+
const moment = require('moment');
|
|
7
|
+
const coreUtils = require('../CoreUtils');
|
|
8
|
+
const sendResponse = require('../exception/SendResponse');
|
|
9
|
+
const dateTimeRegex = /^\d\d\d\d-([0]{0,1}[1-9]|1[012])-([1-9]|([012][0-9])|(3[01])) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
|
|
10
|
+
|
|
11
|
+
validateRequest = (schema, dto) => {
|
|
12
|
+
const log = require('../index').Logger;
|
|
13
|
+
|
|
14
|
+
ajv.addFormat('date-time', {
|
|
15
|
+
validate: (dateTimeString) => dateTimeRegex.test(dateTimeString),
|
|
16
|
+
compare: (first,second)=> {
|
|
17
|
+
if(moment(first).isBefore(moment(second))){
|
|
18
|
+
return -1;
|
|
19
|
+
}else if(moment(first).isAfter(moment(second))){
|
|
20
|
+
return 1;
|
|
21
|
+
}else if(moment(first).isSame(moment(second))){
|
|
22
|
+
return 0
|
|
23
|
+
}
|
|
24
|
+
}});
|
|
25
|
+
if(!ajv.getKeyword('isNotEmpty')){
|
|
26
|
+
ajv.addKeyword('isNotEmpty', {
|
|
27
|
+
type: 'string',
|
|
28
|
+
validate: function (schema, data) {
|
|
29
|
+
return typeof data === 'string' && data.trim() !== ''
|
|
30
|
+
},
|
|
31
|
+
errors: false
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var validate = ajv.compile(schema);
|
|
36
|
+
var valid = validate(dto);
|
|
37
|
+
|
|
38
|
+
if (!valid) {
|
|
39
|
+
log.error('dto validation failed');
|
|
40
|
+
let validationResponse = validate.errors; // processed errors
|
|
41
|
+
log.info('raw dto errors:: ' + JSON.stringify(validationResponse));
|
|
42
|
+
let customErrorResponse = createErrorResponse(validationResponse);
|
|
43
|
+
return sendResponse.validationException(customErrorResponse);
|
|
44
|
+
} else {
|
|
45
|
+
log.info('dto validation passed');
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
createErrorResponse = (validationResponse) => {
|
|
51
|
+
var errors = [];
|
|
52
|
+
|
|
53
|
+
//console.info('createErrorResponse:' + JSON.stringify(validationResponse));
|
|
54
|
+
validationResponse.forEach(function(errorRow) {
|
|
55
|
+
var error;
|
|
56
|
+
if (errorRow.dataPath) {
|
|
57
|
+
if (errorRow.keyword === 'required') {
|
|
58
|
+
let property = errorRow.params.missingProperty
|
|
59
|
+
error = {
|
|
60
|
+
"message": "Key_" + coreUtils.convertUCfirst(property) + "CannotBeBlank",
|
|
61
|
+
"field": errorRow.dataPath + "/" + property
|
|
62
|
+
}
|
|
63
|
+
errors.push(error);
|
|
64
|
+
} else if(errorRow.keyword != 'if'){ // to ignore if error message provided by ajv.
|
|
65
|
+
error = {
|
|
66
|
+
"message": errorRow.message,
|
|
67
|
+
"field": errorRow.dataPath.slice(1)
|
|
68
|
+
}
|
|
69
|
+
errors.push(error);
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
let internalErrorRow = errorRow;
|
|
73
|
+
if (internalErrorRow.keyword === 'dependencies') {
|
|
74
|
+
let firstProperty = internalErrorRow.params.property
|
|
75
|
+
let secondProperty = internalErrorRow.params.missingProperty
|
|
76
|
+
error = {
|
|
77
|
+
"message": "Key_" + coreUtils.convertUCfirst(firstProperty) +
|
|
78
|
+
"And" + coreUtils.convertUCfirst(secondProperty) + "NotToBeEmpty",
|
|
79
|
+
"field": firstProperty + "," + secondProperty
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
if (internalErrorRow.keyword === 'required') {
|
|
84
|
+
let property = internalErrorRow.params.missingProperty
|
|
85
|
+
error = {
|
|
86
|
+
"message": "Key_" + coreUtils.convertUCfirst(property) + "CannotBeBlank",
|
|
87
|
+
"field": property
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (internalErrorRow.keyword === 'additionalProperties') {
|
|
91
|
+
let property = internalErrorRow.params.additionalProperty
|
|
92
|
+
error = {
|
|
93
|
+
"message": "Key_" + coreUtils.convertUCfirst(property) + "isNotRequired",
|
|
94
|
+
"field": property
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (error) {
|
|
98
|
+
errors.push(error);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
return errors;
|
|
104
|
+
}
|
|
105
|
+
module.exports = {
|
|
106
|
+
validateRequest
|
|
107
107
|
}
|