@decaf-ts/decorator-validation 1.5.2 → 1.5.5
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/LICENSE.md +0 -0
- package/README.md +34 -108
- package/dist/decorator-validation.js +2 -0
- package/dist/decorator-validation.js.LICENSE.txt +14 -0
- package/dist/esm/decorator-validation.js +2 -0
- package/dist/esm/decorator-validation.js.LICENSE.txt +14 -0
- package/lib/esm/index.d.ts +42 -0
- package/lib/esm/index.js +44 -0
- package/lib/esm/model/Model.d.ts +138 -0
- package/lib/esm/model/Model.js +298 -0
- package/lib/esm/model/ModelErrorDefinition.d.ts +22 -0
- package/lib/esm/model/ModelErrorDefinition.js +54 -0
- package/lib/esm/model/Registry.d.ts +59 -0
- package/lib/esm/model/Registry.js +75 -0
- package/lib/esm/model/constants.d.ts +56 -0
- package/lib/esm/model/constants.js +71 -0
- package/lib/esm/model/construction.d.ts +29 -0
- package/lib/esm/model/construction.js +65 -0
- package/lib/esm/model/decorators.d.ts +25 -0
- package/lib/esm/model/decorators.js +64 -0
- package/lib/esm/model/index.d.ts +9 -0
- package/lib/esm/model/index.js +11 -0
- package/lib/esm/model/types.d.ts +79 -0
- package/lib/esm/model/types.js +3 -0
- package/lib/esm/model/utils.d.ts +11 -0
- package/lib/esm/model/utils.js +27 -0
- package/lib/esm/model/validation.d.ts +14 -0
- package/lib/esm/model/validation.js +137 -0
- package/lib/esm/utils/constants.d.ts +26 -0
- package/lib/esm/utils/constants.js +29 -0
- package/lib/esm/utils/dates.d.ts +76 -0
- package/lib/esm/utils/dates.js +245 -0
- package/lib/esm/utils/decorators.d.ts +2 -0
- package/lib/esm/utils/decorators.js +20 -0
- package/lib/esm/utils/hashing.d.ts +52 -0
- package/lib/esm/utils/hashing.js +101 -0
- package/lib/esm/utils/index.d.ts +7 -0
- package/lib/esm/utils/index.js +9 -0
- package/lib/esm/utils/registry.d.ts +68 -0
- package/lib/esm/utils/registry.js +3 -0
- package/lib/esm/utils/serialization.d.ts +79 -0
- package/lib/esm/utils/serialization.js +90 -0
- package/lib/esm/utils/strings.d.ts +25 -0
- package/lib/esm/utils/strings.js +33 -0
- package/lib/esm/validation/Validation.d.ts +51 -0
- package/lib/esm/validation/Validation.js +73 -0
- package/lib/esm/validation/Validators/DateValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/DateValidator.js +56 -0
- package/lib/esm/validation/Validators/EmailValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/EmailValidator.js +52 -0
- package/lib/esm/validation/Validators/ListValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/ListValidator.js +69 -0
- package/lib/esm/validation/Validators/MaxLengthValidator.d.ts +29 -0
- package/lib/esm/validation/Validators/MaxLengthValidator.js +54 -0
- package/lib/esm/validation/Validators/MaxValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/MaxValidator.js +59 -0
- package/lib/esm/validation/Validators/MinLengthValidator.d.ts +29 -0
- package/lib/esm/validation/Validators/MinLengthValidator.js +54 -0
- package/lib/esm/validation/Validators/MinValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/MinValidator.js +59 -0
- package/lib/esm/validation/Validators/PasswordValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/PasswordValidator.js +52 -0
- package/lib/esm/validation/Validators/PatternValidator.d.ts +37 -0
- package/lib/esm/validation/Validators/PatternValidator.js +72 -0
- package/lib/esm/validation/Validators/RequiredValidator.d.ts +28 -0
- package/lib/esm/validation/Validators/RequiredValidator.js +59 -0
- package/lib/esm/validation/Validators/StepValidator.d.ts +29 -0
- package/lib/esm/validation/Validators/StepValidator.js +54 -0
- package/lib/esm/validation/Validators/TypeValidator.d.ts +25 -0
- package/lib/esm/validation/Validators/TypeValidator.js +62 -0
- package/lib/esm/validation/Validators/URLValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/URLValidator.js +51 -0
- package/lib/esm/validation/Validators/Validator.d.ts +41 -0
- package/lib/esm/validation/Validators/Validator.js +49 -0
- package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +47 -0
- package/lib/esm/validation/Validators/ValidatorRegistry.js +82 -0
- package/lib/esm/validation/Validators/constants.d.ts +96 -0
- package/lib/esm/validation/Validators/constants.js +136 -0
- package/lib/esm/validation/Validators/decorators.d.ts +12 -0
- package/lib/esm/validation/Validators/decorators.js +27 -0
- package/lib/esm/validation/Validators/index.d.ts +52 -0
- package/lib/esm/validation/Validators/index.js +54 -0
- package/lib/esm/validation/Validators/types.d.ts +88 -0
- package/lib/esm/validation/Validators/types.js +3 -0
- package/lib/esm/validation/decorators.d.ts +178 -0
- package/lib/esm/validation/decorators.js +290 -0
- package/lib/esm/validation/index.d.ts +4 -0
- package/lib/esm/validation/index.js +6 -0
- package/lib/esm/validation/types.d.ts +46 -0
- package/lib/esm/validation/types.js +3 -0
- package/lib/index.cjs +61 -0
- package/lib/index.d.ts +42 -0
- package/lib/model/Model.cjs +302 -0
- package/lib/model/Model.d.ts +138 -0
- package/lib/model/ModelErrorDefinition.cjs +58 -0
- package/lib/model/ModelErrorDefinition.d.ts +22 -0
- package/lib/model/Registry.cjs +80 -0
- package/lib/model/Registry.d.ts +59 -0
- package/lib/model/constants.cjs +74 -0
- package/lib/model/constants.d.ts +56 -0
- package/lib/model/construction.cjs +70 -0
- package/lib/model/construction.d.ts +29 -0
- package/lib/model/decorators.cjs +69 -0
- package/lib/model/decorators.d.ts +25 -0
- package/lib/model/index.cjs +27 -0
- package/lib/model/index.d.ts +9 -0
- package/lib/model/types.cjs +4 -0
- package/lib/model/types.d.ts +79 -0
- package/lib/model/utils.cjs +31 -0
- package/lib/model/utils.d.ts +11 -0
- package/lib/model/validation.cjs +140 -0
- package/lib/model/validation.d.ts +14 -0
- package/lib/utils/constants.cjs +32 -0
- package/lib/utils/constants.d.ts +26 -0
- package/lib/utils/dates.cjs +253 -0
- package/lib/utils/dates.d.ts +76 -0
- package/lib/utils/decorators.cjs +24 -0
- package/lib/utils/decorators.d.ts +2 -0
- package/lib/utils/hashing.cjs +108 -0
- package/lib/utils/hashing.d.ts +52 -0
- package/lib/utils/index.cjs +25 -0
- package/lib/utils/index.d.ts +7 -0
- package/lib/utils/registry.cjs +4 -0
- package/lib/utils/registry.d.ts +68 -0
- package/lib/utils/serialization.cjs +95 -0
- package/lib/utils/serialization.d.ts +79 -0
- package/lib/utils/strings.cjs +37 -0
- package/lib/utils/strings.d.ts +25 -0
- package/lib/validation/Validation.cjs +77 -0
- package/lib/validation/Validation.d.ts +51 -0
- package/lib/validation/Validators/DateValidator.cjs +59 -0
- package/lib/validation/Validators/DateValidator.d.ts +28 -0
- package/lib/validation/Validators/EmailValidator.cjs +55 -0
- package/lib/validation/Validators/EmailValidator.d.ts +28 -0
- package/lib/validation/Validators/ListValidator.cjs +72 -0
- package/lib/validation/Validators/ListValidator.d.ts +28 -0
- package/lib/validation/Validators/MaxLengthValidator.cjs +57 -0
- package/lib/validation/Validators/MaxLengthValidator.d.ts +29 -0
- package/lib/validation/Validators/MaxValidator.cjs +62 -0
- package/lib/validation/Validators/MaxValidator.d.ts +28 -0
- package/lib/validation/Validators/MinLengthValidator.cjs +57 -0
- package/lib/validation/Validators/MinLengthValidator.d.ts +29 -0
- package/lib/validation/Validators/MinValidator.cjs +62 -0
- package/lib/validation/Validators/MinValidator.d.ts +28 -0
- package/lib/validation/Validators/PasswordValidator.cjs +55 -0
- package/lib/validation/Validators/PasswordValidator.d.ts +28 -0
- package/lib/validation/Validators/PatternValidator.cjs +75 -0
- package/lib/validation/Validators/PatternValidator.d.ts +37 -0
- package/lib/validation/Validators/RequiredValidator.cjs +62 -0
- package/lib/validation/Validators/RequiredValidator.d.ts +28 -0
- package/lib/validation/Validators/StepValidator.cjs +57 -0
- package/lib/validation/Validators/StepValidator.d.ts +29 -0
- package/lib/validation/Validators/TypeValidator.cjs +65 -0
- package/lib/validation/Validators/TypeValidator.d.ts +25 -0
- package/lib/validation/Validators/URLValidator.cjs +54 -0
- package/lib/validation/Validators/URLValidator.d.ts +27 -0
- package/lib/validation/Validators/Validator.cjs +53 -0
- package/lib/validation/Validators/Validator.d.ts +41 -0
- package/lib/validation/Validators/ValidatorRegistry.cjs +87 -0
- package/lib/validation/Validators/ValidatorRegistry.d.ts +47 -0
- package/lib/validation/Validators/constants.cjs +139 -0
- package/lib/validation/Validators/constants.d.ts +96 -0
- package/lib/validation/Validators/decorators.cjs +30 -0
- package/lib/validation/Validators/decorators.d.ts +12 -0
- package/lib/validation/Validators/index.cjs +71 -0
- package/lib/validation/Validators/index.d.ts +52 -0
- package/lib/validation/Validators/types.d.ts +88 -0
- package/lib/validation/decorators.cjs +306 -0
- package/lib/validation/decorators.d.ts +178 -0
- package/lib/validation/index.cjs +22 -0
- package/lib/validation/index.d.ts +4 -0
- package/lib/validation/types.cjs +4 -0
- package/lib/validation/types.d.ts +46 -0
- package/package.json +18 -13
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DEFAULT_ERROR_MESSAGES } from "./constants";
|
|
2
|
+
import { sf } from "../../utils/strings";
|
|
3
|
+
import { Reflection } from "@decaf-ts/reflection";
|
|
4
|
+
/**
|
|
5
|
+
* @summary Base Implementation for Validators
|
|
6
|
+
* @description Provides the underlying functionality for {@link Validator}s
|
|
7
|
+
*
|
|
8
|
+
* @param {string} validationKey the key to register the validator under
|
|
9
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DEFAULT}
|
|
10
|
+
* @param {string[]} [acceptedTypes] defines the value types this validator can validate
|
|
11
|
+
*
|
|
12
|
+
* @class Validator
|
|
13
|
+
* @abstract
|
|
14
|
+
* @category Validators
|
|
15
|
+
*/
|
|
16
|
+
export class Validator {
|
|
17
|
+
constructor(message = DEFAULT_ERROR_MESSAGES.DEFAULT, ...acceptedTypes) {
|
|
18
|
+
this.message = message;
|
|
19
|
+
if (acceptedTypes.length)
|
|
20
|
+
this.acceptedTypes = acceptedTypes;
|
|
21
|
+
if (this.acceptedTypes)
|
|
22
|
+
this.hasErrors = this.checkTypeAndHasErrors(this.hasErrors.bind(this));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @summary builds the error message
|
|
26
|
+
* @param {string} message
|
|
27
|
+
* @param {any[]} args
|
|
28
|
+
* @protected
|
|
29
|
+
*/
|
|
30
|
+
getMessage(message, ...args) {
|
|
31
|
+
return sf(message, ...args);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @summary Validates type
|
|
35
|
+
* @param {any} unbound
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
checkTypeAndHasErrors(unbound) {
|
|
39
|
+
return function (value, ...args) {
|
|
40
|
+
if (value === undefined || !this.acceptedTypes)
|
|
41
|
+
return unbound(value, ...args);
|
|
42
|
+
if (!Reflection.checkTypes(value, this.acceptedTypes))
|
|
43
|
+
return this.getMessage(DEFAULT_ERROR_MESSAGES.TYPE, this.acceptedTypes.join(", "), typeof value);
|
|
44
|
+
return unbound(value, ...args);
|
|
45
|
+
}.bind(this);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFnQixTQUFTO0lBSTdCLFlBQ0UsVUFBa0Isc0JBQXNCLENBQUMsT0FBTyxFQUNoRCxHQUFHLGFBQXVCO1FBRTFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksYUFBYSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sVUFBVSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEQsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FDM0IsT0FBMkQ7UUFFM0QsT0FBTyxVQUVMLEtBQVUsRUFDVixHQUFHLElBQVc7WUFFZCxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFDNUMsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsc0JBQXNCLENBQUMsSUFBSSxFQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDN0IsT0FBTyxLQUFLLENBQ2IsQ0FBQztZQUNKLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDO0NBWUYiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1ZhbGlkYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfRVJST1JfTUVTU0FHRVMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRvck9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEJhc2UgSW1wbGVtZW50YXRpb24gZm9yIFZhbGlkYXRvcnNcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbmFsaXR5IGZvciB7QGxpbmsgVmFsaWRhdG9yfXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsaWRhdGlvbktleSB0aGUga2V5IHRvIHJlZ2lzdGVyIHRoZSB2YWxpZGF0b3IgdW5kZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0RFRkFVTFR9XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbYWNjZXB0ZWRUeXBlc10gZGVmaW5lcyB0aGUgdmFsdWUgdHlwZXMgdGhpcyB2YWxpZGF0b3IgY2FuIHZhbGlkYXRlXG4gKlxuICogQGNsYXNzIFZhbGlkYXRvclxuICogQGFic3RyYWN0XG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmFsaWRhdG9yPFYgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zID0gVmFsaWRhdG9yT3B0aW9ucz4ge1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY2VwdGVkVHlwZXM/OiBzdHJpbmdbXTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5ERUZBVUxULFxuICAgIC4uLmFjY2VwdGVkVHlwZXM6IHN0cmluZ1tdXG4gICkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoYWNjZXB0ZWRUeXBlcy5sZW5ndGgpIHRoaXMuYWNjZXB0ZWRUeXBlcyA9IGFjY2VwdGVkVHlwZXM7XG4gICAgaWYgKHRoaXMuYWNjZXB0ZWRUeXBlcylcbiAgICAgIHRoaXMuaGFzRXJyb3JzID0gdGhpcy5jaGVja1R5cGVBbmRIYXNFcnJvcnModGhpcy5oYXNFcnJvcnMuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgYnVpbGRzIHRoZSBlcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBzZihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdHlwZVxuICAgKiBAcGFyYW0ge2FueX0gdW5ib3VuZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1R5cGVBbmRIYXNFcnJvcnMoXG4gICAgdW5ib3VuZDogKHZhbHVlOiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICAgIHRoaXM6IFZhbGlkYXRvcixcbiAgICAgIHZhbHVlOiBhbnksXG4gICAgICAuLi5hcmdzOiBhbnlbXVxuICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5hY2NlcHRlZFR5cGVzKVxuICAgICAgICByZXR1cm4gdW5ib3VuZCh2YWx1ZSwgLi4uYXJncyk7XG4gICAgICBpZiAoIVJlZmxlY3Rpb24uY2hlY2tUeXBlcyh2YWx1ZSwgdGhpcy5hY2NlcHRlZFR5cGVzKSlcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVzc2FnZShcbiAgICAgICAgICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEUsXG4gICAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLmpvaW4oXCIsIFwiKSxcbiAgICAgICAgICB0eXBlb2YgdmFsdWVcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiB1bmJvdW5kKHZhbHVlLCAuLi5hcmdzKTtcbiAgICB9LmJpbmQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGFuIGF0dHJpYnV0ZVxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAgICogQHBhcmFtIHtWYWxpZGF0b3JPcHRpb25zfSBbb3B0aW9uc10gVmFsaWRhdGUgb3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIG1vZGVsIHZhbGlkYXRpb24gYmVoYXZpb3JcbiAgICpcbiAgICogQGFic3RyYWN0XG4gICAqXG4gICAqIEBzZWUgTW9kZWwjaGFzRXJyb3JzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaGFzRXJyb3JzKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBWKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ValidatorDefinition } from "./types";
|
|
2
|
+
import { IValidatorRegistry } from "./types";
|
|
3
|
+
import type { Validator } from "./Validator";
|
|
4
|
+
/**
|
|
5
|
+
* @summary Duck typing for Validators
|
|
6
|
+
* @function isValidator
|
|
7
|
+
* @param val
|
|
8
|
+
*/
|
|
9
|
+
export declare function isValidator(val: any): any;
|
|
10
|
+
/**
|
|
11
|
+
* @summary Base Implementation of a Validator Registry
|
|
12
|
+
*
|
|
13
|
+
* @prop {Validator[]} [validators] the initial validators to register
|
|
14
|
+
*
|
|
15
|
+
* @class ValidatorRegistry
|
|
16
|
+
* @implements IValidatorRegistry<T>
|
|
17
|
+
*
|
|
18
|
+
* @category Validation
|
|
19
|
+
*/
|
|
20
|
+
export declare class ValidatorRegistry<T extends Validator> implements IValidatorRegistry<T> {
|
|
21
|
+
private cache;
|
|
22
|
+
private customKeyCache;
|
|
23
|
+
constructor(...validators: (ValidatorDefinition | Validator)[]);
|
|
24
|
+
/**
|
|
25
|
+
* @summary retrieves the custom keys
|
|
26
|
+
*/
|
|
27
|
+
getCustomKeys(): {
|
|
28
|
+
[indexer: string]: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* @summary retrieves the registered validators keys
|
|
32
|
+
*/
|
|
33
|
+
getKeys(): string[];
|
|
34
|
+
/**
|
|
35
|
+
* @summary Retrieves a validator
|
|
36
|
+
*
|
|
37
|
+
* @param {string} validatorKey one of the {@link ValidationKeys}
|
|
38
|
+
* @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
|
|
39
|
+
*/
|
|
40
|
+
get<T extends Validator>(validatorKey: string): T | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* @summary Registers the provided validators onto the registry
|
|
43
|
+
*
|
|
44
|
+
* @param {T[] | ValidatorDefinition[]} validator
|
|
45
|
+
*/
|
|
46
|
+
register<T extends Validator>(...validator: (ValidatorDefinition | T)[]): void;
|
|
47
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @summary Duck typing for Validators
|
|
3
|
+
* @function isValidator
|
|
4
|
+
* @param val
|
|
5
|
+
*/
|
|
6
|
+
export function isValidator(val) {
|
|
7
|
+
return val.constructor && val["hasErrors"];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @summary Base Implementation of a Validator Registry
|
|
11
|
+
*
|
|
12
|
+
* @prop {Validator[]} [validators] the initial validators to register
|
|
13
|
+
*
|
|
14
|
+
* @class ValidatorRegistry
|
|
15
|
+
* @implements IValidatorRegistry<T>
|
|
16
|
+
*
|
|
17
|
+
* @category Validation
|
|
18
|
+
*/
|
|
19
|
+
export class ValidatorRegistry {
|
|
20
|
+
constructor(...validators) {
|
|
21
|
+
this.cache = {};
|
|
22
|
+
this.customKeyCache = {};
|
|
23
|
+
this.register(...validators);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @summary retrieves the custom keys
|
|
27
|
+
*/
|
|
28
|
+
getCustomKeys() {
|
|
29
|
+
return Object.assign({}, this.customKeyCache);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @summary retrieves the registered validators keys
|
|
33
|
+
*/
|
|
34
|
+
getKeys() {
|
|
35
|
+
return Object.keys(this.cache);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @summary Retrieves a validator
|
|
39
|
+
*
|
|
40
|
+
* @param {string} validatorKey one of the {@link ValidationKeys}
|
|
41
|
+
* @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
|
|
42
|
+
*/
|
|
43
|
+
get(validatorKey) {
|
|
44
|
+
if (!(validatorKey in this.cache))
|
|
45
|
+
return undefined;
|
|
46
|
+
const classOrInstance = this.cache[validatorKey];
|
|
47
|
+
if (isValidator(classOrInstance))
|
|
48
|
+
return classOrInstance;
|
|
49
|
+
const constructor = classOrInstance.default || classOrInstance;
|
|
50
|
+
const instance = new constructor();
|
|
51
|
+
this.cache[validatorKey] = instance;
|
|
52
|
+
return instance;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @summary Registers the provided validators onto the registry
|
|
56
|
+
*
|
|
57
|
+
* @param {T[] | ValidatorDefinition[]} validator
|
|
58
|
+
*/
|
|
59
|
+
register(...validator) {
|
|
60
|
+
validator.forEach((v) => {
|
|
61
|
+
if (isValidator(v)) {
|
|
62
|
+
// const k =
|
|
63
|
+
if (v.validationKey in this.cache)
|
|
64
|
+
return;
|
|
65
|
+
this.cache[v.validationKey] = v;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const { validationKey, validator, save } = v;
|
|
69
|
+
if (validationKey in this.cache)
|
|
70
|
+
return;
|
|
71
|
+
this.cache[validationKey] = validator;
|
|
72
|
+
if (!save)
|
|
73
|
+
return;
|
|
74
|
+
const obj = {};
|
|
75
|
+
obj[validationKey.toUpperCase()] = validationKey;
|
|
76
|
+
this.customKeyCache = Object.assign({}, this.customKeyCache, obj);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yUmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBUTtJQUNsQyxPQUFPLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBQVksR0FBRyxVQUErQztRQUh0RCxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBSXRCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFzQixZQUFvQjtRQUMzQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRXBELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDO1lBQUUsT0FBTyxlQUFvQixDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQ04sR0FBRyxTQUFzQztRQUV6QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsWUFBWTtnQkFFWixJQUFLLENBQXlCLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQ25FLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBeUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLENBQXdCLENBQUM7Z0JBQ3BFLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUNsQixNQUFNLEdBQUcsR0FBMkIsRUFBRSxDQUFDO2dCQUN2QyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO2dCQUVqRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9WYWxpZGF0b3JSZWdpc3RyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgSVZhbGlkYXRvclJlZ2lzdHJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgRHVjayB0eXBpbmcgZm9yIFZhbGlkYXRvcnNcbiAqIEBmdW5jdGlvbiBpc1ZhbGlkYXRvclxuICogQHBhcmFtIHZhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZGF0b3IodmFsOiBhbnkpIHtcbiAgcmV0dXJuIHZhbC5jb25zdHJ1Y3RvciAmJiB2YWxbXCJoYXNFcnJvcnNcIl07XG59XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzZSBJbXBsZW1lbnRhdGlvbiBvZiBhIFZhbGlkYXRvciBSZWdpc3RyeVxuICpcbiAqIEBwcm9wIHtWYWxpZGF0b3JbXX0gW3ZhbGlkYXRvcnNdIHRoZSBpbml0aWFsIHZhbGlkYXRvcnMgdG8gcmVnaXN0ZXJcbiAqXG4gKiBAY2xhc3MgVmFsaWRhdG9yUmVnaXN0cnlcbiAqIEBpbXBsZW1lbnRzIElWYWxpZGF0b3JSZWdpc3RyeTxUPlxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JSZWdpc3RyeTxUIGV4dGVuZHMgVmFsaWRhdG9yPlxuICBpbXBsZW1lbnRzIElWYWxpZGF0b3JSZWdpc3RyeTxUPlxue1xuICBwcml2YXRlIGNhY2hlOiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSBjdXN0b21LZXlDYWNoZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvciguLi52YWxpZGF0b3JzOiAoVmFsaWRhdG9yRGVmaW5pdGlvbiB8IFZhbGlkYXRvcilbXSkge1xuICAgIHRoaXMuY3VzdG9tS2V5Q2FjaGUgPSB7fTtcbiAgICB0aGlzLnJlZ2lzdGVyKC4uLnZhbGlkYXRvcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgY3VzdG9tIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogeyBbaW5kZXhlcjogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmN1c3RvbUtleUNhY2hlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZXRyaWV2ZXMgdGhlIHJlZ2lzdGVyZWQgdmFsaWRhdG9ycyBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jYWNoZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGEgdmFsaWRhdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxpZGF0b3JLZXkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1ZhbGlkYXRvciB8IHVuZGVmaW5lZH0gdGhlIHJlZ2lzdGVyZWQgVmFsaWRhdG9yIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBub25vIG1hdGNoaW5nIHRoZSBwcm92aWRlZCBrZXlcbiAgICovXG4gIGdldDxUIGV4dGVuZHMgVmFsaWRhdG9yPih2YWxpZGF0b3JLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghKHZhbGlkYXRvcktleSBpbiB0aGlzLmNhY2hlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNsYXNzT3JJbnN0YW5jZSA9IHRoaXMuY2FjaGVbdmFsaWRhdG9yS2V5XTtcbiAgICBpZiAoaXNWYWxpZGF0b3IoY2xhc3NPckluc3RhbmNlKSkgcmV0dXJuIGNsYXNzT3JJbnN0YW5jZSBhcyBUO1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gY2xhc3NPckluc3RhbmNlLmRlZmF1bHQgfHwgY2xhc3NPckluc3RhbmNlO1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyB0aGUgcHJvdmlkZWQgdmFsaWRhdG9ycyBvbnRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge1RbXSB8IFZhbGlkYXRvckRlZmluaXRpb25bXX0gdmFsaWRhdG9yXG4gICAqL1xuICByZWdpc3RlcjxUIGV4dGVuZHMgVmFsaWRhdG9yPihcbiAgICAuLi52YWxpZGF0b3I6IChWYWxpZGF0b3JEZWZpbml0aW9uIHwgVClbXVxuICApOiB2b2lkIHtcbiAgICB2YWxpZGF0b3IuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKGlzVmFsaWRhdG9yKHYpKSB7XG4gICAgICAgIC8vIGNvbnN0IGsgPVxuXG4gICAgICAgIGlmICgodiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKS52YWxpZGF0aW9uS2V5IGluIHRoaXMuY2FjaGUpIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWNoZVsodiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKS52YWxpZGF0aW9uS2V5XSA9IHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb25LZXksIHZhbGlkYXRvciwgc2F2ZSB9ID0gdiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uO1xuICAgICAgICBpZiAodmFsaWRhdGlvbktleSBpbiB0aGlzLmNhY2hlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2FjaGVbdmFsaWRhdGlvbktleV0gPSB2YWxpZGF0b3I7XG4gICAgICAgIGlmICghc2F2ZSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgb2JqW3ZhbGlkYXRpb25LZXkudG9VcHBlckNhc2UoKV0gPSB2YWxpZGF0aW9uS2V5O1xuXG4gICAgICAgIHRoaXMuY3VzdG9tS2V5Q2FjaGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmN1c3RvbUtleUNhY2hlLCBvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @summary The keys used for validation
|
|
3
|
+
*
|
|
4
|
+
* @property {string} REFLECT prefixes others
|
|
5
|
+
* @property {string} REQUIRED sets as required
|
|
6
|
+
* @property {string} MIN defines min value
|
|
7
|
+
* @property {string} MAX defines max value
|
|
8
|
+
* @property {string} STEP defines step
|
|
9
|
+
* @property {string} MIN_LENGTH defines min length
|
|
10
|
+
* @property {string} MAX_LENGTH defines max length
|
|
11
|
+
* @property {string} PATTERN defines pattern
|
|
12
|
+
* @property {string} EMAIL defines email
|
|
13
|
+
* @property {string} URL defines url
|
|
14
|
+
* @property {string} DATE defines date
|
|
15
|
+
* @property {string} TYPE defines type
|
|
16
|
+
* @property {string} PASSWORD defines password
|
|
17
|
+
* @property {string} LIST defines list
|
|
18
|
+
*
|
|
19
|
+
* @constant ValidationKeys
|
|
20
|
+
* @memberOf module:decorator-validation.Validation
|
|
21
|
+
* @category Validation
|
|
22
|
+
*/
|
|
23
|
+
export declare const ValidationKeys: {
|
|
24
|
+
REFLECT: string;
|
|
25
|
+
VALIDATOR: string;
|
|
26
|
+
REQUIRED: string;
|
|
27
|
+
MIN: string;
|
|
28
|
+
MAX: string;
|
|
29
|
+
STEP: string;
|
|
30
|
+
MIN_LENGTH: string;
|
|
31
|
+
MAX_LENGTH: string;
|
|
32
|
+
PATTERN: string;
|
|
33
|
+
EMAIL: string;
|
|
34
|
+
URL: string;
|
|
35
|
+
DATE: string;
|
|
36
|
+
TYPE: string;
|
|
37
|
+
PASSWORD: string;
|
|
38
|
+
LIST: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @summary list of month names
|
|
42
|
+
* @description Stores month names. Can be changed for localization purposes
|
|
43
|
+
*
|
|
44
|
+
* @constant MONTH_NAMES
|
|
45
|
+
* @memberOf module:decorator-validation.Validation
|
|
46
|
+
* @category Validation
|
|
47
|
+
*/
|
|
48
|
+
export declare const MONTH_NAMES: string[];
|
|
49
|
+
/**
|
|
50
|
+
* @summary list of names of days of the week
|
|
51
|
+
* @description Stores names for days of the week. Can be changed for localization purposes
|
|
52
|
+
*
|
|
53
|
+
* @constant DAYS_OF_WEEK_NAMES
|
|
54
|
+
* @memberOf module:decorator-validation.Validation
|
|
55
|
+
* @category Validation
|
|
56
|
+
*/
|
|
57
|
+
export declare const DAYS_OF_WEEK_NAMES: string[];
|
|
58
|
+
/**
|
|
59
|
+
* @summary Defines the default error messages
|
|
60
|
+
*
|
|
61
|
+
* @property {string} REQUIRED default error message
|
|
62
|
+
* @property {string} MIN default error message
|
|
63
|
+
* @property {string} MAX default error message
|
|
64
|
+
* @property {string} MIN_LENGTH default error message
|
|
65
|
+
* @property {string} MAX_LENGTH default error message
|
|
66
|
+
* @property {string} PATTERN default error message
|
|
67
|
+
* @property {string} EMAIL default error message
|
|
68
|
+
* @property {string} URL default error message
|
|
69
|
+
* @property {string} TYPE default error message
|
|
70
|
+
* @property {string} STEP default error message
|
|
71
|
+
* @property {string} DATE default error message
|
|
72
|
+
* @property {string} DEFAULT default error message
|
|
73
|
+
* @property {string} PASSWORD default error message
|
|
74
|
+
* @property {string} LIST default error message
|
|
75
|
+
* @property {string} LIST_INSIDE default error message
|
|
76
|
+
* @property {string} MODEL_NOT_FOUND default error message
|
|
77
|
+
*
|
|
78
|
+
* @constant DEFAULT_ERROR_MESSAGES
|
|
79
|
+
* @memberOf module:decorator-validation.Validation
|
|
80
|
+
* @category Validation
|
|
81
|
+
*/
|
|
82
|
+
export declare const DEFAULT_ERROR_MESSAGES: Record<string, string>;
|
|
83
|
+
/**
|
|
84
|
+
* @summary Defines the various default regexp patterns used
|
|
85
|
+
*
|
|
86
|
+
* @enum DEFAULT_PATTERNS
|
|
87
|
+
* @memberOf module:decorator-validation.Validation
|
|
88
|
+
* @category Validation
|
|
89
|
+
*/
|
|
90
|
+
export declare const DEFAULT_PATTERNS: {
|
|
91
|
+
EMAIL: RegExp;
|
|
92
|
+
URL: RegExp;
|
|
93
|
+
PASSWORD: {
|
|
94
|
+
CHAR8_ONE_OF_EACH: RegExp;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { ModelKeys } from "../../utils/constants";
|
|
2
|
+
/**
|
|
3
|
+
* @summary The keys used for validation
|
|
4
|
+
*
|
|
5
|
+
* @property {string} REFLECT prefixes others
|
|
6
|
+
* @property {string} REQUIRED sets as required
|
|
7
|
+
* @property {string} MIN defines min value
|
|
8
|
+
* @property {string} MAX defines max value
|
|
9
|
+
* @property {string} STEP defines step
|
|
10
|
+
* @property {string} MIN_LENGTH defines min length
|
|
11
|
+
* @property {string} MAX_LENGTH defines max length
|
|
12
|
+
* @property {string} PATTERN defines pattern
|
|
13
|
+
* @property {string} EMAIL defines email
|
|
14
|
+
* @property {string} URL defines url
|
|
15
|
+
* @property {string} DATE defines date
|
|
16
|
+
* @property {string} TYPE defines type
|
|
17
|
+
* @property {string} PASSWORD defines password
|
|
18
|
+
* @property {string} LIST defines list
|
|
19
|
+
*
|
|
20
|
+
* @constant ValidationKeys
|
|
21
|
+
* @memberOf module:decorator-validation.Validation
|
|
22
|
+
* @category Validation
|
|
23
|
+
*/
|
|
24
|
+
export const ValidationKeys = {
|
|
25
|
+
REFLECT: `${ModelKeys.REFLECT}validation.`,
|
|
26
|
+
VALIDATOR: "validator",
|
|
27
|
+
REQUIRED: "required",
|
|
28
|
+
MIN: "min",
|
|
29
|
+
MAX: "max",
|
|
30
|
+
STEP: "step",
|
|
31
|
+
MIN_LENGTH: "minlength",
|
|
32
|
+
MAX_LENGTH: "maxlength",
|
|
33
|
+
PATTERN: "pattern",
|
|
34
|
+
EMAIL: "email",
|
|
35
|
+
URL: "url",
|
|
36
|
+
DATE: "date",
|
|
37
|
+
TYPE: "type",
|
|
38
|
+
PASSWORD: "password",
|
|
39
|
+
LIST: "list",
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* @summary list of month names
|
|
43
|
+
* @description Stores month names. Can be changed for localization purposes
|
|
44
|
+
*
|
|
45
|
+
* @constant MONTH_NAMES
|
|
46
|
+
* @memberOf module:decorator-validation.Validation
|
|
47
|
+
* @category Validation
|
|
48
|
+
*/
|
|
49
|
+
export const MONTH_NAMES = [
|
|
50
|
+
"January",
|
|
51
|
+
"February",
|
|
52
|
+
"March",
|
|
53
|
+
"April",
|
|
54
|
+
"May",
|
|
55
|
+
"June",
|
|
56
|
+
"July",
|
|
57
|
+
"August",
|
|
58
|
+
"September",
|
|
59
|
+
"October",
|
|
60
|
+
"November",
|
|
61
|
+
"December",
|
|
62
|
+
];
|
|
63
|
+
/**
|
|
64
|
+
* @summary list of names of days of the week
|
|
65
|
+
* @description Stores names for days of the week. Can be changed for localization purposes
|
|
66
|
+
*
|
|
67
|
+
* @constant DAYS_OF_WEEK_NAMES
|
|
68
|
+
* @memberOf module:decorator-validation.Validation
|
|
69
|
+
* @category Validation
|
|
70
|
+
*/
|
|
71
|
+
export const DAYS_OF_WEEK_NAMES = [
|
|
72
|
+
"Sunday",
|
|
73
|
+
"Monday",
|
|
74
|
+
"Tuesday",
|
|
75
|
+
"Wednesday",
|
|
76
|
+
"Thursday",
|
|
77
|
+
"Friday",
|
|
78
|
+
"Saturday",
|
|
79
|
+
];
|
|
80
|
+
/**
|
|
81
|
+
* @summary Defines the default error messages
|
|
82
|
+
*
|
|
83
|
+
* @property {string} REQUIRED default error message
|
|
84
|
+
* @property {string} MIN default error message
|
|
85
|
+
* @property {string} MAX default error message
|
|
86
|
+
* @property {string} MIN_LENGTH default error message
|
|
87
|
+
* @property {string} MAX_LENGTH default error message
|
|
88
|
+
* @property {string} PATTERN default error message
|
|
89
|
+
* @property {string} EMAIL default error message
|
|
90
|
+
* @property {string} URL default error message
|
|
91
|
+
* @property {string} TYPE default error message
|
|
92
|
+
* @property {string} STEP default error message
|
|
93
|
+
* @property {string} DATE default error message
|
|
94
|
+
* @property {string} DEFAULT default error message
|
|
95
|
+
* @property {string} PASSWORD default error message
|
|
96
|
+
* @property {string} LIST default error message
|
|
97
|
+
* @property {string} LIST_INSIDE default error message
|
|
98
|
+
* @property {string} MODEL_NOT_FOUND default error message
|
|
99
|
+
*
|
|
100
|
+
* @constant DEFAULT_ERROR_MESSAGES
|
|
101
|
+
* @memberOf module:decorator-validation.Validation
|
|
102
|
+
* @category Validation
|
|
103
|
+
*/
|
|
104
|
+
export const DEFAULT_ERROR_MESSAGES = {
|
|
105
|
+
REQUIRED: "This field is required",
|
|
106
|
+
MIN: "The minimum value is {0}",
|
|
107
|
+
MAX: "The maximum value is {0}",
|
|
108
|
+
MIN_LENGTH: "The minimum length is {0}",
|
|
109
|
+
MAX_LENGTH: "The maximum length is {0}",
|
|
110
|
+
PATTERN: "The value does not match the pattern",
|
|
111
|
+
EMAIL: "The value is not a valid email",
|
|
112
|
+
URL: "The value is not a valid URL",
|
|
113
|
+
TYPE: "Invalid type. Expected {0}, received {1}",
|
|
114
|
+
STEP: "Invalid value. Not a step of {0}",
|
|
115
|
+
DATE: "Invalid value. not a valid Date",
|
|
116
|
+
DEFAULT: "There is an Error",
|
|
117
|
+
PASSWORD: "Must be at least 8 characters and contain one of number, lower and upper case letters, and special character (@$!%*?&_-.,)",
|
|
118
|
+
LIST: "Invalid list of {0}",
|
|
119
|
+
MODEL_NOT_FOUND: "No model registered under {0}",
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* @summary Defines the various default regexp patterns used
|
|
123
|
+
*
|
|
124
|
+
* @enum DEFAULT_PATTERNS
|
|
125
|
+
* @memberOf module:decorator-validation.Validation
|
|
126
|
+
* @category Validation
|
|
127
|
+
*/
|
|
128
|
+
export const DEFAULT_PATTERNS = {
|
|
129
|
+
EMAIL: /[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?/,
|
|
130
|
+
URL: /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,
|
|
131
|
+
PASSWORD: {
|
|
132
|
+
CHAR8_ONE_OF_EACH: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&_\-.,])[A-Za-z\d@$!%*?&_\-.,]{8,}$/g,
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLGFBQWE7SUFDMUMsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLFdBQVc7SUFDdkIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87SUFDUCxLQUFLO0lBQ0wsTUFBTTtJQUNOLE1BQU07SUFDTixRQUFRO0lBQ1IsV0FBVztJQUNYLFNBQVM7SUFDVCxVQUFVO0lBQ1YsVUFBVTtDQUNYLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsUUFBUTtJQUNSLFFBQVE7SUFDUixTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixRQUFRO0lBQ1IsVUFBVTtDQUNYLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBMkI7SUFDNUQsUUFBUSxFQUFFLHdCQUF3QjtJQUNsQyxHQUFHLEVBQUUsMEJBQTBCO0lBQy9CLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsVUFBVSxFQUFFLDJCQUEyQjtJQUN2QyxVQUFVLEVBQUUsMkJBQTJCO0lBQ3ZDLE9BQU8sRUFBRSxzQ0FBc0M7SUFDL0MsS0FBSyxFQUFFLGdDQUFnQztJQUN2QyxHQUFHLEVBQUUsOEJBQThCO0lBQ25DLElBQUksRUFBRSwwQ0FBMEM7SUFDaEQsSUFBSSxFQUFFLGtDQUFrQztJQUN4QyxJQUFJLEVBQUUsaUNBQWlDO0lBQ3ZDLE9BQU8sRUFBRSxtQkFBbUI7SUFDNUIsUUFBUSxFQUNOLDRIQUE0SDtJQUM5SCxJQUFJLEVBQUUscUJBQXFCO0lBQzNCLGVBQWUsRUFBRSwrQkFBK0I7Q0FDakQsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLEtBQUssRUFDSCw0SkFBNEo7SUFDOUosR0FBRyxFQUFFLHlhQUF5YTtJQUM5YSxRQUFRLEVBQUU7UUFDUixpQkFBaUIsRUFDZixpRkFBaUY7S0FDcEY7Q0FDRixDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9jb25zdGFudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbEtleXMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgVGhlIGtleXMgdXNlZCBmb3IgdmFsaWRhdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIHByZWZpeGVzIG90aGVyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFUVVJUkVEIHNldHMgYXMgcmVxdWlyZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNSU4gZGVmaW5lcyBtaW4gdmFsdWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVggZGVmaW5lcyBtYXggdmFsdWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVEVQIGRlZmluZXMgc3RlcFxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTl9MRU5HVEggZGVmaW5lcyBtaW4gbGVuZ3RoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUFYX0xFTkdUSCBkZWZpbmVzIG1heCBsZW5ndGhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVRURVJOIGRlZmluZXMgcGF0dGVyblxuICogQHByb3BlcnR5IHtzdHJpbmd9IEVNQUlMIGRlZmluZXMgZW1haWxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVUkwgZGVmaW5lcyB1cmxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEQVRFIGRlZmluZXMgZGF0ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRZUEUgZGVmaW5lcyB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFTU1dPUkQgZGVmaW5lcyBwYXNzd29yZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1QgZGVmaW5lcyBsaXN0XG4gKlxuICogQGNvbnN0YW50IFZhbGlkYXRpb25LZXlzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBWYWxpZGF0aW9uS2V5cyA9IHtcbiAgUkVGTEVDVDogYCR7TW9kZWxLZXlzLlJFRkxFQ1R9dmFsaWRhdGlvbi5gLFxuICBWQUxJREFUT1I6IFwidmFsaWRhdG9yXCIsXG4gIFJFUVVJUkVEOiBcInJlcXVpcmVkXCIsXG4gIE1JTjogXCJtaW5cIixcbiAgTUFYOiBcIm1heFwiLFxuICBTVEVQOiBcInN0ZXBcIixcbiAgTUlOX0xFTkdUSDogXCJtaW5sZW5ndGhcIixcbiAgTUFYX0xFTkdUSDogXCJtYXhsZW5ndGhcIixcbiAgUEFUVEVSTjogXCJwYXR0ZXJuXCIsXG4gIEVNQUlMOiBcImVtYWlsXCIsXG4gIFVSTDogXCJ1cmxcIixcbiAgREFURTogXCJkYXRlXCIsXG4gIFRZUEU6IFwidHlwZVwiLFxuICBQQVNTV09SRDogXCJwYXNzd29yZFwiLFxuICBMSVNUOiBcImxpc3RcIixcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgbGlzdCBvZiBtb250aCBuYW1lc1xuICogQGRlc2NyaXB0aW9uIFN0b3JlcyBtb250aCBuYW1lcy4gQ2FuIGJlIGNoYW5nZWQgZm9yIGxvY2FsaXphdGlvbiBwdXJwb3Nlc1xuICpcbiAqIEBjb25zdGFudCBNT05USF9OQU1FU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgTU9OVEhfTkFNRVMgPSBbXG4gIFwiSmFudWFyeVwiLFxuICBcIkZlYnJ1YXJ5XCIsXG4gIFwiTWFyY2hcIixcbiAgXCJBcHJpbFwiLFxuICBcIk1heVwiLFxuICBcIkp1bmVcIixcbiAgXCJKdWx5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiU2VwdGVtYmVyXCIsXG4gIFwiT2N0b2JlclwiLFxuICBcIk5vdmVtYmVyXCIsXG4gIFwiRGVjZW1iZXJcIixcbl07XG5cbi8qKlxuICogQHN1bW1hcnkgbGlzdCBvZiBuYW1lcyBvZiBkYXlzIG9mIHRoZSB3ZWVrXG4gKiBAZGVzY3JpcHRpb24gU3RvcmVzIG5hbWVzIGZvciBkYXlzIG9mIHRoZSB3ZWVrLiBDYW4gYmUgY2hhbmdlZCBmb3IgbG9jYWxpemF0aW9uIHB1cnBvc2VzXG4gKlxuICogQGNvbnN0YW50IERBWVNfT0ZfV0VFS19OQU1FU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgREFZU19PRl9XRUVLX05BTUVTID0gW1xuICBcIlN1bmRheVwiLFxuICBcIk1vbmRheVwiLFxuICBcIlR1ZXNkYXlcIixcbiAgXCJXZWRuZXNkYXlcIixcbiAgXCJUaHVyc2RheVwiLFxuICBcIkZyaWRheVwiLFxuICBcIlNhdHVyZGF5XCIsXG5dO1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVRVUlSRUQgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNSU5fTEVOR1RIIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWF9MRU5HVEggZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFUVEVSTiBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBFTUFJTCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVUkwgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVEVQIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gREVGQVVMVCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVNTV09SRCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfSU5TSURFIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1PREVMX05PVF9GT1VORCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqXG4gKiBAY29uc3RhbnQgREVGQVVMVF9FUlJPUl9NRVNTQUdFU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgUkVRVUlSRUQ6IFwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZFwiLFxuICBNSU46IFwiVGhlIG1pbmltdW0gdmFsdWUgaXMgezB9XCIsXG4gIE1BWDogXCJUaGUgbWF4aW11bSB2YWx1ZSBpcyB7MH1cIixcbiAgTUlOX0xFTkdUSDogXCJUaGUgbWluaW11bSBsZW5ndGggaXMgezB9XCIsXG4gIE1BWF9MRU5HVEg6IFwiVGhlIG1heGltdW0gbGVuZ3RoIGlzIHswfVwiLFxuICBQQVRURVJOOiBcIlRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVyblwiLFxuICBFTUFJTDogXCJUaGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgZW1haWxcIixcbiAgVVJMOiBcIlRoZSB2YWx1ZSBpcyBub3QgYSB2YWxpZCBVUkxcIixcbiAgVFlQRTogXCJJbnZhbGlkIHR5cGUuIEV4cGVjdGVkIHswfSwgcmVjZWl2ZWQgezF9XCIsXG4gIFNURVA6IFwiSW52YWxpZCB2YWx1ZS4gTm90IGEgc3RlcCBvZiB7MH1cIixcbiAgREFURTogXCJJbnZhbGlkIHZhbHVlLiBub3QgYSB2YWxpZCBEYXRlXCIsXG4gIERFRkFVTFQ6IFwiVGhlcmUgaXMgYW4gRXJyb3JcIixcbiAgUEFTU1dPUkQ6XG4gICAgXCJNdXN0IGJlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgY29udGFpbiBvbmUgb2YgbnVtYmVyLCBsb3dlciBhbmQgdXBwZXIgY2FzZSBsZXR0ZXJzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXIgKEAkISUqPyZfLS4sKVwiLFxuICBMSVNUOiBcIkludmFsaWQgbGlzdCBvZiB7MH1cIixcbiAgTU9ERUxfTk9UX0ZPVU5EOiBcIk5vIG1vZGVsIHJlZ2lzdGVyZWQgdW5kZXIgezB9XCIsXG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHZhcmlvdXMgZGVmYXVsdCByZWdleHAgcGF0dGVybnMgdXNlZFxuICpcbiAqIEBlbnVtIERFRkFVTFRfUEFUVEVSTlNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFUVEVSTlMgPSB7XG4gIEVNQUlMOlxuICAgIC9bYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXpBLVowLTldKD86W2EtejAtOS1dKlthLXpBLVowLTldKT9cXC4pK1thLXpBLVowLTldKD86W2EtekEtWjAtOS1dKlthLXpBLVowLTldKT8vLFxuICBVUkw6IC9eKD86KD86KD86aHR0cHM/fGZ0cCk6KT9cXC9cXC8pKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyEoPzoxMHwxMjcpKD86XFwuXFxkezEsM30pezN9KSg/ISg/OjE2OVxcLjI1NHwxOTJcXC4xNjgpKD86XFwuXFxkezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyXFxkfDNbMC0xXSkoPzpcXC5cXGR7MSwzfSl7Mn0pKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswMV1cXGR8MjJbMC0zXSkoPzpcXC4oPzoxP1xcZHsxLDJ9fDJbMC00XVxcZHwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVxcZD98MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC00XSkpfCg/Oig/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdW2EtejAtOVxcdTAwYTEtXFx1ZmZmZl8tXXswLDYyfSk/W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl1cXC4pKyg/OlthLXpcXHUwMGExLVxcdWZmZmZdezIsfVxcLj8pKSg/OjpcXGR7Miw1fSk/KD86Wy8/I11cXFMqKT8kL2ksXG4gIFBBU1NXT1JEOiB7XG4gICAgQ0hBUjhfT05FX09GX0VBQ0g6XG4gICAgICAvXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlxcZCkoPz0uKltAJCElKj8mX1xcLS4sXSlbQS1aYS16XFxkQCQhJSo/Jl9cXC0uLF17OCx9JC9nLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Validator } from "./Validator";
|
|
2
|
+
/**
|
|
3
|
+
* @summary Marks the class as a validator for a certain key.
|
|
4
|
+
* @description Registers the class in the {@link Validation} with the provided key
|
|
5
|
+
*
|
|
6
|
+
* @param {string} keys the validation key
|
|
7
|
+
*
|
|
8
|
+
* @function validator
|
|
9
|
+
*
|
|
10
|
+
* @category Decorators
|
|
11
|
+
*/
|
|
12
|
+
export declare function validator<T extends Validator>(...keys: string[]): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Validation } from "../Validation";
|
|
2
|
+
import { ValidationKeys } from "./constants";
|
|
3
|
+
import { apply, metadata } from "@decaf-ts/reflection";
|
|
4
|
+
/**
|
|
5
|
+
* @summary Marks the class as a validator for a certain key.
|
|
6
|
+
* @description Registers the class in the {@link Validation} with the provided key
|
|
7
|
+
*
|
|
8
|
+
* @param {string} keys the validation key
|
|
9
|
+
*
|
|
10
|
+
* @function validator
|
|
11
|
+
*
|
|
12
|
+
* @category Decorators
|
|
13
|
+
*/
|
|
14
|
+
export function validator(...keys) {
|
|
15
|
+
return apply(((original) => {
|
|
16
|
+
keys.forEach((k) => {
|
|
17
|
+
Validation.register({
|
|
18
|
+
validator: original,
|
|
19
|
+
validationKey: k,
|
|
20
|
+
save: true,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
return original;
|
|
24
|
+
}), metadata(Validation.key(ValidationKeys.VALIDATOR), keys));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvZGVjb3JhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFzQixHQUFHLElBQWM7SUFDOUQsT0FBTyxLQUFLLENBQ1YsQ0FBQyxDQUFDLFFBQXdCLEVBQUUsRUFBRTtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7WUFDekIsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDbEIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsSUFBSTthQUNZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBbUIsRUFDcEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUN6RCxDQUFDO0FBQ0osQ0FBQyIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRvcnMvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9WYWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uLy4uL21vZGVsL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTWFya3MgdGhlIGNsYXNzIGFzIGEgdmFsaWRhdG9yIGZvciBhIGNlcnRhaW4ga2V5LlxuICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyB0aGUgY2xhc3MgaW4gdGhlIHtAbGluayBWYWxpZGF0aW9ufSB3aXRoIHRoZSBwcm92aWRlZCBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5cyB0aGUgdmFsaWRhdGlvbiBrZXlcbiAqXG4gKiBAZnVuY3Rpb24gdmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRvcjxUIGV4dGVuZHMgVmFsaWRhdG9yPiguLi5rZXlzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgKChvcmlnaW5hbDogQ29uc3RydWN0b3I8VD4pID0+IHtcbiAgICAgIGtleXMuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XG4gICAgICAgIFZhbGlkYXRpb24ucmVnaXN0ZXIoe1xuICAgICAgICAgIHZhbGlkYXRvcjogb3JpZ2luYWwsXG4gICAgICAgICAgdmFsaWRhdGlvbktleTogayxcbiAgICAgICAgICBzYXZlOiB0cnVlLFxuICAgICAgICB9IGFzIFZhbGlkYXRvckRlZmluaXRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgfSkgYXMgQ2xhc3NEZWNvcmF0b3IsXG4gICAgbWV0YWRhdGEoVmFsaWRhdGlvbi5rZXkoVmFsaWRhdGlvbktleXMuVkFMSURBVE9SKSwga2V5cylcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DateValidator } from "./DateValidator";
|
|
2
|
+
import { TypeValidator } from "./TypeValidator";
|
|
3
|
+
import { PasswordValidator } from "./PasswordValidator";
|
|
4
|
+
import { StepValidator } from "./StepValidator";
|
|
5
|
+
import { URLValidator } from "./URLValidator";
|
|
6
|
+
import { PatternValidator } from "./PatternValidator";
|
|
7
|
+
import { MinValidator } from "./MinValidator";
|
|
8
|
+
import { MinLengthValidator } from "./MinLengthValidator";
|
|
9
|
+
import { MaxValidator } from "./MaxValidator";
|
|
10
|
+
import { MaxLengthValidator } from "./MaxLengthValidator";
|
|
11
|
+
import { RequiredValidator } from "./RequiredValidator";
|
|
12
|
+
import { EmailValidator } from "./EmailValidator";
|
|
13
|
+
import { ListValidator } from "./ListValidator";
|
|
14
|
+
export * from "./constants";
|
|
15
|
+
export * from "./DateValidator";
|
|
16
|
+
export * from "./decorators";
|
|
17
|
+
export * from "./EmailValidator";
|
|
18
|
+
export * from "./ListValidator";
|
|
19
|
+
export * from "./MaxLengthValidator";
|
|
20
|
+
export * from "./MaxValidator";
|
|
21
|
+
export * from "./MinLengthValidator";
|
|
22
|
+
export * from "./MinValidator";
|
|
23
|
+
export * from "./PasswordValidator";
|
|
24
|
+
export * from "./PatternValidator";
|
|
25
|
+
export * from "./RequiredValidator";
|
|
26
|
+
export * from "./StepValidator";
|
|
27
|
+
export * from "./types";
|
|
28
|
+
export * from "./TypeValidator";
|
|
29
|
+
export * from "./URLValidator";
|
|
30
|
+
export * from "./Validator";
|
|
31
|
+
export * from "./ValidatorRegistry";
|
|
32
|
+
/**
|
|
33
|
+
* @summary constant holding all {@link Validator}s
|
|
34
|
+
* @constant Validators
|
|
35
|
+
* @memberOf module:decorator-validation.Validation.Validators
|
|
36
|
+
* @category Validation
|
|
37
|
+
*/
|
|
38
|
+
export declare const Validators: {
|
|
39
|
+
DateValidator: typeof DateValidator;
|
|
40
|
+
EmailValidator: typeof EmailValidator;
|
|
41
|
+
ListValidator: typeof ListValidator;
|
|
42
|
+
MaxLengthValidator: typeof MaxLengthValidator;
|
|
43
|
+
MaxValidator: typeof MaxValidator;
|
|
44
|
+
MinLengthValidator: typeof MinLengthValidator;
|
|
45
|
+
MinValidator: typeof MinValidator;
|
|
46
|
+
PasswordValidator: typeof PasswordValidator;
|
|
47
|
+
PatternValidator: typeof PatternValidator;
|
|
48
|
+
RequiredValidator: typeof RequiredValidator;
|
|
49
|
+
StepValidator: typeof StepValidator;
|
|
50
|
+
TypeValidator: typeof TypeValidator;
|
|
51
|
+
URLValidator: typeof URLValidator;
|
|
52
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { DateValidator } from "./DateValidator";
|
|
2
|
+
import { TypeValidator } from "./TypeValidator";
|
|
3
|
+
import { PasswordValidator } from "./PasswordValidator";
|
|
4
|
+
import { StepValidator } from "./StepValidator";
|
|
5
|
+
import { URLValidator } from "./URLValidator";
|
|
6
|
+
import { PatternValidator } from "./PatternValidator";
|
|
7
|
+
import { MinValidator } from "./MinValidator";
|
|
8
|
+
import { MinLengthValidator } from "./MinLengthValidator";
|
|
9
|
+
import { MaxValidator } from "./MaxValidator";
|
|
10
|
+
import { MaxLengthValidator } from "./MaxLengthValidator";
|
|
11
|
+
import { RequiredValidator } from "./RequiredValidator";
|
|
12
|
+
import { EmailValidator } from "./EmailValidator";
|
|
13
|
+
import { ListValidator } from "./ListValidator";
|
|
14
|
+
export * from "./constants";
|
|
15
|
+
export * from "./DateValidator";
|
|
16
|
+
export * from "./decorators";
|
|
17
|
+
export * from "./EmailValidator";
|
|
18
|
+
export * from "./ListValidator";
|
|
19
|
+
export * from "./MaxLengthValidator";
|
|
20
|
+
export * from "./MaxValidator";
|
|
21
|
+
export * from "./MinLengthValidator";
|
|
22
|
+
export * from "./MinValidator";
|
|
23
|
+
export * from "./PasswordValidator";
|
|
24
|
+
export * from "./PatternValidator";
|
|
25
|
+
export * from "./RequiredValidator";
|
|
26
|
+
export * from "./StepValidator";
|
|
27
|
+
export * from "./types";
|
|
28
|
+
export * from "./TypeValidator";
|
|
29
|
+
export * from "./URLValidator";
|
|
30
|
+
export * from "./Validator";
|
|
31
|
+
export * from "./ValidatorRegistry";
|
|
32
|
+
/**
|
|
33
|
+
* @summary constant holding all {@link Validator}s
|
|
34
|
+
* @constant Validators
|
|
35
|
+
* @memberOf module:decorator-validation.Validation.Validators
|
|
36
|
+
* @category Validation
|
|
37
|
+
*/
|
|
38
|
+
export const Validators = {
|
|
39
|
+
DateValidator,
|
|
40
|
+
EmailValidator,
|
|
41
|
+
ListValidator,
|
|
42
|
+
MaxLengthValidator,
|
|
43
|
+
MaxValidator,
|
|
44
|
+
MinLengthValidator,
|
|
45
|
+
MinValidator,
|
|
46
|
+
PasswordValidator,
|
|
47
|
+
PatternValidator,
|
|
48
|
+
RequiredValidator,
|
|
49
|
+
StepValidator,
|
|
50
|
+
TypeValidator,
|
|
51
|
+
URLValidator,
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixhQUFhO0lBQ2IsWUFBWTtDQUNiLENBQUMiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVZhbGlkYXRvciB9IGZyb20gXCIuL0RhdGVWYWxpZGF0b3JcIjtcbmltcG9ydCB7IFR5cGVWYWxpZGF0b3IgfSBmcm9tIFwiLi9UeXBlVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRvciB9IGZyb20gXCIuL1Bhc3N3b3JkVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBTdGVwVmFsaWRhdG9yIH0gZnJvbSBcIi4vU3RlcFZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVVJMVmFsaWRhdG9yIH0gZnJvbSBcIi4vVVJMVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBQYXR0ZXJuVmFsaWRhdG9yIH0gZnJvbSBcIi4vUGF0dGVyblZhbGlkYXRvclwiO1xuaW1wb3J0IHsgTWluVmFsaWRhdG9yIH0gZnJvbSBcIi4vTWluVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBNaW5MZW5ndGhWYWxpZGF0b3IgfSBmcm9tIFwiLi9NaW5MZW5ndGhWYWxpZGF0b3JcIjtcbmltcG9ydCB7IE1heFZhbGlkYXRvciB9IGZyb20gXCIuL01heFZhbGlkYXRvclwiO1xuaW1wb3J0IHsgTWF4TGVuZ3RoVmFsaWRhdG9yIH0gZnJvbSBcIi4vTWF4TGVuZ3RoVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBSZXF1aXJlZFZhbGlkYXRvciB9IGZyb20gXCIuL1JlcXVpcmVkVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBFbWFpbFZhbGlkYXRvciB9IGZyb20gXCIuL0VtYWlsVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBMaXN0VmFsaWRhdG9yIH0gZnJvbSBcIi4vTGlzdFZhbGlkYXRvclwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0RhdGVWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0VtYWlsVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9MaXN0VmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NYXhMZW5ndGhWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01heFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWluTGVuZ3RoVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NaW5WYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1Bhc3N3b3JkVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9QYXR0ZXJuVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SZXF1aXJlZFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU3RlcFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1R5cGVWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1VSTFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0b3JSZWdpc3RyeVwiO1xuLyoqXG4gKiBAc3VtbWFyeSBjb25zdGFudCBob2xkaW5nIGFsbCB7QGxpbmsgVmFsaWRhdG9yfXNcbiAqIEBjb25zdGFudCBWYWxpZGF0b3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb24uVmFsaWRhdG9yc1xuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRvcnMgPSB7XG4gIERhdGVWYWxpZGF0b3IsXG4gIEVtYWlsVmFsaWRhdG9yLFxuICBMaXN0VmFsaWRhdG9yLFxuICBNYXhMZW5ndGhWYWxpZGF0b3IsXG4gIE1heFZhbGlkYXRvcixcbiAgTWluTGVuZ3RoVmFsaWRhdG9yLFxuICBNaW5WYWxpZGF0b3IsXG4gIFBhc3N3b3JkVmFsaWRhdG9yLFxuICBQYXR0ZXJuVmFsaWRhdG9yLFxuICBSZXF1aXJlZFZhbGlkYXRvcixcbiAgU3RlcFZhbGlkYXRvcixcbiAgVHlwZVZhbGlkYXRvcixcbiAgVVJMVmFsaWRhdG9yLFxufTtcbiJdfQ==
|