@decaf-ts/db-decorators 0.2.0 → 0.3.1

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 (110) hide show
  1. package/README.md +4 -4
  2. package/dist/db-decorators.bundle.min.js +1 -1
  3. package/dist/esm/db-decorators.bundle.min.esm.js +1 -1
  4. package/lib/esm/identity/decorators.d.ts +1 -1
  5. package/lib/esm/identity/decorators.js +10 -1
  6. package/lib/esm/identity/index.js +4 -1
  7. package/lib/esm/identity/utils.d.ts +6 -9
  8. package/lib/esm/identity/utils.js +63 -1
  9. package/lib/esm/index.js +35 -1
  10. package/lib/esm/interfaces/BulkCrudOperator.js +3 -0
  11. package/lib/esm/interfaces/CrudOperator.js +3 -0
  12. package/lib/esm/interfaces/IRepository.d.ts +2 -3
  13. package/lib/esm/interfaces/IRepository.js +3 -0
  14. package/lib/esm/interfaces/index.js +5 -1
  15. package/lib/esm/model/constants.d.ts +1 -1
  16. package/lib/esm/model/constants.js +39 -1
  17. package/lib/esm/model/decorators.d.ts +5 -7
  18. package/lib/esm/model/decorators.js +69 -1
  19. package/lib/esm/model/index.d.ts +2 -1
  20. package/lib/esm/model/index.js +6 -1
  21. package/lib/esm/model/model.d.ts +8 -0
  22. package/lib/esm/model/model.js +14 -0
  23. package/lib/esm/model/validation.d.ts +1 -2
  24. package/lib/esm/model/validation.js +122 -1
  25. package/lib/esm/operations/Operations.d.ts +3 -4
  26. package/lib/esm/operations/Operations.js +35 -1
  27. package/lib/esm/operations/OperationsRegistry.d.ts +2 -3
  28. package/lib/esm/operations/OperationsRegistry.js +65 -1
  29. package/lib/esm/operations/constants.d.ts +1 -1
  30. package/lib/esm/operations/constants.js +39 -1
  31. package/lib/esm/operations/decorators.js +226 -1
  32. package/lib/esm/operations/index.js +7 -1
  33. package/lib/esm/operations/types.d.ts +4 -5
  34. package/lib/esm/operations/types.js +3 -0
  35. package/lib/esm/repository/BaseRepository.d.ts +2 -3
  36. package/lib/esm/repository/BaseRepository.js +158 -1
  37. package/lib/esm/repository/DataCache.js +32 -1
  38. package/lib/esm/repository/Repository.d.ts +3 -2
  39. package/lib/esm/repository/Repository.js +89 -2
  40. package/lib/esm/repository/errors.js +88 -1
  41. package/lib/esm/repository/index.js +8 -1
  42. package/lib/esm/repository/utils.d.ts +3 -4
  43. package/lib/esm/repository/utils.js +167 -1
  44. package/lib/esm/repository/wrappers.js +90 -1
  45. package/lib/esm/validation/constants.js +33 -1
  46. package/lib/esm/validation/decorators.d.ts +6 -8
  47. package/lib/esm/validation/decorators.js +223 -1
  48. package/lib/esm/validation/index.js +5 -1
  49. package/lib/esm/validation/validators/ReadOnlyValidator.js +52 -1
  50. package/lib/esm/validation/validators/TimestampValidator.js +49 -1
  51. package/lib/esm/validation/validators/UpdateValidator.js +20 -1
  52. package/lib/esm/validation/validators/index.js +5 -1
  53. package/lib/identity/decorators.cjs +13 -1
  54. package/lib/identity/decorators.d.ts +1 -1
  55. package/lib/identity/index.cjs +20 -1
  56. package/lib/identity/utils.cjs +67 -1
  57. package/lib/identity/utils.d.ts +6 -9
  58. package/lib/index.cjs +51 -1
  59. package/lib/interfaces/BulkCrudOperator.cjs +4 -1
  60. package/lib/interfaces/CrudOperator.cjs +4 -1
  61. package/lib/interfaces/IRepository.cjs +4 -1
  62. package/lib/interfaces/IRepository.d.ts +2 -3
  63. package/lib/interfaces/index.cjs +21 -1
  64. package/lib/model/constants.cjs +42 -1
  65. package/lib/model/constants.d.ts +1 -1
  66. package/lib/model/decorators.cjs +76 -1
  67. package/lib/model/decorators.d.ts +5 -7
  68. package/lib/model/index.cjs +22 -1
  69. package/lib/model/index.d.ts +2 -1
  70. package/lib/model/model.cjs +16 -0
  71. package/lib/model/model.d.ts +8 -0
  72. package/lib/model/validation.cjs +125 -1
  73. package/lib/model/validation.d.ts +1 -2
  74. package/lib/operations/Operations.cjs +39 -1
  75. package/lib/operations/Operations.d.ts +3 -4
  76. package/lib/operations/OperationsRegistry.cjs +69 -1
  77. package/lib/operations/OperationsRegistry.d.ts +2 -3
  78. package/lib/operations/constants.cjs +42 -1
  79. package/lib/operations/constants.d.ts +1 -1
  80. package/lib/operations/decorators.cjs +241 -1
  81. package/lib/operations/index.cjs +23 -1
  82. package/lib/operations/types.cjs +4 -1
  83. package/lib/operations/types.d.ts +4 -5
  84. package/lib/repository/BaseRepository.cjs +162 -1
  85. package/lib/repository/BaseRepository.d.ts +2 -3
  86. package/lib/repository/DataCache.cjs +36 -1
  87. package/lib/repository/Repository.cjs +93 -2
  88. package/lib/repository/Repository.d.ts +3 -2
  89. package/lib/repository/errors.cjs +97 -1
  90. package/lib/repository/index.cjs +24 -1
  91. package/lib/repository/utils.cjs +174 -1
  92. package/lib/repository/utils.d.ts +3 -4
  93. package/lib/repository/wrappers.cjs +95 -1
  94. package/lib/validation/constants.cjs +36 -1
  95. package/lib/validation/decorators.cjs +232 -1
  96. package/lib/validation/decorators.d.ts +6 -8
  97. package/lib/validation/index.cjs +21 -1
  98. package/lib/validation/validators/ReadOnlyValidator.cjs +55 -1
  99. package/lib/validation/validators/TimestampValidator.cjs +52 -1
  100. package/lib/validation/validators/UpdateValidator.cjs +24 -1
  101. package/lib/validation/validators/index.cjs +21 -1
  102. package/package.json +22 -18
  103. package/lib/esm/model/DBModel.d.ts +0 -25
  104. package/lib/esm/model/DBModel.js +0 -1
  105. package/lib/esm/validation/comparison.d.ts +0 -1
  106. package/lib/esm/validation/comparison.js +0 -1
  107. package/lib/model/DBModel.cjs +0 -1
  108. package/lib/model/DBModel.d.ts +0 -25
  109. package/lib/validation/comparison.cjs +0 -1
  110. package/lib/validation/comparison.d.ts +0 -1
