@decaf-ts/decorator-validation 1.7.0 → 1.7.2
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.
- package/README.md +312 -20
- package/dist/decorator-validation.cjs +245 -94
- package/dist/decorator-validation.esm.cjs +245 -95
- package/lib/constants/validation.cjs +6 -8
- package/lib/constants/validation.d.ts +4 -6
- package/lib/esm/constants/validation.d.ts +4 -6
- package/lib/esm/constants/validation.js +6 -8
- package/lib/esm/index.d.ts +8 -1
- package/lib/esm/index.js +9 -2
- package/lib/esm/model/Model.d.ts +164 -40
- package/lib/esm/model/Model.js +165 -41
- package/lib/esm/model/construction.d.ts +4 -2
- package/lib/esm/model/construction.js +4 -2
- package/lib/esm/model/decorators.d.ts +25 -1
- package/lib/esm/model/decorators.js +29 -2
- package/lib/esm/model/types.d.ts +48 -31
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/utils/decorators.d.ts +7 -12
- package/lib/esm/utils/decorators.js +8 -13
- package/lib/esm/validation/Validators/EmailValidator.js +1 -1
- package/lib/esm/validation/Validators/PasswordValidator.js +1 -1
- package/lib/esm/validation/Validators/URLValidator.js +1 -1
- package/lib/esm/validation/Validators/decorators.d.ts +1 -1
- package/lib/esm/validation/Validators/decorators.js +2 -2
- package/lib/esm/validation/Validators/utils.d.ts +4 -0
- package/lib/esm/validation/Validators/utils.js +5 -1
- package/lib/esm/validation/decorators.d.ts +20 -26
- package/lib/esm/validation/decorators.js +21 -27
- package/lib/index.cjs +9 -2
- package/lib/index.d.ts +8 -1
- package/lib/model/Model.cjs +165 -41
- package/lib/model/Model.d.ts +164 -40
- package/lib/model/construction.cjs +4 -2
- package/lib/model/construction.d.ts +4 -2
- package/lib/model/decorators.cjs +29 -2
- package/lib/model/decorators.d.ts +25 -1
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +48 -31
- package/lib/utils/decorators.cjs +8 -13
- package/lib/utils/decorators.d.ts +7 -12
- package/lib/validation/Validators/EmailValidator.cjs +1 -1
- package/lib/validation/Validators/PasswordValidator.cjs +1 -1
- package/lib/validation/Validators/URLValidator.cjs +1 -1
- package/lib/validation/Validators/decorators.cjs +2 -2
- package/lib/validation/Validators/decorators.d.ts +1 -1
- package/lib/validation/Validators/utils.cjs +5 -1
- package/lib/validation/Validators/utils.d.ts +4 -0
- package/lib/validation/decorators.cjs +21 -27
- package/lib/validation/decorators.d.ts +20 -26
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ import { COMPARISON_ERROR_MESSAGES } from "./constants";
|
|
|
12
12
|
* @returns {T} - The value found at the specified path
|
|
13
13
|
*
|
|
14
14
|
* @throws {Error} - Throws an error if the path is not a non-empty string or if any part of the path does not exist in the object.
|
|
15
|
+
* @memberOf module:decorator-validation
|
|
15
16
|
*/
|
|
16
17
|
export function getValueByPath(obj, path) {
|
|
17
18
|
if (typeof path !== "string" || !path.trim()) {
|
|
@@ -88,6 +89,7 @@ const isSupported = (value) => {
|
|
|
88
89
|
* @returns {boolean} True if both values are of supported types.
|
|
89
90
|
*
|
|
90
91
|
* @throws {TypeError} If either value is of an unsupported type.
|
|
92
|
+
* @memberOf module:decorator-validation
|
|
91
93
|
*/
|
|
92
94
|
export function isValidForGteOrLteComparison(a, b) {
|
|
93
95
|
if (isSupported(a) && isSupported(b))
|
|
@@ -105,6 +107,7 @@ export function isValidForGteOrLteComparison(a, b) {
|
|
|
105
107
|
*
|
|
106
108
|
* @throws {Error} If either `a` or `b` is `null` or `undefined`.
|
|
107
109
|
* @throws {TypeError} If values are of mismatched or unsupported types.
|
|
110
|
+
* @memberOf module:decorator-validation
|
|
108
111
|
*/
|
|
109
112
|
export function isLessThan(a, b) {
|
|
110
113
|
if ([null, undefined].includes(a) || [null, undefined].includes(b))
|
|
@@ -144,6 +147,7 @@ export function isLessThan(a, b) {
|
|
|
144
147
|
*
|
|
145
148
|
* @throws {Error} If either `a` or `b` is `null` or `undefined`.
|
|
146
149
|
* @throws {TypeError} If values are of mismatched or unsupported types.
|
|
150
|
+
* @memberOf module:decorator-validation
|
|
147
151
|
*/
|
|
148
152
|
export function isGreaterThan(a, b) {
|
|
149
153
|
if ([null, undefined].includes(a) || [null, undefined].includes(b))
|
|
@@ -171,4 +175,4 @@ export function isGreaterThan(a, b) {
|
|
|
171
175
|
}
|
|
172
176
|
throw new TypeError(sf(COMPARISON_ERROR_MESSAGES.UNSUPPORTED_TYPES_COMPARISON, getTypeName(a), getTypeName(b)));
|
|
173
177
|
}
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLEdBQXdCLEVBQUUsSUFBWTtJQUN0RSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU5QywrQkFBK0I7SUFDL0IsSUFBSSxjQUFjLEdBQVEsR0FBRyxDQUFDO0lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQ2IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QixF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aW1wb3J0IHsgVkFMSURBVElPTl9QQVJFTlRfS0VZIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIFNhZmVseSByZXRyaWV2ZXMgYSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBkb3Qtbm90YXRlZCBwYXRoIHN0cmluZy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBleHBlY3RlZCByZXR1cm4gdHlwZSBvZiB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmogLSBUaGUgc291cmNlIG9iamVjdCB0byByZXRyaWV2ZSB0aGUgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gQSBkb3Qtc2VwYXJhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGRlc2lyZWQgcHJvcGVydHkgKGUuZy4sIFwidXNlci5hZGRyZXNzLnN0cmVldFwiKS5cbiAqXG4gKiBAcmV0dXJucyB7VH0gLSBUaGUgdmFsdWUgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBwYXRoXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBwYXRoIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgaWYgYW55IHBhcnQgb2YgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgaW4gdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQnlQYXRoPFQ+KG9iajogUmVjb3JkPHN0cmluZywgYW55PiwgcGF0aDogc3RyaW5nKTogVCB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIiB8fCAhcGF0aC50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc2YoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5JTlZBTElEX1BBVEgsIHBhdGgpKTtcbiAgfVxuXG4gIC8vIFByb2Nlc3MgcGFyZW50IGRpcmVjdG9yeSBhY2Nlc3MgKC4uLylcbiAgY29uc3QgcGFyZW50QWNjZXNzb3JzID0gcGF0aC5tYXRjaCgvXFwuXFwuXFwvL2cpIHx8IFtdO1xuICBjb25zdCBwYXJlbnRMZXZlbCA9IHBhcmVudEFjY2Vzc29ycy5sZW5ndGg7XG4gIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXFwuXFwuXFwvL2csIFwiXCIpO1xuXG4gIC8vIE5hdmlnYXRlIHVwIHRoZSBwYXJlbnQgY2hhaW5cbiAgbGV0IGN1cnJlbnRDb250ZXh0OiBhbnkgPSBvYmo7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50TGV2ZWw7IGkrKykge1xuICAgIGlmICghY3VycmVudENvbnRleHQgfHwgdHlwZW9mIGN1cnJlbnRDb250ZXh0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuQ09OVEVYVF9OT1RfT0JKRUNUX0NPTVBBUklTT04sIGkgKyAxLCBwYXRoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRDb250ZXh0W1ZBTElEQVRJT05fUEFSRU5UX0tFWV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgc2YoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OT19QQVJFTlRfQ09NUEFSSVNPTiwgaSArIDEsIHBhdGgpXG4gICAgICApO1xuICAgIH1cblxuICAgIGN1cnJlbnRDb250ZXh0ID0gY3VycmVudENvbnRleHRbVkFMSURBVElPTl9QQVJFTlRfS0VZXTtcbiAgfVxuXG4gIC8vIFByb2Nlc3MgZG90IG5vdGF0aW9uIHBhdGhcbiAgY29uc3QgcGFydHMgPSBjbGVhblBhdGguc3BsaXQoXCIuXCIpO1xuICBsZXQgY3VycmVudFZhbHVlOiBhbnkgPSBjdXJyZW50Q29udGV4dDtcblxuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBpZiAoXG4gICAgICBjdXJyZW50VmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBjdXJyZW50VmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIHBhcnQgaW4gY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSAoY3VycmVudFZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3BhcnRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlcnJvck1zZ1RlbXBsYXRlID1cbiAgICAgICAgcGFyZW50TGV2ZWwgPT09IDBcbiAgICAgICAgICA/IENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuUFJPUEVSVFlfTk9UX0ZPVU5EXG4gICAgICAgICAgOiBwYXJlbnRMZXZlbCA9PT0gMVxuICAgICAgICAgICAgPyBDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLlBST1BFUlRZX05PVF9GT1VORF9PTl9QQVJFTlRcbiAgICAgICAgICAgIDogQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5QUk9QRVJUWV9OT1RfRk9VTkRfQUZURVJfUEFSRU5UO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc2YoZXJyb3JNc2dUZW1wbGF0ZSwgcGF0aCwgcGFydCwgcGFyZW50TGV2ZWwpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3VycmVudFZhbHVlIGFzIFQ7XG59XG5cbmNvbnN0IGdldFR5cGVOYW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gXCJudWxsXCI7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBcIkRhdGVcIjtcbiAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiBcIk5hTlwiO1xuICBpZiAodmFsdWUgPT09IEluZmluaXR5KSByZXR1cm4gXCJJbmZpbml0eVwiO1xuICBpZiAodmFsdWUgPT09IC1JbmZpbml0eSkgcmV0dXJuIFwiLUluZmluaXR5XCI7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIFwiYXJyYXlcIjtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcbn07XG5cbmNvbnN0IGlzU3VwcG9ydGVkID0gKFxuICB2YWx1ZTogdW5rbm93blxuKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVtYmVyIHwgYmlnaW50IHwgRGF0ZSA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikgcmV0dXJuIHRydWU7XG5cbiAgLy8gTnVtYmVycyBtdXN0IGJlIGZpbml0ZSAoZXhjbHVkZXMgTmFOLCBJbmZpbml0eSwgLUluZmluaXR5KVxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbHVlKTtcblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIHR3byB2YWx1ZXMgYXJlIGVsaWdpYmxlIGZvciBjb21wYXJpc29uIHVzaW5nID49IG9yIDw9IG9wZXJhdG9ycy5cbiAqXG4gKiBTdXBwb3J0ZWQgdHlwZXM6IGB1bmRlZmluZWRgLCBgbnVtYmVyYCwgYGJpZ2ludGAsIGFuZCBgRGF0ZWAuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGJvdGggdmFsdWVzIGFyZSBvZiBzdXBwb3J0ZWQgdHlwZXMuXG4gKlxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBlaXRoZXIgdmFsdWUgaXMgb2YgYW4gdW5zdXBwb3J0ZWQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRGb3JHdGVPckx0ZUNvbXBhcmlzb24oYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKGlzU3VwcG9ydGVkKGEpICYmIGlzU3VwcG9ydGVkKGIpKSByZXR1cm4gdHJ1ZTtcblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIHNmKFxuICAgICAgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5VTlNVUFBPUlRFRF9UWVBFU19DT01QQVJJU09OLFxuICAgICAgZ2V0VHlwZU5hbWUoYSksXG4gICAgICBnZXRUeXBlTmFtZShiKVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3QgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQuXG4gKiBAZGVzY3JpcHRpb24gU3VwcG9ydHMgbnVtYmVycyBhbmQgZGF0ZXMuIFRocm93cyBhbiBlcnJvciBmb3IgdW5zdXBwb3J0ZWQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHthbnl9IGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7YW55fSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYGFgIGlzIGxlc3MgdGhhbiBgYmAsIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgZWl0aGVyIGBhYCBvciBgYmAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiB2YWx1ZXMgYXJlIG9mIG1pc21hdGNoZWQgb3IgdW5zdXBwb3J0ZWQgdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xlc3NUaGFuKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiB7XG4gIGlmIChbbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyhhKSB8fCBbbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyhiKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OVUxMX09SX1VOREVGSU5FRF9DT01QQVJJU09OKTtcblxuICAvLyBWYWxpZGF0ZSB0eXBlIGNvbXBhdGliaWxpdHlcbiAgY29uc3QgYVR5cGUgPSB0eXBlb2YgYTtcbiAgY29uc3QgYlR5cGUgPSB0eXBlb2YgYjtcblxuICBpZiAoYVR5cGUgIT09IGJUeXBlKSB7XG4gICAgLy8gQWxsb3cgbnVtYmVyIFggYmlnaW50XG4gICAgaWYgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE51bWJlcihhKSA8IChiIGFzIG51bWJlcik7XG4gICAgaWYgKGFUeXBlID09PSBcIm51bWJlclwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICAgICAgcmV0dXJuIChhIGFzIG51bWJlcikgPCBOdW1iZXIoYik7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVFlQRV9NSVNNQVRDSF9DT01QQVJJU09OLCBhVHlwZSwgYlR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChcbiAgICAoYVR5cGUgPT09IFwibnVtYmVyXCIgJiYgYlR5cGUgPT09IFwibnVtYmVyXCIpIHx8XG4gICAgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICApIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGEpIHx8IE51bWJlci5pc05hTihiKSlcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OQU5fQ09NUEFSSVNPTik7XG4gICAgcmV0dXJuIGEgPCBiO1xuICB9XG5cbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgaWYgKGlzTmFOKGEuZ2V0VGltZSgpKSB8fCBpc05hTihiLmdldFRpbWUoKSkpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuSU5WQUxJRF9EQVRFX0NPTVBBUklTT04pO1xuICAgIHJldHVybiBhLmdldFRpbWUoKSA8IGIuZ2V0VGltZSgpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBzZihcbiAgICAgIENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVU5TVVBQT1JURURfVFlQRVNfQ09NUEFSSVNPTixcbiAgICAgIGdldFR5cGVOYW1lKGEpLFxuICAgICAgZ2V0VHlwZU5hbWUoYilcbiAgICApXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBhYCBpcyBncmVhdGVyIHRoYW4gYGJgLlxuICogU3VwcG9ydHMgY29tcGFyaXNvbiBmb3IgbnVtYmVycyBhbmQgRGF0ZSBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSB7YW55fSBhIC0gVGhlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIHthbnl9IGIgLSBUaGUgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGBhYCBpcyBncmVhdGVyIHRoYW4gYGJgLCBvdGhlcndpc2UgZmFsc2UuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IElmIGVpdGhlciBgYWAgb3IgYGJgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgdmFsdWVzIGFyZSBvZiBtaXNtYXRjaGVkIG9yIHVuc3VwcG9ydGVkIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHcmVhdGVyVGhhbihhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoW251bGwsIHVuZGVmaW5lZF0uaW5jbHVkZXMoYSkgfHwgW251bGwsIHVuZGVmaW5lZF0uaW5jbHVkZXMoYikpXG4gICAgdGhyb3cgbmV3IEVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuTlVMTF9PUl9VTkRFRklORURfQ09NUEFSSVNPTik7XG5cbiAgY29uc3QgYVR5cGUgPSB0eXBlb2YgYTtcbiAgY29uc3QgYlR5cGUgPSB0eXBlb2YgYjtcblxuICBpZiAoYVR5cGUgIT09IGJUeXBlKSB7XG4gICAgLy8gQWxsb3cgbnVtYmVyIFggYmlnaW50XG4gICAgaWYgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE51bWJlcihhKSA+IChiIGFzIG51bWJlcik7XG4gICAgaWYgKGFUeXBlID09PSBcIm51bWJlclwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICAgICAgcmV0dXJuIChhIGFzIG51bWJlcikgPiBOdW1iZXIoYik7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgc2YoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5UWVBFX01JU01BVENIX0NPTVBBUklTT04sIGFUeXBlLCBiVHlwZSlcbiAgICApO1xuICB9XG5cbiAgaWYgKFxuICAgIChhVHlwZSA9PT0gXCJudW1iZXJcIiAmJiBiVHlwZSA9PT0gXCJudW1iZXJcIikgfHxcbiAgICAoYVR5cGUgPT09IFwiYmlnaW50XCIgJiYgYlR5cGUgPT09IFwiYmlnaW50XCIpXG4gICkge1xuICAgIGlmIChOdW1iZXIuaXNOYU4oYSkgfHwgTnVtYmVyLmlzTmFOKGIpKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLk5BTl9DT01QQVJJU09OKTtcbiAgICByZXR1cm4gYSA+IGI7XG4gIH1cblxuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBpZiAoaXNOYU4oYS5nZXRUaW1lKCkpIHx8IGlzTmFOKGIuZ2V0VGltZSgpKSlcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5JTlZBTElEX0RBVEVfQ09NUEFSSVNPTik7XG4gICAgcmV0dXJuIGEuZ2V0VGltZSgpID4gYi5nZXRUaW1lKCk7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIHNmKFxuICAgICAgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5VTlNVUFBPUlRFRF9UWVBFU19DT01QQVJJU09OLFxuICAgICAgZ2V0VHlwZU5hbWUoYSksXG4gICAgICBnZXRUeXBlTmFtZShiKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBSSxHQUF3QixFQUFFLElBQVk7SUFDdEUsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFOUMsK0JBQStCO0lBQy9CLElBQUksY0FBYyxHQUFRLEdBQUcsQ0FBQztJQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksS0FBSyxDQUNiLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyw2QkFBNkIs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IjpbImltcG9ydCB7IFZBTElEQVRJT05fUEFSRU5UX0tFWSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBTYWZlbHkgcmV0cmlldmVzIGEgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGZyb20gYW4gb2JqZWN0IHVzaW5nIGEgZG90LW5vdGF0ZWQgcGF0aCBzdHJpbmcuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgZXhwZWN0ZWQgcmV0dXJuIHR5cGUgb2YgdGhlIHByb3BlcnR5IHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZyb20uXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIEEgZG90LXNlcGFyYXRlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZSBkZXNpcmVkIHByb3BlcnR5IChlLmcuLCBcInVzZXIuYWRkcmVzcy5zdHJlZXRcIikuXG4gKlxuICogQHJldHVybnMge1R9IC0gVGhlIHZhbHVlIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgcGF0aFxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgcGF0aCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGlmIGFueSBwYXJ0IG9mIHRoZSBwYXRoIGRvZXMgbm90IGV4aXN0IGluIHRoZSBvYmplY3QuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZUJ5UGF0aDxUPihvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhdGg6IHN0cmluZyk6IFQge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIgfHwgIXBhdGgudHJpbSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuSU5WQUxJRF9QQVRILCBwYXRoKSk7XG4gIH1cblxuICAvLyBQcm9jZXNzIHBhcmVudCBkaXJlY3RvcnkgYWNjZXNzICguLi8pXG4gIGNvbnN0IHBhcmVudEFjY2Vzc29ycyA9IHBhdGgubWF0Y2goL1xcLlxcLlxcLy9nKSB8fCBbXTtcbiAgY29uc3QgcGFyZW50TGV2ZWwgPSBwYXJlbnRBY2Nlc3NvcnMubGVuZ3RoO1xuICBjb25zdCBjbGVhblBhdGggPSBwYXRoLnJlcGxhY2UoL1xcLlxcLlxcLy9nLCBcIlwiKTtcblxuICAvLyBOYXZpZ2F0ZSB1cCB0aGUgcGFyZW50IGNoYWluXG4gIGxldCBjdXJyZW50Q29udGV4dDogYW55ID0gb2JqO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmVudExldmVsOyBpKyspIHtcbiAgICBpZiAoIWN1cnJlbnRDb250ZXh0IHx8IHR5cGVvZiBjdXJyZW50Q29udGV4dCAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBzZihDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLkNPTlRFWFRfTk9UX09CSkVDVF9DT01QQVJJU09OLCBpICsgMSwgcGF0aClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50Q29udGV4dFtWQUxJREFUSU9OX1BBUkVOVF9LRVldKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuTk9fUEFSRU5UX0NPTVBBUklTT04sIGkgKyAxLCBwYXRoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjdXJyZW50Q29udGV4dCA9IGN1cnJlbnRDb250ZXh0W1ZBTElEQVRJT05fUEFSRU5UX0tFWV07XG4gIH1cblxuICAvLyBQcm9jZXNzIGRvdCBub3RhdGlvbiBwYXRoXG4gIGNvbnN0IHBhcnRzID0gY2xlYW5QYXRoLnNwbGl0KFwiLlwiKTtcbiAgbGV0IGN1cnJlbnRWYWx1ZTogYW55ID0gY3VycmVudENvbnRleHQ7XG5cbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKFxuICAgICAgY3VycmVudFZhbHVlICE9PSBudWxsICYmXG4gICAgICB0eXBlb2YgY3VycmVudFZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICBwYXJ0IGluIGN1cnJlbnRWYWx1ZVxuICAgICkge1xuICAgICAgY3VycmVudFZhbHVlID0gKGN1cnJlbnRWYWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwYXJ0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXJyb3JNc2dUZW1wbGF0ZSA9XG4gICAgICAgIHBhcmVudExldmVsID09PSAwXG4gICAgICAgICAgPyBDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLlBST1BFUlRZX05PVF9GT1VORFxuICAgICAgICAgIDogcGFyZW50TGV2ZWwgPT09IDFcbiAgICAgICAgICAgID8gQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5QUk9QRVJUWV9OT1RfRk9VTkRfT05fUEFSRU5UXG4gICAgICAgICAgICA6IENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuUFJPUEVSVFlfTk9UX0ZPVU5EX0FGVEVSX1BBUkVOVDtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKHNmKGVycm9yTXNnVGVtcGxhdGUsIHBhdGgsIHBhcnQsIHBhcmVudExldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRWYWx1ZSBhcyBUO1xufVxuXG5jb25zdCBnZXRUeXBlTmFtZSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIFwibnVsbFwiO1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gXCJEYXRlXCI7XG4gIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpKSByZXR1cm4gXCJOYU5cIjtcbiAgaWYgKHZhbHVlID09PSBJbmZpbml0eSkgcmV0dXJuIFwiSW5maW5pdHlcIjtcbiAgaWYgKHZhbHVlID09PSAtSW5maW5pdHkpIHJldHVybiBcIi1JbmZpbml0eVwiO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiBcImFycmF5XCI7XG4gIHJldHVybiB0eXBlb2YgdmFsdWU7XG59O1xuXG5jb25zdCBpc1N1cHBvcnRlZCA9IChcbiAgdmFsdWU6IHVua25vd25cbik6IHZhbHVlIGlzIHVuZGVmaW5lZCB8IG51bWJlciB8IGJpZ2ludCB8IERhdGUgPT4ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB0cnVlO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYmlnaW50XCIpIHJldHVybiB0cnVlO1xuXG4gIC8vIE51bWJlcnMgbXVzdCBiZSBmaW5pdGUgKGV4Y2x1ZGVzIE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSlcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSk7XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGhlciB0d28gdmFsdWVzIGFyZSBlbGlnaWJsZSBmb3IgY29tcGFyaXNvbiB1c2luZyA+PSBvciA8PSBvcGVyYXRvcnMuXG4gKlxuICogU3VwcG9ydGVkIHR5cGVzOiBgdW5kZWZpbmVkYCwgYG51bWJlcmAsIGBiaWdpbnRgLCBhbmQgYERhdGVgLlxuICpcbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0gYiAtIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZS5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBib3RoIHZhbHVlcyBhcmUgb2Ygc3VwcG9ydGVkIHR5cGVzLlxuICpcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgZWl0aGVyIHZhbHVlIGlzIG9mIGFuIHVuc3VwcG9ydGVkIHR5cGUuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRm9yR3RlT3JMdGVDb21wYXJpc29uKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiB7XG4gIGlmIChpc1N1cHBvcnRlZChhKSAmJiBpc1N1cHBvcnRlZChiKSkgcmV0dXJuIHRydWU7XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBzZihcbiAgICAgIENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVU5TVVBQT1JURURfVFlQRVNfQ09NUEFSSVNPTixcbiAgICAgIGdldFR5cGVOYW1lKGEpLFxuICAgICAgZ2V0VHlwZU5hbWUoYilcbiAgICApXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgQ29tcGFyZXMgdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IGlzIGxlc3MgdGhhbiB0aGUgc2Vjb25kLlxuICogQGRlc2NyaXB0aW9uIFN1cHBvcnRzIG51bWJlcnMgYW5kIGRhdGVzLiBUaHJvd3MgYW4gZXJyb3IgZm9yIHVuc3VwcG9ydGVkIHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7YW55fSBhIC0gVGhlIGZpcnN0IHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2FueX0gYiAtIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGBhYCBpcyBsZXNzIHRoYW4gYGJgLCBmYWxzZSBvdGhlcndpc2UuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IElmIGVpdGhlciBgYWAgb3IgYGJgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgdmFsdWVzIGFyZSBvZiBtaXNtYXRjaGVkIG9yIHVuc3VwcG9ydGVkIHR5cGVzLlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMZXNzVGhhbihhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoW251bGwsIHVuZGVmaW5lZF0uaW5jbHVkZXMoYSkgfHwgW251bGwsIHVuZGVmaW5lZF0uaW5jbHVkZXMoYikpXG4gICAgdGhyb3cgbmV3IEVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuTlVMTF9PUl9VTkRFRklORURfQ09NUEFSSVNPTik7XG5cbiAgLy8gVmFsaWRhdGUgdHlwZSBjb21wYXRpYmlsaXR5XG4gIGNvbnN0IGFUeXBlID0gdHlwZW9mIGE7XG4gIGNvbnN0IGJUeXBlID0gdHlwZW9mIGI7XG5cbiAgaWYgKGFUeXBlICE9PSBiVHlwZSkge1xuICAgIC8vIEFsbG93IG51bWJlciBYIGJpZ2ludFxuICAgIGlmIChhVHlwZSA9PT0gXCJiaWdpbnRcIiAmJiBiVHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgIHJldHVybiBOdW1iZXIoYSkgPCAoYiBhcyBudW1iZXIpO1xuICAgIGlmIChhVHlwZSA9PT0gXCJudW1iZXJcIiAmJiBiVHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgIHJldHVybiAoYSBhcyBudW1iZXIpIDwgTnVtYmVyKGIpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBzZihDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLlRZUEVfTUlTTUFUQ0hfQ09NUEFSSVNPTiwgYVR5cGUsIGJUeXBlKVxuICAgICk7XG4gIH1cblxuICBpZiAoXG4gICAgKGFUeXBlID09PSBcIm51bWJlclwiICYmIGJUeXBlID09PSBcIm51bWJlclwiKSB8fFxuICAgIChhVHlwZSA9PT0gXCJiaWdpbnRcIiAmJiBiVHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgKSB7XG4gICAgaWYgKE51bWJlci5pc05hTihhKSB8fCBOdW1iZXIuaXNOYU4oYikpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuTkFOX0NPTVBBUklTT04pO1xuICAgIHJldHVybiBhIDwgYjtcbiAgfVxuXG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGlmIChpc05hTihhLmdldFRpbWUoKSkgfHwgaXNOYU4oYi5nZXRUaW1lKCkpKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLklOVkFMSURfREFURV9DT01QQVJJU09OKTtcbiAgICByZXR1cm4gYS5nZXRUaW1lKCkgPCBiLmdldFRpbWUoKTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgc2YoXG4gICAgICBDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLlVOU1VQUE9SVEVEX1RZUEVTX0NPTVBBUklTT04sXG4gICAgICBnZXRUeXBlTmFtZShhKSxcbiAgICAgIGdldFR5cGVOYW1lKGIpXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgYWAgaXMgZ3JlYXRlciB0aGFuIGBiYC5cbiAqIFN1cHBvcnRzIGNvbXBhcmlzb24gZm9yIG51bWJlcnMgYW5kIERhdGUgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0ge2FueX0gYSAtIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZS5cbiAqIEBwYXJhbSB7YW55fSBiIC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBgYWAgaXMgZ3JlYXRlciB0aGFuIGBiYCwgb3RoZXJ3aXNlIGZhbHNlLlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBlaXRoZXIgYGFgIG9yIGBiYCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIHZhbHVlcyBhcmUgb2YgbWlzbWF0Y2hlZCBvciB1bnN1cHBvcnRlZCB0eXBlcy5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR3JlYXRlclRoYW4oYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKFtudWxsLCB1bmRlZmluZWRdLmluY2x1ZGVzKGEpIHx8IFtudWxsLCB1bmRlZmluZWRdLmluY2x1ZGVzKGIpKVxuICAgIHRocm93IG5ldyBFcnJvcihDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLk5VTExfT1JfVU5ERUZJTkVEX0NPTVBBUklTT04pO1xuXG4gIGNvbnN0IGFUeXBlID0gdHlwZW9mIGE7XG4gIGNvbnN0IGJUeXBlID0gdHlwZW9mIGI7XG5cbiAgaWYgKGFUeXBlICE9PSBiVHlwZSkge1xuICAgIC8vIEFsbG93IG51bWJlciBYIGJpZ2ludFxuICAgIGlmIChhVHlwZSA9PT0gXCJiaWdpbnRcIiAmJiBiVHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgIHJldHVybiBOdW1iZXIoYSkgPiAoYiBhcyBudW1iZXIpO1xuICAgIGlmIChhVHlwZSA9PT0gXCJudW1iZXJcIiAmJiBiVHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgIHJldHVybiAoYSBhcyBudW1iZXIpID4gTnVtYmVyKGIpO1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVFlQRV9NSVNNQVRDSF9DT01QQVJJU09OLCBhVHlwZSwgYlR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChcbiAgICAoYVR5cGUgPT09IFwibnVtYmVyXCIgJiYgYlR5cGUgPT09IFwibnVtYmVyXCIpIHx8XG4gICAgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICApIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGEpIHx8IE51bWJlci5pc05hTihiKSlcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OQU5fQ09NUEFSSVNPTik7XG4gICAgcmV0dXJuIGEgPiBiO1xuICB9XG5cbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgaWYgKGlzTmFOKGEuZ2V0VGltZSgpKSB8fCBpc05hTihiLmdldFRpbWUoKSkpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuSU5WQUxJRF9EQVRFX0NPTVBBUklTT04pO1xuICAgIHJldHVybiBhLmdldFRpbWUoKSA+IGIuZ2V0VGltZSgpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBzZihcbiAgICAgIENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVU5TVVBQT1JURURfVFlQRVNfQ09NUEFSSVNPTixcbiAgICAgIGdldFR5cGVOYW1lKGEpLFxuICAgICAgZ2V0VHlwZU5hbWUoYilcbiAgICApXG4gICk7XG59XG4iXX0=
|
|
@@ -10,7 +10,7 @@ import { ModelConstructor } from "../model/types";
|
|
|
10
10
|
* @return {PropertyDecorator} A decorator function that can be applied to class properties
|
|
11
11
|
*
|
|
12
12
|
* @function required
|
|
13
|
-
* @category Decorators
|
|
13
|
+
* @category Property Decorators
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```typescript
|
|
@@ -35,7 +35,7 @@ export declare function required(message?: string): (target: any, propertyKey?:
|
|
|
35
35
|
* @return {PropertyDecorator} A decorator function that can be applied to class properties
|
|
36
36
|
*
|
|
37
37
|
* @function min
|
|
38
|
-
* @category Decorators
|
|
38
|
+
* @category Property Decorators
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* ```typescript
|
|
@@ -57,7 +57,7 @@ export declare function min(value: number | Date | string, message?: string): (t
|
|
|
57
57
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
|
|
58
58
|
*
|
|
59
59
|
* @function max
|
|
60
|
-
* @category Decorators
|
|
60
|
+
* @category Property Decorators
|
|
61
61
|
*/
|
|
62
62
|
export declare function max(value: number | Date | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
63
63
|
/**
|
|
@@ -68,7 +68,7 @@ export declare function max(value: number | Date | string, message?: string): (t
|
|
|
68
68
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
|
|
69
69
|
*
|
|
70
70
|
* @function step
|
|
71
|
-
* @category Decorators
|
|
71
|
+
* @category Property Decorators
|
|
72
72
|
*/
|
|
73
73
|
export declare function step(value: number, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
74
74
|
/**
|
|
@@ -79,7 +79,7 @@ export declare function step(value: number, message?: string): (target: any, pro
|
|
|
79
79
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
|
|
80
80
|
*
|
|
81
81
|
* @function minlength
|
|
82
|
-
* @category Decorators
|
|
82
|
+
* @category Property Decorators
|
|
83
83
|
*/
|
|
84
84
|
export declare function minlength(value: number, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
85
85
|
/**
|
|
@@ -90,7 +90,7 @@ export declare function minlength(value: number, message?: string): (target: any
|
|
|
90
90
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
|
|
91
91
|
*
|
|
92
92
|
* @function maxlength
|
|
93
|
-
* @category Decorators
|
|
93
|
+
* @category Property Decorators
|
|
94
94
|
*/
|
|
95
95
|
export declare function maxlength(value: number, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
96
96
|
/**
|
|
@@ -101,7 +101,7 @@ export declare function maxlength(value: number, message?: string): (target: any
|
|
|
101
101
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
|
|
102
102
|
*
|
|
103
103
|
* @function pattern
|
|
104
|
-
* @category Decorators
|
|
104
|
+
* @category Property Decorators
|
|
105
105
|
*/
|
|
106
106
|
export declare function pattern(value: RegExp | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
107
107
|
/**
|
|
@@ -111,7 +111,7 @@ export declare function pattern(value: RegExp | string, message?: string): (targ
|
|
|
111
111
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
|
|
112
112
|
*
|
|
113
113
|
* @function email
|
|
114
|
-
* @category Decorators
|
|
114
|
+
* @category Property Decorators
|
|
115
115
|
*/
|
|
116
116
|
export declare function email(message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
117
117
|
/**
|
|
@@ -121,7 +121,7 @@ export declare function email(message?: string): (target: any, propertyKey?: any
|
|
|
121
121
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
|
|
122
122
|
*
|
|
123
123
|
* @function url
|
|
124
|
-
* @category Decorators
|
|
124
|
+
* @category Property Decorators
|
|
125
125
|
*/
|
|
126
126
|
export declare function url(message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
127
127
|
/**
|
|
@@ -132,7 +132,7 @@ export declare function url(message?: string): (target: any, propertyKey?: any,
|
|
|
132
132
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
|
|
133
133
|
*
|
|
134
134
|
* @function type
|
|
135
|
-
* @category Decorators
|
|
135
|
+
* @category Property Decorators
|
|
136
136
|
*/
|
|
137
137
|
export declare function type(types: string[] | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
138
138
|
/**
|
|
@@ -146,7 +146,7 @@ export declare function type(types: string[] | string, message?: string): (targe
|
|
|
146
146
|
*
|
|
147
147
|
* @function date
|
|
148
148
|
*
|
|
149
|
-
* @category Decorators
|
|
149
|
+
* @category Property Decorators
|
|
150
150
|
*/
|
|
151
151
|
export declare function date(format?: string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
152
152
|
/**
|
|
@@ -158,7 +158,7 @@ export declare function date(format?: string, message?: string): (target: any, p
|
|
|
158
158
|
*
|
|
159
159
|
* @function password
|
|
160
160
|
*
|
|
161
|
-
* @category Decorators
|
|
161
|
+
* @category Property Decorators
|
|
162
162
|
*/
|
|
163
163
|
export declare function password(pattern?: RegExp, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
164
164
|
/**
|
|
@@ -171,7 +171,7 @@ export declare function password(pattern?: RegExp, message?: string): (target: a
|
|
|
171
171
|
*
|
|
172
172
|
* @function list
|
|
173
173
|
*
|
|
174
|
-
* @category Decorators
|
|
174
|
+
* @category Property Decorators
|
|
175
175
|
*/
|
|
176
176
|
export declare function list(clazz: ModelConstructor<any> | ModelConstructor<any>[], collection?: "Array" | "Set", message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
177
177
|
/**
|
|
@@ -183,7 +183,7 @@ export declare function list(clazz: ModelConstructor<any> | ModelConstructor<any
|
|
|
183
183
|
*
|
|
184
184
|
* @function set
|
|
185
185
|
*
|
|
186
|
-
* @category Decorators
|
|
186
|
+
* @category Property Decorators
|
|
187
187
|
*/
|
|
188
188
|
export declare function set(clazz: ModelConstructor<any>, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
189
189
|
/**
|
|
@@ -196,8 +196,7 @@ export declare function set(clazz: ModelConstructor<any>, message?: string): (ta
|
|
|
196
196
|
* @returns {PropertyDecorator} A property decorator used to register the equality validation metadata.
|
|
197
197
|
*
|
|
198
198
|
* @function eq
|
|
199
|
-
* @
|
|
200
|
-
* @category Decorators
|
|
199
|
+
* @category Property Decorators
|
|
201
200
|
*/
|
|
202
201
|
export declare function eq(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
203
202
|
/**
|
|
@@ -210,8 +209,7 @@ export declare function eq(propertyToCompare: string, message?: string): (target
|
|
|
210
209
|
* @returns {PropertyDecorator} A property decorator used to register the difference validation metadata.
|
|
211
210
|
*
|
|
212
211
|
* @function diff
|
|
213
|
-
* @
|
|
214
|
-
* @category Decorators
|
|
212
|
+
* @category Property Decorators
|
|
215
213
|
*/
|
|
216
214
|
export declare function diff(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
217
215
|
/**
|
|
@@ -224,8 +222,7 @@ export declare function diff(propertyToCompare: string, message?: string): (targ
|
|
|
224
222
|
* @returns {PropertyDecorator} A property decorator used to register the less than validation metadata.
|
|
225
223
|
*
|
|
226
224
|
* @function lt
|
|
227
|
-
* @
|
|
228
|
-
* @category Decorators
|
|
225
|
+
* @category Property Decorators
|
|
229
226
|
*/
|
|
230
227
|
export declare function lt(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
231
228
|
/**
|
|
@@ -238,8 +235,7 @@ export declare function lt(propertyToCompare: string, message?: string): (target
|
|
|
238
235
|
* @returns {PropertyDecorator} A property decorator used to register the less than or equal validation metadata.
|
|
239
236
|
*
|
|
240
237
|
* @function lte
|
|
241
|
-
* @
|
|
242
|
-
* @category Decorators
|
|
238
|
+
* @category Property Decorators
|
|
243
239
|
*/
|
|
244
240
|
export declare function lte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
245
241
|
/**
|
|
@@ -252,8 +248,7 @@ export declare function lte(propertyToCompare: string, message?: string): (targe
|
|
|
252
248
|
* @returns {PropertyDecorator} A property decorator used to register the greater than validation metadata.
|
|
253
249
|
*
|
|
254
250
|
* @function gt
|
|
255
|
-
* @
|
|
256
|
-
* @category Decorators
|
|
251
|
+
* @category Property Decorators
|
|
257
252
|
*/
|
|
258
253
|
export declare function gt(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
259
254
|
/**
|
|
@@ -266,7 +261,6 @@ export declare function gt(propertyToCompare: string, message?: string): (target
|
|
|
266
261
|
* @returns {PropertyDecorator} A property decorator used to register the greater than or equal validation metadata.
|
|
267
262
|
*
|
|
268
263
|
* @function gte
|
|
269
|
-
* @
|
|
270
|
-
* @category Decorators
|
|
264
|
+
* @category Property Decorators
|
|
271
265
|
*/
|
|
272
266
|
export declare function gte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|