@decaf-ts/decorator-validation 1.1.1 → 1.1.4

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 (55) hide show
  1. package/dist/decorator-validation.bundle.min.js +1 -1
  2. package/dist/esm/decorator-validation.bundle.min.esm.js +1 -1
  3. package/lib/esm/index.d.ts +1 -2
  4. package/lib/esm/index.js +2 -3
  5. package/lib/esm/model/Model.js +2 -4
  6. package/lib/esm/model/Registry.js +2 -2
  7. package/lib/esm/model/construction.js +3 -2
  8. package/lib/esm/model/index.d.ts +1 -0
  9. package/lib/esm/model/index.js +2 -1
  10. package/lib/esm/model/utils.d.ts +9 -0
  11. package/lib/esm/model/utils.js +16 -0
  12. package/lib/esm/utils/index.d.ts +0 -1
  13. package/lib/esm/utils/index.js +1 -2
  14. package/lib/esm/validation/Validators/TypeValidator.js +2 -2
  15. package/lib/esm/validation/Validators/Validator.js +2 -2
  16. package/lib/esm/validation/Validators/decorators.js +2 -2
  17. package/lib/esm/validation/decorators.d.ts +10 -10
  18. package/lib/esm/validation/decorators.js +2 -2
  19. package/lib/esm/validation/types.d.ts +2 -14
  20. package/lib/esm/validation/types.js +1 -1
  21. package/lib/index.cjs +2 -3
  22. package/lib/index.d.ts +1 -2
  23. package/lib/model/Model.cjs +5 -7
  24. package/lib/model/Registry.cjs +2 -2
  25. package/lib/model/construction.cjs +4 -3
  26. package/lib/model/index.cjs +2 -1
  27. package/lib/model/index.d.ts +1 -0
  28. package/lib/model/utils.cjs +19 -0
  29. package/lib/model/utils.d.ts +9 -0
  30. package/lib/utils/index.cjs +1 -2
  31. package/lib/utils/index.d.ts +0 -1
  32. package/lib/validation/Validators/TypeValidator.cjs +5 -5
  33. package/lib/validation/Validators/Validator.cjs +3 -3
  34. package/lib/validation/Validators/decorators.cjs +2 -2
  35. package/lib/validation/decorators.cjs +12 -12
  36. package/lib/validation/decorators.d.ts +10 -10
  37. package/lib/validation/types.cjs +1 -1
  38. package/lib/validation/types.d.ts +2 -14
  39. package/package.json +2 -1
  40. package/lib/esm/reflection/decorators.d.ts +0 -27
  41. package/lib/esm/reflection/decorators.js +0 -51
  42. package/lib/esm/reflection/index.d.ts +0 -2
  43. package/lib/esm/reflection/index.js +0 -4
  44. package/lib/esm/reflection/utils.d.ts +0 -113
  45. package/lib/esm/reflection/utils.js +0 -239
  46. package/lib/esm/utils/equality.d.ts +0 -14
  47. package/lib/esm/utils/equality.js +0 -34
  48. package/lib/reflection/decorators.cjs +0 -55
  49. package/lib/reflection/decorators.d.ts +0 -27
  50. package/lib/reflection/index.cjs +0 -20
  51. package/lib/reflection/index.d.ts +0 -2
  52. package/lib/reflection/utils.cjs +0 -251
  53. package/lib/reflection/utils.d.ts +0 -113
  54. package/lib/utils/equality.cjs +0 -37
  55. package/lib/utils/equality.d.ts +0 -14
@@ -12,10 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TypeValidator = void 0;
13
13
  const Validator_1 = require("./Validator.cjs");
14
14
  const constants_1 = require("./constants.cjs");
15
- const utils_1 = require("../../reflection/utils.cjs");
16
15
  const decorators_1 = require("./decorators.cjs");
17
- const utils_2 = require("../../utils/index.cjs");
16
+ const utils_1 = require("../../utils/index.cjs");
18
17
  const Validation_1 = require("../Validation.cjs");
