@decaf-ts/decorator-validation 1.0.7 → 1.0.11

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 (141) 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 +6 -1
  4. package/lib/esm/index.js +68 -1
  5. package/lib/esm/model/Model.d.ts +3 -1
  6. package/lib/esm/model/Model.js +316 -1
  7. package/lib/esm/model/ModelErrorDefinition.d.ts +1 -1
  8. package/lib/esm/model/ModelErrorDefinition.js +55 -3
  9. package/lib/esm/model/Registry.d.ts +1 -1
  10. package/lib/esm/model/Registry.js +76 -1
  11. package/lib/esm/model/constants.js +44 -1
  12. package/lib/esm/model/construction.js +124 -1
  13. package/lib/esm/model/decorators.d.ts +3 -3
  14. package/lib/esm/model/decorators.js +68 -1
  15. package/lib/esm/model/index.d.ts +3 -3
  16. package/lib/esm/model/index.js +9 -1
  17. package/lib/esm/model/types.js +3 -0
  18. package/lib/esm/reflection/decorators.d.ts +15 -0
  19. package/lib/esm/reflection/decorators.js +28 -0
  20. package/lib/esm/reflection/index.d.ts +2 -0
  21. package/lib/esm/reflection/index.js +4 -0
  22. package/lib/esm/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
  23. package/lib/esm/reflection/utils.js +239 -0
  24. package/lib/esm/utils/constants.js +25 -1
  25. package/lib/esm/utils/dates.d.ts +76 -0
  26. package/lib/esm/utils/dates.js +241 -0
  27. package/lib/esm/utils/equality.d.ts +14 -0
  28. package/lib/esm/utils/equality.js +34 -0
  29. package/lib/esm/utils/hashing.d.ts +42 -0
  30. package/lib/esm/utils/hashing.js +73 -0
  31. package/lib/esm/utils/index.d.ts +6 -2
  32. package/lib/esm/utils/index.js +10 -1
  33. package/lib/esm/utils/registry.js +3 -0
  34. package/lib/esm/utils/serialization.js +53 -1
  35. package/lib/esm/utils/strings.d.ts +25 -0
  36. package/lib/esm/utils/strings.js +31 -0
  37. package/lib/esm/validation/Validation.d.ts +2 -1
  38. package/lib/esm/validation/Validation.js +63 -1
  39. package/lib/esm/validation/Validators/DateValidator.js +55 -1
  40. package/lib/esm/validation/Validators/EmailValidator.d.ts +0 -1
  41. package/lib/esm/validation/Validators/EmailValidator.js +49 -1
  42. package/lib/esm/validation/Validators/ListValidator.js +67 -1
  43. package/lib/esm/validation/Validators/MaxLengthValidator.js +55 -1
  44. package/lib/esm/validation/Validators/MaxValidator.js +59 -1
  45. package/lib/esm/validation/Validators/MinLengthValidator.js +55 -1
  46. package/lib/esm/validation/Validators/MinValidator.js +59 -1
  47. package/lib/esm/validation/Validators/PasswordValidator.js +52 -1
  48. package/lib/esm/validation/Validators/PatternValidator.d.ts +3 -3
  49. package/lib/esm/validation/Validators/PatternValidator.js +72 -1
  50. package/lib/esm/validation/Validators/RequiredValidator.js +57 -1
  51. package/lib/esm/validation/Validators/StepValidator.js +54 -1
  52. package/lib/esm/validation/Validators/TypeValidator.js +42 -1
  53. package/lib/esm/validation/Validators/URLValidator.d.ts +0 -1
  54. package/lib/esm/validation/Validators/URLValidator.js +48 -1
  55. package/lib/esm/validation/Validators/Validator.js +50 -1
  56. package/lib/esm/validation/Validators/ValidatorRegistry.js +81 -1
  57. package/lib/esm/validation/Validators/constants.d.ts +8 -4
  58. package/lib/esm/validation/Validators/constants.js +135 -1
  59. package/lib/esm/validation/Validators/decorators.d.ts +13 -0
  60. package/lib/esm/validation/Validators/decorators.js +23 -0
  61. package/lib/esm/validation/Validators/index.d.ts +9 -7
  62. package/lib/esm/validation/Validators/index.js +54 -1
  63. package/lib/esm/validation/Validators/types.d.ts +2 -2
  64. package/lib/esm/validation/Validators/types.js +3 -0
  65. package/lib/esm/validation/decorators.d.ts +14 -87
  66. package/lib/esm/validation/decorators.js +320 -1
  67. package/lib/esm/validation/index.d.ts +1 -10
  68. package/lib/esm/validation/index.js +6 -1
  69. package/lib/esm/validation/types.d.ts +11 -0
  70. package/lib/esm/validation/types.js +3 -0
  71. package/lib/index.cjs +85 -1
  72. package/lib/index.d.ts +6 -1
  73. package/lib/model/Model.cjs +321 -1
  74. package/lib/model/Model.d.ts +3 -1
  75. package/lib/model/ModelErrorDefinition.cjs +59 -3
  76. package/lib/model/ModelErrorDefinition.d.ts +1 -1
  77. package/lib/model/Registry.cjs +81 -1
  78. package/lib/model/Registry.d.ts +1 -1
  79. package/lib/model/constants.cjs +47 -1
  80. package/lib/model/construction.cjs +129 -1
  81. package/lib/model/decorators.cjs +73 -1
  82. package/lib/model/decorators.d.ts +3 -3
  83. package/lib/model/index.cjs +25 -1
  84. package/lib/model/index.d.ts +3 -3
  85. package/lib/model/types.cjs +4 -1
  86. package/lib/reflection/decorators.cjs +31 -0
  87. package/lib/reflection/decorators.d.ts +15 -0
  88. package/lib/reflection/index.cjs +20 -0
  89. package/lib/reflection/index.d.ts +2 -0
  90. package/lib/reflection/utils.cjs +251 -0
  91. package/lib/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
  92. package/lib/utils/constants.cjs +28 -1
  93. package/lib/utils/dates.cjs +249 -0
  94. package/lib/utils/dates.d.ts +76 -0
  95. package/lib/utils/equality.cjs +37 -0
  96. package/lib/utils/equality.d.ts +14 -0
  97. package/lib/utils/hashing.cjs +78 -0
  98. package/lib/utils/hashing.d.ts +42 -0
  99. package/lib/utils/index.cjs +26 -1
  100. package/lib/utils/index.d.ts +6 -2
  101. package/lib/utils/registry.cjs +4 -1
  102. package/lib/utils/serialization.cjs +57 -1
  103. package/lib/utils/strings.cjs +35 -0
  104. package/lib/utils/strings.d.ts +25 -0
  105. package/lib/validation/Validation.cjs +67 -1
  106. package/lib/validation/Validation.d.ts +2 -1
  107. package/lib/validation/Validators/DateValidator.cjs +58 -1
  108. package/lib/validation/Validators/EmailValidator.cjs +52 -1
  109. package/lib/validation/Validators/EmailValidator.d.ts +0 -1
  110. package/lib/validation/Validators/ListValidator.cjs +70 -1
  111. package/lib/validation/Validators/MaxLengthValidator.cjs +58 -1
  112. package/lib/validation/Validators/MaxValidator.cjs +62 -1
  113. package/lib/validation/Validators/MinLengthValidator.cjs +58 -1
  114. package/lib/validation/Validators/MinValidator.cjs +62 -1
  115. package/lib/validation/Validators/PasswordValidator.cjs +55 -1
  116. package/lib/validation/Validators/PatternValidator.cjs +75 -1
  117. package/lib/validation/Validators/PatternValidator.d.ts +3 -3
  118. package/lib/validation/Validators/RequiredValidator.cjs +60 -1
  119. package/lib/validation/Validators/StepValidator.cjs +57 -1
  120. package/lib/validation/Validators/TypeValidator.cjs +46 -1
  121. package/lib/validation/Validators/URLValidator.cjs +51 -1
  122. package/lib/validation/Validators/URLValidator.d.ts +0 -1
  123. package/lib/validation/Validators/Validator.cjs +54 -1
  124. package/lib/validation/Validators/ValidatorRegistry.cjs +86 -1
  125. package/lib/validation/Validators/constants.cjs +138 -1
  126. package/lib/validation/Validators/constants.d.ts +8 -4
  127. package/lib/validation/Validators/decorators.cjs +26 -0
  128. package/lib/validation/Validators/decorators.d.ts +13 -0
  129. package/lib/validation/Validators/index.cjs +71 -1
  130. package/lib/validation/Validators/index.d.ts +9 -7
  131. package/lib/validation/Validators/types.cjs +4 -1
  132. package/lib/validation/Validators/types.d.ts +2 -2
  133. package/lib/validation/decorators.cjs +337 -1
  134. package/lib/validation/decorators.d.ts +14 -87
  135. package/lib/validation/index.cjs +22 -1
  136. package/lib/validation/index.d.ts +1 -10
  137. package/lib/validation/types.cjs +4 -1
  138. package/lib/validation/types.d.ts +11 -0
  139. package/package.json +17 -13
  140. package/lib/esm/utils/general.js +0 -1
  141. package/lib/utils/general.cjs +0 -1