@@ -1 +1,5 @@
1
- export*from"./validators";export*from"./constants";export*from"./decorators";
1
+ export * from "./validators";
2
+ export * from "./constants";
3
+ export * from "./decorators";
4
+
5
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbiJdfQ==
@@ -1 +1,52 @@
1
- var __decorate=this&&this.__decorate||function(t,e,a,r){var o,i=arguments.length,d=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,a):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(t,e,a,r);else for(var l=t.length-1;0<=l;l--)(o=t[l])&&(d=(i<3?o(d):3<i?o(e,a,d):o(e,a))||d);return 3<i&&d&&Object.defineProperty(e,a,d),d},__metadata=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};import{validator,Validator}from"@decaf-ts/decorator-validation";import{DEFAULT_ERROR_MESSAGES,UpdateValidationKeys}from"../constants";import{isEqual}from"@decaf-ts/reflection";let ReadOnlyValidator=class extends Validator{constructor(){super(DEFAULT_ERROR_MESSAGES.READONLY.INVALID)}hasErrors(t){}updateHasErrors(t,e,a){return void 0===t||isEqual(t,e)?void 0:this.getMessage(a||this.message)}};ReadOnlyValidator=__decorate([validator(UpdateValidationKeys.READONLY),__metadata("design:paramtypes",[])],ReadOnlyValidator);export{ReadOnlyValidator};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { validator, Validator } from "@decaf-ts/decorator-validation";
11
+ import { DEFAULT_ERROR_MESSAGES, UpdateValidationKeys } from "../constants";
12
+ import { isEqual } from "@decaf-ts/reflection";
13
+ /**
14
+ * @summary Validator for the {@link readonly} decorator
15
+ *
16
+ * @class ReadOnlyValidator
17
+ * @extends Validator
18
+ *
19
+ * @category Validators
20
+ */
21
+ let ReadOnlyValidator = class ReadOnlyValidator extends Validator {
22
+ constructor() {
23
+ super(DEFAULT_ERROR_MESSAGES.READONLY.INVALID);
24
+ }
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
+ hasErrors(value, ...args) {
30
+ return undefined;
31
+ }
32
+ /**
33
+ * @summary Validates a value has not changed
34
+ * @param {any} value
35
+ * @param {any} oldValue
36
+ * @param {string} [message] the error message override
37
+ */
38
+ updateHasErrors(value, oldValue, message) {
39
+ if (value === undefined)
40
+ return;
41
+ return isEqual(value, oldValue)
42
+ ? undefined
43
+ : this.getMessage(message || this.message);
44
+ }
45
+ };
46
+ ReadOnlyValidator = __decorate([
47
+ validator(UpdateValidationKeys.READONLY),
48
+ __metadata("design:paramtypes", [])
49
+ ], ReadOnlyValidator);
50
+ export { ReadOnlyValidator };
51
+
52
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3ZhbGlkYXRvcnMvUmVhZE9ubHlWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9DOzs7Ozs7O0dBT0c7QUFFSSxJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFrQixTQUFRLFNBQVM7SUFDOUM7UUFDRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILDZEQUE2RDtJQUM3RCxTQUFTLENBQUMsS0FBVSxFQUFFLEdBQUcsSUFBVztRQUNsQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxlQUFlLENBQ3BCLEtBQVUsRUFDVixRQUFhLEVBQ2IsT0FBZ0I7UUFFaEIsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU87UUFFaEMsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUM3QixDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGLENBQUE7QUE5QlksaUJBQWlCO0lBRDdCLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7O0dBQzVCLGlCQUFpQixDQThCN0IiLCJmaWxlIjoidmFsaWRhdGlvbi92YWxpZGF0b3JzL1JlYWRPbmx5VmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmFsaWRhdG9yLCBWYWxpZGF0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBVcGRhdGVWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBWYWxpZGF0b3IgZm9yIHRoZSB7QGxpbmsgcmVhZG9ubHl9IGRlY29yYXRvclxuICpcbiAqIEBjbGFzcyBSZWFkT25seVZhbGlkYXRvclxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuQHZhbGlkYXRvcihVcGRhdGVWYWxpZGF0aW9uS2V5cy5SRUFET05MWSlcbmV4cG9ydCBjbGFzcyBSZWFkT25seVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUkVBRE9OTFkuSU5WQUxJRCk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgaGFzRXJyb3JzKHZhbHVlOiBhbnksIC4uLmFyZ3M6IGFueVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIHZhbHVlIGhhcyBub3QgY2hhbmdlZFxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAgICogQHBhcmFtIHthbnl9IG9sZFZhbHVlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2Ugb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVIYXNFcnJvcnMoXG4gICAgdmFsdWU6IGFueSxcbiAgICBvbGRWYWx1ZTogYW55LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIHJldHVybiBpc0VxdWFsKHZhbHVlLCBvbGRWYWx1ZSlcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMuZ2V0TWVzc2FnZShtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1,49 @@
1
- var __decorate=this&&this.__decorate||function(t,e,a,r){var o,i=arguments.length,s=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,a):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,a,r);else for(var d=t.length-1;0<=d;d--)(o=t[d])&&(s=(i<3?o(s):3<i?o(e,a,s):o(e,a))||s);return 3<i&&s&&Object.defineProperty(e,a,s),s},__metadata=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};import{validator,Validator}from"@decaf-ts/decorator-validation";import{DEFAULT_ERROR_MESSAGES,UpdateValidationKeys}from"../constants";let TimestampValidator=class extends Validator{constructor(){super(DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID)}hasErrors(t){}updateHasErrors(t,e,a){if(void 0!==t){a=a||this.getMessage(a||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return a}return t<=e?a:void 0}}};TimestampValidator=__decorate([validator(UpdateValidationKeys.TIMESTAMP),__metadata("design:paramtypes",[])],TimestampValidator);export{TimestampValidator};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { validator, Validator } from "@decaf-ts/decorator-validation";
11
+ import { DEFAULT_ERROR_MESSAGES, UpdateValidationKeys } from "../constants";
12
+ /**
13
+ * @summary Validates the update of a timestamp
14
+ *
15
+ * @class TimestampValidator
16
+ * @extends Validator
17
+ *
18
+ * @category Validators
19
+ */
20
+ let TimestampValidator = class TimestampValidator extends Validator {
21
+ constructor() {
22
+ super(DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID);
23
+ }
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ hasErrors(value, ...args) {
26
+ return undefined;
27
+ }
28
+ updateHasErrors(value, oldValue, message) {
29
+ if (value === undefined)
30
+ return;
31
+ message = message || this.getMessage(message || this.message);
32
+ try {
33
+ value = new Date(value);
34
+ oldValue = new Date(oldValue);
35
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
36
+ }
37
+ catch (e) {
38
+ return message;
39
+ }
40
+ return value <= oldValue ? message : undefined;
41
+ }
42
+ };
43
+ TimestampValidator = __decorate([
44
+ validator(UpdateValidationKeys.TIMESTAMP),
45
+ __metadata("design:paramtypes", [])
46
+ ], TimestampValidator);
47
+ export { TimestampValidator };
48
+
49
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3ZhbGlkYXRvcnMvVGltZXN0YW1wVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTVFOzs7Ozs7O0dBT0c7QUFFSSxJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLFNBQVM7SUFDL0M7UUFDRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFHLElBQVc7UUFDbEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLGVBQWUsQ0FDcEIsS0FBNkIsRUFDN0IsUUFBZ0MsRUFDaEMsT0FBZ0I7UUFFaEIsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU87UUFFaEMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDO1lBQ0gsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5Qiw2REFBNkQ7UUFDL0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRCxDQUFDO0NBQ0YsQ0FBQTtBQTdCWSxrQkFBa0I7SUFEOUIsU0FBUyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQzs7R0FDN0Isa0JBQWtCLENBNkI5QiIsImZpbGUiOiJ2YWxpZGF0aW9uL3ZhbGlkYXRvcnMvVGltZXN0YW1wVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmFsaWRhdG9yLCBWYWxpZGF0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBVcGRhdGVWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdGhlIHVwZGF0ZSBvZiBhIHRpbWVzdGFtcFxuICpcbiAqIEBjbGFzcyBUaW1lc3RhbXBWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVXBkYXRlVmFsaWRhdGlvbktleXMuVElNRVNUQU1QKVxuZXhwb3J0IGNsYXNzIFRpbWVzdGFtcFZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVElNRVNUQU1QLklOVkFMSUQpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBoYXNFcnJvcnModmFsdWU6IGFueSwgLi4uYXJnczogYW55W10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSGFzRXJyb3JzKFxuICAgIHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG9sZFZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1lc3NhZ2U/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UgfHwgdGhpcy5nZXRNZXNzYWdlKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlKTtcblxuICAgIHRyeSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIG9sZFZhbHVlID0gbmV3IERhdGUob2xkVmFsdWUpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA8PSBvbGRWYWx1ZSA/IG1lc3NhZ2UgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1,20 @@
1
- import{DEFAULT_ERROR_MESSAGES as DecoratorMessages,Validator}from"@decaf-ts/decorator-validation";class UpdateValidator extends Validator{constructor(a=DecoratorMessages.DEFAULT,...o){super(a,...o)}}export{UpdateValidator};
1
+ import { DEFAULT_ERROR_MESSAGES as DecoratorMessages, Validator, } from "@decaf-ts/decorator-validation";
2
+ /**
3
+ * @summary Base class for an Update validator
4
+ *
5
+ * @param {string} [message] error message. defaults to {@link DecoratorMessages#DEFAULT}
6
+ * @param {string[]} [acceptedTypes] the accepted value types by the decorator
7
+ *
8
+ * @class UpdateValidator
9
+ * @abstract
10
+ * @extends Validator
11
+ *
12
+ * @category Validators
13
+ */
14
+ export class UpdateValidator extends Validator {
15
+ constructor(message = DecoratorMessages.DEFAULT, ...acceptedTypes) {
16
+ super(message, ...acceptedTypes);
17
+ }
18
+ }
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3ZhbGlkYXRvcnMvVXBkYXRlVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxzQkFBc0IsSUFBSSxpQkFBaUIsRUFDM0MsU0FBUyxHQUNWLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQWdCLGVBQWdCLFNBQVEsU0FBUztJQUNyRCxZQUNFLFVBQWtCLGlCQUFpQixDQUFDLE9BQU8sRUFDM0MsR0FBRyxhQUF1QjtRQUUxQixLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQWFGIiwiZmlsZSI6InZhbGlkYXRpb24vdmFsaWRhdG9ycy9VcGRhdGVWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTIGFzIERlY29yYXRvck1lc3NhZ2VzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIGNsYXNzIGZvciBhbiBVcGRhdGUgdmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBlcnJvciBtZXNzYWdlLiBkZWZhdWx0cyB0byB7QGxpbmsgRGVjb3JhdG9yTWVzc2FnZXMjREVGQVVMVH1cbiAqIEBwYXJhbSB7c3RyaW5nW119IFthY2NlcHRlZFR5cGVzXSB0aGUgYWNjZXB0ZWQgdmFsdWUgdHlwZXMgYnkgdGhlIGRlY29yYXRvclxuICpcbiAqIEBjbGFzcyBVcGRhdGVWYWxpZGF0b3JcbiAqIEBhYnN0cmFjdFxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVwZGF0ZVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBEZWNvcmF0b3JNZXNzYWdlcy5ERUZBVUxULFxuICAgIC4uLmFjY2VwdGVkVHlwZXM6IHN0cmluZ1tdXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIC4uLmFjY2VwdGVkVHlwZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHZhbGlkYXRlcyBhIHZhbHVlIGJ5IGNvbXBhcmluZyB0byBpdHMgb2xkIHZlcnNpb25cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEBwYXJhbSB7YW55fSBvbGRWYWx1ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdXBkYXRlSGFzRXJyb3JzKFxuICAgIHZhbHVlOiBhbnksXG4gICAgb2xkVmFsdWU6IGFueSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -1 +1,5 @@
1
- export*from"./ReadOnlyValidator";export*from"./TimestampValidator";export*from"./UpdateValidator";
1
+ export * from "./ReadOnlyValidator";
2
+ export * from "./TimestampValidator";
3
+ export * from "./UpdateValidator";
4
+
5
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3ZhbGlkYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUMiLCJmaWxlIjoidmFsaWRhdGlvbi92YWxpZGF0b3JzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vUmVhZE9ubHlWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1RpbWVzdGFtcFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVXBkYXRlVmFsaWRhdG9yXCI7XG4iXX0=
@@ -1 +1,13 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.id=void 0;const decorator_validation_1=require("@decaf-ts/decorator-validation"),reflection_1=require("@decaf-ts/reflection"),decorators_1=require("../model/decorators.cjs"),decorators_2=require("../validation/decorators.cjs"),constants_1=require("../model/constants.cjs");function id(){return(0,reflection_1.apply)((0,decorator_validation_1.required)(),(0,decorators_2.readonly)(),(0,reflection_1.metadata)((0,decorators_1.getDBKey)(constants_1.DBKeys.ID),{}))}exports.id=id;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.id = id;
4
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
5
+ const reflection_1 = require("@decaf-ts/reflection");
6
+ const decorators_1 = require("../validation/decorators.cjs");
7
+ const constants_1 = require("../model/constants.cjs");
8
+ const repository_1 = require("../repository/index.cjs");
9
+ function id() {
10
+ return (0, reflection_1.apply)((0, decorator_validation_1.required)(), (0, decorators_1.readonly)(), (0, decorator_validation_1.propMetadata)(repository_1.Repository.key(constants_1.DBKeys.ID), {}));
11
+ }
12
+
13
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsZ0JBTUM7QUFaRCx5RUFBd0U7QUFDeEUscURBQTZDO0FBQzdDLHlEQUFvRDtBQUNwRCxrREFBNEM7QUFDNUMsOENBQTJDO0FBRTNDLFNBQWdCLEVBQUU7SUFDaEIsT0FBTyxJQUFBLGtCQUFLLEVBQ1YsSUFBQSwrQkFBUSxHQUFFLEVBQ1YsSUFBQSxxQkFBUSxHQUFFLEVBQ1YsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQzVDLENBQUM7QUFDSixDQUFDIiwiZmlsZSI6ImlkZW50aXR5L2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9wTWV0YWRhdGEsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgYXBwbHkgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IHJlYWRvbmx5IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgREJLZXlzIH0gZnJvbSBcIi4uL21vZGVsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpZCgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIHJlcXVpcmVkKCksXG4gICAgcmVhZG9ubHkoKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLklEKSwge30pXG4gICk7XG59XG4iXX0=
@@ -1 +1 @@
1
- export declare function id(): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
1
+ export declare function id(): (target: object, propertyKey?: any, descriptor?: any) => void;
@@ -1 +1,20 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){e[i=void 0===i?r:i]=t[r]}),__exportStar=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./decorators.cjs"),exports),__exportStar(require("./utils.cjs"),exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./decorators.cjs"), exports);
18
+ __exportStar(require("./utils.cjs"), exports);
19
+
20
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pZGVudGl0eS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLDBDQUF3QiIsImZpbGUiOiJpZGVudGl0eS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG4iXX0=
@@ -1 +1,67 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.createOrUpdate=exports.findModelId=exports.findPrimaryKey=void 0;const DBModel_1=require("../model/DBModel.cjs"),decorators_1=require("../model/decorators.cjs"),constants_1=require("../model/constants.cjs"),utils_1=require("../repository/utils.cjs"),decorator_validation_1=require("@decaf-ts/decorator-validation"),errors_1=require("../repository/errors.cjs");function findPrimaryKey(e){e=(0,utils_1.getAllPropertyDecoratorsRecursive)(e,void 0,(0,decorators_1.getDBKey)(constants_1.DBKeys.ID)),e=Object.entries(e).reduce((e,[r,o])=>{o=o.filter(e=>e.key!==decorator_validation_1.ModelKeys.TYPE);return o&&o.length&&(e[r]=e[r]||[],e[r].push(...o)),e},{});if(e&&Object.keys(e).length){if(1<Object.keys(e).length)throw new errors_1.InternalError((0,decorator_validation_1.sf)(Object.keys(e).join(", ")));var r=Object.keys(e)[0];if(r)return{id:r,props:e[r][0].props.options}}throw new errors_1.InternalError("Could not find ID decorated Property")}function findModelId(e,r=!1){var o=findPrimaryKey(e).id,e=e[o];if(e||r)return e;throw new errors_1.NotFoundError((0,decorator_validation_1.sf)("No value for the Id is defined under the property {0}",o))}async function createOrUpdate(e,r=void 0,o){return r=r||DBModel_1.DBModel.findRepository(e.constructor),void 0===e[o=o||findPrimaryKey(e).id]?r.create(e):r.update(e)}exports.findPrimaryKey=findPrimaryKey,exports.findModelId=findModelId,exports.createOrUpdate=createOrUpdate;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findPrimaryKey = findPrimaryKey;
4
+ exports.findModelId = findModelId;
5
+ const constants_1 = require("../model/constants.cjs");
6
+ const utils_1 = require("../repository/utils.cjs");
7
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
8
+ const errors_1 = require("../repository/errors.cjs");
9
+ /**
10
+ * @summary Returns the primary key attribute for a {@link Model}
11
+ * @description searches in all the properties in the object for an {@link id} decorated property
12
+ *
13
+ * @param {Model} model
14
+ *
15
+ * @throws {InternalError} if no property or more than one properties are {@link id} decorated
16
+ * or no value is set in that property
17
+ *
18
+ * @function findPrimaryKey
19
+ *
20
+ * @category managers
21
+ */
22
+ function findPrimaryKey(model) {
23
+ const decorators = (0, utils_1.getAllPropertyDecoratorsRecursive)(model, undefined, constants_1.DBKeys.REFLECT + constants_1.DBKeys.ID);
24
+ const idDecorators = Object.entries(decorators).reduce((accum, [prop, decs]) => {
25
+ const filtered = decs.filter((d) => d.key !== decorator_validation_1.ModelKeys.TYPE);
26
+ if (filtered && filtered.length) {
27
+ accum[prop] = accum[prop] || [];
28
+ accum[prop].push(...filtered);
29
+ }
30
+ return accum;
31
+ }, {});
32
+ if (!idDecorators || !Object.keys(idDecorators).length)
33
+ throw new errors_1.InternalError("Could not find ID decorated Property");
34
+ if (Object.keys(idDecorators).length > 1)
35
+ throw new errors_1.InternalError((0, decorator_validation_1.sf)(Object.keys(idDecorators).join(", ")));
36
+ const idProp = Object.keys(idDecorators)[0];
37
+ if (!idProp)
38
+ throw new errors_1.InternalError("Could not find ID decorated Property");
39
+ return {
40
+ id: idProp,
41
+ props: idDecorators[idProp][0].props.options,
42
+ };
43
+ }
44
+ /**
45
+ * @summary Returns the primary key value for a {@link Model}
46
+ * @description searches in all the properties in the object for an {@link pk} decorated property
47
+ *
48
+ * @param {Model} model
49
+ * @param {boolean} [returnEmpty]
50
+ * @return {string} primary key
51
+ *
52
+ * @throws {InternalError} if no property or more than one properties are {@link pk} decorated
53
+ * @throws {NotFoundError} returnEmpty is false and no value is set on the {@link pk} decorated property
54
+ *
55
+ * @function findModelID
56
+ *
57
+ * @category managers
58
+ */
59
+ function findModelId(model, returnEmpty = false) {
60
+ const idProp = findPrimaryKey(model).id;
61
+ const modelId = model[idProp];
62
+ if (!modelId && !returnEmpty)
63
+ throw new errors_1.NotFoundError((0, decorator_validation_1.sf)("No value for the Id is defined under the property {0}", idProp));
64
+ return modelId;
65
+ }
66
+
67
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pZGVudGl0eS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSx3Q0E4QkM7QUFpQkQsa0NBUUM7QUF6RUQsa0RBQTRDO0FBQzVDLCtDQUF3RTtBQUN4RSx5RUFBK0Q7QUFDL0QsaURBQW9FO0FBRXBFOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLGNBQWMsQ0FBa0IsS0FBUTtJQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFBLHlDQUFpQyxFQUNsRCxLQUFLLEVBQ0wsU0FBUyxFQUNULGtCQUFNLENBQUMsT0FBTyxHQUFHLGtCQUFNLENBQUMsRUFBRSxDQUMzQixDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFvQixDQUFDLENBQUMsTUFBTSxDQUM5RCxDQUFDLEtBQW1DLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFFBQVEsR0FBSSxJQUEwQixDQUFDLE1BQU0sQ0FDakQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssZ0NBQVMsQ0FBQyxJQUFJLENBQ2hDLENBQUM7UUFDRixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUVGLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU07UUFDcEQsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNsRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxJQUFJLHNCQUFhLENBQUMsSUFBQSx5QkFBRSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUM3RSxPQUFPO1FBQ0wsRUFBRSxFQUFFLE1BQU07UUFDVixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPO0tBQzdDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBWSxFQUFFLFdBQVcsR0FBRyxLQUFLO0lBQzNELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUksS0FBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXO1FBQzFCLE1BQU0sSUFBSSxzQkFBYSxDQUNyQixJQUFBLHlCQUFFLEVBQUMsdURBQXVELEVBQUUsTUFBTSxDQUFDLENBQ3BFLENBQUM7SUFDSixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwiZmlsZSI6ImlkZW50aXR5L3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJLZXlzIH0gZnJvbSBcIi4uL21vZGVsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdXRpbHNcIjtcbmltcG9ydCB7IE1vZGVsS2V5cywgc2YgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvZXJyb3JzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgUmV0dXJucyB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlIGZvciBhIHtAbGluayBNb2RlbH1cbiAqIEBkZXNjcmlwdGlvbiBzZWFyY2hlcyBpbiBhbGwgdGhlIHByb3BlcnRpZXMgaW4gdGhlIG9iamVjdCBmb3IgYW4ge0BsaW5rIGlkfSBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqXG4gKiBAcGFyYW0ge01vZGVsfSBtb2RlbFxuICpcbiAqIEB0aHJvd3Mge0ludGVybmFsRXJyb3J9IGlmIG5vIHByb3BlcnR5IG9yIG1vcmUgdGhhbiBvbmUgcHJvcGVydGllcyBhcmUge0BsaW5rIGlkfSBkZWNvcmF0ZWRcbiAqIG9yIG5vIHZhbHVlIGlzIHNldCBpbiB0aGF0IHByb3BlcnR5XG4gKlxuICogQGZ1bmN0aW9uIGZpbmRQcmltYXJ5S2V5XG4gKlxuICogQGNhdGVnb3J5IG1hbmFnZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJpbWFyeUtleTxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBUKSB7XG4gIGNvbnN0IGRlY29yYXRvcnMgPSBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUoXG4gICAgbW9kZWwsXG4gICAgdW5kZWZpbmVkLFxuICAgIERCS2V5cy5SRUZMRUNUICsgREJLZXlzLklEXG4gICk7XG4gIGNvbnN0IGlkRGVjb3JhdG9ycyA9IE9iamVjdC5lbnRyaWVzKGRlY29yYXRvcnMgYXMgb2JqZWN0KS5yZWR1Y2UoXG4gICAgKGFjY3VtOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnlbXSB9LCBbcHJvcCwgZGVjc10pID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gKGRlY3MgYXMgeyBrZXk6IHN0cmluZyB9W10pLmZpbHRlcihcbiAgICAgICAgKGQpID0+IGQua2V5ICE9PSBNb2RlbEtleXMuVFlQRVxuICAgICAgKTtcbiAgICAgIGlmIChmaWx0ZXJlZCAmJiBmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgYWNjdW1bcHJvcF0gPSBhY2N1bVtwcm9wXSB8fCBbXTtcbiAgICAgICAgYWNjdW1bcHJvcF0ucHVzaCguLi5maWx0ZXJlZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSxcbiAgICB7fVxuICApO1xuXG4gIGlmICghaWREZWNvcmF0b3JzIHx8ICFPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkNvdWxkIG5vdCBmaW5kIElEIGRlY29yYXRlZCBQcm9wZXJ0eVwiKTtcbiAgaWYgKE9iamVjdC5rZXlzKGlkRGVjb3JhdG9ycykubGVuZ3RoID4gMSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihzZihPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmpvaW4oXCIsIFwiKSkpO1xuICBjb25zdCBpZFByb3AgPSBPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpWzBdO1xuICBpZiAoIWlkUHJvcCkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJDb3VsZCBub3QgZmluZCBJRCBkZWNvcmF0ZWQgUHJvcGVydHlcIik7XG4gIHJldHVybiB7XG4gICAgaWQ6IGlkUHJvcCxcbiAgICBwcm9wczogaWREZWNvcmF0b3JzW2lkUHJvcF1bMF0ucHJvcHMub3B0aW9ucyxcbiAgfTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBwcmltYXJ5IGtleSB2YWx1ZSBmb3IgYSB7QGxpbmsgTW9kZWx9XG4gKiBAZGVzY3JpcHRpb24gc2VhcmNoZXMgaW4gYWxsIHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBvYmplY3QgZm9yIGFuIHtAbGluayBwa30gZGVjb3JhdGVkIHByb3BlcnR5XG4gKlxuICogQHBhcmFtIHtNb2RlbH0gbW9kZWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldHVybkVtcHR5XVxuICogQHJldHVybiB7c3RyaW5nfSBwcmltYXJ5IGtleVxuICpcbiAqIEB0aHJvd3Mge0ludGVybmFsRXJyb3J9IGlmIG5vIHByb3BlcnR5IG9yIG1vcmUgdGhhbiBvbmUgcHJvcGVydGllcyBhcmUge0BsaW5rIHBrfSBkZWNvcmF0ZWRcbiAqIEB0aHJvd3Mge05vdEZvdW5kRXJyb3J9IHJldHVybkVtcHR5IGlzIGZhbHNlIGFuZCBubyB2YWx1ZSBpcyBzZXQgb24gdGhlIHtAbGluayBwa30gZGVjb3JhdGVkIHByb3BlcnR5XG4gKlxuICogQGZ1bmN0aW9uIGZpbmRNb2RlbElEXG4gKlxuICogQGNhdGVnb3J5IG1hbmFnZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTW9kZWxJZChtb2RlbDogTW9kZWwsIHJldHVybkVtcHR5ID0gZmFsc2UpIHtcbiAgY29uc3QgaWRQcm9wID0gZmluZFByaW1hcnlLZXkobW9kZWwpLmlkO1xuICBjb25zdCBtb2RlbElkID0gKG1vZGVsIGFzIGFueSlbaWRQcm9wXTtcbiAgaWYgKCFtb2RlbElkICYmICFyZXR1cm5FbXB0eSlcbiAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgIHNmKFwiTm8gdmFsdWUgZm9yIHRoZSBJZCBpcyBkZWZpbmVkIHVuZGVyIHRoZSBwcm9wZXJ0eSB7MH1cIiwgaWRQcm9wKVxuICAgICk7XG4gIHJldHVybiBtb2RlbElkO1xufVxuIl19
@@ -1,10 +1,8 @@
1
- import { DBModel } from "../model/DBModel";
2
- import { IRepository } from "../interfaces/IRepository";
3
1
  /**
4
- * @summary Returns the primary key attribute for a {@link DBModel}
2
+ * @summary Returns the primary key attribute for a {@link Model}
5
3
  * @description searches in all the properties in the object for an {@link id} decorated property
6
4
  *
7
- * @param {DBModel} model
5
+ * @param {Model} model
8
6
  *
9
7
  * @throws {InternalError} if no property or more than one properties are {@link id} decorated
10
8
  * or no value is set in that property
@@ -13,15 +11,15 @@ import { IRepository } from "../interfaces/IRepository";
13
11
  *
14
12
  * @category managers
15
13
  */
