@my-devkit/core 1.0.99 → 1.0.101

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 (121) hide show
  1. package/dist/aggregate.d.ts +1 -1
  2. package/dist/aggregate.js +19 -24
  3. package/dist/aggregate.js.map +1 -1
  4. package/dist/command.d.ts +1 -1
  5. package/dist/command.js +8 -9
  6. package/dist/command.js.map +1 -1
  7. package/dist/date-helper.js +27 -33
  8. package/dist/date-helper.js.map +1 -1
  9. package/dist/decorators/cacheable.decorator.js +32 -95
  10. package/dist/decorators/cacheable.decorator.js.map +1 -1
  11. package/dist/decorators/index.js +5 -1
  12. package/dist/decorators/index.js.map +1 -1
  13. package/dist/decorators/retryable.decorator.js +6 -45
  14. package/dist/decorators/retryable.decorator.js.map +1 -1
  15. package/dist/enum-helper.js +13 -31
  16. package/dist/enum-helper.js.map +1 -1
  17. package/dist/errors/bad-request-error.js +6 -24
  18. package/dist/errors/bad-request-error.js.map +1 -1
  19. package/dist/errors/domain-error.js +6 -24
  20. package/dist/errors/domain-error.js.map +1 -1
  21. package/dist/errors/forbidden-error.js +6 -24
  22. package/dist/errors/forbidden-error.js.map +1 -1
  23. package/dist/errors/index.js +5 -1
  24. package/dist/errors/index.js.map +1 -1
  25. package/dist/errors/not-found-error.js +6 -24
  26. package/dist/errors/not-found-error.js.map +1 -1
  27. package/dist/errors/not-implemented-error.js +6 -24
  28. package/dist/errors/not-implemented-error.js.map +1 -1
  29. package/dist/errors/unauthorized-error.js +6 -24
  30. package/dist/errors/unauthorized-error.js.map +1 -1
  31. package/dist/event.d.ts +7 -7
  32. package/dist/event.js +44 -53
  33. package/dist/event.js.map +1 -1
  34. package/dist/guid/index.js +1 -1
  35. package/dist/guid/index.js.map +1 -1
  36. package/dist/index.js +18 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/json-helper.d.ts +1 -0
  39. package/dist/json-helper.js +18 -12
  40. package/dist/json-helper.js.map +1 -1
  41. package/dist/logger.js +35 -57
  42. package/dist/logger.js.map +1 -1
  43. package/dist/maintenance-model.js +16 -34
  44. package/dist/maintenance-model.js.map +1 -1
  45. package/dist/model.d.ts +1 -1
  46. package/dist/model.js +11 -16
  47. package/dist/model.js.map +1 -1
  48. package/dist/passwords.js +1 -1
  49. package/dist/passwords.js.map +1 -1
  50. package/dist/promise-helper.js +25 -67
  51. package/dist/promise-helper.js.map +1 -1
  52. package/dist/release-model.js +16 -34
  53. package/dist/release-model.js.map +1 -1
  54. package/dist/retry.js +24 -76
  55. package/dist/retry.js.map +1 -1
  56. package/dist/sanity-check-warm-up-dto.js +11 -12
  57. package/dist/sanity-check-warm-up-dto.js.map +1 -1
  58. package/dist/serialize/deserialize.js +2 -2
  59. package/dist/serialize/deserialize.js.map +1 -1
  60. package/dist/serialize/index.d.ts +2 -1
  61. package/dist/serialize/index.js +7 -2
  62. package/dist/serialize/index.js.map +1 -1
  63. package/dist/serialize/serializable.d.ts +1 -1
  64. package/dist/serialize/serializable.js +5 -5
  65. package/dist/serialize/serializable.js.map +1 -1
  66. package/dist/serialize/serialize-helper.d.ts +5 -0
  67. package/dist/serialize/serialize-helper.js +38 -0
  68. package/dist/serialize/serialize-helper.js.map +1 -0
  69. package/dist/serialize/serialize.js +1 -1
  70. package/dist/serialize/serialize.js.map +1 -1
  71. package/dist/serialize/type-helper.js +62 -73
  72. package/dist/serialize/type-helper.js.map +1 -1
  73. package/dist/sleep.js +5 -34
  74. package/dist/sleep.js.map +1 -1
  75. package/dist/validators/custom-validators/camel-case.js +2 -2
  76. package/dist/validators/custom-validators/camel-case.js.map +1 -1
  77. package/dist/validators/custom-validators/equals-to.js +5 -5
  78. package/dist/validators/custom-validators/equals-to.js.map +1 -1
  79. package/dist/validators/custom-validators/greater-or-equal-than.js +5 -5
  80. package/dist/validators/custom-validators/greater-or-equal-than.js.map +1 -1
  81. package/dist/validators/custom-validators/greater-than-date.js +6 -6
  82. package/dist/validators/custom-validators/greater-than-date.js.map +1 -1
  83. package/dist/validators/custom-validators/index.js +5 -1
  84. package/dist/validators/custom-validators/index.js.map +1 -1
  85. package/dist/validators/custom-validators/is-empty-if.js +6 -6
  86. package/dist/validators/custom-validators/is-empty-if.js.map +1 -1
  87. package/dist/validators/custom-validators/is-not-empty-if.js +5 -5
  88. package/dist/validators/custom-validators/is-not-empty-if.js.map +1 -1
  89. package/dist/validators/custom-validators/is-not-in-relative-to.js +5 -6
  90. package/dist/validators/custom-validators/is-not-in-relative-to.js.map +1 -1
  91. package/dist/validators/custom-validators/is-optional-if.d.ts +4 -1
  92. package/dist/validators/custom-validators/is-optional-if.js +9 -17
  93. package/dist/validators/custom-validators/is-optional-if.js.map +1 -1
  94. package/dist/validators/custom-validators/pascal-case.js +2 -2
  95. package/dist/validators/custom-validators/pascal-case.js.map +1 -1
  96. package/dist/validators/index.js +5 -1
  97. package/dist/validators/index.js.map +1 -1
  98. package/dist/validators/validate.d.ts +2 -1
  99. package/dist/validators/validate.js +28 -41
  100. package/dist/validators/validate.js.map +1 -1
  101. package/dist/validators/validation-error.js +5 -6
  102. package/dist/validators/validation-error.js.map +1 -1
  103. package/dist/vendors/index.js +5 -1
  104. package/dist/vendors/index.js.map +1 -1
  105. package/dist/vendors/lodash.d.ts +1 -1
  106. package/dist/vendors/lodash.js +2 -1
  107. package/dist/vendors/lodash.js.map +1 -1
  108. package/package.json +11 -11
  109. package/src/aggregate.ts +1 -1
  110. package/src/command.ts +1 -1
  111. package/src/event.ts +8 -8
  112. package/src/json-helper.ts +9 -0
  113. package/src/model.ts +1 -1
  114. package/src/serialize/index.ts +2 -1
  115. package/src/serialize/serializable.ts +1 -1
  116. package/src/serialize/serialize-helper.ts +43 -0
  117. package/src/validators/custom-validators/is-not-in-relative-to.ts +3 -5
  118. package/src/validators/custom-validators/is-optional-if.ts +9 -18
  119. package/src/validators/validate.ts +38 -35
  120. package/src/vendors/lodash.ts +1 -0
  121. package/tsconfig.json +7 -10