@@ -1 +1,337 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.set=exports.list=exports.password=exports.date=exports.parseDate=exports.formatDate=exports.twoDigitPad=exports.isValidDate=exports.bindDateToString=exports.type=exports.url=exports.email=exports.pattern=exports.maxlength=exports.minlength=exports.step=exports.max=exports.min=exports.required=exports.getValidationKey=void 0,require("reflect-metadata");const Validators_1=require("./Validators/index.cjs"),Validators_2=require("./Validators/index.cjs"),utils_1=require("../utils/index.cjs"),ListValidator_1=require("./Validators/ListValidator/index.cjs"),Validation_1=require("./Validation/index.cjs");function getValidationKey(a){return Validators_1.ValidationKeys.REFLECT+a}function required(e=Validators_1.DEFAULT_ERROR_MESSAGES.REQUIRED,i=Validators_2.RequiredValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.REQUIRED),{message:e},a,t),Validation_1.Validation.register({validator:i,validationKey:Validators_1.ValidationKeys.REQUIRED,save:!0})}}function min(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.MIN,r=Validators_2.MinValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.MIN),{value:e,message:i,types:[Number.name,Date.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.MIN,save:!0})}}function max(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.MAX,r=Validators_2.MaxValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.MAX),{value:e,message:i,types:[Number.name,Date.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.MAX,save:!0})}}function step(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.STEP,r=Validators_2.StepValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.STEP),{value:e,message:i,types:[Number.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.STEP,save:!0})}}function minlength(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.MIN_LENGTH,r=Validators_2.MinLengthValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.MIN_LENGTH),{value:e,message:i,types:[String.name,Array.name,Set.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.MIN_LENGTH,save:!0})}}function maxlength(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.MAX_LENGTH,r=Validators_2.MaxLengthValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.MAX_LENGTH),{value:e,message:i,types:[String.name,Array.name,Set.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.MAX_LENGTH,save:!0})}}function pattern(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.PATTERN,r=Validators_2.PatternValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.PATTERN),{value:"string"==typeof e?e:e.toString(),message:i,types:[String.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.PATTERN,save:!0})}}function email(e=Validators_1.DEFAULT_ERROR_MESSAGES.EMAIL,i=Validators_2.EmailValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.EMAIL),{message:e,types:[String.name]},a,t),Validation_1.Validation.register({validator:i,validationKey:Validators_1.ValidationKeys.EMAIL,save:!0})}}function url(e=Validators_1.DEFAULT_ERROR_MESSAGES.URL,i=Validators_2.URLValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.URL),{message:e,types:[String.name]},a,t),Validation_1.Validation.register({validator:i,validationKey:Validators_1.ValidationKeys.URL,save:!0})}}function type(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.TYPE,r=Validators_2.TypeValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.TYPE),{customTypes:e,message:i},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.TYPE,save:!0})}}function bindDateToString(a,t){var e;if(a)return e=()=>formatDate(a,t),Object.defineProperty(a,"toISOString",{enumerable:!1,configurable:!1,value:e}),Object.defineProperty(a,"toString",{enumerable:!1,configurable:!1,value:e}),a}function isValidDate(a){return a&&"[object Date]"===Object.prototype.toString.call(a)&&!isNaN(a)}function twoDigitPad(a){return a<10?"0"+a:a.toString()}function formatDate(a,t="yyyy/MM/dd"){var e=a.getDate(),i=a.getMonth(),r=a.getFullYear(),o=a.getHours(),s=a.getMinutes(),l=a.getSeconds(),n=a.getMilliseconds(),d=o%12,V=twoDigitPad(d),_=twoDigitPad(o),p=twoDigitPad(s),g=twoDigitPad(l),y=o<12?"AM":"PM",a=Validators_1.DAYS_OF_WEEK_NAMES[a.getDay()],E=a.substr(0,3),u=twoDigitPad(e),S=i+1,c=twoDigitPad(S),i=Validators_1.MONTH_NAMES[i],m=i.substr(0,3),r=r+"",f=r.substr(2,2);return t=-1<(t=t.replace("hh",V).replace("h",d.toString()).replace("HH",_).replace("H",o.toString()).replace("mm",p).replace("m",s.toString()).replace("ss",g).replace("s",l.toString()).replace("S",n.toString()).replace("dd",u).replace("d",e.toString()).replace("EEEE",a).replace("EEE",E).replace("yyyy",r).replace("yy",f).replace("aaa",y)).indexOf("MMM")?t.replace("MMMM",i).replace("MMM",m):t.replace("MM",c).replace("M",S.toString())}function parseDate(t,e){let a=void 0;if(e){if(e instanceof Date)try{a=(0,utils_1.dateFromFormat)(formatDate(e,t),t)}catch(a){throw new Error((0,utils_1.stringFormat)("Could not convert date {0} to format: {1}",e.toString(),t))}else if("string"==typeof e)a=(0,utils_1.dateFromFormat)(e,t);else if("number"==typeof e){var i=new Date(e);a=(0,utils_1.dateFromFormat)(formatDate(i,t),t)}else{if(!isValidDate(e))throw new Error("Invalid value provided "+e);try{var r=new Date(e);a=(0,utils_1.dateFromFormat)(formatDate(r,t),t)}catch(a){throw new Error((0,utils_1.stringFormat)("Could not convert date {0} to format: {1}",e,t))}}return bindDateToString(a,t)}}function date(r="dd/MM/yyyy",t=Validators_1.DEFAULT_ERROR_MESSAGES.DATE,o=Validators_2.DateValidator){return(a,e)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.DATE),{format:r,message:t,types:[Date.name]},a,e),Validation_1.Validation.register({validator:o,validationKey:Validators_1.ValidationKeys.DATE,save:!0});const i=new WeakMap;Object.defineProperty(a,e,{configurable:!1,set(a){var t=Object.getOwnPropertyDescriptor(this,e);t&&!t.configurable||Object.defineProperty(this,e,{enumerable:!0,configurable:!1,get:()=>i.get(this),set:a=>{var t;try{t=parseDate(r,a),i.set(this,t)}catch(a){console.error((0,utils_1.stringFormat)("Failed to parse date: {0}",a.message||a))}}}),this[e]=a},get(){console.log("here")}})}}function password(e=Validators_1.PasswordPatterns.CHAR8_ONE_OF_EACH,i=Validators_1.DEFAULT_ERROR_MESSAGES.PASSWORD,r=Validators_2.PasswordValidator){return(a,t)=>{Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.PASSWORD),{pattern:e,message:i,types:[String.name]},a,t),Validation_1.Validation.register({validator:r,validationKey:Validators_1.ValidationKeys.PASSWORD,save:!0})}}function list(e,i="Array",r=Validators_1.DEFAULT_ERROR_MESSAGES.LIST,o=ListValidator_1.ListValidator){return(a,t)=>{type(i)(a,t),Reflect.defineMetadata(getValidationKey(Validators_1.ValidationKeys.LIST),{class:e.name,type:i,message:r},a,t),Validation_1.Validation.register({validator:o,validationKey:Validators_1.ValidationKeys.LIST,save:!0})}}function set(e,i=Validators_1.DEFAULT_ERROR_MESSAGES.LIST,r){return(a,t)=>{list(e,"Set",i,r)(a,t)}}exports.getValidationKey=getValidationKey,exports.required=required,exports.min=min,exports.max=max,exports.step=step,exports.minlength=minlength,exports.maxlength=maxlength,exports.pattern=pattern,exports.email=email,exports.url=url,exports.type=type,exports.bindDateToString=bindDateToString,exports.isValidDate=isValidDate,exports.twoDigitPad=twoDigitPad,exports.formatDate=formatDate,exports.parseDate=parseDate,exports.date=date,exports.password=password,exports.list=list,exports.set=set;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getValidationKey = getValidationKey;
4
+ exports.required = required;
5
+ exports.min = min;
6
+ exports.max = max;
7
+ exports.step = step;
8
+ exports.minlength = minlength;
9
+ exports.maxlength = maxlength;
10
+ exports.pattern = pattern;
11
+ exports.email = email;
12
+ exports.url = url;
13
+ exports.type = type;
14
+ exports.date = date;
15
+ exports.password = password;
16
+ exports.list = list;
17
+ exports.set = set;
18
+ require("reflect-metadata");
19
+ const ListValidator_1 = require("./Validators/ListValidator/index.cjs");
20
+ const Validation_1 = require("./Validation/index.cjs");
21
+ const decorators_1 = require("../reflection/decorators/index.cjs");
22
+ const constants_1 = require("./Validators/constants/index.cjs");
23
+ const strings_1 = require("../utils/strings/index.cjs");
24
+ const PasswordValidator_1 = require("./Validators/PasswordValidator/index.cjs");
25
+ const utils_1 = require("../utils/index.cjs");
26
+ /**
27
+ * @summary Builds the key to store as Metadata under Reflections
28
+ * @description concatenates {@link ValidationKeys#REFLECT} with the provided key
29
+ *
30
+ * @param {string} key
31
+ *
32
+ * @function getModelKey
33
+ * @memberOf module:decorator-validation.Utils
34
+ * @category Utilities
35
+ */
36
+ function getValidationKey(key) {
37
+ return constants_1.ValidationKeys.REFLECT + key;
38
+ }
39
+ /**
40
+ * @summary Marks the property as required.
41
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}
42
+ *
43
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
44
+ *
45
+ * @function required
46
+ *
47
+ * @category Decorators
48
+ */
49
+ function required(message = constants_1.DEFAULT_ERROR_MESSAGES.REQUIRED) {
50
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.REQUIRED), {
51
+ message: message,
52
+ });
53
+ }
54
+ /**
55
+ * @summary Defines a minimum value for the property
56
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN}
57
+ *
58
+ * @param {number | Date} value
59
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
60
+ *
61
+ * @function min
62
+ * @memberOf module:decorator-validation.Decorators.Validation
63
+ * @category Decorators
64
+ */
65
+ function min(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN) {
66
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MIN), {
67
+ value: value,
68
+ message: message,
69
+ types: [Number.name, Date.name],
70
+ });
71
+ }
72
+ /**
73
+ * @summary Defines a maximum value for the property
74
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
75
+ *
76
+ * @param {number | Date} value
77
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
78
+ *
79
+ * @function max
80
+ * @memberOf module:decorator-validation.Decorators.Validation
81
+ * @category Decorators
82
+ */
83
+ function max(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX) {
84
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MAX), {
85
+ value: value,
86
+ message: message,
87
+ types: [Number.name, Date.name],
88
+ });
89
+ }
90
+ /**
91
+ * @summary Defines a step value for the property
92
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
93
+ *
94
+ * @param {number} value
95
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
96
+ *
97
+ * @function step
98
+ * @memberOf module:decorator-validation.Decorators.Validation
99
+ * @category Decorators
100
+ */
101
+ function step(value, message = constants_1.DEFAULT_ERROR_MESSAGES.STEP) {
102
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.STEP), {
103
+ value: value,
104
+ message: message,
105
+ types: [Number.name],
106
+ });
107
+ }
108
+ /**
109
+ * @summary Defines a minimum length for the property
110
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
111
+ *
112
+ * @param {string} value
113
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
114
+ *
115
+ * @function minlength
116
+ * @memberOf module:decorator-validation.Decorators.Validation
117
+ * @category Decorators
118
+ */
119
+ function minlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN_LENGTH) {
120
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MIN_LENGTH), {
121
+ value: value,
122
+ message: message,
123
+ types: [String.name, Array.name, Set.name],
124
+ });
125
+ }
126
+ /**
127
+ * @summary Defines a maximum length for the property
128
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
129
+ *
130
+ * @param {string} value
131
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
132
+ *
133
+ * @function maxlength
134
+ * @memberOf module:decorator-validation.Decorators.Validation
135
+ * @category Decorators
136
+ */
137
+ function maxlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX_LENGTH) {
138
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MAX_LENGTH), {
139
+ value: value,
140
+ message: message,
141
+ types: [String.name, Array.name, Set.name],
142
+ });
143
+ }
144
+ /**
145
+ * @summary Defines a RegExp pattern the property must respect
146
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
147
+ *
148
+ * @param {string} value
149
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
150
+ *
151
+ * @function pattern
152
+ * @memberOf module:decorator-validation.Decorators.Validation
153
+ * @category Decorators
154
+ */
155
+ function pattern(value, message = constants_1.DEFAULT_ERROR_MESSAGES.PATTERN) {
156
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.PATTERN), {
157
+ value: typeof value === "string" ? value : value.toString(),
158
+ message: message,
159
+ types: [String.name],
160
+ });
161
+ }
162
+ /**
163
+ * @summary Defines the property as an email
164
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
165
+ *
166
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
167
+ *
168
+ * @function email
169
+ * @memberOf module:decorator-validation.Decorators.Validation
170
+ * @category Decorators
171
+ */
172
+ function email(message = constants_1.DEFAULT_ERROR_MESSAGES.EMAIL) {
173
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.EMAIL), {
174
+ message: message,
175
+ types: [String.name],
176
+ });
177
+ }
178
+ /**
179
+ * @summary Defines the property as an URL
180
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
181
+ *
182
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
183
+ *
184
+ * @function url
185
+ * @memberOf module:decorator-validation.Decorators.Validation
186
+ * @category Decorators
187
+ */
188
+ function url(message = constants_1.DEFAULT_ERROR_MESSAGES.URL) {
189
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.URL), {
190
+ message: message,
191
+ types: [String.name],
192
+ });
193
+ }
194
+ /**
195
+ * @summary Enforces type verification
196
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
197
+ *
198
+ * @param {string[] | string} types accepted types
199
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
200
+ *
201
+ * @function type
202
+ * @memberOf module:decorator-validation.Decorators.Validation
203
+ * @category Decorators
204
+ */
205
+ function type(types, message = constants_1.DEFAULT_ERROR_MESSAGES.TYPE) {
206
+ return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.TYPE), {
207
+ customTypes: types,
208
+ message: message,
209
+ });
210
+ }
211
+ /**
212
+ * @summary Date Handler Decorator
213
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
214
+ *
215
+ * Will enforce serialization according to the selected format
216
+ *
217
+ * @param {string} format accepted format according to {@link formatDate}
218
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
219
+ * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link DateValidator}
220
+ *
221
+ * @function date
222
+ *
223
+ * @memberOf module:decorator-validation.Decorators.Validation
224
+ * @category Decorators
225
+ */
226
+ function date(format = "dd/MM/yyyy", message = constants_1.DEFAULT_ERROR_MESSAGES.DATE) {
227
+ return (target, propertyKey) => {
228
+ Reflect.defineMetadata(getValidationKey(constants_1.ValidationKeys.DATE), {
229
+ format: format,
230
+ message: message,
231
+ types: [Date.name],
232
+ }, target, propertyKey);
233
+ const values = new WeakMap();
234
+ Object.defineProperty(target, propertyKey, {
235
+ configurable: false,
236
+ set(newValue) {
237
+ const descriptor = Object.getOwnPropertyDescriptor(this, propertyKey);
238
+ if (!descriptor || descriptor.configurable)
239
+ Object.defineProperty(this, propertyKey, {
240
+ enumerable: true,
241
+ configurable: false,
242
+ get: () => values.get(this),
243
+ set: (newValue) => {
244
+ let val;
245
+ try {
246
+ val = (0, utils_1.parseDate)(format, newValue);
247
+ values.set(this, val);
248
+ }
249
+ catch (e) {
250
+ console.error((0, strings_1.sf)("Failed to parse date: {0}", e.message || e));
251
+ }
252
+ },
253
+ });
254
+ this[propertyKey] = newValue;
255
+ },
256
+ get() {
257
+ console.log("here");
258
+ },
259
+ });
260
+ };
261
+ }
262
+ /**
263
+ * @summary Password Handler Decorator
264
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#PASSWORD}
265
+ *
266
+ * @param {RegExp} [pattern] defaults to {@link PasswordPatterns#CHAR8_ONE_OF_EACH}
267
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PASSWORD}
268
+ * @param {Constructor<Validator>} [validator] Defaults to {@link PasswordValidator}
269
+ *
270
+ * @function password
271
+ *
272
+ * @memberOf module:decorator-validation.Decorators.Validation
273
+ * @category Decorators
274
+ */
275
+ function password(pattern = constants_1.DEFAULT_PATTERNS.PASSWORD.CHAR8_ONE_OF_EACH, message = constants_1.DEFAULT_ERROR_MESSAGES.PASSWORD, validator = PasswordValidator_1.PasswordValidator) {
276
+ return (target, propertyKey) => {
277
+ Reflect.defineMetadata(getValidationKey(constants_1.ValidationKeys.PASSWORD), {
278
+ pattern: pattern,
279
+ message: message,
280
+ types: [String.name],
281
+ }, target, propertyKey);
282
+ Validation_1.Validation.register({
283
+ validator: validator,
284
+ validationKey: constants_1.ValidationKeys.PASSWORD,
285
+ save: true,
286
+ });
287
+ };
288
+ }
289
+ /**
290
+ * @summary List Decorator
291
+ * @description Also sets the {@link type} to the provided collection
292
+ *
293
+ * @param {ModelConstructor} clazz
294
+ * @param {string} [collection] The collection being used. defaults to Array
295
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
296
+ * @param {Constructor<Validator>} [validator] defaults to {@link ListValidator}
297
+ *
298
+ * @function list
299
+ *
300
+ * @memberOf module:decorator-validation.Decorators.Validation
301
+ * @category Decorators
302
+ */
303
+ function list(clazz, collection = "Array", message = constants_1.DEFAULT_ERROR_MESSAGES.LIST, validator = ListValidator_1.ListValidator) {
304
+ return (target, propertyKey) => {
305
+ type(collection)(target, propertyKey);
306
+ Reflect.defineMetadata(getValidationKey(constants_1.ValidationKeys.LIST), {
307
+ class: clazz.name,
308
+ type: collection,
309
+ message: message,
310
+ }, target, propertyKey);
311
+ Validation_1.Validation.register({
312
+ validator: validator,
313
+ validationKey: constants_1.ValidationKeys.LIST,
314
+ save: true,
315
+ });
316
+ };
317
+ }
318
+ /**
319
+ * @summary Set Decorator
320
+ * @description Wrapper for {@link list} with the 'Set' Collection
321
+ *
322
+ * @param {ModelConstructor} clazz
323
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
324
+ * @param {Constructor<Validator>} [validator]
325
+ *
326
+ * @function set
327
+ *
328
+ * @memberOf module:decorator-validation.Decorators.Validation
329
+ * @category Decorators
330
+ */
331
+ function set(clazz, message = constants_1.DEFAULT_ERROR_MESSAGES.LIST, validator) {
332
+ return (target, propertyKey) => {
333
+ list(clazz, "Set", message, validator)(target, propertyKey);
334
+ };
335
+ }
336
+
337
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyQkEsNENBRUM7QUFZRCw0QkFPQztBQWFELGtCQVNDO0FBYUQsa0JBU0M7QUFhRCxvQkFTQztBQWFELDhCQVlDO0FBYUQsOEJBWUM7QUFhRCwwQkFZQztBQVlELHNCQUtDO0FBWUQsa0JBS0M7QUFhRCxvQkFRQztBQWlCRCxvQkE0Q0M7QUFlRCw0QkFzQkM7QUFnQkQsb0JBd0JDO0FBZUQsa0JBUUM7QUFyWkQsNEJBQTBCO0FBQzFCLDhEQUEyRDtBQUMzRCw2Q0FBMEM7QUFFMUMseURBQW9EO0FBQ3BELHNEQUlnQztBQUNoQyw4Q0FBc0M7QUFFdEMsc0VBQW1FO0FBR25FLG9DQUFxQztBQUVyQzs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sMEJBQWMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixRQUFRLENBQUMsVUFBa0Isa0NBQXNCLENBQUMsUUFBUTtJQUN4RSxPQUFPLElBQUEscUJBQVEsRUFDYixnQkFBZ0IsQ0FBQywwQkFBYyxDQUFDLFFBQVEsQ0FBQyxFQUN6QztRQUNFLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsR0FBRyxDQUNqQixLQUE2QixFQUM3QixVQUFrQixrQ0FBc0IsQ0FBQyxHQUFHO0lBRTVDLE9BQU8sSUFBQSxxQkFBUSxFQUFxQixnQkFBZ0IsQ0FBQywwQkFBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hFLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2hDLENBQUMsQ0FBQztBQUNMLENBQUM7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QUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7QUFDSixDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7IExpc3RWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL0xpc3RWYWxpZGF0b3JcIjtcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tIFwiLi9WYWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWV0YWRhdGEgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgbWV0YWRhdGEgfSBmcm9tIFwiLi4vcmVmbGVjdGlvbi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBERUZBVUxUX1BBVFRFUk5TLFxuICBWYWxpZGF0aW9uS2V5cyxcbn0gZnJvbSBcIi4vVmFsaWRhdG9ycy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvUGFzc3dvcmRWYWxpZGF0b3JcIjtcbmltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi9WYWxpZGF0b3JzL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgcGFyc2VEYXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQnVpbGRzIHRoZSBrZXkgdG8gc3RvcmUgYXMgTWV0YWRhdGEgdW5kZXIgUmVmbGVjdGlvbnNcbiAqIEBkZXNjcmlwdGlvbiBjb25jYXRlbmF0ZXMge0BsaW5rIFZhbGlkYXRpb25LZXlzI1JFRkxFQ1R9IHdpdGggdGhlIHByb3ZpZGVkIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0TW9kZWxLZXlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVXRpbHNcbiAqIEBjYXRlZ29yeSBVdGlsaXRpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRpb25LZXkoa2V5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QgKyBrZXk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTWFya3MgdGhlIHByb3BlcnR5IGFzIHJlcXVpcmVkLlxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNSRVFVSVJFRH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNSRVFVSVJFRH1cbiAqXG4gKiBAZnVuY3Rpb24gcmVxdWlyZWRcbiAqXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5SRVFVSVJFRCkge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlJFUVVJUkVEKSxcbiAgICB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU59XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOfVxuICpcbiAqIEBmdW5jdGlvbiBtaW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWluKFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU4sXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NSU4pLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1heGltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNQVh9XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUFYfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4KFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NQVgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NQVgpLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIHN0ZXAgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNTVEVQfVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjU1RFUH1cbiAqXG4gKiBAZnVuY3Rpb24gc3RlcFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlNURVAsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5TVEVQKSwge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU5fTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWlubGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pbmxlbmd0aChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU5fTEVOR1RILFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSCksXG4gICAge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWUsIEFycmF5Lm5hbWUsIFNldC5uYW1lXSxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBtYXhpbXVtIGxlbmd0aCBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01BWF9MRU5HVEh9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNQVhfTEVOR1RIfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhsZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4bGVuZ3RoKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWF9MRU5HVEgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIKSxcbiAgICB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIFJlZ0V4cCBwYXR0ZXJuIHRoZSBwcm9wZXJ0eSBtdXN0IHJlc3BlY3RcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUEFUVEVSTn1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1BBVFRFUk59XG4gKlxuICogQGZ1bmN0aW9uIHBhdHRlcm5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihcbiAgdmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5QQVRURVJOLFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuUEFUVEVSTiksXG4gICAge1xuICAgICAgdmFsdWU6IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHByb3BlcnR5IGFzIGFuIGVtYWlsXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI0VNQUlMfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0VNQUlMfVxuICpcbiAqIEBmdW5jdGlvbiBlbWFpbFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkVNQUlMKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuRU1BSUwpLCB7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcHJvcGVydHkgYXMgYW4gVVJMXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1VSTH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNVUkx9XG4gKlxuICogQGZ1bmN0aW9uIHVybFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cmwobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5VUkwpIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5VUkwpLCB7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRW5mb3JjZXMgdHlwZSB2ZXJpZmljYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjVFlQRX1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSB0eXBlcyBhY2NlcHRlZCB0eXBlc1xuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjVFlQRX1cbiAqXG4gKiBAZnVuY3Rpb24gdHlwZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlKFxuICB0eXBlczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSxcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlRZUEUpLCB7XG4gICAgY3VzdG9tVHlwZXM6IHR5cGVzLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERhdGUgSGFuZGxlciBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjREFURX1cbiAqXG4gKiBXaWxsIGVuZm9yY2Ugc2VyaWFsaXphdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNlbGVjdGVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgYWNjZXB0ZWQgZm9ybWF0IGFjY29yZGluZyB0byB7QGxpbmsgZm9ybWF0RGF0ZX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0RBVEV9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdIHRoZSBWYWxpZGF0b3IgdG8gYmUgdXNlZC4gRGVmYXVsdHMgdG8ge0BsaW5rIERhdGVWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIGRhdGVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoXG4gIGZvcm1hdDogc3RyaW5nID0gXCJkZC9NTS95eXl5XCIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuREFURSxcbikge1xuICByZXR1cm4gKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55PiwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcbiAgICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuREFURSksXG4gICAgICB7XG4gICAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICB0eXBlczogW0RhdGUubmFtZV0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHNldCh0aGlzOiBhbnksIG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKVxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHZhbHVlcy5nZXQodGhpcyksXG4gICAgICAgICAgICBzZXQ6IChuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICBsZXQgdmFsOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRGF0ZShmb3JtYXQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2V0KHRoaXMsIHZhbCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Ioc2YoXCJGYWlsZWQgdG8gcGFyc2UgZGF0ZTogezB9XCIsIGUubWVzc2FnZSB8fCBlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXNbcHJvcGVydHlLZXldID0gbmV3VmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0KCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImhlcmVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFBhc3N3b3JkIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1BBU1NXT1JEfVxuICpcbiAqIEBwYXJhbSB7UmVnRXhwfSBbcGF0dGVybl0gZGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkUGF0dGVybnMjQ0hBUjhfT05FX09GX0VBQ0h9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNQQVNTV09SRH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gRGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkVmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBwYXNzd29yZFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmQoXG4gIHBhdHRlcm46IFJlZ0V4cCA9IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUEFTU1dPUkQsXG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPiA9IFBhc3N3b3JkVmFsaWRhdG9yLFxuKSB7XG4gIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5QQVNTV09SRCksXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IHBhdHRlcm4sXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICAgICAgfSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BlcnR5S2V5LFxuICAgICk7XG4gICAgVmFsaWRhdGlvbi5yZWdpc3Rlcih7XG4gICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvcixcbiAgICAgIHZhbGlkYXRpb25LZXk6IFZhbGlkYXRpb25LZXlzLlBBU1NXT1JELFxuICAgICAgc2F2ZTogdHJ1ZSxcbiAgICB9IGFzIFZhbGlkYXRvckRlZmluaXRpb24pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IExpc3QgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gQWxzbyBzZXRzIHRoZSB7QGxpbmsgdHlwZX0gdG8gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3J9IGNsYXp6XG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbGxlY3Rpb25dIFRoZSBjb2xsZWN0aW9uIGJlaW5nIHVzZWQuIGRlZmF1bHRzIHRvIEFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0xJU1R9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdIGRlZmF1bHRzIHRvIHtAbGluayBMaXN0VmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBsaXN0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBjb2xsZWN0aW9uOiBcIkFycmF5XCIgfCBcIlNldFwiID0gXCJBcnJheVwiLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QsXG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPiA9IExpc3RWYWxpZGF0b3IsXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgdHlwZShjb2xsZWN0aW9uKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5MSVNUKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3M6IGNsYXp6Lm5hbWUsXG4gICAgICAgIHR5cGU6IGNvbGxlY3Rpb24sXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcbiAgICBWYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgICAgdmFsaWRhdGlvbktleTogVmFsaWRhdGlvbktleXMuTElTVCxcbiAgICAgIHNhdmU6IHRydWUsXG4gICAgfSBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBTZXQgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gV3JhcHBlciBmb3Ige0BsaW5rIGxpc3R9IHdpdGggdGhlICdTZXQnIENvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3J9IGNsYXp6XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0xJU1R9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdXG4gKlxuICogQGZ1bmN0aW9uIHNldFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QsXG4gIHZhbGlkYXRvcj86IENvbnN0cnVjdG9yPFZhbGlkYXRvcj4sXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgbGlzdChjbGF6eiwgXCJTZXRcIiwgbWVzc2FnZSwgdmFsaWRhdG9yKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import "reflect-metadata";
2
- import { Validator } from "./Validators";
3
- import { Constructor, ModelConstructor } from "../model";
2
+ import { Constructor, ModelConstructor } from "../model/types";
3
+ import { Validator } from "./Validators/Validator";
4
4
  /**
5
5
  * @summary Builds the key to store as Metadata under Reflections
6
6
  * @description concatenates {@link ValidationKeys#REFLECT} with the provided key
@@ -17,191 +17,118 @@ export declare function getValidationKey(key: string): string;
17
17
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}
18
18
  *
19
19
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
20
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link RequiredValidator}
21
20
  *
22
21
  * @function required
23
- * @memberOf module:decorator-validation.Decorators.Validation
22
+ *
24
23
  * @category Decorators
25
24
  */