16
- export declare function findPrimaryKey<T extends DBModel>(model: T): {
14
+ export declare function findPrimaryKey<T extends Model>(model: T): {
17
15
  id: string;
18
16
  props: any;
19
17
  };
20
18
  /**
21
- * @summary Returns the primary key value for a {@link DBModel}
19
+ * @summary Returns the primary key value for a {@link Model}
22
20
  * @description searches in all the properties in the object for an {@link pk} decorated property
23
21
  *
24
- * @param {DBModel} model
22
+ * @param {Model} model
25
23
  * @param {boolean} [returnEmpty]
26
24
  * @return {string} primary key
27
25
  *
@@ -32,5 +30,4 @@ export declare function findPrimaryKey<T extends DBModel>(model: T): {
32
30
  *
33
31
  * @category managers
34
32
  */
35
- export declare function findModelId(model: DBModel, returnEmpty?: boolean): any;
36
- export declare function createOrUpdate<T extends DBModel>(model: T, manager?: IRepository<T> | undefined, pk?: string): Promise<T>;
33
+ export declare function findModelId(model: Model, returnEmpty?: boolean): any;
package/lib/index.cjs CHANGED
@@ -1 +1,51 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./identity/index.cjs"),exports),__exportStar(require("./interfaces/index.cjs"),exports),__exportStar(require("./model/index.cjs"),exports),__exportStar(require("./operations/index.cjs"),exports),__exportStar(require("./repository/index.cjs"),exports),__exportStar(require("./validation/index.cjs"),exports);
1
+ "use strict";
2
+ /**
3
+ * @module db-decorators
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ /**
21
+ * @namespace Model
22
+ * @memberOf module:db-decorators
23
+ */
24
+ /**
25
+ * @namespace Operations
26
+ * @memberOf module:db-decorators
27
+ */
28
+ /**
29
+ * @namespace Repository
30
+ * @memberOf module:db-decorators
31
+ */
32
+ /**
33
+ * @namespace Validation
34
+ * @memberOf module:db-decorators
35
+ */
36
+ /**
37
+ * @namespace Validators
38
+ * @memberOf module:db-decorators.Validation
39
+ */
40
+ /**
41
+ * @namespace Utils
42
+ * @memberOf module:db-decorators
43
+ */
44
+ __exportStar(require("./identity/index.cjs"), exports);
45
+ __exportStar(require("./interfaces/index.cjs"), exports);
46
+ __exportStar(require("./model/index.cjs"), exports);
47
+ __exportStar(require("./operations/index.cjs"), exports);
48
+ __exportStar(require("./repository/index.cjs"), exports);
49
+ __exportStar(require("./validation/index.cjs"), exports);
50
+
51
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFFSDs7O0dBR0c7QUFDSCw2Q0FBMkI7QUFDM0IsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QiwrQ0FBNkI7QUFDN0IsK0NBQTZCO0FBQzdCLCtDQUE2QiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBkYi1kZWNvcmF0b3JzXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIE1vZGVsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgT3BlcmF0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIFJlcG9zaXRvcnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5cbi8qKlxuICogQG5hbWVzcGFjZSBWYWxpZGF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgVmFsaWRhdG9yc1xuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wZXJhdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbiJdfQ==
@@ -1 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0J1bGtDcnVkT3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbnRlcmZhY2VzL0J1bGtDcnVkT3BlcmF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcnVkT3BlcmF0b3IgfSBmcm9tIFwiLi9DcnVkT3BlcmF0b3JcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCdWxrQ3J1ZE9wZXJhdG9yPE0+IGV4dGVuZHMgQ3J1ZE9wZXJhdG9yPE0+IHtcbiAgY3JlYXRlQWxsKG1vZGVsczogTVtdLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPjtcbiAgcmVhZEFsbChrZXlzOiBzdHJpbmdbXSB8IG51bWJlcltdLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPjtcbiAgdXBkYXRlQWxsKG1vZGVsczogTVtdLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPjtcbiAgZGVsZXRlQWxsKGtleXM6IHN0cmluZ1tdIHwgbnVtYmVyW10sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNW10+O1xufVxuIl19
@@ -1 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0NydWRPcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6ImludGVyZmFjZXMvQ3J1ZE9wZXJhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBDcnVkIEFQSVxuICogQGRlc2NyaXB0aW9uIEV4cG9zZXMgYSBDUlVEIEFQSVxuICpcbiAqIEBpbnRlcmZhY2UgQ3J1ZE9wZXJhdG9yXG4gKlxuICogQGNhdGVnb3J5IE1hbmFnZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZE9wZXJhdG9yPE0+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENyZWF0ZSBhIG5ldyBtb2RlbFxuICAgKiBAcGFyYW0ge1R9IG1vZGVsXG4gICAqIEBwYXJhbSB7YW55W119IFthcmdzXVxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBjcmVhdGUobW9kZWw6IE0sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlYWQgYSBtb2RlbFxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSB7YW55W119IFthcmdzXVxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICByZWFkKGtleTogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSB1cGRhdGUgYSBtb2RlbFxuICAgKiBAcGFyYW0ge1R9IG1vZGVsXG4gICAqIEBwYXJhbSB7YW55W119IFthcmdzXVxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICB1cGRhdGUobW9kZWw6IE0sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IGRlbGV0ZSBhIG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGRlbGV0ZShrZXk6IHN0cmluZyB8IG51bWJlciwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xufVxuIl19
@@ -1 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL0lSZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoiaW50ZXJmYWNlcy9JUmVwb3NpdG9yeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFDYWNoZSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L0RhdGFDYWNoZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBCdWxrQ3J1ZE9wZXJhdG9yIH0gZnJvbSBcIi4vQnVsa0NydWRPcGVyYXRvclwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBob2xkaW5nIGJhc2ljIENSVUQgQVBJc1xuICogQHR5cGVkZWYgVCBleHRlbmRzIHtAbGluayBNb2RlbH1cbiAqIEBpbnRlcmZhY2UgSVJlcG9zaXRvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVwb3NpdG9yeTxNIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgQnVsa0NydWRPcGVyYXRvcjxNPiB7XG4gIHJlYWRvbmx5IGNhY2hlOiBEYXRhQ2FjaGU7XG4gIHJlYWRvbmx5IGNsYXNzOiBDb25zdHJ1Y3RvcjxNPjtcbn1cbiJdfQ==
@@ -1,13 +1,12 @@
1
- import { DBModel } from "../model/DBModel";
2
1
  import { DataCache } from "../repository/DataCache";
3
2
  import { Constructor } from "@decaf-ts/decorator-validation";
4
3
  import { BulkCrudOperator } from "./BulkCrudOperator";
5
4
  /**
6
5
  * @summary Interface holding basic CRUD APIs
7
- * @typedef T extends {@link DBModel}
6
+ * @typedef T extends {@link Model}
8
7
  * @interface IRepository
9
8
  */
10
- export interface IRepository<M extends DBModel> extends BulkCrudOperator<M> {
9
+ export interface IRepository<M extends Model> extends BulkCrudOperator<M> {
11
10
  readonly cache: DataCache;
12
11
  readonly class: Constructor<M>;
13
12
  }
@@ -1 +1,21 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./BulkCrudOperator.cjs"),exports),__exportStar(require("./CrudOperator.cjs"),exports),__exportStar(require("./IRepository.cjs"),exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./BulkCrudOperator.cjs"), exports);
18
+ __exportStar(require("./CrudOperator.cjs"), exports);
19
+ __exportStar(require("./IRepository.cjs"), exports);
20
+
21
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBbUM7QUFDbkMsaURBQStCO0FBQy9CLGdEQUE4QiIsImZpbGUiOiJpbnRlcmZhY2VzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQnVsa0NydWRPcGVyYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ3J1ZE9wZXJhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9JUmVwb3NpdG9yeVwiO1xuIl19
@@ -1 +1,42 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_TIMESTAMP_FORMAT=exports.DefaultSeparator=exports.DBKeys=void 0,exports.DBKeys={REFLECT:"model.db.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",HASH:"hash",COMPOSED:"composed",ORIGINAL:"__originalObj"},exports.DefaultSeparator="_",exports.DEFAULT_TIMESTAMP_FORMAT="dd/MM/yyyy HH:mm:ss:S";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_TIMESTAMP_FORMAT = exports.DefaultSeparator = exports.DBKeys = void 0;
4
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
5
+ /**
6
+ * @summary Holds the Model reflection keys
7
+ * @const DBKeys
8
+ *
9
+ * @memberOf module:db-decorators.Model
10
+ */
11
+ exports.DBKeys = {
12
+ REFLECT: `${decorator_validation_1.ModelKeys.REFLECT}persistence.`,
13
+ REPOSITORY: "repository",
14
+ CLASS: "_class",
15
+ ID: "id",
16
+ INDEX: "index",
17
+ UNIQUE: "unique",
18
+ SERIALIZE: "serialize",
19
+ READONLY: "readonly",
20
+ TIMESTAMP: "timestamp",
21
+ HASH: "hash",
22
+ COMPOSED: "composed",
23
+ ORIGINAL: "__originalObj",
24
+ };
25
+ /**
26
+ * @summary The default separator when concatenating indexes
27
+ *
28
+ * @const DefaultIndexSeparator
29
+ *
30
+ * @category Managers
31
+ * @subcategory Constants
32
+ */
33
+ exports.DefaultSeparator = "_";
34
+ /**
35
+ * @summary Holds the default timestamp date format
36
+ * @constant DEFAULT_TIMESTAMP_FORMAT
37
+ *
38
+ * @memberOf module:db-decorators.Model
39
+ */
40
+ exports.DEFAULT_TIMESTAMP_FORMAT = "dd/MM/yyyy HH:mm:ss:S";
41
+
42
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQTJEO0FBRTNEOzs7OztHQUtHO0FBQ1UsUUFBQSxNQUFNLEdBQUc7SUFDcEIsT0FBTyxFQUFFLEdBQUcsZ0NBQVMsQ0FBQyxPQUFPLGNBQWM7SUFDM0MsVUFBVSxFQUFFLFlBQVk7SUFDeEIsS0FBSyxFQUFFLFFBQVE7SUFDZixFQUFFLEVBQUUsSUFBSTtJQUNSLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixRQUFRLEVBQUUsZUFBZTtDQUMxQixDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRyx1QkFBdUIsQ0FBQyIsImZpbGUiOiJtb2RlbC9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEtleXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgSG9sZHMgdGhlIE1vZGVsIHJlZmxlY3Rpb24ga2V5c1xuICogQGNvbnN0IERCS2V5c1xuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9ycy5Nb2RlbFxuICovXG5leHBvcnQgY29uc3QgREJLZXlzID0ge1xuICBSRUZMRUNUOiBgJHtNb2RlbEtleXMuUkVGTEVDVH1wZXJzaXN0ZW5jZS5gLFxuICBSRVBPU0lUT1JZOiBcInJlcG9zaXRvcnlcIixcbiAgQ0xBU1M6IFwiX2NsYXNzXCIsXG4gIElEOiBcImlkXCIsXG4gIElOREVYOiBcImluZGV4XCIsXG4gIFVOSVFVRTogXCJ1bmlxdWVcIixcbiAgU0VSSUFMSVpFOiBcInNlcmlhbGl6ZVwiLFxuICBSRUFET05MWTogXCJyZWFkb25seVwiLFxuICBUSU1FU1RBTVA6IFwidGltZXN0YW1wXCIsXG4gIEhBU0g6IFwiaGFzaFwiLFxuICBDT01QT1NFRDogXCJjb21wb3NlZFwiLFxuICBPUklHSU5BTDogXCJfX29yaWdpbmFsT2JqXCIsXG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFRoZSBkZWZhdWx0IHNlcGFyYXRvciB3aGVuIGNvbmNhdGVuYXRpbmcgaW5kZXhlc1xuICpcbiAqIEBjb25zdCBEZWZhdWx0SW5kZXhTZXBhcmF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgTWFuYWdlcnNcbiAqIEBzdWJjYXRlZ29yeSBDb25zdGFudHNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTZXBhcmF0b3IgPSBcIl9cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBIb2xkcyB0aGUgZGVmYXVsdCB0aW1lc3RhbXAgZGF0ZSBmb3JtYXRcbiAqIEBjb25zdGFudCBERUZBVUxUX1RJTUVTVEFNUF9GT1JNQVRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnMuTW9kZWxcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRVNUQU1QX0ZPUk1BVCA9IFwiZGQvTU0veXl5eSBISDptbTpzczpTXCI7XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @summary Holds the DBModel reflection keys
2
+ * @summary Holds the Model reflection keys
3
3
  * @const DBKeys
4
4
  *
5
5
  * @memberOf module:db-decorators.Model
@@ -1 +1,76 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.composed=exports.composedFromKeys=exports.composedFromCreateUpdate=exports.hash=exports.hashOnCreateUpdate=exports.getDBKey=void 0;const constants_1=require("./constants.cjs"),reflection_1=require("@decaf-ts/reflection"),decorator_validation_1=require("@decaf-ts/decorator-validation"),decorators_1=require("../operations/decorators.cjs"),errors_1=require("../repository/errors.cjs");function getDBKey(e){return constants_1.DBKeys.REFLECT+e}function hashOnCreateUpdate(e,o,r,t){var a;r[o]&&(a=decorator_validation_1.Hashing.hash(r[o]),t&&r[o]===a||(r[o]=a))}function hash(){return(0,reflection_1.apply)((0,decorators_1.onCreateUpdate)(hashOnCreateUpdate),(0,reflection_1.metadata)(getDBKey(constants_1.DBKeys.HASH),{}))}function composedFromCreateUpdate(e,o,r){try{const{args:a,type:s,prefix:n,suffix:p,separator:c}=e;var t=a.map(e=>{if(!(e in r))throw new errors_1.InternalError((0,decorator_validation_1.sf)("Property {0} not found to compose from",e));if("keys"===s)return e;if(void 0===r[e])throw new errors_1.InternalError((0,decorator_validation_1.sf)("Property {0} does not contain a value to compose from",e));return r[e].toString()});n&&t.unshift(n),p&&t.push(p),r[o]=t.join(c)}catch(e){throw new errors_1.InternalError("Failed to compose value: "+e)}}function composedFrom(e,o=!1,r=constants_1.DefaultSeparator,t="values",a="",s=""){e={args:e,hashResult:o,separator:r,type:t,prefix:a,suffix:s},r=[(0,decorators_1.onCreateUpdate)(composedFromCreateUpdate,e),(0,reflection_1.metadata)(getDBKey(constants_1.DBKeys.COMPOSED),e)];return o&&r.push(hash()),(0,reflection_1.apply)(...r)}function composedFromKeys(e,o=constants_1.DefaultSeparator,r=!1,t="",a=""){return composedFrom(e,r,o,"keys",t,a)}function composed(e,o=constants_1.DefaultSeparator,r=!1,t="",a=""){return composedFrom(e,r,o,"values",t,a)}exports.getDBKey=getDBKey,exports.hashOnCreateUpdate=hashOnCreateUpdate,exports.hash=hash,exports.composedFromCreateUpdate=composedFromCreateUpdate,exports.composedFromKeys=composedFromKeys,exports.composed=composed;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashOnCreateUpdate = hashOnCreateUpdate;
4
+ exports.hash = hash;
5
+ exports.composedFromCreateUpdate = composedFromCreateUpdate;
6
+ exports.composedFromKeys = composedFromKeys;
7
+ exports.composed = composed;
8
+ const constants_1 = require("./constants.cjs");
9
+ const reflection_1 = require("@decaf-ts/reflection");
10
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
11
+ const decorators_1 = require("../operations/decorators.cjs");
12
+ const errors_1 = require("../repository/errors.cjs");
13
+ const Repository_1 = require("../repository/Repository.cjs");
14
+ /**
15
+ *
16
+ * @param {str} str
17
+ * @memberOf db-decorators.model
18
+ */
19
+ function hashOnCreateUpdate(data, key, model, oldModel) {
20
+ if (!model[key])
21
+ return;
22
+ const hash = decorator_validation_1.Hashing.hash(model[key]);
23
+ if (oldModel && model[key] === hash)
24
+ return;
25
+ model[key] = hash;
26
+ }
27
+ function hash() {
28
+ return (0, reflection_1.apply)((0, decorators_1.onCreateUpdate)(hashOnCreateUpdate), (0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(constants_1.DBKeys.HASH), {}));
29
+ }
30
+ function composedFromCreateUpdate(data, key, model) {
31
+ try {
32
+ const { args, type, prefix, suffix, separator } = data;
33
+ const composed = args.map((arg) => {
34
+ if (!(arg in model))
35
+ throw new errors_1.InternalError((0, decorator_validation_1.sf)("Property {0} not found to compose from", arg));
36
+ if (type === "keys")
37
+ return arg;
38
+ if (typeof model[arg] === "undefined")
39
+ throw new errors_1.InternalError((0, decorator_validation_1.sf)("Property {0} does not contain a value to compose from", arg));
40
+ return model[arg].toString();
41
+ });
42
+ if (prefix)
43
+ composed.unshift(prefix);
44
+ if (suffix)
45
+ composed.push(suffix);
46
+ model[key] = composed.join(separator);
47
+ }
48
+ catch (e) {
49
+ throw new errors_1.InternalError(`Failed to compose value: ${e}`);
50
+ }
51
+ }
52
+ function composedFrom(args, hashResult = false, separator = constants_1.DefaultSeparator, type = "values", prefix = "", suffix = "") {
53
+ const data = {
54
+ args: args,
55
+ hashResult: hashResult,
56
+ separator: separator,
57
+ type: type,
58
+ prefix: prefix,
59
+ suffix: suffix,
60
+ };
61
+ const decorators = [
62
+ (0, decorators_1.onCreateUpdate)(composedFromCreateUpdate, data),
63
+ (0, decorator_validation_1.propMetadata)(Repository_1.Repository.key(constants_1.DBKeys.COMPOSED), data),
64
+ ];
65
+ if (hashResult)
66
+ decorators.push(hash());
67
+ return (0, reflection_1.apply)(...decorators);
68
+ }
69
+ function composedFromKeys(args, separator = constants_1.DefaultSeparator, hash = false, prefix = "", suffix = "") {
70
+ return composedFrom(args, hash, separator, "keys", prefix, suffix);
71
+ }
72
+ function composed(args, separator = constants_1.DefaultSeparator, hash = false, prefix = "", suffix = "") {
73
+ return composedFrom(args, hash, separator, "values", prefix, suffix);
74
+ }
75
+
76
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0EsZ0RBU0M7QUFFRCxvQkFLQztBQVdELDREQTBCQztBQTJCRCw0Q0FRQztBQUVELDRCQVFDO0FBaEhELDJDQUF1RDtBQUN2RCxxREFBNkM7QUFDN0MseUVBQTJFO0FBQzNFLHlEQUEwRDtBQUUxRCxpREFBcUQ7QUFDckQseURBQXNEO0FBRXREOzs7O0dBSUc7QUFFSCxTQUFnQixrQkFBa0IsQ0FJdkIsSUFBTyxFQUFFLEdBQVcsRUFBRSxLQUFRLEVBQUUsUUFBWTtJQUNyRCxJQUFJLENBQUUsS0FBYSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU87SUFDakMsTUFBTSxJQUFJLEdBQUcsOEJBQU8sQ0FBQyxJQUFJLENBQUUsS0FBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsSUFBSSxRQUFRLElBQUssS0FBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUk7UUFBRSxPQUFPO0lBQ3BELEtBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0IsQ0FBQztBQUVELFNBQWdCLElBQUk7SUFDbEIsT0FBTyxJQUFBLGtCQUFLLEVBQ1YsSUFBQSwyQkFBYyxFQUFDLGtCQUFrQixDQUFDLEVBQ2xDLElBQUEsbUNBQVksRUFBQyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO0FBQ0osQ0FBQztBQVdELFNBQWdCLHdCQUF3QixDQUc3QixJQUEwQixFQUFFLEdBQVcsRUFBRSxLQUFRO0lBQzFELElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO2dCQUNqQixNQUFNLElBQUksc0JBQWEsQ0FDckIsSUFBQSx5QkFBRSxFQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUNsRCxDQUFDO1lBQ0osSUFBSSxJQUFJLEtBQUssTUFBTTtnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUNoQyxJQUFJLE9BQVEsS0FBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVc7Z0JBQzVDLE1BQU0sSUFBSSxzQkFBYSxDQUNyQixJQUFBLHlCQUFFLEVBQUMsdURBQXVELEVBQUUsR0FBRyxDQUFDLENBQ2pFLENBQUM7WUFDSixPQUFTLEtBQWEsQ0FBQyxHQUFHLENBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksTUFBTTtZQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNO1lBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqQyxLQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksc0JBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUNuQixJQUFjLEVBQ2QsYUFBc0IsS0FBSyxFQUMzQixZQUFvQiw0QkFBZ0IsRUFDcEMsT0FBMEIsUUFBUSxFQUNsQyxNQUFNLEdBQUcsRUFBRSxFQUNYLE1BQU0sR0FBRyxFQUFFO0lBRVgsTUFBTSxJQUFJLEdBQXlCO1FBQ2pDLElBQUksRUFBRSxJQUFJO1FBQ1YsVUFBVSxFQUFFLFVBQVU7UUFDdEIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsSUFBSSxFQUFFLElBQUk7UUFDVixNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxNQUFNO0tBQ2YsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLElBQUEsMkJBQWMsRUFBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUM7UUFDOUMsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDO0tBQ3BELENBQUM7SUFDRixJQUFJLFVBQVU7UUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsT0FBTyxJQUFBLGtCQUFLLEVBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLElBQWMsRUFDZCxZQUFvQiw0QkFBZ0IsRUFDcEMsT0FBZ0IsS0FBSyxFQUNyQixNQUFNLEdBQUcsRUFBRSxFQUNYLE1BQU0sR0FBRyxFQUFFO0lBRVgsT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQsU0FBZ0IsUUFBUSxDQUN0QixJQUFjLEVBQ2QsWUFBb0IsNEJBQWdCLEVBQ3BDLE9BQWdCLEtBQUssRUFDckIsTUFBTSxHQUFHLEVBQUUsRUFDWCxNQUFNLEdBQUcsRUFBRTtJQUVYLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkUsQ0FBQyIsImZpbGUiOiJtb2RlbC9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJLZXlzLCBEZWZhdWx0U2VwYXJhdG9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBhcHBseSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgSGFzaGluZywgcHJvcE1ldGFkYXRhLCBzZiB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IG9uQ3JlYXRlVXBkYXRlIH0gZnJvbSBcIi4uL29wZXJhdGlvbnMvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgSVJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcblxuLyoqXG4gKlxuICogQHBhcmFtIHtzdHJ9IHN0clxuICogQG1lbWJlck9mIGRiLWRlY29yYXRvcnMubW9kZWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzaE9uQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNPixcbiAgWSA9IGFueSxcbj4odGhpczogUiwgZGF0YTogWSwga2V5OiBzdHJpbmcsIG1vZGVsOiBNLCBvbGRNb2RlbD86IE0pOiB2b2lkIHtcbiAgaWYgKCEobW9kZWwgYXMgYW55KVtrZXldKSByZXR1cm47XG4gIGNvbnN0IGhhc2ggPSBIYXNoaW5nLmhhc2goKG1vZGVsIGFzIGFueSlba2V5XSk7XG4gIGlmIChvbGRNb2RlbCAmJiAobW9kZWwgYXMgYW55KVtrZXldID09PSBoYXNoKSByZXR1cm47XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBoYXNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaCgpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIG9uQ3JlYXRlVXBkYXRlKGhhc2hPbkNyZWF0ZVVwZGF0ZSksXG4gICAgcHJvcE1ldGFkYXRhKFJlcG9zaXRvcnkua2V5KERCS2V5cy5IQVNIKSwge30pXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIENvbXBvc2VkRnJvbU1ldGFkYXRhID0ge1xuICBhcmdzOiBzdHJpbmdbXTtcbiAgc2VwYXJhdG9yOiBzdHJpbmc7XG4gIGhhc2hSZXN1bHQ6IGJvb2xlYW47XG4gIHR5cGU6IFwia2V5c1wiIHwgXCJ2YWx1ZXNcIjtcbiAgcHJlZml4Pzogc3RyaW5nO1xuICBzdWZmaXg/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZWRGcm9tQ3JlYXRlVXBkYXRlPFxuICBUIGV4dGVuZHMgTW9kZWwsXG4gIFYgZXh0ZW5kcyBJUmVwb3NpdG9yeTxUPixcbj4odGhpczogViwgZGF0YTogQ29tcG9zZWRGcm9tTWV0YWRhdGEsIGtleTogc3RyaW5nLCBtb2RlbDogVCkge1xuICB0cnkge1xuICAgIGNvbnN0IHsgYXJncywgdHlwZSwgcHJlZml4LCBzdWZmaXgsIHNlcGFyYXRvciB9ID0gZGF0YTtcbiAgICBjb25zdCBjb21wb3NlZCA9IGFyZ3MubWFwKChhcmc6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCEoYXJnIGluIG1vZGVsKSlcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgc2YoXCJQcm9wZXJ0eSB7MH0gbm90IGZvdW5kIHRvIGNvbXBvc2UgZnJvbVwiLCBhcmcpXG4gICAgICAgICk7XG4gICAgICBpZiAodHlwZSA9PT0gXCJrZXlzXCIpIHJldHVybiBhcmc7XG4gICAgICBpZiAodHlwZW9mIChtb2RlbCBhcyBhbnkpW2FyZ10gPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIHNmKFwiUHJvcGVydHkgezB9IGRvZXMgbm90IGNvbnRhaW4gYSB2YWx1ZSB0byBjb21wb3NlIGZyb21cIiwgYXJnKVxuICAgICAgICApO1xuICAgICAgcmV0dXJuICgobW9kZWwgYXMgYW55KVthcmddIGFzIGFueSkudG9TdHJpbmcoKTtcbiAgICB9KTtcblxuICAgIGlmIChwcmVmaXgpIGNvbXBvc2VkLnVuc2hpZnQocHJlZml4KTtcbiAgICBpZiAoc3VmZml4KSBjb21wb3NlZC5wdXNoKHN1ZmZpeCk7XG5cbiAgICAobW9kZWwgYXMgYW55KVtrZXldID0gY29tcG9zZWQuam9pbihzZXBhcmF0b3IpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGNvbXBvc2UgdmFsdWU6ICR7ZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wb3NlZEZyb20oXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBoYXNoUmVzdWx0OiBib29sZWFuID0gZmFsc2UsXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gRGVmYXVsdFNlcGFyYXRvcixcbiAgdHlwZTogXCJrZXlzXCIgfCBcInZhbHVlc1wiID0gXCJ2YWx1ZXNcIixcbiAgcHJlZml4ID0gXCJcIixcbiAgc3VmZml4ID0gXCJcIlxuKSB7XG4gIGNvbnN0IGRhdGE6IENvbXBvc2VkRnJvbU1ldGFkYXRhID0ge1xuICAgIGFyZ3M6IGFyZ3MsXG4gICAgaGFzaFJlc3VsdDogaGFzaFJlc3VsdCxcbiAgICBzZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgICB0eXBlOiB0eXBlLFxuICAgIHByZWZpeDogcHJlZml4LFxuICAgIHN1ZmZpeDogc3VmZml4LFxuICB9O1xuXG4gIGNvbnN0IGRlY29yYXRvcnMgPSBbXG4gICAgb25DcmVhdGVVcGRhdGUoY29tcG9zZWRGcm9tQ3JlYXRlVXBkYXRlLCBkYXRhKSxcbiAgICBwcm9wTWV0YWRhdGEoUmVwb3NpdG9yeS5rZXkoREJLZXlzLkNPTVBPU0VEKSwgZGF0YSksXG4gIF07XG4gIGlmIChoYXNoUmVzdWx0KSBkZWNvcmF0b3JzLnB1c2goaGFzaCgpKTtcbiAgcmV0dXJuIGFwcGx5KC4uLmRlY29yYXRvcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZWRGcm9tS2V5cyhcbiAgYXJnczogc3RyaW5nW10sXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gRGVmYXVsdFNlcGFyYXRvcixcbiAgaGFzaDogYm9vbGVhbiA9IGZhbHNlLFxuICBwcmVmaXggPSBcIlwiLFxuICBzdWZmaXggPSBcIlwiXG4pIHtcbiAgcmV0dXJuIGNvbXBvc2VkRnJvbShhcmdzLCBoYXNoLCBzZXBhcmF0b3IsIFwia2V5c1wiLCBwcmVmaXgsIHN1ZmZpeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlZChcbiAgYXJnczogc3RyaW5nW10sXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gRGVmYXVsdFNlcGFyYXRvcixcbiAgaGFzaDogYm9vbGVhbiA9IGZhbHNlLFxuICBwcmVmaXggPSBcIlwiLFxuICBzdWZmaXggPSBcIlwiXG4pIHtcbiAgcmV0dXJuIGNvbXBvc2VkRnJvbShhcmdzLCBoYXNoLCBzZXBhcmF0b3IsIFwidmFsdWVzXCIsIHByZWZpeCwgc3VmZml4KTtcbn1cbiJdfQ==