18
+ const reflection_1 = require("@decaf-ts/reflection");
19
19
  /**
20
20
  * @summary Required Validator
21
21
  *
@@ -43,7 +43,7 @@ let TypeValidator = class TypeValidator extends Validator_1.Validator {
43
43
  hasErrors(value, types, message) {
44
44
  if (value === undefined)
45
45
  return; // Dont try and enforce type if undefined
46
- if (!(0, utils_1.evaluateDesignTypes)(value, types))
46
+ if (!(0, reflection_1.evaluateDesignTypes)(value, types))
47
47
  return this.getMessage(message || this.message, typeof types === "string"
48
48
  ? types
49
49
  : Array.isArray(types)
@@ -58,8 +58,8 @@ exports.TypeValidator = TypeValidator = __decorate([
58
58
  ], TypeValidator);
59
59
  Validation_1.Validation.register({
60
60
  validator: TypeValidator,
61
- validationKey: utils_2.ModelKeys.TYPE,
61
+ validationKey: utils_1.ModelKeys.TYPE,
62
62
  save: false,
63
63
  });
64
64
 
65
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVHlwZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSwyQ0FBd0M7QUFDeEMsMkNBQXFFO0FBQ3JFLGtEQUE2RDtBQUM3RCw2Q0FBeUM7QUFDekMsdUNBQXdDO0FBQ3hDLDhDQUEyQztBQUczQzs7Ozs7OztHQU9HO0FBRUksSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYyxTQUFRLHFCQUFTO0lBQzFDLFlBQVksVUFBa0Isa0NBQXNCLENBQUMsSUFBSTtRQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUNkLEtBQVUsRUFDVixLQUEyQyxFQUMzQyxPQUFnQjtRQUVoQixJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxDQUFDLHlDQUF5QztRQUMxRSxJQUFJLENBQUMsSUFBQSwyQkFBbUIsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQ3ZCLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3ZCLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNsQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsT0FBTyxLQUFLLENBQ2IsQ0FBQztJQUNOLENBQUM7Q0FDRixDQUFBO0FBbENZLHNDQUFhO3dCQUFiLGFBQWE7SUFEekIsSUFBQSxzQkFBUyxFQUFDLDBCQUFjLENBQUMsSUFBSSxDQUFDOztHQUNsQixhQUFhLENBa0N6QjtBQUVELHVCQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLGFBQWEsRUFBRSxpQkFBUyxDQUFDLElBQUk7SUFDN0IsSUFBSSxFQUFFLEtBQUs7Q0FDVyxDQUFDLENBQUMiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1R5cGVWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvcnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUywgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGV2YWx1YXRlRGVzaWduVHlwZXMgfSBmcm9tIFwiLi4vLi4vcmVmbGVjdGlvbi91dGlsc1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL1ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJlcXVpcmVkIFZhbGlkYXRvclxuICpcbiAqIEBjbGFzcyBSZXF1aXJlZFZhbGlkYXRvclxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuQHZhbGlkYXRvcihWYWxpZGF0aW9uS2V5cy5UWVBFKVxuZXhwb3J0IGNsYXNzIFR5cGVWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEUpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBtb2RlbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXSB8IHtuYW1lOiBzdHJpbmd9fSB0eXBlc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gICAqXG4gICAqIEByZXR1cm4gRXJyb3JzXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnMoXG4gICAgdmFsdWU6IGFueSxcbiAgICB0eXBlczogc3RyaW5nIHwgc3RyaW5nW10gfCB7IG5hbWU6IHN0cmluZyB9LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICk6IEVycm9ycyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjsgLy8gRG9udCB0cnkgYW5kIGVuZm9yY2UgdHlwZSBpZiB1bmRlZmluZWRcbiAgICBpZiAoIWV2YWx1YXRlRGVzaWduVHlwZXModmFsdWUsIHR5cGVzKSlcbiAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgIG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLFxuICAgICAgICB0eXBlb2YgdHlwZXMgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IHR5cGVzXG4gICAgICAgICAgOiBBcnJheS5pc0FycmF5KHR5cGVzKVxuICAgICAgICAgICAgPyB0eXBlcy5qb2luKFwiLCBcIilcbiAgICAgICAgICAgIDogdHlwZXMubmFtZSxcbiAgICAgICAgdHlwZW9mIHZhbHVlLFxuICAgICAgKTtcbiAgfVxufVxuXG5WYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgdmFsaWRhdG9yOiBUeXBlVmFsaWRhdG9yLFxuICB2YWxpZGF0aW9uS2V5OiBNb2RlbEtleXMuVFlQRSxcbiAgc2F2ZTogZmFsc2UsXG59IGFzIFZhbGlkYXRvckRlZmluaXRpb24pO1xuIl19
65
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVHlwZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSwyQ0FBd0M7QUFDeEMsMkNBQXFFO0FBQ3JFLDZDQUF5QztBQUN6Qyx1Q0FBd0M7QUFDeEMsOENBQTJDO0FBRTNDLHFEQUEyRDtBQUUzRDs7Ozs7OztHQU9HO0FBRUksSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYyxTQUFRLHFCQUFTO0lBQzFDLFlBQVksVUFBa0Isa0NBQXNCLENBQUMsSUFBSTtRQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUNkLEtBQVUsRUFDVixLQUEyQyxFQUMzQyxPQUFnQjtRQUVoQixJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxDQUFDLHlDQUF5QztRQUMxRSxJQUFJLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQ3ZCLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3ZCLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNsQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsT0FBTyxLQUFLLENBQ2IsQ0FBQztJQUNOLENBQUM7Q0FDRixDQUFBO0FBbENZLHNDQUFhO3dCQUFiLGFBQWE7SUFEekIsSUFBQSxzQkFBUyxFQUFDLDBCQUFjLENBQUMsSUFBSSxDQUFDOztHQUNsQixhQUFhLENBa0N6QjtBQUVELHVCQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLGFBQWEsRUFBRSxpQkFBUyxDQUFDLElBQUk7SUFDN0IsSUFBSSxFQUFFLEtBQUs7Q0FDVyxDQUFDLENBQUMiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1R5cGVWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvcnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUywgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHZhbGlkYXRvciB9IGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9WYWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGV2YWx1YXRlRGVzaWduVHlwZXMgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBSZXF1aXJlZCBWYWxpZGF0b3JcbiAqXG4gKiBAY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuVFlQRSlcbmV4cG9ydCBjbGFzcyBUeXBlVmFsaWRhdG9yIGV4dGVuZHMgVmFsaWRhdG9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5UWVBFKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW10gfCB7bmFtZTogc3RyaW5nfX0gdHlwZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXVxuICAgKlxuICAgKiBAcmV0dXJuIEVycm9yc1xuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICpcbiAgICogQHNlZSBWYWxpZGF0b3IjaGFzRXJyb3JzXG4gICAqL1xuICBwdWJsaWMgaGFzRXJyb3JzKFxuICAgIHZhbHVlOiBhbnksXG4gICAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgICBtZXNzYWdlPzogc3RyaW5nLFxuICApOiBFcnJvcnMge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47IC8vIERvbnQgdHJ5IGFuZCBlbmZvcmNlIHR5cGUgaWYgdW5kZWZpbmVkXG4gICAgaWYgKCFldmFsdWF0ZURlc2lnblR5cGVzKHZhbHVlLCB0eXBlcykpXG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICBtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSxcbiAgICAgICAgdHlwZW9mIHR5cGVzID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyB0eXBlc1xuICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh0eXBlcylcbiAgICAgICAgICAgID8gdHlwZXMuam9pbihcIiwgXCIpXG4gICAgICAgICAgICA6IHR5cGVzLm5hbWUsXG4gICAgICAgIHR5cGVvZiB2YWx1ZSxcbiAgICAgICk7XG4gIH1cbn1cblxuVmFsaWRhdGlvbi5yZWdpc3Rlcih7XG4gIHZhbGlkYXRvcjogVHlwZVZhbGlkYXRvcixcbiAgdmFsaWRhdGlvbktleTogTW9kZWxLZXlzLlRZUEUsXG4gIHNhdmU6IGZhbHNlLFxufSBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKTtcbiJdfQ==
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Validator = void 0;
4
4
  const constants_1 = require("./constants.cjs");
5
5
  const strings_1 = require("../../utils/strings.cjs");
6
- const utils_1 = require("../../reflection/utils.cjs");
6
+ const reflection_1 = require("@decaf-ts/reflection");
7
7
  /**
8
8
  * @summary Base Implementation for Validators
9
9
  * @description Provides the underlying functionality for {@link Validator}s
@@ -42,7 +42,7 @@ class Validator {
42
42
  return function (value, ...args) {
43
43
  if (value === undefined || !this.acceptedTypes)
44
44
  return unbound(value, ...args);
45
- if (!(0, utils_1.checkTypes)(value, this.acceptedTypes))
45
+ if (!(0, reflection_1.checkTypes)(value, this.acceptedTypes))
46
46
  return this.getMessage(constants_1.DEFAULT_ERROR_MESSAGES.TYPE, this.acceptedTypes.join(", "), typeof value);
47
47
  return unbound(value, ...args);
48
48
  }.bind(this);
@@ -50,4 +50,4 @@ class Validator {
50
50
  }
51
51
  exports.Validator = Validator;
52
52
 
53
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUFxRDtBQUNyRCxpREFBeUM7QUFDekMsa0RBQW9EO0FBRXBEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBc0IsU0FBUztJQUk3QixZQUNFLFVBQWtCLGtDQUFzQixDQUFDLE9BQU8sRUFDaEQsR0FBRyxhQUF1QjtRQUUxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLGFBQWEsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFVBQVUsQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ2xELE9BQU8sSUFBQSxZQUFFLEVBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FDM0IsT0FBa0Q7UUFFbEQsT0FBTyxVQUEyQixLQUFVLEVBQUUsR0FBRyxJQUFXO1lBQzFELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUM1QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBQSxrQkFBVSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQ3BCLGtDQUFzQixDQUFDLElBQUksRUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzdCLE9BQU8sS0FBSyxDQUNiLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQztDQVlGO0FBeERELDhCQXdEQyIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmdzXCI7XG5pbXBvcnQgeyBjaGVja1R5cGVzIH0gZnJvbSBcIi4uLy4uL3JlZmxlY3Rpb24vdXRpbHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIEltcGxlbWVudGF0aW9uIGZvciBWYWxpZGF0b3JzXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSBmb3Ige0BsaW5rIFZhbGlkYXRvcn1zXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbGlkYXRpb25LZXkgdGhlIGtleSB0byByZWdpc3RlciB0aGUgdmFsaWRhdG9yIHVuZGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNERUZBVUxUfVxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2FjY2VwdGVkVHlwZXNdIGRlZmluZXMgdGhlIHZhbHVlIHR5cGVzIHRoaXMgdmFsaWRhdG9yIGNhbiB2YWxpZGF0ZVxuICpcbiAqIEBjbGFzcyBWYWxpZGF0b3JcbiAqIEBhYnN0cmFjdFxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbGlkYXRvciB7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjZXB0ZWRUeXBlcz86IHN0cmluZ1tdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkRFRkFVTFQsXG4gICAgLi4uYWNjZXB0ZWRUeXBlczogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmIChhY2NlcHRlZFR5cGVzLmxlbmd0aCkgdGhpcy5hY2NlcHRlZFR5cGVzID0gYWNjZXB0ZWRUeXBlcztcbiAgICBpZiAodGhpcy5hY2NlcHRlZFR5cGVzKVxuICAgICAgdGhpcy5oYXNFcnJvcnMgPSB0aGlzLmNoZWNrVHlwZUFuZEhhc0Vycm9ycyh0aGlzLmhhc0Vycm9ycy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBidWlsZHMgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHNmKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyB0eXBlXG4gICAqIEBwYXJhbSB7YW55fSB1bmJvdW5kXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVHlwZUFuZEhhc0Vycm9ycyhcbiAgICB1bmJvdW5kOiAodmFsdWU6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IEVycm9ycyxcbiAgKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBWYWxpZGF0b3IsIHZhbHVlOiBhbnksIC4uLmFyZ3M6IGFueVtdKTogRXJyb3JzIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmFjY2VwdGVkVHlwZXMpXG4gICAgICAgIHJldHVybiB1bmJvdW5kKHZhbHVlLCAuLi5hcmdzKTtcbiAgICAgIGlmICghY2hlY2tUeXBlcyh2YWx1ZSwgdGhpcy5hY2NlcHRlZFR5cGVzKSlcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVzc2FnZShcbiAgICAgICAgICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEUsXG4gICAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLmpvaW4oXCIsIFwiKSxcbiAgICAgICAgICB0eXBlb2YgdmFsdWUsXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gdW5ib3VuZCh2YWx1ZSwgLi4uYXJncyk7XG4gICAgfS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhbiBhdHRyaWJ1dGVcbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICpcbiAgICogQGFic3RyYWN0XG4gICAqXG4gICAqIEBzZWUgTW9kZWwjaGFzRXJyb3JzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaGFzRXJyb3JzKHZhbHVlOiBhbnksIC4uLmFyZ3M6IGFueVtdKTogRXJyb3JzO1xufVxuIl19
53
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUFxRDtBQUNyRCxpREFBeUM7QUFDekMscURBQWtEO0FBRWxEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBc0IsU0FBUztJQUk3QixZQUNFLFVBQWtCLGtDQUFzQixDQUFDLE9BQU8sRUFDaEQsR0FBRyxhQUF1QjtRQUUxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLGFBQWEsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFVBQVUsQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ2xELE9BQU8sSUFBQSxZQUFFLEVBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FDM0IsT0FBa0Q7UUFFbEQsT0FBTyxVQUEyQixLQUFVLEVBQUUsR0FBRyxJQUFXO1lBQzFELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUM1QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBQSx1QkFBVSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQ3BCLGtDQUFzQixDQUFDLElBQUksRUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzdCLE9BQU8sS0FBSyxDQUNiLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQztDQVlGO0FBeERELDhCQXdEQyIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmdzXCI7XG5pbXBvcnQgeyBjaGVja1R5cGVzIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzZSBJbXBsZW1lbnRhdGlvbiBmb3IgVmFsaWRhdG9yc1xuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayBWYWxpZGF0b3J9c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxpZGF0aW9uS2V5IHRoZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIHZhbGlkYXRvciB1bmRlclxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjREVGQVVMVH1cbiAqIEBwYXJhbSB7c3RyaW5nW119IFthY2NlcHRlZFR5cGVzXSBkZWZpbmVzIHRoZSB2YWx1ZSB0eXBlcyB0aGlzIHZhbGlkYXRvciBjYW4gdmFsaWRhdGVcbiAqXG4gKiBAY2xhc3MgVmFsaWRhdG9yXG4gKiBAYWJzdHJhY3RcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWYWxpZGF0b3Ige1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY2VwdGVkVHlwZXM/OiBzdHJpbmdbXTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5ERUZBVUxULFxuICAgIC4uLmFjY2VwdGVkVHlwZXM6IHN0cmluZ1tdXG4gICkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoYWNjZXB0ZWRUeXBlcy5sZW5ndGgpIHRoaXMuYWNjZXB0ZWRUeXBlcyA9IGFjY2VwdGVkVHlwZXM7XG4gICAgaWYgKHRoaXMuYWNjZXB0ZWRUeXBlcylcbiAgICAgIHRoaXMuaGFzRXJyb3JzID0gdGhpcy5jaGVja1R5cGVBbmRIYXNFcnJvcnModGhpcy5oYXNFcnJvcnMuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgYnVpbGRzIHRoZSBlcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBzZihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdHlwZVxuICAgKiBAcGFyYW0ge2FueX0gdW5ib3VuZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1R5cGVBbmRIYXNFcnJvcnMoXG4gICAgdW5ib3VuZDogKHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiBFcnJvcnMsXG4gICkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogVmFsaWRhdG9yLCB2YWx1ZTogYW55LCAuLi5hcmdzOiBhbnlbXSk6IEVycm9ycyB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5hY2NlcHRlZFR5cGVzKVxuICAgICAgICByZXR1cm4gdW5ib3VuZCh2YWx1ZSwgLi4uYXJncyk7XG4gICAgICBpZiAoIWNoZWNrVHlwZXModmFsdWUsIHRoaXMuYWNjZXB0ZWRUeXBlcykpXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgICAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5UWVBFLFxuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlcy5qb2luKFwiLCBcIiksXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHVuYm91bmQodmFsdWUsIC4uLmFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYW4gYXR0cmlidXRlXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBhYnN0cmFjdFxuICAgKlxuICAgKiBAc2VlIE1vZGVsI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGhhc0Vycm9ycyh2YWx1ZTogYW55LCAuLi5hcmdzOiBhbnlbXSk6IEVycm9ycztcbn1cbiJdfQ==
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validator = validator;
4
4
  const Validation_1 = require("../Validation.cjs");
5
- const reflection_1 = require("../../reflection/index.cjs");
6
5
  const constants_1 = require("./constants.cjs");
7
6
  const utils_1 = require("../utils.cjs");
7
+ const reflection_1 = require("@decaf-ts/reflection");
8
8
  /**
9
9
  * @summary Marks the class as a validator for a certain key.
10
10
  * @description Registers the class in the {@link Validation} with the provided key
@@ -28,4 +28,4 @@ function validator(...keys) {
28
28
  }), (0, reflection_1.metadata)((0, utils_1.getValidationKey)(constants_1.ValidationKeys.VALIDATOR), keys));
29
29
  }
30
30
 
31
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSw4QkFjQztBQS9CRCw4Q0FBMkM7QUFHM0MsaURBQW1EO0FBQ25ELDJDQUE2QztBQUM3QyxvQ0FBNEM7QUFFNUM7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFzQixHQUFHLElBQWM7SUFDOUQsT0FBTyxJQUFBLGtCQUFLLEVBQ1YsQ0FBQyxDQUFDLFFBQXdCLEVBQUUsRUFBRTtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7WUFDekIsdUJBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxRQUFRO2dCQUNuQixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxFQUFFLElBQUk7YUFDWSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQW1CLEVBQ3BCLElBQUEscUJBQVEsRUFBQyxJQUFBLHdCQUFnQixFQUFDLDBCQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQzNELENBQUM7QUFDSixDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL1ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vLi4vbW9kZWwvdHlwZXNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCIuLi8uLi9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdGlvbktleSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE1hcmtzIHRoZSBjbGFzcyBhcyBhIHZhbGlkYXRvciBmb3IgYSBjZXJ0YWluIGtleS5cbiAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgdGhlIGNsYXNzIGluIHRoZSB7QGxpbmsgVmFsaWRhdGlvbn0gd2l0aCB0aGUgcHJvdmlkZWQga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleXMgdGhlIHZhbGlkYXRpb24ga2V5XG4gKlxuICogQGZ1bmN0aW9uIHZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0b3I8VCBleHRlbmRzIFZhbGlkYXRvcj4oLi4ua2V5czogc3RyaW5nW10pIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgICgob3JpZ2luYWw6IENvbnN0cnVjdG9yPFQ+KSA9PiB7XG4gICAgICBrZXlzLmZvckVhY2goKGs6IHN0cmluZykgPT4ge1xuICAgICAgICBWYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgICAgICAgICB2YWxpZGF0b3I6IG9yaWdpbmFsLFxuICAgICAgICAgIHZhbGlkYXRpb25LZXk6IGssXG4gICAgICAgICAgc2F2ZTogdHJ1ZSxcbiAgICAgICAgfSBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9yaWdpbmFsO1xuICAgIH0pIGFzIENsYXNzRGVjb3JhdG9yLFxuICAgIG1ldGFkYXRhKGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuVkFMSURBVE9SKSwga2V5cyksXG4gICk7XG59XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSw4QkFjQztBQS9CRCw4Q0FBMkM7QUFHM0MsMkNBQTZDO0FBQzdDLG9DQUE0QztBQUM1QyxxREFBdUQ7QUFFdkQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFzQixHQUFHLElBQWM7SUFDOUQsT0FBTyxJQUFBLGtCQUFLLEVBQ1YsQ0FBQyxDQUFDLFFBQXdCLEVBQUUsRUFBRTtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7WUFDekIsdUJBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxRQUFRO2dCQUNuQixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxFQUFFLElBQUk7YUFDWSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQW1CLEVBQ3BCLElBQUEscUJBQVEsRUFBQyxJQUFBLHdCQUFnQixFQUFDLDBCQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQzNELENBQUM7QUFDSixDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL1ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vLi4vbW9kZWwvdHlwZXNcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBnZXRWYWxpZGF0aW9uS2V5IH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBhcHBseSwgbWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgY2xhc3MgYXMgYSB2YWxpZGF0b3IgZm9yIGEgY2VydGFpbiBrZXkuXG4gKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIHRoZSBjbGFzcyBpbiB0aGUge0BsaW5rIFZhbGlkYXRpb259IHdpdGggdGhlIHByb3ZpZGVkIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlzIHRoZSB2YWxpZGF0aW9uIGtleVxuICpcbiAqIEBmdW5jdGlvbiB2YWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdG9yPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KC4uLmtleXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBhcHBseShcbiAgICAoKG9yaWdpbmFsOiBDb25zdHJ1Y3RvcjxUPikgPT4ge1xuICAgICAga2V5cy5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgICAgVmFsaWRhdGlvbi5yZWdpc3Rlcih7XG4gICAgICAgICAgdmFsaWRhdG9yOiBvcmlnaW5hbCxcbiAgICAgICAgICB2YWxpZGF0aW9uS2V5OiBrLFxuICAgICAgICAgIHNhdmU6IHRydWUsXG4gICAgICAgIH0gYXMgVmFsaWRhdG9yRGVmaW5pdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvcmlnaW5hbDtcbiAgICB9KSBhcyBDbGFzc0RlY29yYXRvcixcbiAgICBtZXRhZGF0YShnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlZBTElEQVRPUiksIGtleXMpLFxuICApO1xufVxuIl19
@@ -17,12 +17,12 @@ exports.set = set;
17
17
  require("reflect-metadata");
18
18
  const ListValidator_1 = require("./Validators/ListValidator.cjs");
19
19
  const Validation_1 = require("./Validation.cjs");
20
- const decorators_1 = require("../reflection/decorators.cjs");
21
20
  const constants_1 = require("./Validators/constants.cjs");
22
21
  const strings_1 = require("../utils/strings.cjs");
23
22
  const PasswordValidator_1 = require("./Validators/PasswordValidator.cjs");
24
23
  const utils_1 = require("../utils/index.cjs");
25
24
  const utils_2 = require("./utils.cjs");
25
+ const reflection_1 = require("@decaf-ts/reflection");
26
26
  /**
27
27
  * @summary Marks the property as required.
28
28
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}
@@ -34,7 +34,7 @@ const utils_2 = require("./utils.cjs");
34
34
  * @category Decorators
35
35
  */