26
- export declare function required(message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
25
+ export declare function required(message?: string): import("../reflection/decorators").CustomDecorator<V>;
27
26
  /**
28
27
  * @summary Defines a minimum value for the property
29
28
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN}
30
29
  *
31
30
  * @param {number | Date} value
32
31
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
33
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MinValidator}
34
32
  *
35
33
  * @function min
36
34
  * @memberOf module:decorator-validation.Decorators.Validation
37
35
  * @category Decorators
38
36
  */
39
- export declare function min(value: number | Date | string, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
37
+ export declare function min(value: number | Date | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
40
38
  /**
41
39
  * @summary Defines a maximum value for the property
42
40
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
43
41
  *
44
42
  * @param {number | Date} value
45
43
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
46
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MaxValidator}
47
44
  *
48
45
  * @function max
49
46
  * @memberOf module:decorator-validation.Decorators.Validation
50
47
  * @category Decorators
51
48
  */
52
- export declare function max(value: number | Date | string, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
49
+ export declare function max(value: number | Date | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
53
50
  /**
54
51
  * @summary Defines a step value for the property
55
52
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
56
53
  *
57
54
  * @param {number} value
58
55
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
59
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link StepValidator}
60
56
  *
61
57
  * @function step
62
58
  * @memberOf module:decorator-validation.Decorators.Validation
63
59
  * @category Decorators
64
60
  */
65
- export declare function step(value: number, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
61
+ export declare function step(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
66
62
  /**
67
63
  * @summary Defines a minimum length for the property
68
64
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
69
65
  *
70
66
  * @param {string} value
71
67
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
72
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MinLengthValidator}
73
68
  *
74
69
  * @function minlength
75
70
  * @memberOf module:decorator-validation.Decorators.Validation
76
71
  * @category Decorators
77
72
  */
78
- export declare function minlength(value: number, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
73
+ export declare function minlength(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
79
74
  /**
80
75
  * @summary Defines a maximum length for the property
81
76
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
82
77
  *
83
78
  * @param {string} value
84
79
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
85
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MaxLengthValidator}
86
80
  *
87
81
  * @function maxlength
88
82
  * @memberOf module:decorator-validation.Decorators.Validation
89
83
  * @category Decorators
90
84
  */
91
- export declare function maxlength(value: number, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
85
+ export declare function maxlength(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
92
86
  /**
93
87
  * @summary Defines a RegExp pattern the property must respect
94
88
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
95
89
  *
96
90
  * @param {string} value
97
91
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
98
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link PatternValidator}
99
92
  *
100
93
  * @function pattern
101
94
  * @memberOf module:decorator-validation.Decorators.Validation
102
95
  * @category Decorators
103
96
  */
104
- export declare function pattern(value: RegExp | string, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
97
+ export declare function pattern(value: RegExp | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
105
98
  /**
106
99
  * @summary Defines the property as an email
107
100
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
108
101
  *
109
102
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
110
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link EmailValidator}
111
103
  *
112
104
  * @function email
113
105
  * @memberOf module:decorator-validation.Decorators.Validation
114
106
  * @category Decorators
115
107
  */
116
- export declare function email(message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
108
+ export declare function email(message?: string): import("../reflection/decorators").CustomDecorator<V>;
117
109
  /**
118
110
  * @summary Defines the property as an URL
119
111
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
120
112
  *
121
113
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
122
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link URLValidator}
123
114
  *
124
115
  * @function url
125
116
  * @memberOf module:decorator-validation.Decorators.Validation
126
117
  * @category Decorators
127
118
  */
128
- export declare function url(message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
119
+ export declare function url(message?: string): import("../reflection/decorators").CustomDecorator<V>;
129
120
  /**
130
121
  * @summary Enforces type verification
131
122
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
132
123
  *
133
124
  * @param {string[] | string} types accepted types
134
125
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
135
- * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link TypeValidator}
136
126
  *
137
127
  * @function type
138
128
  * @memberOf module:decorator-validation.Decorators.Validation
139
129
  * @category Decorators
140
130
  */
141
- export declare function type(types: string[] | string, message?: string, validator?: Constructor<Validator>): (target: any, propertyKey: string) => void;
142
- /**
143
- * @summary Binds a date format to a string
144
- * @param {Date} [date]
145
- * @param {string} [format]
146
- * @memberOf module:decorator-validation.Utils.Format
147
- * @category Utilities
148
- */
149
- export declare function bindDateToString(date: Date | undefined, format: string): Date | undefined;
150
- /**
151
- * @summary Helper function to be used instead of instanceOf Date
152
- * @param date
153
- * @memberOf module:decorator-validation.Utils.Dates
154
- * @category Validation
155
- */
156
- export declare function isValidDate(date: any): boolean;
157
- /**
158
- * @summary Util function to pad numbers
159
- * @param {number} num
160
- *
161
- * @return {string}
162
- *
163
- * @function twoDigitPad
164
- * @memberOf module:decorator-validation.Utils.Format
165
- * @category Format
166
- */
167
- export declare function twoDigitPad(num: number): string;
168
- /**
169
- * @summary Date Format Handling
170
- * @description Code from {@link https://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date}
171
- *
172
- * <pre>
173
- * Using similar formatting as Moment.js, Class DateTimeFormatter (Java), and Class SimpleDateFormat (Java),
174
- * I implemented a comprehensive solution formatDate(date, patternStr) where the code is easy to read and modify.
175
- * You can display date, time, AM/PM, etc.
176
- *
177
- * Date and Time Patterns
178
- * yy = 2-digit year; yyyy = full year
179
- * M = digit month; MM = 2-digit month; MMM = short month name; MMMM = full month name
180
- * EEEE = full weekday name; EEE = short weekday name
181
- * d = digit day; dd = 2-digit day
182
- * h = hours am/pm; hh = 2-digit hours am/pm; H = hours; HH = 2-digit hours
183
- * m = minutes; mm = 2-digit minutes; aaa = AM/PM
184
- * s = seconds; ss = 2-digit seconds
185
- * S = miliseconds
186
- * </pre>
187
- *
188
- * @param {Date} date
189
- * @param {string} [patternStr] defaults to 'yyyy/MM/dd'
190
- * @return {string} the formatted date
191
- *
192
- * @function formatDate
193
- * @memberOf module:decorator-validation.Utils.Dates
194
- * @category Format
195
- */
196
- export declare function formatDate(date: Date, patternStr?: string): string;
197
- /**
198
- * @summary Parses a date from a specified format
199
- * @param {string} format
200
- * @param {string | Date | number} [v]
201
- * @memberOf module:decorator-validation.Utils.Dates
202
- * @category Format
203
- */
204
- export declare function parseDate(format: string, v?: string | Date | number): Date | undefined;
131
+ export declare function type(types: string[] | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
205
132
  /**
206
133
  * @summary Date Handler Decorator
207
134
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
@@ -217,7 +144,7 @@ export declare function parseDate(format: string, v?: string | Date | number): D
217
144
  * @memberOf module:decorator-validation.Decorators.Validation
218
145
  * @category Decorators
219
146
  */
220
- export declare function date(format?: string, message?: string, validator?: Constructor<Validator>): (target: Record<string, any>, propertyKey: string) => any;
147
+ export declare function date(format?: string, message?: string): (target: Record<string, any>, propertyKey: string) => any;
221
148
  /**
222
149
  * @summary Password Handler Decorator
223
150
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#PASSWORD}
@@ -1 +1,22 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(r,e,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(e,t);i&&("get"in i?e.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,o,i)}:function(r,e,t,o){r[o=void 0===o?t:o]=e[t]}),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)"default"===t||Object.prototype.hasOwnProperty.call(e,t)||__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Decorators=exports.ValidatorRegistryImp=void 0,__exportStar(require("./types/index.cjs"),exports),__exportStar(require("./Validators/index.cjs"),exports);const Validators_1=require("./Validators/index.cjs");exports.ValidatorRegistryImp=Validators_1.ValidatorRegistry,exports.Decorators=require("./decorators/index.cjs"),__exportStar(require("./decorators/index.cjs"),exports),__exportStar(require("./Validation/index.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("./Validators/index.cjs"), exports);
18
+ __exportStar(require("./decorators/index.cjs"), exports);
19
+ __exportStar(require("./types/index.cjs"), exports);
20
+ __exportStar(require("./Validation/index.cjs"), exports);
21
+
22
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkI7QUFDN0IsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QiwrQ0FBNkIiLCJmaWxlIjoidmFsaWRhdGlvbi9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0aW9uXCI7XG4iXX0=