@@ -1,10 +1,9 @@
1
- import { ValidationError as ClassValidatorValidationError, MetadataStorage, getFromContainer, validateSync } from 'class-validator';
2
- import { ValidationMetadata } from 'class-validator/metadata/ValidationMetadata';
1
+ import { ValidationError as ClassValidatorValidationError, validateSync } from 'class-validator';
3
2
 
4
- import { Logger } from '../logger';
3
+ import { Command } from '../command';
5
4
  import { ValidationError } from './validation-error';
6
5
 
7
- export function validate(data: unknown): ValidationError[] {
6
+ export function validate(data: Command): ValidationError[] {
8
7
  const errors = validateSync(data);
9
8
  return recursiveGetErrors(errors);
10
9
  }
@@ -90,45 +89,49 @@ const validationPriorities = [
90
89
  'pascalCase'
91
90
  ];
92
91
 
93
- function getMetadatas(validationError: ClassValidatorValidationError, constraintName: string): ValidationMetadata {
94
- const metadatas = getFromContainer(MetadataStorage);
95
- const validationMetadatas: ValidationMetadata[] = (metadatas as any).validationMetadatas;
96
- const filteredMetadatas = validationMetadatas
97
- .filter(vmd => vmd.target === validationError.target.constructor
98
- && vmd.propertyName === validationError.property
99
- && (vmd.type === constraintName || (vmd.type === 'customValidation' && vmd.constraints[0] && vmd.constraints[0].name === constraintName)));
100
- return filteredMetadatas[0];
101
- }
102
-
103
92
  function recursiveGetErrors(validationErrors: ClassValidatorValidationError[], errors: ValidationError[] = [],
104
93
  propertyName = '', previousValueWasArray = false): ValidationError[] {
105
- validationErrors.forEach(validationError => {
106
- let actualPropertyName = propertyName;
107
- let actualPreviousValueWasArray = previousValueWasArray;
108
- if (validationError.children?.length > 0) {
109
- if (actualPreviousValueWasArray) {
110
- actualPropertyName = `${actualPropertyName}[${validationError.property}]`;
111
- } else {
112
- actualPropertyName =
113
- actualPropertyName ? `${actualPropertyName}.${validationError.property}` : validationError.property;
94
+ for (const validationError of validationErrors) {
95
+ if (!validationError) {
96
+ return null;
97
+ }
98
+
99
+ if (validationError.constraints) {
100
+ const containsNestedValidation = Object.keys(validationError.constraints).some(v => v === 'nestedValidation') && validationError.children.length > 0;
101
+ const validations = Object.keys(validationError.constraints);
102
+
103
+ const constraintName = validationPriorities.find(cm => validations.some(cs => cs.split('-')[0] === cm));
104
+
105
+ let domainErrorCode: string;
106
+ let i = 0;
107
+ while (!domainErrorCode) {
108
+ domainErrorCode = validations.find(vp => vp.split('-')[0] === validationPriorities[i]);
109
+ i++;
114
110
  }
115
111
 
116
- actualPreviousValueWasArray = Array.isArray(validationError.value);
117
- validationErrors = validationError.children;
112
+ if (validationError.contexts && validationError.contexts[domainErrorCode] && validationError.contexts[domainErrorCode].domainErrorCodes) {
113
+ domainErrorCode = validationError.contexts[domainErrorCode].domainErrorCodes;
114
+ }
118
115
 
119
- errors = recursiveGetErrors(validationErrors, errors, actualPropertyName, actualPreviousValueWasArray);
120
- } else {
121
- actualPropertyName = actualPropertyName ? `${actualPropertyName}.${validationError.property}` : validationError.property;
116
+ const domainErrorProperty = propertyName ? (containsNestedValidation ? propertyName : `${propertyName}.${validationError.property}`) : validationError.property;
122
117
 
123
- const constraintName = validationPriorities.find(cm => Object.keys(validationError.constraints).some(cs => cs === cm));
124
- if (!constraintName) {
125
- Logger.warn(`validate: Constraint not found for ${actualPropertyName}`);
126
- } else {
127
- const metadatas = getMetadatas(validationError, constraintName);
128
- errors.push(new ValidationError(actualPropertyName, validationError.value, constraintName, metadatas ? metadatas.message : null));
118
+ errors.push(new ValidationError(domainErrorProperty, validationError.value, constraintName, null));
119
+ }
120
+
121
+ if (validationError.children && validationError.children.length) {
122
+ let childName = validationError.property;
123
+ if (propertyName) {
124
+ childName = previousValueWasArray ? `${propertyName}[${validationError.property}]` : `${propertyName}.${validationError.property}`;
129
125
  }
130
126
 
127
+ errors = recursiveGetErrors(
128
+ validationError.children.filter(ve => ve.constraints ? !Object.keys(ve.constraints).includes('nestedValidation') || ve.children.length === 0 : true),
129
+ errors,
130
+ childName,
131
+ Array.isArray(validationError.value)
132
+ );
131
133
  }
132
- });
134
+ }
135
+
133
136
  return errors;
134
137
  }
@@ -29,6 +29,7 @@ export {
29
29
  trimEnd as _trimEnd,
30
30
  trimStart as _trimStart,
31
31
  uniq as _uniq,
32
+ uniqBy as _uniqBy,
32
33
  upperFirst as _upperFirst,
33
34
  words as _words
34
35
  } from 'lodash';
package/tsconfig.json CHANGED
@@ -1,20 +1,17 @@
1
1
  {
2
- "compileOnSave": false,
3
2
  "compilerOptions": {
4
- "target": "es5",
5
- "lib": [
6
- "es2016",
7
- "dom"
8
- ],
3
+ "module": "commonjs",
4
+ "moduleResolution": "node",
5
+ "target": "es6",
6
+ "esModuleInterop": true,
9
7
  "outDir": "./dist",
10
- "baseUrl": "src",
8
+ "rootDir": "./src",
11
9
  "sourceMap": true,
12
10
  "declaration": true,
13
- "moduleResolution": "node",
14
11
  "emitDecoratorMetadata": true,
15
12
  "experimentalDecorators": true,
16
- "typeRoots": [
17
- "node_modules/@types"
13
+ "lib": [
14
+ "ES2021"
18
15
  ]
19
16
  }
20
17
  }