36
36
  function required(message = constants_1.DEFAULT_ERROR_MESSAGES.REQUIRED) {
37
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.REQUIRED), {
37
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.REQUIRED), {
38
38
  message: message,
39
39
  });
40
40
  }
@@ -50,7 +50,7 @@ function required(message = constants_1.DEFAULT_ERROR_MESSAGES.REQUIRED) {
50
50
  * @category Decorators
51
51
  */
52
52
  function min(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN) {
53
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MIN), {
53
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MIN), {
54
54
  value: value,
55
55
  message: message,
56
56
  types: [Number.name, Date.name],
@@ -68,7 +68,7 @@ function min(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN) {
68
68
  * @category Decorators
69
69
  */
70
70
  function max(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX) {
71
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MAX), {
71
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MAX), {
72
72
  value: value,
73
73
  message: message,
74
74
  types: [Number.name, Date.name],
@@ -86,7 +86,7 @@ function max(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX) {
86
86
  * @category Decorators
87
87
  */
88
88
  function step(value, message = constants_1.DEFAULT_ERROR_MESSAGES.STEP) {
89
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.STEP), {
89
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.STEP), {
90
90
  value: value,
91
91
  message: message,
92
92
  types: [Number.name],
@@ -104,7 +104,7 @@ function step(value, message = constants_1.DEFAULT_ERROR_MESSAGES.STEP) {
104
104
  * @category Decorators
105
105
  */
106
106
  function minlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN_LENGTH) {
107
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MIN_LENGTH), {
107
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MIN_LENGTH), {
108
108
  value: value,
109
109
  message: message,
110
110
  types: [String.name, Array.name, Set.name],
@@ -122,7 +122,7 @@ function minlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN_LENGT
122
122
  * @category Decorators
123
123
  */
124
124
  function maxlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX_LENGTH) {
125
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MAX_LENGTH), {
125
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.MAX_LENGTH), {
126
126
  value: value,
127
127
  message: message,
128
128
  types: [String.name, Array.name, Set.name],
@@ -140,7 +140,7 @@ function maxlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX_LENGT
140
140
  * @category Decorators
141
141
  */
142
142
  function pattern(value, message = constants_1.DEFAULT_ERROR_MESSAGES.PATTERN) {
143
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.PATTERN), {
143
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.PATTERN), {
144
144
  value: typeof value === "string" ? value : value.toString(),
145
145
  message: message,
146
146
  types: [String.name],
@@ -157,7 +157,7 @@ function pattern(value, message = constants_1.DEFAULT_ERROR_MESSAGES.PATTERN) {
157
157
  * @category Decorators
158
158
  */
159
159
  function email(message = constants_1.DEFAULT_ERROR_MESSAGES.EMAIL) {
160
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.EMAIL), {
160
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.EMAIL), {
161
161
  message: message,
162
162
  types: [String.name],
163
163
  });
@@ -173,7 +173,7 @@ function email(message = constants_1.DEFAULT_ERROR_MESSAGES.EMAIL) {
173
173
  * @category Decorators
174
174
  */
175
175
  function url(message = constants_1.DEFAULT_ERROR_MESSAGES.URL) {
176
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.URL), {
176
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.URL), {
177
177
  message: message,
178
178
  types: [String.name],
179
179
  });
@@ -190,7 +190,7 @@ function url(message = constants_1.DEFAULT_ERROR_MESSAGES.URL) {
190
190
  * @category Decorators
191
191
  */
192
192
  function type(types, message = constants_1.DEFAULT_ERROR_MESSAGES.TYPE) {
193
- return (0, decorators_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.TYPE), {
193
+ return (0, reflection_1.metadata)((0, utils_2.getValidationKey)(constants_1.ValidationKeys.TYPE), {
194
194
  customTypes: types,
195
195
  message: message,
196
196
  });
@@ -321,4 +321,4 @@ function set(clazz, message = constants_1.DEFAULT_ERROR_MESSAGES.LIST, validator
321
321
  };
322
322
  }
323
323
 
324
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0QkEsNEJBT0M7QUFhRCxrQkFTQztBQWFELGtCQVNDO0FBYUQsb0JBU0M7QUFhRCw4QkFZQztBQWFELDhCQVlDO0FBYUQsMEJBWUM7QUFZRCxzQkFLQztBQVlELGtCQUtDO0FBYUQsb0JBUUM7QUFpQkQsb0JBNENDO0FBZUQsNEJBc0JDO0FBZ0JELG9CQXdCQztBQWVELGtCQVFDO0FBeFlELDRCQUEwQjtBQUMxQiw4REFBMkQ7QUFDM0QsNkNBQTBDO0FBRTFDLHlEQUFvRDtBQUNwRCxzREFJZ0M7QUFDaEMsOENBQXNDO0FBRXRDLHNFQUFtRTtBQUduRSxvQ0FBcUM7QUFDckMsbUNBQTJDO0FBRTNDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxVQUFrQixrQ0FBc0IsQ0FBQyxRQUFRO0lBQ3hFLE9BQU8sSUFBQSxxQkFBUSxFQUNiLElBQUEsd0JBQWdCLEVBQUMsMEJBQWMsQ0FBQyxRQUFRLENBQUMsRUFDekM7UUFDRSxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLEdBQUcsQ0FDakIsS0FBNkIsRUFDN0IsVUFBa0Isa0NBQXNCLENBQUMsR0FBRztJQUU1QyxPQUFPLElBQUEscUJBQVEsRUFBcUIsSUFBQSx3QkFBZ0IsRUFBQywwQkFBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hFLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2hDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsR0FBRyxDQUNqQixLQUE2QixFQUM3QixVQUFrQixrQ0FBc0IsQ0FBQyxHQUFHO0lBRTVDLE9BQU8s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QyIsImZpbGUiOiJ2YWxpZGF0aW9uL2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQgeyBMaXN0VmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9ycy9MaXN0VmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4vVmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1ldGFkYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IG1ldGFkYXRhIH0gZnJvbSBcIi4uL3JlZmxlY3Rpb24vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyxcbiAgREVGQVVMVF9QQVRURVJOUyxcbiAgVmFsaWRhdGlvbktleXMsXG59IGZyb20gXCIuL1ZhbGlkYXRvcnMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCIuLi91dGlscy9zdHJpbmdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbC90eXBlc1wiO1xuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL1Bhc3N3b3JkVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vVmFsaWRhdG9ycy90eXBlc1wiO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9ycy9WYWxpZGF0b3JcIjtcbmltcG9ydCB7IHBhcnNlRGF0ZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdGlvbktleSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTWFya3MgdGhlIHByb3BlcnR5IGFzIHJlcXVpcmVkLlxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNSRVFVSVJFRH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNSRVFVSVJFRH1cbiAqXG4gKiBAZnVuY3Rpb24gcmVxdWlyZWRcbiAqXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5SRVFVSVJFRCkge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlJFUVVJUkVEKSxcbiAgICB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU59XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOfVxuICpcbiAqIEBmdW5jdGlvbiBtaW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWluKFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU4sXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NSU4pLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1heGltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNQVh9XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUFYfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4KFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NQVgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NQVgpLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIHN0ZXAgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNTVEVQfVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjU1RFUH1cbiAqXG4gKiBAZnVuY3Rpb24gc3RlcFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlNURVAsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5TVEVQKSwge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU5fTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWlubGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pbmxlbmd0aChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU5fTEVOR1RILFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSCksXG4gICAge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWUsIEFycmF5Lm5hbWUsIFNldC5uYW1lXSxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBtYXhpbXVtIGxlbmd0aCBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01BWF9MRU5HVEh9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNQVhfTEVOR1RIfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhsZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4bGVuZ3RoKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWF9MRU5HVEgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIKSxcbiAgICB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIFJlZ0V4cCBwYXR0ZXJuIHRoZSBwcm9wZXJ0eSBtdXN0IHJlc3BlY3RcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUEFUVEVSTn1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1BBVFRFUk59XG4gKlxuICogQGZ1bmN0aW9uIHBhdHRlcm5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihcbiAgdmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5QQVRURVJOLFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuUEFUVEVSTiksXG4gICAge1xuICAgICAgdmFsdWU6IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHByb3BlcnR5IGFzIGFuIGVtYWlsXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI0VNQUlMfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0VNQUlMfVxuICpcbiAqIEBmdW5jdGlvbiBlbWFpbFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkVNQUlMKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuRU1BSUwpLCB7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcHJvcGVydHkgYXMgYW4gVVJMXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1VSTH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNVUkx9XG4gKlxuICogQGZ1bmN0aW9uIHVybFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cmwobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5VUkwpIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5VUkwpLCB7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRW5mb3JjZXMgdHlwZSB2ZXJpZmljYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjVFlQRX1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSB0eXBlcyBhY2NlcHRlZCB0eXBlc1xuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjVFlQRX1cbiAqXG4gKiBAZnVuY3Rpb24gdHlwZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlKFxuICB0eXBlczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSxcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlRZUEUpLCB7XG4gICAgY3VzdG9tVHlwZXM6IHR5cGVzLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERhdGUgSGFuZGxlciBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjREFURX1cbiAqXG4gKiBXaWxsIGVuZm9yY2Ugc2VyaWFsaXphdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNlbGVjdGVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgYWNjZXB0ZWQgZm9ybWF0IGFjY29yZGluZyB0byB7QGxpbmsgZm9ybWF0RGF0ZX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0RBVEV9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdIHRoZSBWYWxpZGF0b3IgdG8gYmUgdXNlZC4gRGVmYXVsdHMgdG8ge0BsaW5rIERhdGVWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIGRhdGVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoXG4gIGZvcm1hdDogc3RyaW5nID0gXCJkZC9NTS95eXl5XCIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuREFURSxcbikge1xuICByZXR1cm4gKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55PiwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcbiAgICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuREFURSksXG4gICAgICB7XG4gICAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICB0eXBlczogW0RhdGUubmFtZV0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHNldCh0aGlzOiBhbnksIG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKVxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHZhbHVlcy5nZXQodGhpcyksXG4gICAgICAgICAgICBzZXQ6IChuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICBsZXQgdmFsOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRGF0ZShmb3JtYXQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2V0KHRoaXMsIHZhbCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Ioc2YoXCJGYWlsZWQgdG8gcGFyc2UgZGF0ZTogezB9XCIsIGUubWVzc2FnZSB8fCBlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXNbcHJvcGVydHlLZXldID0gbmV3VmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0KCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImhlcmVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFBhc3N3b3JkIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1BBU1NXT1JEfVxuICpcbiAqIEBwYXJhbSB7UmVnRXhwfSBbcGF0dGVybl0gZGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkUGF0dGVybnMjQ0hBUjhfT05FX09GX0VBQ0h9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNQQVNTV09SRH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gRGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkVmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBwYXNzd29yZFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmQoXG4gIHBhdHRlcm46IFJlZ0V4cCA9IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUEFTU1dPUkQsXG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPiA9IFBhc3N3b3JkVmFsaWRhdG9yLFxuKSB7XG4gIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5QQVNTV09SRCksXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IHBhdHRlcm4sXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICAgICAgfSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BlcnR5S2V5LFxuICAgICk7XG4gICAgVmFsaWRhdGlvbi5yZWdpc3Rlcih7XG4gICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvcixcbiAgICAgIHZhbGlkYXRpb25LZXk6IFZhbGlkYXRpb25LZXlzLlBBU1NXT1JELFxuICAgICAgc2F2ZTogdHJ1ZSxcbiAgICB9IGFzIFZhbGlkYXRvckRlZmluaXRpb24pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IExpc3QgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gQWxzbyBzZXRzIHRoZSB7QGxpbmsgdHlwZX0gdG8gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3J9IGNsYXp6XG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbGxlY3Rpb25dIFRoZSBjb2xsZWN0aW9uIGJlaW5nIHVzZWQuIGRlZmF1bHRzIHRvIEFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0xJU1R9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdIGRlZmF1bHRzIHRvIHtAbGluayBMaXN0VmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBsaXN0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBjb2xsZWN0aW9uOiBcIkFycmF5XCIgfCBcIlNldFwiID0gXCJBcnJheVwiLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QsXG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPiA9IExpc3RWYWxpZGF0b3IsXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgdHlwZShjb2xsZWN0aW9uKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5MSVNUKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3M6IGNsYXp6Lm5hbWUsXG4gICAgICAgIHR5cGU6IGNvbGxlY3Rpb24sXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcbiAgICBWYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgICAgdmFsaWRhdGlvbktleTogVmFsaWRhdGlvbktleXMuTElTVCxcbiAgICAgIHNhdmU6IHRydWUsXG4gICAgfSBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBTZXQgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gV3JhcHBlciBmb3Ige0BsaW5rIGxpc3R9IHdpdGggdGhlICdTZXQnIENvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3J9IGNsYXp6XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0xJU1R9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdXG4gKlxuICogQGZ1bmN0aW9uIHNldFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QsXG4gIHZhbGlkYXRvcj86IENvbnN0cnVjdG9yPFZhbGlkYXRvcj4sXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgbGlzdChjbGF6eiwgXCJTZXRcIiwgbWVzc2FnZSwgdmFsaWRhdG9yKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgfTtcbn1cbiJdfQ==
324
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0QkEsNEJBT0M7QUFhRCxrQkFTQztBQWFELGtCQVNDO0FBYUQsb0JBU0M7QUFhRCw4QkFZQztBQWFELDhCQVlDO0FBYUQsMEJBWUM7QUFZRCxzQkFLQztBQVlELGtCQUtDO0FBYUQsb0JBUUM7QUFpQkQsb0JBNENDO0FBZUQsNEJBc0JDO0FBZ0JELG9CQXdCQztBQWVELGtCQVFDO0FBeFlELDRCQUEwQjtBQUMxQiw4REFBMkQ7QUFDM0QsNkNBQTBDO0FBRTFDLHNEQUlnQztBQUNoQyw4Q0FBc0M7QUFFdEMsc0VBQW1FO0FBR25FLG9DQUFxQztBQUNyQyxtQ0FBMkM7QUFDM0MscURBQWdEO0FBRWhEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxVQUFrQixrQ0FBc0IsQ0FBQyxRQUFRO0lBQ3hFLE9BQU8sSUFBQSxxQkFBUSxFQUNiLElBQUEsd0JBQWdCLEVBQUMsMEJBQWMsQ0FBQyxRQUFRLENBQUMsRUFDekM7UUFDRSxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLEdBQUcsQ0FDakIsS0FBNkIsRUFDN0IsVUFBa0Isa0NBQXNCLENBQUMsR0FBRztJQUU1QyxPQUFPLElBQUEscUJBQVEsRUFBcUIsSUFBQSx3QkFBZ0IsRUFBQywwQkFBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hFLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2hDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsR0FBRyxDQUNqQixLQUE2QixFQUM3QixVQUFrQixrQ0FBc0IsQ0FBQyxHQUFHO0lBRTVDLE9BQU8s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QyIsImZpbGUiOiJ2YWxpZGF0aW9uL2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQgeyBMaXN0VmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9ycy9MaXN0VmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4vVmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1ldGFkYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfRVJST1JfTUVTU0FHRVMsXG4gIERFRkFVTFRfUEFUVEVSTlMsXG4gIFZhbGlkYXRpb25LZXlzLFxufSBmcm9tIFwiLi9WYWxpZGF0b3JzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vbW9kZWwvdHlwZXNcIjtcbmltcG9ydCB7IFBhc3N3b3JkVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9ycy9QYXNzd29yZFZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVmFsaWRhdG9yRGVmaW5pdGlvbiB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvdHlwZXNcIjtcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBwYXJzZURhdGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldFZhbGlkYXRpb25LZXkgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgbWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBNYXJrcyB0aGUgcHJvcGVydHkgYXMgcmVxdWlyZWQuXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1JFUVVJUkVEfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1JFUVVJUkVEfVxuICpcbiAqIEBmdW5jdGlvbiByZXF1aXJlZFxuICpcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlJFUVVJUkVEKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuUkVRVUlSRUQpLFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01JTn1cbiAqXG4gKiBAcGFyYW0ge251bWJlciB8IERhdGV9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNSU59XG4gKlxuICogQGZ1bmN0aW9uIG1pblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaW4oXG4gIHZhbHVlOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1JTixcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLk1JTiksIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW051bWJlci5uYW1lLCBEYXRlLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01BWH1cbiAqXG4gKiBAcGFyYW0ge251bWJlciB8IERhdGV9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNQVh9XG4gKlxuICogQGZ1bmN0aW9uIG1heFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXgoXG4gIHZhbHVlOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWCxcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLk1BWCksIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW051bWJlci5uYW1lLCBEYXRlLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgc3RlcCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1NURVB9XG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNTVEVQfVxuICpcbiAqIEBmdW5jdGlvbiBzdGVwXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0ZXAoXG4gIHZhbHVlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuU1RFUCxcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlNURVApLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZV0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBtaW5pbXVtIGxlbmd0aCBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01JTl9MRU5HVEh9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNSU5fTEVOR1RIfVxuICpcbiAqIEBmdW5jdGlvbiBtaW5sZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWlubGVuZ3RoKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1JTl9MRU5HVEgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIKSxcbiAgICB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1heGltdW0gbGVuZ3RoIGZvciB0aGUgcHJvcGVydHlcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjTUFYX0xFTkdUSH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI01BWF9MRU5HVEh9XG4gKlxuICogQGZ1bmN0aW9uIG1heGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXhsZW5ndGgoXG4gIHZhbHVlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTUFYX0xFTkdUSCxcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEgpLFxuICAgIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB0eXBlczogW1N0cmluZy5uYW1lLCBBcnJheS5uYW1lLCBTZXQubmFtZV0sXG4gICAgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgUmVnRXhwIHBhdHRlcm4gdGhlIHByb3BlcnR5IG11c3QgcmVzcGVjdFxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNQQVRURVJOfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjUEFUVEVSTn1cbiAqXG4gKiBAZnVuY3Rpb24gcGF0dGVyblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXR0ZXJuKFxuICB2YWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlBBVFRFUk4sXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5QQVRURVJOKSxcbiAgICB7XG4gICAgICB2YWx1ZTogdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiB2YWx1ZS50b1N0cmluZygpLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcHJvcGVydHkgYXMgYW4gZW1haWxcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjRU1BSUx9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjRU1BSUx9XG4gKlxuICogQGZ1bmN0aW9uIGVtYWlsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuRU1BSUwpIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5FTUFJTCksIHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwcm9wZXJ0eSBhcyBhbiBVUkxcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjVVJMfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1VSTH1cbiAqXG4gKiBAZnVuY3Rpb24gdXJsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlVSTCkge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlVSTCksIHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBFbmZvcmNlcyB0eXBlIHZlcmlmaWNhdGlvblxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNUWVBFfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW10gfCBzdHJpbmd9IHR5cGVzIGFjY2VwdGVkIHR5cGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNUWVBFfVxuICpcbiAqIEBmdW5jdGlvbiB0eXBlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGUoXG4gIHR5cGVzOiBzdHJpbmdbXSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5UWVBFLFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuVFlQRSksIHtcbiAgICBjdXN0b21UeXBlczogdHlwZXMsXG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGF0ZSBIYW5kbGVyIERlY29yYXRvclxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNEQVRFfVxuICpcbiAqIFdpbGwgZW5mb3JjZSBzZXJpYWxpemF0aW9uIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCBhY2NlcHRlZCBmb3JtYXQgYWNjb3JkaW5nIHRvIHtAbGluayBmb3JtYXREYXRlfVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjREFURX1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gdGhlIFZhbGlkYXRvciB0byBiZSB1c2VkLiBEZWZhdWx0cyB0byB7QGxpbmsgRGF0ZVZhbGlkYXRvcn1cbiAqXG4gKiBAZnVuY3Rpb24gZGF0ZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZShcbiAgZm9ybWF0OiBzdHJpbmcgPSBcImRkL01NL3l5eXlcIixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5EQVRFLFxuKSB7XG4gIHJldHVybiAodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55ID0+IHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5EQVRFKSxcbiAgICAgIHtcbiAgICAgICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHR5cGVzOiBbRGF0ZS5uYW1lXSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXQsXG4gICAgICBwcm9wZXJ0eUtleSxcbiAgICApO1xuXG4gICAgY29uc3QgdmFsdWVzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgc2V0KHRoaXM6IGFueSwgbmV3VmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgcHJvcGVydHlLZXkpO1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5jb25maWd1cmFibGUpXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gdmFsdWVzLmdldCh0aGlzKSxcbiAgICAgICAgICAgIHNldDogKG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2YWw6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFsID0gcGFyc2VEYXRlKGZvcm1hdCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHZhbHVlcy5zZXQodGhpcywgdmFsKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihzZihcIkZhaWxlZCB0byBwYXJzZSBkYXRlOiB7MH1cIiwgZS5tZXNzYWdlIHx8IGUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgdGhpc1twcm9wZXJ0eUtleV0gPSBuZXdWYWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXQoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGVyZVwiKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogQHN1bW1hcnkgUGFzc3dvcmQgSGFuZGxlciBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUEFTU1dPUkR9XG4gKlxuICogQHBhcmFtIHtSZWdFeHB9IFtwYXR0ZXJuXSBkZWZhdWx0cyB0byB7QGxpbmsgUGFzc3dvcmRQYXR0ZXJucyNDSEFSOF9PTkVfT0ZfRUFDSH1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1BBU1NXT1JEfVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+fSBbdmFsaWRhdG9yXSBEZWZhdWx0cyB0byB7QGxpbmsgUGFzc3dvcmRWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIHBhc3N3b3JkXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXNzd29yZChcbiAgcGF0dGVybjogUmVnRXhwID0gREVGQVVMVF9QQVRURVJOUy5QQVNTV09SRC5DSEFSOF9PTkVfT0ZfRUFDSCxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5QQVNTV09SRCxcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+ID0gUGFzc3dvcmRWYWxpZGF0b3IsXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykgPT4ge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXG4gICAgICBnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlBBU1NXT1JEKSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogcGF0dGVybixcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZV0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcbiAgICBWYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgICAgdmFsaWRhdGlvbktleTogVmFsaWRhdGlvbktleXMuUEFTU1dPUkQsXG4gICAgICBzYXZlOiB0cnVlLFxuICAgIH0gYXMgVmFsaWRhdG9yRGVmaW5pdGlvbik7XG4gIH07XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTGlzdCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBBbHNvIHNldHMgdGhlIHtAbGluayB0eXBlfSB0byB0aGUgcHJvdmlkZWQgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSB7TW9kZWxDb25zdHJ1Y3Rvcn0gY2xhenpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29sbGVjdGlvbl0gVGhlIGNvbGxlY3Rpb24gYmVpbmcgdXNlZC4gZGVmYXVsdHMgdG8gQXJyYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTElTVH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gZGVmYXVsdHMgdG8ge0BsaW5rIExpc3RWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIGxpc3RcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3QoXG4gIGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4sXG4gIGNvbGxlY3Rpb246IFwiQXJyYXlcIiB8IFwiU2V0XCIgPSBcIkFycmF5XCIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTElTVCxcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+ID0gTGlzdFZhbGlkYXRvcixcbikge1xuICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55ID0+IHtcbiAgICB0eXBlKGNvbGxlY3Rpb24pKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXG4gICAgICBnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLkxJU1QpLFxuICAgICAge1xuICAgICAgICBjbGFzczogY2xhenoubmFtZSxcbiAgICAgICAgdHlwZTogY29sbGVjdGlvbixcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXQsXG4gICAgICBwcm9wZXJ0eUtleSxcbiAgICApO1xuICAgIFZhbGlkYXRpb24ucmVnaXN0ZXIoe1xuICAgICAgdmFsaWRhdG9yOiB2YWxpZGF0b3IsXG4gICAgICB2YWxpZGF0aW9uS2V5OiBWYWxpZGF0aW9uS2V5cy5MSVNULFxuICAgICAgc2F2ZTogdHJ1ZSxcbiAgICB9IGFzIFZhbGlkYXRvckRlZmluaXRpb24pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFNldCBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBXcmFwcGVyIGZvciB7QGxpbmsgbGlzdH0gd2l0aCB0aGUgJ1NldCcgQ29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSB7TW9kZWxDb25zdHJ1Y3Rvcn0gY2xhenpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTElTVH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl1cbiAqXG4gKiBAZnVuY3Rpb24gc2V0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXQoXG4gIGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4sXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuTElTVCxcbiAgdmFsaWRhdG9yPzogQ29uc3RydWN0b3I8VmFsaWRhdG9yPixcbikge1xuICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55ID0+IHtcbiAgICBsaXN0KGNsYXp6LCBcIlNldFwiLCBtZXNzYWdlLCB2YWxpZGF0b3IpKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICB9O1xufVxuIl19
@@ -11,7 +11,7 @@ import { Validator } from "./Validators/Validator";
11
11
  *
12
12
  * @category Decorators
13
13
  */
14
- export declare function required(message?: string): import("../reflection/decorators").CustomDecorator<V>;
14
+ export declare function required(message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
15
15
  /**
16
16
  * @summary Defines a minimum value for the property
17
17
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN}
@@ -23,7 +23,7 @@ export declare function required(message?: string): import("../reflection/decora
23
23
  * @memberOf module:decorator-validation.Decorators.Validation
24
24
  * @category Decorators
25
25
  */
26
- export declare function min(value: number | Date | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
26
+ export declare function min(value: number | Date | string, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
27
27
  /**
28
28
  * @summary Defines a maximum value for the property
29
29
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
@@ -35,7 +35,7 @@ export declare function min(value: number | Date | string, message?: string): im
35
35
  * @memberOf module:decorator-validation.Decorators.Validation
36
36
  * @category Decorators
37
37
  */
38
- export declare function max(value: number | Date | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
38
+ export declare function max(value: number | Date | string, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
39
39
  /**
40
40
  * @summary Defines a step value for the property
41
41
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
@@ -47,7 +47,7 @@ export declare function max(value: number | Date | string, message?: string): im
47
47
  * @memberOf module:decorator-validation.Decorators.Validation
48
48
  * @category Decorators
49
49
  */
50
- export declare function step(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
50
+ export declare function step(value: number, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
51
51
  /**
52
52
  * @summary Defines a minimum length for the property
53
53
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
@@ -59,7 +59,7 @@ export declare function step(value: number, message?: string): import("../reflec
59
59
  * @memberOf module:decorator-validation.Decorators.Validation
60
60
  * @category Decorators
61
61
  */
62
- export declare function minlength(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
62
+ export declare function minlength(value: number, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
63
63
  /**
64
64
  * @summary Defines a maximum length for the property
65
65
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
@@ -71,7 +71,7 @@ export declare function minlength(value: number, message?: string): import("../r
71
71
  * @memberOf module:decorator-validation.Decorators.Validation
72
72
  * @category Decorators
73
73
  */
74
- export declare function maxlength(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
74
+ export declare function maxlength(value: number, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
75
75
  /**
76
76
  * @summary Defines a RegExp pattern the property must respect
77
77
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
@@ -83,7 +83,7 @@ export declare function maxlength(value: number, message?: string): import("../r
83
83
  * @memberOf module:decorator-validation.Decorators.Validation
84
84
  * @category Decorators
85
85
  */
86
- export declare function pattern(value: RegExp | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
86
+ export declare function pattern(value: RegExp | string, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
87
87
  /**
88
88
  * @summary Defines the property as an email
89
89
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
@@ -94,7 +94,7 @@ export declare function pattern(value: RegExp | string, message?: string): impor
94
94
  * @memberOf module:decorator-validation.Decorators.Validation
95
95
  * @category Decorators
96
96
  */
97
- export declare function email(message?: string): import("../reflection/decorators").CustomDecorator<V>;
97
+ export declare function email(message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
98
98
  /**
99
99
  * @summary Defines the property as an URL
100
100
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
@@ -105,7 +105,7 @@ export declare function email(message?: string): import("../reflection/decorator
105
105
  * @memberOf module:decorator-validation.Decorators.Validation
106
106
  * @category Decorators
107
107
  */
108
- export declare function url(message?: string): import("../reflection/decorators").CustomDecorator<V>;
108
+ export declare function url(message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
109
109
  /**
110
110
  * @summary Enforces type verification
111
111
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
@@ -117,7 +117,7 @@ export declare function url(message?: string): import("../reflection/decorators"
117
117
  * @memberOf module:decorator-validation.Decorators.Validation
118
118
  * @category Decorators
119
119
  */
120
- export declare function type(types: string[] | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
120
+ export declare function type(types: string[] | string, message?: string): import("@decaf-ts/reflection").CustomDecorator<V>;
121
121
  /**
122
122
  * @summary Date Handler Decorator
123
123
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
 
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoidmFsaWRhdGlvbi90eXBlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgVmFsaWRhdG9yIEVycm9yIHR5cGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgRXJyb3JzID0gc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIHZhbGlkYXRpb24gZGVjb3JhdG9yIG1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlJlZmxlY3Rpb25cbiAqIEBjYXRlZ29yeSBSZWZsZWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25NZXRhZGF0YSA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcbiAgYXJncz86IGFueVtdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGRlY29yYXRvciBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5SZWZsZWN0aW9uXG4gKiBAY2F0ZWdvcnkgUmVmbGVjdGlvblxuICovXG5leHBvcnQgdHlwZSBEZWNvcmF0b3JNZXRhZGF0YSA9IHsga2V5OiBzdHJpbmc7IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgcHJvcGVydHkgZGVjb3JhdG9yIGRlZmluaXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiA9IHtcbiAgcHJvcDogc3RyaW5nIHwgc3ltYm9sO1xuICBkZWNvcmF0b3JzOiBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIHZhbGlkYXRvciBkZWNvcmF0b3IgZGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbiA9IERlY29yYXRvck1ldGFkYXRhICYge1xuICBwcm9wczogVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIHZhbGlkYXRvciBlbGVtZW50IG1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbiA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcblxuICB2YWx1ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIG1vZGVsIGVycm9yc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IHsgW2luZGV4ZXI6IHN0cmluZ106IEVycm9ycyB9O1xufTtcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoidmFsaWRhdGlvbi90eXBlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG4vKipcbiAqIEBzdW1tYXJ5IFZhbGlkYXRvciBFcnJvciB0eXBlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEVycm9ycyA9IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciB2YWxpZGF0aW9uIGRlY29yYXRvciBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5SZWZsZWN0aW9uXG4gKiBAY2F0ZWdvcnkgUmVmbGVjdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTWV0YWRhdGEgPSB7XG4gIFtpbmRleGVyOiBzdHJpbmddOiBhbnk7XG4gIGFyZ3M/OiBhbnlbXTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0eXBlcz86IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBlIGZvciBhIHZhbGlkYXRvciBwcm9wZXJ0eSBkZWNvcmF0b3IgZGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uID0ge1xuICBwcm9wOiBzdHJpbmcgfCBzeW1ib2w7XG4gIGRlY29yYXRvcnM6IFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgdmFsaWRhdG9yIGRlY29yYXRvciBkZWZpbml0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25EZWNvcmF0b3JEZWZpbml0aW9uID0gRGVjb3JhdG9yTWV0YWRhdGEgJiB7XG4gIHByb3BzOiBWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb247XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgdmFsaWRhdG9yIGVsZW1lbnQgbWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsRXJyb3JzID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgRXJyb3JzPj47XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { DecoratorMetadata } from "@decaf-ts/reflection";
1
2
  /**
2
3
  * @summary Validator Error type
3
4
  * @memberOf module:decorator-validation.Validation
@@ -15,15 +16,6 @@ export type ValidationMetadata = {
15
16
  message: string;
16
17
  types?: string[];
17
18
  };
18
- /**
19
- * @summary Type for decorator metadata
20
- * @memberOf module:decorator-validation.Reflection
21
- * @category Reflection
22
- */
23
- export type DecoratorMetadata = {
24
- key: string;
25
- props: Record<string, any>;
26
- };
27
19
  /**
28
20
  * @summary Type for a validator property decorator definition
29
21
  * @memberOf module:decorator-validation.Validation
@@ -57,8 +49,4 @@ export type ValidationElementDefinition = {
57
49
  * @memberOf module:decorator-validation.Validation
58
50
  * @category Validation
59
51
  */
60
- export type ModelErrors = {
61
- [indexer: string]: {
62
- [indexer: string]: Errors;
63
- };
64
- };
52
+ export type ModelErrors = Record<string, Record<string, Errors>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/decorator-validation",
3
- "version": "1.1.1",
3
+ "version": "1.1.4",
4
4
  "description": "simple decorator based validation engine",
5
5
  "type": "module",
6
6
  "exports": {
@@ -92,6 +92,7 @@
92
92
  "webpack-stream": "^7.0.0"
93
93
  },
94
94
  "peerDependencies": {
95
+ "@decaf-ts/reflection": "latest",
95
96
  "reflect-metadata": "^0.2.1"
96
97
  }
97
98
  }
@@ -1,27 +0,0 @@
1
- import "reflect-metadata";
2
- export type CustomDecorator<V> = MethodDecorator & ClassDecorator & PropertyDecorator;
3
- /**
4
- * @summary Decorator that assigns metadata to the class/method using the
5
- * specified `key`.
6
- *
7
- * @param {string} key a value defining the key under which the metadata is stored
8
- * @param {any} value metadata to be associated with `key`
9
- *
10
- * @function metadata
11
- *
12
- * @memberOf module:decorator-validation.Reflections
13
- * @category Decorators
14
- */
15
- export declare function metadata<V>(key: string, value: V): CustomDecorator<V>;
16
- /**
17
- * @summary Decorator that assigns metadata to the class/method using the
18
- * specified `key`.
19
- *
20
- * @param {Array<ClassDecorator | MethodDecorator | PropertyDecorator>} decorators a value defining the key under which the metadata is stored
21
- *
22
- * @function apply
23
- *
24
- * @memberOf module:decorator-validation.Reflections
25
- * @category Decorators
26
- */
27
- export declare function apply(...decorators: Array<ClassDecorator | MethodDecorator | PropertyDecorator>): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -1,51 +0,0 @@
1
- import "reflect-metadata";
2
- /**
3
- * @summary Decorator that assigns metadata to the class/method using the
4
- * specified `key`.
5
- *
6
- * @param {string} key a value defining the key under which the metadata is stored
7
- * @param {any} value metadata to be associated with `key`
8
- *
9
- * @function metadata
10
- *
11
- * @memberOf module:decorator-validation.Reflections
12
- * @category Decorators
13
- */
14
- export function metadata(key, value) {
15
- return (target, propertyKey, descriptor) => {
16
- if (descriptor) {
17
- Reflect.defineMetadata(key, value, descriptor.value); // method
18
- }
19
- else if (propertyKey) {
20
- Reflect.defineMetadata(key, value, target, propertyKey); // property
21
- }
22
- else {
23
- Reflect.defineMetadata(key, value, target); // class
24
- }
25
- };
26
- }
27
- /**
28
- * @summary Decorator that assigns metadata to the class/method using the
29
- * specified `key`.
30
- *
31
- * @param {Array<ClassDecorator | MethodDecorator | PropertyDecorator>} decorators a value defining the key under which the metadata is stored
32
- *
33
- * @function apply
34
- *
35
- * @memberOf module:decorator-validation.Reflections
36
- * @category Decorators
37
- */
38
- export function apply(...decorators) {
39
- // eslint-disable-next-line @typescript-eslint/ban-types
40
- return (target, propertyKey, descriptor) => {
41
- for (const decorator of decorators) {
42
- if (target instanceof Function && !descriptor) {
43
- decorator(target);
44
- continue;
45
- }
46
- decorator(target, propertyKey, descriptor);
47
- }
48
- };
49
- }
50
-
51
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZWZsZWN0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQU8xQjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUksR0FBVyxFQUFFLEtBQVE7SUFDL0MsT0FBTyxDQUNMLE1BQWMsRUFDZCxXQUE2QixFQUM3QixVQUErQixFQUMvQixFQUFFO1FBQ0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2pFLENBQUM7YUFBTSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQ3RFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN0RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUNuQixHQUFHLFVBQXVFO0lBRTFFLHdEQUF3RDtJQUN4RCxPQUFPLENBQ0wsTUFBMEIsRUFDMUIsV0FBNkIsRUFDN0IsVUFBdUMsRUFDdkMsRUFBRTtRQUNGLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLFlBQVksUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdDLFNBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RDLFNBQVM7WUFDWCxDQUFDO1lBQ0EsU0FBaUQsQ0FDaEQsTUFBTSxFQUNOLFdBQThCLEVBQzlCLFVBQXdDLENBQ3pDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsImZpbGUiOiJyZWZsZWN0aW9uL2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCB0eXBlIEN1c3RvbURlY29yYXRvcjxWPiA9IE1ldGhvZERlY29yYXRvciAmXG4gIENsYXNzRGVjb3JhdG9yICZcbiAgUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQHN1bW1hcnkgRGVjb3JhdG9yIHRoYXQgYXNzaWducyBtZXRhZGF0YSB0byB0aGUgY2xhc3MvbWV0aG9kIHVzaW5nIHRoZVxuICogc3BlY2lmaWVkIGBrZXlgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgYSB2YWx1ZSBkZWZpbmluZyB0aGUga2V5IHVuZGVyIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBzdG9yZWRcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSBtZXRhZGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGggYGtleWBcbiAqXG4gKiBAZnVuY3Rpb24gbWV0YWRhdGFcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlJlZmxlY3Rpb25zXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWV0YWRhdGE8Vj4oa2V5OiBzdHJpbmcsIHZhbHVlOiBWKTogQ3VzdG9tRGVjb3JhdG9yPFY+IHtcbiAgcmV0dXJuIChcbiAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbCxcbiAgICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yLFxuICApID0+IHtcbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShrZXksIHZhbHVlLCBkZXNjcmlwdG9yLnZhbHVlKTsgLy8gbWV0aG9kXG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eUtleSkge1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShrZXksIHZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTsgLy8gcHJvcGVydHlcbiAgICB9IGVsc2Uge1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShrZXksIHZhbHVlLCB0YXJnZXQpOyAvLyBjbGFzc1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgdGhhdCBhc3NpZ25zIG1ldGFkYXRhIHRvIHRoZSBjbGFzcy9tZXRob2QgdXNpbmcgdGhlXG4gKiBzcGVjaWZpZWQgYGtleWAuXG4gKlxuICogQHBhcmFtIHtBcnJheTxDbGFzc0RlY29yYXRvciB8IE1ldGhvZERlY29yYXRvciB8IFByb3BlcnR5RGVjb3JhdG9yPn0gZGVjb3JhdG9ycyBhIHZhbHVlIGRlZmluaW5nIHRoZSBrZXkgdW5kZXIgd2hpY2ggdGhlIG1ldGFkYXRhIGlzIHN0b3JlZFxuICpcbiAqIEBmdW5jdGlvbiBhcHBseVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uUmVmbGVjdGlvbnNcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseShcbiAgLi4uZGVjb3JhdG9yczogQXJyYXk8Q2xhc3NEZWNvcmF0b3IgfCBNZXRob2REZWNvcmF0b3IgfCBQcm9wZXJ0eURlY29yYXRvcj5cbikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICByZXR1cm4gPFRGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uLCBZPihcbiAgICB0YXJnZXQ6IFRGdW5jdGlvbiB8IG9iamVjdCxcbiAgICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbCxcbiAgICBkZXNjcmlwdG9yPzogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8WT4sXG4gICkgPT4ge1xuICAgIGZvciAoY29uc3QgZGVjb3JhdG9yIG9mIGRlY29yYXRvcnMpIHtcbiAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJiAhZGVzY3JpcHRvcikge1xuICAgICAgICAoZGVjb3JhdG9yIGFzIENsYXNzRGVjb3JhdG9yKSh0YXJnZXQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIChkZWNvcmF0b3IgYXMgTWV0aG9kRGVjb3JhdG9yIHwgUHJvcGVydHlEZWNvcmF0b3IpKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHByb3BlcnR5S2V5IGFzIHN0cmluZyB8IHN5bWJvbCxcbiAgICAgICAgZGVzY3JpcHRvciBhcyBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxZPixcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from "./decorators";
2
- export * from "./utils";
@@ -1,4 +0,0 @@
1
- export * from "./decorators";
2
- export * from "./utils";
3
-
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZWZsZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDIiwiZmlsZSI6InJlZmxlY3Rpb24vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuIl19