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,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
  }