@decaf-ts/decorator-validation 1.6.5 → 1.7.0
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/dist/decorator-validation.cjs +1199 -386
- package/dist/decorator-validation.esm.cjs +1155 -341
- package/lib/constants/index.cjs +1 -1
- package/lib/esm/index.d.ts +5 -37
- package/lib/esm/index.js +6 -38
- package/lib/esm/model/Model.d.ts +107 -35
- package/lib/esm/model/Model.js +110 -45
- package/lib/esm/model/constants.d.ts +3 -3
- package/lib/esm/model/constants.js +4 -4
- package/lib/esm/model/construction.d.ts +3 -3
- package/lib/esm/model/construction.js +4 -4
- package/lib/esm/model/decorators.d.ts +3 -3
- package/lib/esm/model/decorators.js +2 -3
- package/lib/esm/model/index.d.ts +1 -0
- package/lib/esm/model/index.js +2 -1
- package/lib/esm/model/types.d.ts +30 -11
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/model/utils.d.ts +3 -0
- package/lib/esm/model/utils.js +11 -0
- package/lib/esm/model/validation.d.ts +5 -5
- package/lib/esm/model/validation.js +8 -9
- package/lib/esm/utils/Decoration.d.ts +123 -0
- package/lib/esm/utils/Decoration.js +192 -0
- package/lib/esm/utils/constants.d.ts +27 -9
- package/lib/esm/utils/constants.js +28 -10
- package/lib/esm/utils/dates.d.ts +26 -16
- package/lib/esm/utils/dates.js +27 -17
- package/lib/esm/utils/decorators.d.ts +41 -0
- package/lib/esm/utils/decorators.js +42 -1
- package/lib/esm/utils/hashing.d.ts +50 -6
- package/lib/esm/utils/hashing.js +49 -5
- package/lib/esm/utils/index.d.ts +1 -0
- package/lib/esm/utils/index.js +2 -1
- package/lib/esm/utils/registry.d.ts +3 -3
- package/lib/esm/utils/registry.js +1 -1
- package/lib/esm/utils/serialization.d.ts +1 -1
- package/lib/esm/utils/serialization.js +4 -3
- package/lib/esm/utils/strings.d.ts +4 -4
- package/lib/esm/utils/strings.js +5 -5
- package/lib/esm/utils/types.d.ts +123 -16
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/validation/Validators/DateValidator.d.ts +40 -8
- package/lib/esm/validation/Validators/DateValidator.js +41 -9
- package/lib/esm/validation/Validators/EmailValidator.d.ts +39 -7
- package/lib/esm/validation/Validators/EmailValidator.js +40 -8
- package/lib/esm/validation/Validators/ListValidator.d.ts +44 -6
- package/lib/esm/validation/Validators/ListValidator.js +45 -7
- package/lib/esm/validation/Validators/MaxValidator.d.ts +52 -6
- package/lib/esm/validation/Validators/MaxValidator.js +53 -7
- package/lib/esm/validation/Validators/MinValidator.d.ts +52 -6
- package/lib/esm/validation/Validators/MinValidator.js +53 -7
- package/lib/esm/validation/Validators/PatternValidator.d.ts +75 -9
- package/lib/esm/validation/Validators/PatternValidator.js +76 -10
- package/lib/esm/validation/Validators/RequiredValidator.d.ts +52 -6
- package/lib/esm/validation/Validators/RequiredValidator.js +53 -7
- package/lib/esm/validation/Validators/TypeValidator.d.ts +60 -6
- package/lib/esm/validation/Validators/TypeValidator.js +69 -7
- package/lib/esm/validation/Validators/URLValidator.d.ts +41 -7
- package/lib/esm/validation/Validators/URLValidator.js +42 -8
- package/lib/esm/validation/Validators/Validator.d.ts +76 -16
- package/lib/esm/validation/Validators/Validator.js +68 -11
- package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +1 -7
- package/lib/esm/validation/Validators/ValidatorRegistry.js +4 -11
- package/lib/esm/validation/decorators.d.ts +50 -40
- package/lib/esm/validation/decorators.js +102 -53
- package/lib/esm/validation/types.d.ts +146 -28
- package/lib/esm/validation/types.js +1 -1
- package/lib/index.cjs +7 -39
- package/lib/index.d.ts +5 -37
- package/lib/model/Model.cjs +114 -51
- package/lib/model/Model.d.ts +107 -35
- package/lib/model/constants.cjs +4 -4
- package/lib/model/constants.d.ts +3 -3
- package/lib/model/construction.cjs +4 -4
- package/lib/model/construction.d.ts +3 -3
- package/lib/model/decorators.cjs +3 -4
- package/lib/model/decorators.d.ts +3 -3
- package/lib/model/index.cjs +2 -1
- package/lib/model/index.d.ts +1 -0
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +30 -11
- package/lib/model/utils.cjs +15 -0
- package/lib/model/utils.d.ts +3 -0
- package/lib/model/validation.cjs +11 -12
- package/lib/model/validation.d.ts +5 -5
- package/lib/utils/Decoration.cjs +196 -0
- package/lib/utils/Decoration.d.ts +123 -0
- package/lib/utils/constants.cjs +29 -11
- package/lib/utils/constants.d.ts +27 -9
- package/lib/utils/dates.cjs +28 -18
- package/lib/utils/dates.d.ts +26 -16
- package/lib/utils/decorators.cjs +42 -1
- package/lib/utils/decorators.d.ts +41 -0
- package/lib/utils/hashing.cjs +49 -5
- package/lib/utils/hashing.d.ts +50 -6
- package/lib/utils/index.cjs +2 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/registry.cjs +1 -1
- package/lib/utils/registry.d.ts +3 -3
- package/lib/utils/serialization.cjs +5 -4
- package/lib/utils/serialization.d.ts +1 -1
- package/lib/utils/strings.cjs +5 -5
- package/lib/utils/strings.d.ts +4 -4
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +123 -16
- package/lib/validation/Validation.cjs +1 -1
- package/lib/validation/Validators/DateValidator.cjs +41 -9
- package/lib/validation/Validators/DateValidator.d.ts +40 -8
- package/lib/validation/Validators/DiffValidator.cjs +1 -1
- package/lib/validation/Validators/EmailValidator.cjs +40 -8
- package/lib/validation/Validators/EmailValidator.d.ts +39 -7
- package/lib/validation/Validators/EqualsValidator.cjs +1 -1
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +1 -1
- package/lib/validation/Validators/GreaterThanValidator.cjs +1 -1
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +1 -1
- package/lib/validation/Validators/LessThanValidator.cjs +1 -1
- package/lib/validation/Validators/ListValidator.cjs +45 -7
- package/lib/validation/Validators/ListValidator.d.ts +44 -6
- package/lib/validation/Validators/MaxLengthValidator.cjs +1 -1
- package/lib/validation/Validators/MaxValidator.cjs +53 -7
- package/lib/validation/Validators/MaxValidator.d.ts +52 -6
- package/lib/validation/Validators/MinLengthValidator.cjs +1 -1
- package/lib/validation/Validators/MinValidator.cjs +53 -7
- package/lib/validation/Validators/MinValidator.d.ts +52 -6
- package/lib/validation/Validators/PasswordValidator.cjs +1 -1
- package/lib/validation/Validators/PatternValidator.cjs +76 -10
- package/lib/validation/Validators/PatternValidator.d.ts +75 -9
- package/lib/validation/Validators/RequiredValidator.cjs +53 -7
- package/lib/validation/Validators/RequiredValidator.d.ts +52 -6
- package/lib/validation/Validators/StepValidator.cjs +1 -1
- package/lib/validation/Validators/TypeValidator.cjs +71 -9
- package/lib/validation/Validators/TypeValidator.d.ts +60 -6
- package/lib/validation/Validators/URLValidator.cjs +42 -8
- package/lib/validation/Validators/URLValidator.d.ts +41 -7
- package/lib/validation/Validators/Validator.cjs +69 -12
- package/lib/validation/Validators/Validator.d.ts +76 -16
- package/lib/validation/Validators/ValidatorRegistry.cjs +4 -12
- package/lib/validation/Validators/ValidatorRegistry.d.ts +1 -7
- package/lib/validation/Validators/constants.cjs +2 -2
- package/lib/validation/Validators/decorators.cjs +2 -2
- package/lib/validation/Validators/index.cjs +1 -1
- package/lib/validation/Validators/utils.cjs +3 -3
- package/lib/validation/decorators.cjs +105 -56
- package/lib/validation/decorators.d.ts +50 -40
- package/lib/validation/index.cjs +1 -1
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.d.ts +146 -28
- package/package.json +2 -1
package/lib/utils/registry.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzaWMgaW50ZXJmYWNlIGZvciBSZWdpc3RyaWVzXG4gKlxuICogQGludGVyZmFjZSBJUmVnaXN0cnlcbiAqXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVnaXN0cnk8VD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIGFuIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0ge1R9IG9ialxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlZ2lzdGVyKG9iajogVCB8IGFueSwgLi4uYXJnczogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYW4gT2JqZWN0IGlmIGl0IGNhbiBmaW5kIGl0XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBrZXlcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcmV0dXJuIHtUIHwgdW5kZWZpbmVkfVxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBnZXQoa2V5OiBhbnksIC4uLmFyZ3M6IGFueVtdKTogVCB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNpYyBCdWlsZGVyIFJlZ2lzdHJ5IEludGVyZmFjZVxuICpcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAaW50ZXJmYWNlIEJ1aWxkZXJSZWdpc3RyeTxUPlxuICpcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJSZWdpc3RyeTxUPiBleHRlbmRzIElSZWdpc3RyeTxDb25zdHJ1Y3RvcjxUPj4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGFuIEJ1aWxkZXIgT2JqZWN0IGJ5IG5hbWUgaWYgaXQgY2FuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ2V0KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBDb25zdHJ1Y3RvcjxUPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIGEgY29uc3RydWN0b3IgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFQ+fSBbY29uc3RydWN0b3JdXG4gICAqIEBwYXJhbSB7bmFtZX0gbmFtZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlZ2lzdGVyKGNvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPiwgbmFtZT86IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBCdWlsZHMgYW4gT2JqZWN0IGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHt7fX0gb2JqXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHJldHVybiBUXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGJ1aWxkKG9iajogUmVjb3JkPHN0cmluZywgYW55PiB8IFQsIC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cbiJdfQ==
|
package/lib/utils/registry.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Constructor } from "../model/types";
|
|
|
4
4
|
*
|
|
5
5
|
* @interface IRegistry
|
|
6
6
|
*
|
|
7
|
-
* @category
|
|
7
|
+
* @category Model
|
|
8
8
|
*/
|
|
9
9
|
export interface IRegistry<T> {
|
|
10
10
|
/**
|
|
@@ -30,10 +30,10 @@ export interface IRegistry<T> {
|
|
|
30
30
|
/**
|
|
31
31
|
* @summary Basic Builder Registry Interface
|
|
32
32
|
*
|
|
33
|
-
* @
|
|
33
|
+
* @template T
|
|
34
34
|
* @interface BuilderRegistry<T>
|
|
35
35
|
*
|
|
36
|
-
* @category
|
|
36
|
+
* @category Model
|
|
37
37
|
*/
|
|
38
38
|
export interface BuilderRegistry<T> extends IRegistry<Constructor<T>> {
|
|
39
39
|
/**
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Serialization = exports.JSONSerializer = exports.DefaultSerializationMethod = void 0;
|
|
4
|
-
const Model_1 = require("
|
|
4
|
+
const Model_1 = require("./../model/Model.cjs");
|
|
5
5
|
const constants_1 = require("./constants.cjs");
|
|
6
|
+
const utils_1 = require("./../model/utils.cjs");
|
|
6
7
|
exports.DefaultSerializationMethod = "json";
|
|
7
8
|
/**
|
|
8
9
|
* @summary Concrete implementation of a {@link Serializer} in JSON format
|
|
@@ -15,7 +16,7 @@ exports.DefaultSerializationMethod = "json";
|
|
|
15
16
|
* @class JSONSerializer
|
|
16
17
|
* @implements Serializer
|
|
17
18
|
*
|
|
18
|
-
* @category
|
|
19
|
+
* @category Model
|
|
19
20
|
*/
|
|
20
21
|
class JSONSerializer {
|
|
21
22
|
constructor() { }
|
|
@@ -30,7 +31,7 @@ class JSONSerializer {
|
|
|
30
31
|
preSerialize(model) {
|
|
31
32
|
// TODO: nested preserialization (so increase performance when deserializing)
|
|
32
33
|
const toSerialize = Object.assign({}, model);
|
|
33
|
-
const metadata =
|
|
34
|
+
const metadata = (0, utils_1.getMetadata)(model);
|
|
34
35
|
toSerialize[constants_1.ModelKeys.ANCHOR] = metadata || model.constructor.name;
|
|
35
36
|
return toSerialize;
|
|
36
37
|
}
|
|
@@ -92,4 +93,4 @@ class Serialization {
|
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
exports.Serialization = Serialization;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUF1QztBQUN2QywrQ0FBd0M7QUFDeEMsZ0RBQTZDO0FBRWhDLFFBQUEsMEJBQTBCLEdBQUcsTUFBTSxDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsY0FBYztJQUN6QixnQkFBZSxDQUFDO0lBQ2hCOzs7Ozs7O09BT0c7SUFDTyxZQUFZLENBQUMsS0FBUTtRQUM3Qiw2RUFBNkU7UUFDN0UsTUFBTSxXQUFXLEdBQXdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sUUFBUSxHQUFHLElBQUEsbUJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxXQUFXLENBQUMscUJBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbkUsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEdBQVc7UUFDckIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMscUJBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxNQUFNLEtBQUssR0FBTSxhQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQWlCLENBQUM7UUFDekUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsS0FBUTtRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQTFDRCx3Q0EwQ0M7QUFFRCxNQUFhLGFBQWE7YUFDVCxZQUFPLEdBQVcsa0NBQTBCLENBQUM7YUFFN0MsVUFBSyxHQUFvQztRQUN0RCxJQUFJLEVBQUUsSUFBSSxjQUFjLEVBQUU7S0FDM0IsQ0FBQztJQUVGLGdCQUF1QixDQUFDO0lBRWhCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUM1QixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUNiLEdBQVcsRUFDWCxJQUFrQyxFQUNsQyxVQUFVLEdBQUcsS0FBSztRQUVsQixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixHQUFHLHFCQUFxQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksVUFBVTtZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVEsRUFBRSxNQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ3hELElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXLEVBQUUsTUFBZSxFQUFFLEdBQUcsSUFBVztRQUM3RCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7QUFyQ0gsc0NBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vbW9kZWwvdHlwZXNcIjtcbmltcG9ydCB7IFNlcmlhbGl6ZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWwvTW9kZWxcIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0TWV0YWRhdGEgfSBmcm9tIFwiLi4vbW9kZWwvdXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRTZXJpYWxpemF0aW9uTWV0aG9kID0gXCJqc29uXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgYSB7QGxpbmsgU2VyaWFsaXplcn0gaW4gSlNPTiBmb3JtYXRcbiAqIEBkZXNjcmlwdGlvbiBKUydzIG5hdGl2ZSBKU09OLnN0cmluZ2lmeSAodXNlZCBoZXJlKSBpcyBub3QgZGV0ZXJtaW5pc3RpY1xuICogYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGhhc2hpbmcgcHVycG9zZXNcbiAqXG4gKiBUbyBrZWVwIGRlcGVuZGVuY2llcyBsb3csIHdlIHdpbGwgbm90IGltcGxlbWVudCB0aGlzLCBidXQgd2UgcmVjb21tZW5kXG4gKiBpbXBsZW1lbnRpbmcgYSBzaW1pbGFyIHtAbGluayBKU09OU2VyaWFsaXplcn0gdXNpbmcgJ2RldGVybWluaXN0aWMtanNvbicgbGlicmFyaWVzXG4gKlxuICogQGNsYXNzIEpTT05TZXJpYWxpemVyXG4gKiBAaW1wbGVtZW50cyBTZXJpYWxpemVyXG4gKlxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBKU09OU2VyaWFsaXplcjxUIGV4dGVuZHMgTW9kZWw+IGltcGxlbWVudHMgU2VyaWFsaXplcjxUPiB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHByZXBhcmVzIHRoZSBtb2RlbCBmb3Igc2VyaWFsaXphdGlvblxuICAgKiBAZGVzY3JpcHRpb24gcmV0dXJucyBhIHNoYWxsb3cgY29weSBvZiB0aGUgb2JqZWN0LCBjb250YWluaW5nIGFuIGVudW1lcmFibGUge0BsaW5rIE1vZGVsS2V5cyNBTkNIT1J9IHByb3BlcnR5XG4gICAqIHNvIHRoZSBvYmplY3QgY2FuIGJlIHJlY29nbml6ZWQgdXBvbiBkZXNlcmlhbGl6YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtUfSBtb2RlbFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgcHJlU2VyaWFsaXplKG1vZGVsOiBUKSB7XG4gICAgLy8gVE9ETzogbmVzdGVkIHByZXNlcmlhbGl6YXRpb24gKHNvIGluY3JlYXNlIHBlcmZvcm1hbmNlIHdoZW4gZGVzZXJpYWxpemluZylcbiAgICBjb25zdCB0b1NlcmlhbGl6ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGVsKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IGdldE1ldGFkYXRhKG1vZGVsKTtcbiAgICB0b1NlcmlhbGl6ZVtNb2RlbEtleXMuQU5DSE9SXSA9IG1ldGFkYXRhIHx8IG1vZGVsLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgcmV0dXJuIHRvU2VyaWFsaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlYnVpbGRzIGEgbW9kZWwgZnJvbSBhIHNlcmlhbGl6YXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbHMgdG8gcGFyc2UgdGhlIHN0cmluZywgb3IgdG8gYnVpbGQgdGhlIG1vZGVsXG4gICAqL1xuICBkZXNlcmlhbGl6ZShzdHI6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IGRlc2VyaWFsaXphdGlvbiA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBkZXNlcmlhbGl6YXRpb25bTW9kZWxLZXlzLkFOQ0hPUl07XG4gICAgaWYgKCFjbGFzc05hbWUpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBjbGFzcyByZWZlcmVuY2UgaW4gc2VyaWFsaXplZCBtb2RlbFwiKTtcbiAgICBjb25zdCBtb2RlbDogVCA9IE1vZGVsLmJ1aWxkKGRlc2VyaWFsaXphdGlvbiwgY2xhc3NOYW1lKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFNlcmlhbGl6ZXMgYSBtb2RlbFxuICAgKiBAcGFyYW0ge1R9IG1vZGVsXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBmYWlscyB0byBzZXJpYWxpemVcbiAgICovXG4gIHNlcmlhbGl6ZShtb2RlbDogVCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMucHJlU2VyaWFsaXplKG1vZGVsKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlcmlhbGl6YXRpb24ge1xuICBwcml2YXRlIHN0YXRpYyBjdXJyZW50OiBzdHJpbmcgPSBEZWZhdWx0U2VyaWFsaXphdGlvbk1ldGhvZDtcblxuICBwcml2YXRlIHN0YXRpYyBjYWNoZTogUmVjb3JkPHN0cmluZywgU2VyaWFsaXplcjxhbnk+PiA9IHtcbiAgICBqc29uOiBuZXcgSlNPTlNlcmlhbGl6ZXIoKSxcbiAgfTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICBwcml2YXRlIHN0YXRpYyBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChrZXkgaW4gdGhpcy5jYWNoZSkgcmV0dXJuIHRoaXMuY2FjaGVba2V5XTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNlcmlhbGl6YXRpb24gbWV0aG9kIHJlZ2lzdGVyZWQgdW5kZXIgJHtrZXl9YCk7XG4gIH1cblxuICBzdGF0aWMgcmVnaXN0ZXIoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgZnVuYzogQ29uc3RydWN0b3I8U2VyaWFsaXplcjxhbnk+PixcbiAgICBzZXREZWZhdWx0ID0gZmFsc2VcbiAgKTogdm9pZCB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmNhY2hlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJpYWxpemF0aW9uIG1ldGhvZCAke2tleX0gYWxyZWFkeSByZWdpc3RlcmVkYCk7XG4gICAgdGhpcy5jYWNoZVtrZXldID0gbmV3IGZ1bmMoKTtcbiAgICBpZiAoc2V0RGVmYXVsdCkgdGhpcy5jdXJyZW50ID0ga2V5O1xuICB9XG5cbiAgc3RhdGljIHNlcmlhbGl6ZShvYmo6IGFueSwgbWV0aG9kPzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghbWV0aG9kKSByZXR1cm4gdGhpcy5nZXQodGhpcy5jdXJyZW50KS5zZXJpYWxpemUob2JqLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5nZXQobWV0aG9kKS5zZXJpYWxpemUob2JqLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZShvYmo6IHN0cmluZywgbWV0aG9kPzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghbWV0aG9kKSByZXR1cm4gdGhpcy5nZXQodGhpcy5jdXJyZW50KS5kZXNlcmlhbGl6ZShvYmosIC4uLmFyZ3MpO1xuICAgIHJldHVybiB0aGlzLmdldChtZXRob2QpLmRlc2VyaWFsaXplKG9iaiwgLi4uYXJncyk7XG4gIH1cblxuICBzdGF0aWMgc2V0RGVmYXVsdChtZXRob2Q6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudCA9IHRoaXMuZ2V0KG1ldGhvZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -13,7 +13,7 @@ export declare const DefaultSerializationMethod = "json";
|
|
|
13
13
|
* @class JSONSerializer
|
|
14
14
|
* @implements Serializer
|
|
15
15
|
*
|
|
16
|
-
* @category
|
|
16
|
+
* @category Model
|
|
17
17
|
*/
|
|
18
18
|
export declare class JSONSerializer<T extends Model> implements Serializer<T> {
|
|
19
19
|
constructor();
|
package/lib/utils/strings.cjs
CHANGED
|
@@ -10,8 +10,8 @@ exports.stringFormat = stringFormat;
|
|
|
10
10
|
* @return {string} formatted string
|
|
11
11
|
*
|
|
12
12
|
* @function stringFormat
|
|
13
|
-
* @memberOf module:decorator-validation
|
|
14
|
-
* @category
|
|
13
|
+
* @memberOf module:decorator-validation
|
|
14
|
+
* @category Model
|
|
15
15
|
*/
|
|
16
16
|
function stringFormat(string, ...args) {
|
|
17
17
|
return string.replace(/{(\d+)}/g, function (match, number) {
|
|
@@ -29,8 +29,8 @@ function stringFormat(string, ...args) {
|
|
|
29
29
|
* @return {string} formatted string
|
|
30
30
|
*
|
|
31
31
|
* @function sf
|
|
32
|
-
* @memberOf module:decorator-validation
|
|
33
|
-
* @category
|
|
32
|
+
* @memberOf module:decorator-validation
|
|
33
|
+
* @category Model
|
|
34
34
|
*/
|
|
35
35
|
exports.sf = stringFormat;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLG9DQU1DO0FBakJEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixZQUFZLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBeUI7SUFDdkUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNO1FBQ3ZELE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QixDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ1UsUUFBQSxFQUFFLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHByb3ZpZGUgc3RyaW5nIGZvcm1hdCBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gQyMncyBzdHJpbmcuZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXI+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLG9DQU1DO0FBakJEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixZQUFZLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBeUI7SUFDdkUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNO1FBQ3ZELE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QixDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ1UsUUFBQSxFQUFFLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHByb3ZpZGUgc3RyaW5nIGZvcm1hdCBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gQyMncyBzdHJpbmcuZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXI+fSBbYXJnc10gcmVwbGFjZW1lbnRzIG1hZGUgYnkgb3JkZXIgb2YgYXBwZWFyYW5jZSAocmVwbGFjZW1lbnQwIHdpbCByZXBsYWNlIHswfSBhbmQgc28gb24pXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGZvcm1hdHRlZCBzdHJpbmdcbiAqXG4gKiBAZnVuY3Rpb24gc3RyaW5nRm9ybWF0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0Zvcm1hdChzdHJpbmc6IHN0cmluZywgLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSkge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL3soXFxkKyl9L2csIGZ1bmN0aW9uIChtYXRjaCwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcmdzW251bWJlcl0gIT09IFwidW5kZWZpbmVkXCJcbiAgICAgID8gYXJnc1tudW1iZXJdLnRvU3RyaW5nKClcbiAgICAgIDogXCJ1bmRlZmluZWRcIjtcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBwcm92aWRlIHN0cmluZyBmb3JtYXQgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIEMjJ3Mgc3RyaW5nLmZvcm1hdFxuICogQGRlc2NyaXB0aW9uIGFsaWFzIGZvciB7QGxpbmsgc3RyaW5nRm9ybWF0fVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzIHJlcGxhY2VtZW50cyBtYWRlIGJ5IG9yZGVyIG9mIGFwcGVhcmFuY2UgKHJlcGxhY2VtZW50MCB3aWwgcmVwbGFjZSB7MH0gYW5kIHNvIG9uKVxuICogQHJldHVybiB7c3RyaW5nfSBmb3JtYXR0ZWQgc3RyaW5nXG4gKlxuICogQGZ1bmN0aW9uIHNmXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGNvbnN0IHNmID0gc3RyaW5nRm9ybWF0O1xuIl19
|
package/lib/utils/strings.d.ts
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* @return {string} formatted string
|
|
7
7
|
*
|
|
8
8
|
* @function stringFormat
|
|
9
|
-
* @memberOf module:decorator-validation
|
|
10
|
-
* @category
|
|
9
|
+
* @memberOf module:decorator-validation
|
|
10
|
+
* @category Model
|
|
11
11
|
*/
|
|
12
12
|
export declare function stringFormat(string: string, ...args: (string | number)[]): string;
|
|
13
13
|
/**
|
|
@@ -19,7 +19,7 @@ export declare function stringFormat(string: string, ...args: (string | number)[
|
|
|
19
19
|
* @return {string} formatted string
|
|
20
20
|
*
|
|
21
21
|
* @function sf
|
|
22
|
-
* @memberOf module:decorator-validation
|
|
23
|
-
* @category
|
|
22
|
+
* @memberOf module:decorator-validation
|
|
23
|
+
* @category Model
|
|
24
24
|
*/
|
|
25
25
|
export declare const sf: typeof stringFormat;
|
package/lib/utils/types.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIGZpbmFsIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVyblxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgYnVpbGQgc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIGFwcGx5XG4gKiB0aGUgY29uZmlndXJlZCBkZWNvcmF0b3IgdG8gYSB0YXJnZXQuIFRoaXMgaXMgdGhlIGZpbmFsIHN0YWdlIGluIHRoZSBidWlsZGVyIGNoYWluLlxuICpcbiAqIEBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJCdWlsZFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJCdWlsZCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhbmQgcmV0dXJucyB0aGUgZGVjb3JhdG9yIGZ1bmN0aW9uXG4gICAqIEBzdW1tYXJ5IEZpbmFsaXplcyB0aGUgYnVpbGRlciBwcm9jZXNzIGFuZCByZXR1cm5zIGEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gYSBjbGFzcyxcbiAgICogcHJvcGVydHksIG9yIG1ldGhvZC5cbiAgICpcbiAgICogQHJldHVybnMge2Z1bmN0aW9ufSBBIGRlY29yYXRvciBmdW5jdGlvbiB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGEgdGFyZ2V0XG4gICAqL1xuICBhcHBseSgpOiAoXG4gICAgdGFyZ2V0OiBhbnksXG4gICAgcHJvcGVydHlLZXk/OiBhbnksXG4gICAgZGVzY3JpcHRvcj86IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT5cbiAgKSA9PiBhbnk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIGV4dGVuc2lvbiBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyIHBhdHRlcm5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIGV4dGVuc2lvbiBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyLCBwcm92aWRpbmcgdGhlIGFiaWxpdHkgdG8gYWRkXG4gKiBhZGRpdGlvbmFsIGRlY29yYXRvcnMgdG8gdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGludGVyZmFjZSBEZWNvcmF0aW9uQnVpbGRlckVuZFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJFbmQge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFkZHMgYWRkaXRpb25hbCBkZWNvcmF0b3JzIHRvIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uXG4gICAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGN1cnJlbnQgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gd2l0aCBhZGRpdGlvbmFsIGRlY29yYXRvcnMuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBhZGRpbmcgYmVoYXZpb3IgdG8gZXhpc3RpbmcgZGVjb3JhdG9ycy5cbiAgICpcbiAgICogQHBhcmFtIHsuLi4oQ2xhc3NEZWNvcmF0b3J8UHJvcGVydHlEZWNvcmF0b3J8TWV0aG9kRGVjb3JhdG9yKX0gZGVjb3JhdG9ycyAtIEFkZGl0aW9uYWwgZGVjb3JhdG9ycyB0byBhZGRcbiAgICogQHJldHVybnMge0RlY29yYXRpb25CdWlsZGVyQnVpbGR9IFRoZSBidWlsZCBzdGFnZSBvZiB0aGUgYnVpbGRlciBwYXR0ZXJuXG4gICAqL1xuICBleHRlbmQoXG4gICAgLi4uZGVjb3JhdG9yczogKENsYXNzRGVjb3JhdG9yIHwgUHJvcGVydHlEZWNvcmF0b3IgfCBNZXRob2REZWNvcmF0b3IpW11cbiAgKTogRGVjb3JhdGlvbkJ1aWxkZXJCdWlsZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgbWlkZGxlIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVyblxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgbWlkZGxlIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIsIGV4dGVuZGluZyB0aGUgZW5kIHN0YWdlXG4gKiBhbmQgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIGRlZmluZSB0aGUgcHJpbWFyeSBkZWNvcmF0b3JzIGZvciB0aGUgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyTWlkXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNvcmF0aW9uQnVpbGRlck1pZCBleHRlbmRzIERlY29yYXRpb25CdWlsZGVyRW5kIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSBwcmltYXJ5IGRlY29yYXRvcnMgZm9yIHRoZSBjb25maWd1cmF0aW9uXG4gICAqIEBzdW1tYXJ5IFNldHMgdGhlIG1haW4gZGVjb3JhdG9ycyBmb3IgdGhlIGN1cnJlbnQgY29udGV4dC4gVGhpcyBpcyB0eXBpY2FsbHlcbiAgICogY2FsbGVkIGFmdGVyIHNwZWNpZnlpbmcgdGhlIGtleSB3aXRoIHRoZSAnZm9yJyBtZXRob2QuXG4gICAqL1xuICBkZWZpbmUoXG4gICAgLi4uZGVjb3JhdG9yczogKENsYXNzRGVjb3JhdG9yIHwgUHJvcGVydHlEZWNvcmF0b3IgfCBNZXRob2REZWNvcmF0b3IpW11cbiAgKTogRGVjb3JhdGlvbkJ1aWxkZXJFbmQgJiBEZWNvcmF0aW9uQnVpbGRlckJ1aWxkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBzdGFydGluZyBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyIHBhdHRlcm5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIGluaXRpYWwgc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciwgcHJvdmlkaW5nIHRoZSBlbnRyeSBwb2ludFxuICogZm9yIHRoZSBidWlsZGVyIHBhdHRlcm4gYnkgc3BlY2lmeWluZyB0aGUga2V5IGZvciB0aGUgZGVjb3JhdG9yLlxuICpcbiAqIEBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJTdGFydFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJTdGFydCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3BlY2lmaWVzIHRoZSBrZXkgZm9yIHRoZSBkZWNvcmF0b3JcbiAgICogQHN1bW1hcnkgU2V0cyB0aGUgaWRlbnRpZmllciBmb3IgdGhlIGRlY29yYXRvciwgd2hpY2ggaXMgdXNlZCB0byByZWdpc3RlciBhbmQgcmV0cmlldmVcbiAgICogdGhlIGRlY29yYXRvciBpbiB0aGUgZGVjb3JhdGlvbiByZWdpc3RyeS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBkZWNvcmF0b3JcbiAgICogQHJldHVybiB7RGVjb3JhdGlvbkJ1aWxkZXJNaWR9IFRoZSBtaWRkbGUgc3RhZ2Ugb2YgdGhlIGJ1aWxkZXIgcGF0dGVyblxuICAgKi9cbiAgZm9yKGlkOiBzdHJpbmcpOiBEZWNvcmF0aW9uQnVpbGRlck1pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yIHRoZSBjb21wbGV0ZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVyblxuICogQHN1bW1hcnkgQSB1bmlmaWVkIGludGVyZmFjZSB0aGF0IGNvbWJpbmVzIGFsbCBzdGFnZXMgb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciBwYXR0ZXJuLFxuICogcHJvdmlkaW5nIGEgY29tcGxldGUgQVBJIGZvciBjcmVhdGluZywgY29uZmlndXJpbmcsIGFuZCBhcHBseWluZyBkZWNvcmF0b3JzLlxuICogVGhpcyBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIERlY29yYXRpb24gY2xhc3MuXG4gKlxuICogQGludGVyZmFjZSBJRGVjb3JhdGlvbkJ1aWxkZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEZWNvcmF0aW9uQnVpbGRlclxuICBleHRlbmRzIERlY29yYXRpb25CdWlsZGVyU3RhcnQsXG4gICAgRGVjb3JhdGlvbkJ1aWxkZXJNaWQsXG4gICAgRGVjb3JhdGlvbkJ1aWxkZXJFbmQsXG4gICAgRGVjb3JhdGlvbkJ1aWxkZXJCdWlsZCB7fVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgZmxhdm91ciBmb3IgYSB0YXJnZXRcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBmdW5jdGlvbiB0eXBlIHRoYXQgZGV0ZXJtaW5lcyB0aGUgYXBwcm9wcmlhdGUgZmxhdm91ciBmb3IgYSBnaXZlbiB0YXJnZXQgb2JqZWN0LlxuICogVGhpcyBpcyB1c2VkIGJ5IHRoZSBEZWNvcmF0aW9uIGNsYXNzIHRvIHJlc29sdmUgd2hpY2ggZmxhdm91ciBvZiBkZWNvcmF0b3IgdG8gYXBwbHkgYmFzZWQgb24gdGhlIHRhcmdldC5cbiAqXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24ob2JqZWN0KTogc3RyaW5nfSBGbGF2b3VyUmVzb2x2ZXJcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gcmVzb2x2ZSB0aGUgZmxhdm91ciBmb3JcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHJlc29sdmVkIGZsYXZvdXIgaWRlbnRpZmllclxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCB0eXBlIEZsYXZvdXJSZXNvbHZlciA9ICh0YXJnZXQ6IG9iamVjdCkgPT4gc3RyaW5nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHNlcmlhbGl6aW5nIGFuZCBkZXNlcmlhbGl6aW5nIG1vZGVsIG9iamVjdHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBjbGFzc2VzIHRoYXQgY2FuIGNvbnZlcnQgbW9kZWwgb2JqZWN0cyB0byBhbmQgZnJvbSBzdHJpbmcgcmVwcmVzZW50YXRpb25zLlxuICogU2VyaWFsaXplcnMgYXJlIHVzZWQgdG8gcGVyc2lzdCBtb2RlbHMgb3IgdHJhbnNtaXQgdGhlbSBvdmVyIG5ldHdvcmtzLlxuICpcbiAqIEBpbnRlcmZhY2UgU2VyaWFsaXplclxuICogQHRlbXBsYXRlIFQgVHlwZSBvZiBtb2RlbCB0aGF0IGNhbiBiZSBzZXJpYWxpemVkLCBtdXN0IGV4dGVuZCBNb2RlbFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplcjxNIGV4dGVuZHMgTW9kZWw+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIG1vZGVsIG9iamVjdCB0byBhIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKiBAc3VtbWFyeSBTZXJpYWxpemVzIGEgbW9kZWwgaW5zdGFuY2UgaW50byBhIHN0cmluZyBmb3JtYXQgdGhhdCBjYW4gYmUgc3RvcmVkIG9yIHRyYW5zbWl0dGVkLlxuICAgKiBBZGRpdGlvbmFsIGFyZ3VtZW50cyBjYW4gYmUgcHJvdmlkZWQgdG8gY3VzdG9taXplIHRoZSBzZXJpYWxpemF0aW9uIHByb2Nlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7VH0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gc2VyaWFsaXplXG4gICAqIEBwYXJhbSB7Li4uYW55fSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIHRoZSBzZXJpYWxpemF0aW9uIHByb2Nlc3NcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWxcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBtb2RlbCBjYW5ub3QgYmUgc2VyaWFsaXplZFxuICAgKi9cbiAgc2VyaWFsaXplKG1vZGVsOiBNLCAuLi5hcmdzOiBhbnlbXSk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlY29uc3RydWN0cyBhIG1vZGVsIG9iamVjdCBmcm9tIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICogQHN1bW1hcnkgRGVzZXJpYWxpemVzIGEgc3RyaW5nIGJhY2sgaW50byBhIG1vZGVsIGluc3RhbmNlLlxuICAgKiBBZGRpdGlvbmFsIGFyZ3VtZW50cyBjYW4gYmUgcHJvdmlkZWQgdG8gY3VzdG9taXplIHRoZSBkZXNlcmlhbGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzZXJpYWxpemVkIHN0cmluZyB0byBjb252ZXJ0IGJhY2sgdG8gYSBtb2RlbFxuICAgKiBAcGFyYW0gey4uLmFueX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIGZvciB0aGUgZGVzZXJpYWxpemF0aW9uIHByb2Nlc3NcbiAgICogQHJldHVybiB7VH0gVGhlIHJlY29uc3RydWN0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzdHJpbmcgY2Fubm90IGJlIGRlc2VyaWFsaXplZCBpbnRvIGEgdmFsaWQgbW9kZWxcbiAgICovXG4gIGRlc2VyaWFsaXplKHN0cjogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IE07XG59XG4iXX0=
|
package/lib/utils/types.d.ts
CHANGED
|
@@ -1,29 +1,136 @@
|
|
|
1
1
|
import { Model } from "../model";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
3
|
+
* @description Interface for the final stage of the decoration builder pattern
|
|
4
|
+
* @summary Represents the build stage of the decoration builder, providing the ability to apply
|
|
5
|
+
* the configured decorator to a target. This is the final stage in the builder chain.
|
|
4
6
|
*
|
|
5
|
-
* @interface
|
|
6
|
-
* @
|
|
7
|
+
* @interface DecorationBuilderBuild
|
|
8
|
+
* @memberOf module:decorator-validation
|
|
9
|
+
* @category Model
|
|
7
10
|
*/
|
|
8
|
-
export interface
|
|
11
|
+
export interface DecorationBuilderBuild {
|
|
9
12
|
/**
|
|
10
|
-
* @
|
|
11
|
-
* @
|
|
13
|
+
* @description Creates and returns the decorator function
|
|
14
|
+
* @summary Finalizes the builder process and returns a decorator function that can be applied to a class,
|
|
15
|
+
* property, or method.
|
|
12
16
|
*
|
|
13
|
-
* @
|
|
14
|
-
|
|
17
|
+
* @returns {function} A decorator function that can be applied to a target
|
|
18
|
+
*/
|
|
19
|
+
apply(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @description Interface for the extension stage of the decoration builder pattern
|
|
23
|
+
* @summary Represents the extension stage of the decoration builder, providing the ability to add
|
|
24
|
+
* additional decorators to the existing configuration.
|
|
25
|
+
*
|
|
26
|
+
* @interface DecorationBuilderEnd
|
|
27
|
+
* @memberOf module:decorator-validation
|
|
28
|
+
* @category Model
|
|
29
|
+
*/
|
|
30
|
+
export interface DecorationBuilderEnd {
|
|
31
|
+
/**
|
|
32
|
+
* @description Adds additional decorators to the existing configuration
|
|
33
|
+
* @summary Extends the current decorator configuration with additional decorators.
|
|
34
|
+
* This is useful for adding behavior to existing decorators.
|
|
15
35
|
*
|
|
16
|
-
* @
|
|
36
|
+
* @param {...(ClassDecorator|PropertyDecorator|MethodDecorator)} decorators - Additional decorators to add
|
|
37
|
+
* @returns {DecorationBuilderBuild} The build stage of the builder pattern
|
|
38
|
+
*/
|
|
39
|
+
extend(...decorators: (ClassDecorator | PropertyDecorator | MethodDecorator)[]): DecorationBuilderBuild;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @description Interface for the middle stage of the decoration builder pattern
|
|
43
|
+
* @summary Represents the middle stage of the decoration builder, extending the end stage
|
|
44
|
+
* and providing the ability to define the primary decorators for the configuration.
|
|
45
|
+
*
|
|
46
|
+
* @interface DecorationBuilderMid
|
|
47
|
+
* @memberOf module:decorator-validation
|
|
48
|
+
* @category Model
|
|
49
|
+
*/
|
|
50
|
+
export interface DecorationBuilderMid extends DecorationBuilderEnd {
|
|
51
|
+
/**
|
|
52
|
+
* @description Defines the primary decorators for the configuration
|
|
53
|
+
* @summary Sets the main decorators for the current context. This is typically
|
|
54
|
+
* called after specifying the key with the 'for' method.
|
|
17
55
|
*/
|
|
18
|
-
|
|
56
|
+
define(...decorators: (ClassDecorator | PropertyDecorator | MethodDecorator)[]): DecorationBuilderEnd & DecorationBuilderBuild;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @description Interface for the starting stage of the decoration builder pattern
|
|
60
|
+
* @summary Represents the initial stage of the decoration builder, providing the entry point
|
|
61
|
+
* for the builder pattern by specifying the key for the decorator.
|
|
62
|
+
*
|
|
63
|
+
* @interface DecorationBuilderStart
|
|
64
|
+
* @memberOf module:decorator-validation
|
|
65
|
+
* @category Model
|
|
66
|
+
*/
|
|
67
|
+
export interface DecorationBuilderStart {
|
|
19
68
|
/**
|
|
20
|
-
* @
|
|
21
|
-
* @
|
|
69
|
+
* @description Specifies the key for the decorator
|
|
70
|
+
* @summary Sets the identifier for the decorator, which is used to register and retrieve
|
|
71
|
+
* the decorator in the decoration registry.
|
|
22
72
|
*
|
|
23
|
-
* @param
|
|
24
|
-
* @
|
|
73
|
+
* @param {string} id - The identifier for the decorator
|
|
74
|
+
* @return {DecorationBuilderMid} The middle stage of the builder pattern
|
|
75
|
+
*/
|
|
76
|
+
for(id: string): DecorationBuilderMid;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @description Comprehensive interface for the complete decoration builder pattern
|
|
80
|
+
* @summary A unified interface that combines all stages of the decoration builder pattern,
|
|
81
|
+
* providing a complete API for creating, configuring, and applying decorators.
|
|
82
|
+
* This interface is implemented by the Decoration class.
|
|
83
|
+
*
|
|
84
|
+
* @interface IDecorationBuilder
|
|
85
|
+
* @memberOf module:decorator-validation
|
|
86
|
+
* @category Model
|
|
87
|
+
*/
|
|
88
|
+
export interface IDecorationBuilder extends DecorationBuilderStart, DecorationBuilderMid, DecorationBuilderEnd, DecorationBuilderBuild {
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @description Type definition for a function that resolves the flavour for a target
|
|
92
|
+
* @summary Defines a function type that determines the appropriate flavour for a given target object.
|
|
93
|
+
* This is used by the Decoration class to resolve which flavour of decorator to apply based on the target.
|
|
94
|
+
*
|
|
95
|
+
* @typedef {function(object): string} FlavourResolver
|
|
96
|
+
*
|
|
97
|
+
* @param {object} target - The target object to resolve the flavour for
|
|
98
|
+
* @return {string} The resolved flavour identifier
|
|
99
|
+
* @memberOf module:decorator-validation
|
|
100
|
+
* @category Model
|
|
101
|
+
*/
|
|
102
|
+
export type FlavourResolver = (target: object) => string;
|
|
103
|
+
/**
|
|
104
|
+
* @description Interface for serializing and deserializing model objects
|
|
105
|
+
* @summary Defines the contract for classes that can convert model objects to and from string representations.
|
|
106
|
+
* Serializers are used to persist models or transmit them over networks.
|
|
107
|
+
*
|
|
108
|
+
* @interface Serializer
|
|
109
|
+
* @template T Type of model that can be serialized, must extend Model
|
|
110
|
+
* @memberOf module:decorator-validation
|
|
111
|
+
* @category Model
|
|
112
|
+
*/
|
|
113
|
+
export interface Serializer<M extends Model> {
|
|
114
|
+
/**
|
|
115
|
+
* @description Converts a model object to a string representation
|
|
116
|
+
* @summary Serializes a model instance into a string format that can be stored or transmitted.
|
|
117
|
+
* Additional arguments can be provided to customize the serialization process.
|
|
118
|
+
*
|
|
119
|
+
* @param {T} model - The model instance to serialize
|
|
120
|
+
* @param {...any} args - Additional arguments for the serialization process
|
|
121
|
+
* @return {string} The serialized representation of the model
|
|
122
|
+
* @throws {Error} If the model cannot be serialized
|
|
123
|
+
*/
|
|
124
|
+
serialize(model: M, ...args: any[]): string;
|
|
125
|
+
/**
|
|
126
|
+
* @description Reconstructs a model object from its string representation
|
|
127
|
+
* @summary Deserializes a string back into a model instance.
|
|
128
|
+
* Additional arguments can be provided to customize the deserialization process.
|
|
25
129
|
*
|
|
26
|
-
* @
|
|
130
|
+
* @param {string} str - The serialized string to convert back to a model
|
|
131
|
+
* @param {...any} args - Additional arguments for the deserialization process
|
|
132
|
+
* @return {T} The reconstructed model instance
|
|
133
|
+
* @throws {Error} If the string cannot be deserialized into a valid model
|
|
27
134
|
*/
|
|
28
|
-
deserialize(str: string, ...args: any[]):
|
|
135
|
+
deserialize(str: string, ...args: any[]): M;
|
|
29
136
|
}
|
|
@@ -73,4 +73,4 @@ class Validation {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
exports.Validation = Validation;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL1ZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMEVBQW1FO0FBQ25FLDBEQUF3RDtBQUV4RDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxVQUFVO2FBQ04sNEJBQXVCLEdBQ3BDLFNBQVMsQ0FBQztJQUVaLGdCQUF1QixDQUFDO0lBRXhCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsaUJBQWdELEVBQ2hELGdCQUFzRDtRQUV0RCxJQUFJLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyx1QkFBdUI7WUFDeEQsVUFBVSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO2dCQUNqRSxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksU0FBUztvQkFBRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNMLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxXQUFXO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCO1lBQ3JDLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLHFDQUFpQixFQUFFLENBQUM7UUFDL0QsT0FBTyxVQUFVLENBQUMsdUJBQXVCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBc0IsWUFBb0I7UUFDbEQsT0FBTyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLFNBQXNDO1FBRXpDLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLDBCQUFjLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RDLENBQUM7O0FBdkVILGdDQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBJVmFsaWRhdG9yUmVnaXN0cnksIFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgVmFsaWRhdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL1ZhbGlkYXRvclJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgU3RhdGljIGNsYXNzIGFjdGluZyBhcyBhIG5hbWVzcGFjZSBmb3IgdGhlIFZhbGlkYXRpb25cbiAqXG4gKiBAY2xhc3MgVmFsaWRhdGlvblxuICogQHN0YXRpY1xuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uIHtcbiAgcHJpdmF0ZSBzdGF0aWMgYWN0aW5nVmFsaWRhdG9yUmVnaXN0cnk/OiBJVmFsaWRhdG9yUmVnaXN0cnk8VmFsaWRhdG9yPiA9XG4gICAgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBhY3RpbmcgVmFsaWRhdG9yUmVnaXN0cnlcbiAgICpcbiAgICogQHBhcmFtIHtJVmFsaWRhdG9yUmVnaXN0cnl9IHZhbGlkYXRvclJlZ2lzdHJ5IHRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIHZhbGlkYXRvciBSZWdpc3RyeVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFZhbGlkYXRvcik6IFZhbGlkYXRvcn0gW21pZ3JhdGlvbkhhbmRsZXJdIHRoZSBtZXRob2QgdG8gbWFwIHRoZSB2YWxpZGF0b3IgaWYgcmVxdWlyZWQ7XG4gICAqL1xuICBzdGF0aWMgc2V0UmVnaXN0cnkoXG4gICAgdmFsaWRhdG9yUmVnaXN0cnk6IElWYWxpZGF0b3JSZWdpc3RyeTxWYWxpZGF0b3I+LFxuICAgIG1pZ3JhdGlvbkhhbmRsZXI/OiAodmFsaWRhdG9yOiBWYWxpZGF0b3IpID0+IFZhbGlkYXRvclxuICApIHtcbiAgICBpZiAobWlncmF0aW9uSGFuZGxlciAmJiBWYWxpZGF0aW9uLmFjdGluZ1ZhbGlkYXRvclJlZ2lzdHJ5KVxuICAgICAgVmFsaWRhdGlvbi5hY3RpbmdWYWxpZGF0b3JSZWdpc3RyeS5nZXRLZXlzKCkuZm9yRWFjaCgoazogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IHZhbGlkYXRvclJlZ2lzdHJ5LmdldChrKTtcbiAgICAgICAgaWYgKHZhbGlkYXRvcikgdmFsaWRhdG9yUmVnaXN0cnkucmVnaXN0ZXIobWlncmF0aW9uSGFuZGxlcih2YWxpZGF0b3IpKTtcbiAgICAgIH0pO1xuICAgIFZhbGlkYXRpb24uYWN0aW5nVmFsaWRhdG9yUmVnaXN0cnkgPSB2YWxpZGF0b3JSZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjdXJyZW50IFZhbGlkYXRvclJlZ2lzdHJ5XG4gICAqXG4gICAqIEByZXR1cm4gSVZhbGlkYXRvclJlZ2lzdHJ5LCBkZWZhdWx0cyB0byB7QGxpbmsgVmFsaWRhdG9yUmVnaXN0cnl9XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRSZWdpc3RyeSgpIHtcbiAgICBpZiAoIVZhbGlkYXRpb24uYWN0aW5nVmFsaWRhdG9yUmVnaXN0cnkpXG4gICAgICBWYWxpZGF0aW9uLmFjdGluZ1ZhbGlkYXRvclJlZ2lzdHJ5ID0gbmV3IFZhbGlkYXRvclJlZ2lzdHJ5KCk7XG4gICAgcmV0dXJuIFZhbGlkYXRpb24uYWN0aW5nVmFsaWRhdG9yUmVnaXN0cnk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGEgdmFsaWRhdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxpZGF0b3JLZXkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1ZhbGlkYXRvciB8IHVuZGVmaW5lZH0gdGhlIHJlZ2lzdGVyZWQgVmFsaWRhdG9yIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBub25vIG1hdGNoaW5nIHRoZSBwcm92aWRlZCBrZXlcbiAgICovXG4gIHN0YXRpYyBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4odmFsaWRhdG9yS2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gVmFsaWRhdGlvbi5nZXRSZWdpc3RyeSgpLmdldCh2YWxpZGF0b3JLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyB0aGUgcHJvdmlkZWQgdmFsaWRhdG9ycyBvbnRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge1RbXSB8IFZhbGlkYXRvckRlZmluaXRpb25bXX0gdmFsaWRhdG9yXG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXI8VCBleHRlbmRzIFZhbGlkYXRvcj4oXG4gICAgLi4udmFsaWRhdG9yOiAoVmFsaWRhdG9yRGVmaW5pdGlvbiB8IFQpW11cbiAgKTogdm9pZCB7XG4gICAgcmV0dXJuIFZhbGlkYXRpb24uZ2V0UmVnaXN0cnkoKS5yZWdpc3RlciguLi52YWxpZGF0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEJ1aWxkcyB0aGUga2V5IHRvIHN0b3JlIGFzIE1ldGFkYXRhIHVuZGVyIFJlZmxlY3Rpb25zXG4gICAqIEBkZXNjcmlwdGlvbiBjb25jYXRlbmF0ZXMge0BsaW5rIFZhbGlkYXRpb25LZXlzI1JFRkxFQ1R9IHdpdGggdGhlIHByb3ZpZGVkIGtleVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICBzdGF0aWMga2V5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QgKyBrZXk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbGwgcmVnaXN0ZXJlZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIHN0YXRpYyBrZXlzKCkge1xuICAgIHJldHVybiB0aGlzLmdldFJlZ2lzdHJ5KCkuZ2V0S2V5cygpO1xuICB9XG59XG4iXX0=
|
|
@@ -14,26 +14,58 @@ const Validator_1 = require("./Validator.cjs");
|
|
|
14
14
|
const constants_1 = require("./constants.cjs");
|
|
15
15
|
const decorators_1 = require("./decorators.cjs");
|
|
16
16
|
/**
|
|
17
|
-
* @
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* @description Validator for checking if a value is a valid date
|
|
18
|
+
* @summary The DateValidator checks if a value is a valid date object or a string that can be converted to a valid date.
|
|
19
|
+
* It validates that the value represents a real date and not an invalid date like "2023-02-31".
|
|
20
|
+
* @param {string} [message] - Custom error message to display when validation fails, defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
|
|
21
21
|
* @class DateValidator
|
|
22
22
|
* @extends Validator
|
|
23
23
|
*
|
|
24
24
|
* @category Validators
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Create a date validator with default error message
|
|
28
|
+
* const dateValidator = new DateValidator();
|
|
29
|
+
*
|
|
30
|
+
* // Create a date validator with custom error message
|
|
31
|
+
* const customDateValidator = new DateValidator("Please enter a valid date");
|
|
32
|
+
*
|
|
33
|
+
* // Validate a date
|
|
34
|
+
* const result = dateValidator.hasErrors(new Date()); // undefined (valid)
|
|
35
|
+
* const invalidResult = dateValidator.hasErrors("not a date"); // Returns error message (invalid)
|
|
36
|
+
* ```
|
|
37
|
+
* @mermaid
|
|
38
|
+
* sequenceDiagram
|
|
39
|
+
* participant C as Client
|
|
40
|
+
* participant V as DateValidator
|
|
41
|
+
*
|
|
42
|
+
* C->>V: new DateValidator(message)
|
|
43
|
+
* C->>V: hasErrors(value, options)
|
|
44
|
+
* alt value is undefined
|
|
45
|
+
* V-->>C: undefined (valid)
|
|
46
|
+
* else value is string
|
|
47
|
+
* V->>V: Convert to Date
|
|
48
|
+
* end
|
|
49
|
+
* alt Date is invalid (NaN)
|
|
50
|
+
* V-->>C: Error message
|
|
51
|
+
* else Date is valid
|
|
52
|
+
* V-->>C: undefined (valid)
|
|
53
|
+
* end
|
|
25
54
|
*/
|
|
26
55
|
let DateValidator = class DateValidator extends Validator_1.Validator {
|
|
27
56
|
constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.DATE) {
|
|
28
57
|
super(message, Number.name, Date.name, String.name);
|
|
29
58
|
}
|
|
30
59
|
/**
|
|
31
|
-
* @
|
|
60
|
+
* @description Checks if the provided value is a valid date
|
|
61
|
+
* @summary Validates that the given value is a valid date. If the value is a string,
|
|
62
|
+
* it attempts to convert it to a Date object. Returns an error message if the date is invalid,
|
|
63
|
+
* or undefined if the date is valid or if the value is undefined.
|
|
32
64
|
*
|
|
33
|
-
* @param {Date | string} value
|
|
34
|
-
* @param {DateValidatorOptions} [options]
|
|
65
|
+
* @param {Date | string} value - The value to validate, can be a Date object or a string
|
|
66
|
+
* @param {DateValidatorOptions} [options={}] - Optional configuration options for the validator
|
|
35
67
|
*
|
|
36
|
-
* @return {string | undefined}
|
|
68
|
+
* @return {string | undefined} Error message if validation fails, undefined if validation passes
|
|
37
69
|
*
|
|
38
70
|
* @override
|
|
39
71
|
*
|
|
@@ -55,4 +87,4 @@ exports.DateValidator = DateValidator = __decorate([
|
|
|
55
87
|
(0, decorators_1.validator)(constants_1.ValidationKeys.DATE),
|
|
56
88
|
__metadata("design:paramtypes", [String])
|
|
57
89
|
], DateValidator);
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvRGF0ZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBd0M7QUFDeEMsK0NBQXFFO0FBQ3JFLGlEQUF5QztBQUd6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFFSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEscUJBQStCO0lBQ2hFLFlBQVksVUFBa0Isa0NBQXNCLENBQUMsSUFBSTtRQUN2RCxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ksU0FBUyxDQUNkLEtBQW9CLEVBQ3BCLFVBQWdDLEVBQUU7UUFFbEMsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU87UUFFaEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQWpDWSxzQ0FBYTt3QkFBYixhQUFhO0lBRHpCLElBQUEsc0JBQVMsRUFBQywwQkFBYyxDQUFDLElBQUksQ0FBQzs7R0FDbEIsYUFBYSxDQWlDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcbmltcG9ydCB7IERFRkFVTFRfRVJST1JfTUVTU0FHRVMsIFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBEYXRlVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgZm9yIGNoZWNraW5nIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBkYXRlXG4gKiBAc3VtbWFyeSBUaGUgRGF0ZVZhbGlkYXRvciBjaGVja3MgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIGRhdGUgb2JqZWN0IG9yIGEgc3RyaW5nIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHZhbGlkIGRhdGUuXG4gKiBJdCB2YWxpZGF0ZXMgdGhhdCB0aGUgdmFsdWUgcmVwcmVzZW50cyBhIHJlYWwgZGF0ZSBhbmQgbm90IGFuIGludmFsaWQgZGF0ZSBsaWtlIFwiMjAyMy0wMi0zMVwiLlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSAtIEN1c3RvbSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzLCBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNEQVRFfVxuICogQGNsYXNzIERhdGVWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgZGF0ZSB2YWxpZGF0b3Igd2l0aCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIGNvbnN0IGRhdGVWYWxpZGF0b3IgPSBuZXcgRGF0ZVZhbGlkYXRvcigpO1xuICpcbiAqIC8vIENyZWF0ZSBhIGRhdGUgdmFsaWRhdG9yIHdpdGggY3VzdG9tIGVycm9yIG1lc3NhZ2VcbiAqIGNvbnN0IGN1c3RvbURhdGVWYWxpZGF0b3IgPSBuZXcgRGF0ZVZhbGlkYXRvcihcIlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGVcIik7XG4gKlxuICogLy8gVmFsaWRhdGUgYSBkYXRlXG4gKiBjb25zdCByZXN1bHQgPSBkYXRlVmFsaWRhdG9yLmhhc0Vycm9ycyhuZXcgRGF0ZSgpKTsgLy8gdW5kZWZpbmVkICh2YWxpZClcbiAqIGNvbnN0IGludmFsaWRSZXN1bHQgPSBkYXRlVmFsaWRhdG9yLmhhc0Vycm9ycyhcIm5vdCBhIGRhdGVcIik7IC8vIFJldHVybnMgZXJyb3IgbWVzc2FnZSAoaW52YWxpZClcbiAqIGBgYFxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENsaWVudFxuICogICBwYXJ0aWNpcGFudCBWIGFzIERhdGVWYWxpZGF0b3JcbiAqXG4gKiAgIEMtPj5WOiBuZXcgRGF0ZVZhbGlkYXRvcihtZXNzYWdlKVxuICogICBDLT4+VjogaGFzRXJyb3JzKHZhbHVlLCBvcHRpb25zKVxuICogICBhbHQgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKiAgICAgVi0tPj5DOiB1bmRlZmluZWQgKHZhbGlkKVxuICogICBlbHNlIHZhbHVlIGlzIHN0cmluZ1xuICogICAgIFYtPj5WOiBDb252ZXJ0IHRvIERhdGVcbiAqICAgZW5kXG4gKiAgIGFsdCBEYXRlIGlzIGludmFsaWQgKE5hTilcbiAqICAgICBWLS0+PkM6IEVycm9yIG1lc3NhZ2VcbiAqICAgZWxzZSBEYXRlIGlzIHZhbGlkXG4gKiAgICAgVi0tPj5DOiB1bmRlZmluZWQgKHZhbGlkKVxuICogICBlbmRcbiAqL1xuQHZhbGlkYXRvcihWYWxpZGF0aW9uS2V5cy5EQVRFKVxuZXhwb3J0IGNsYXNzIERhdGVWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8RGF0ZVZhbGlkYXRvck9wdGlvbnM+IHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5EQVRFKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgTnVtYmVyLm5hbWUsIERhdGUubmFtZSwgU3RyaW5nLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGEgdmFsaWQgZGF0ZVxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdGhhdCB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBkYXRlLiBJZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcsXG4gICAqIGl0IGF0dGVtcHRzIHRvIGNvbnZlcnQgaXQgdG8gYSBEYXRlIG9iamVjdC4gUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZSBkYXRlIGlzIGludmFsaWQsXG4gICAqIG9yIHVuZGVmaW5lZCBpZiB0aGUgZGF0ZSBpcyB2YWxpZCBvciBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGUgfCBzdHJpbmd9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHZhbGlkYXRlLCBjYW4gYmUgYSBEYXRlIG9iamVjdCBvciBhIHN0cmluZ1xuICAgKiBAcGFyYW0ge0RhdGVWYWxpZGF0b3JPcHRpb25zfSBbb3B0aW9ucz17fV0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB2YWxpZGF0b3JcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBFcnJvciBtZXNzYWdlIGlmIHZhbGlkYXRpb24gZmFpbHMsIHVuZGVmaW5lZCBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICpcbiAgICogQHNlZSBWYWxpZGF0b3IjaGFzRXJyb3JzXG4gICAqL1xuICBwdWJsaWMgaGFzRXJyb3JzKFxuICAgIHZhbHVlOiBEYXRlIHwgc3RyaW5nLFxuICAgIG9wdGlvbnM6IERhdGVWYWxpZGF0b3JPcHRpb25zID0ge31cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlLmdldERhdGUoKSkpIHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZSA9IFwiXCIgfSA9IG9wdGlvbnM7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,24 +1,56 @@
|
|
|
1
1
|
import { Validator } from "./Validator";
|
|
2
2
|
import { DateValidatorOptions } from "../types";
|
|
3
3
|
/**
|
|
4
|
-
* @
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* @description Validator for checking if a value is a valid date
|
|
5
|
+
* @summary The DateValidator checks if a value is a valid date object or a string that can be converted to a valid date.
|
|
6
|
+
* It validates that the value represents a real date and not an invalid date like "2023-02-31".
|
|
7
|
+
* @param {string} [message] - Custom error message to display when validation fails, defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
|
|
8
8
|
* @class DateValidator
|
|
9
9
|
* @extends Validator
|
|
10
10
|
*
|
|
11
11
|
* @category Validators
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Create a date validator with default error message
|
|
15
|
+
* const dateValidator = new DateValidator();
|
|
16
|
+
*
|
|
17
|
+
* // Create a date validator with custom error message
|
|
18
|
+
* const customDateValidator = new DateValidator("Please enter a valid date");
|
|
19
|
+
*
|
|
20
|
+
* // Validate a date
|
|
21
|
+
* const result = dateValidator.hasErrors(new Date()); // undefined (valid)
|
|
22
|
+
* const invalidResult = dateValidator.hasErrors("not a date"); // Returns error message (invalid)
|
|
23
|
+
* ```
|
|
24
|
+
* @mermaid
|
|
25
|
+
* sequenceDiagram
|
|
26
|
+
* participant C as Client
|
|
27
|
+
* participant V as DateValidator
|
|
28
|
+
*
|
|
29
|
+
* C->>V: new DateValidator(message)
|
|
30
|
+
* C->>V: hasErrors(value, options)
|
|
31
|
+
* alt value is undefined
|
|
32
|
+
* V-->>C: undefined (valid)
|
|
33
|
+
* else value is string
|
|
34
|
+
* V->>V: Convert to Date
|
|
35
|
+
* end
|
|
36
|
+
* alt Date is invalid (NaN)
|
|
37
|
+
* V-->>C: Error message
|
|
38
|
+
* else Date is valid
|
|
39
|
+
* V-->>C: undefined (valid)
|
|
40
|
+
* end
|
|
12
41
|
*/
|
|
13
42
|
export declare class DateValidator extends Validator<DateValidatorOptions> {
|
|
14
43
|
constructor(message?: string);
|
|
15
44
|
/**
|
|
16
|
-
* @
|
|
45
|
+
* @description Checks if the provided value is a valid date
|
|
46
|
+
* @summary Validates that the given value is a valid date. If the value is a string,
|
|
47
|
+
* it attempts to convert it to a Date object. Returns an error message if the date is invalid,
|
|
48
|
+
* or undefined if the date is valid or if the value is undefined.
|
|
17
49
|
*
|
|
18
|
-
* @param {Date | string} value
|
|
19
|
-
* @param {DateValidatorOptions} [options]
|
|
50
|
+
* @param {Date | string} value - The value to validate, can be a Date object or a string
|
|
51
|
+
* @param {DateValidatorOptions} [options={}] - Optional configuration options for the validator
|
|
20
52
|
*
|
|
21
|
-
* @return {string | undefined}
|
|
53
|
+
* @return {string | undefined} Error message if validation fails, undefined if validation passes
|
|
22
54
|
*
|
|
23
55
|
* @override
|
|
24
56
|
*
|
|
@@ -58,4 +58,4 @@ exports.DiffValidator = DiffValidator = __decorate([
|
|
|
58
58
|
(0, decorators_1.validator)(constants_1.ValidationKeys.DIFF),
|
|
59
59
|
__metadata("design:paramtypes", [String])
|
|
60
60
|
], DiffValidator);
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlmZlZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvRGlmZlZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBd0M7QUFDeEMsK0NBQXFFO0FBQ3JFLGlEQUF5QztBQUV6QyxxREFBK0M7QUFDL0MsdUNBQXlDO0FBRXpDOzs7Ozs7Ozs7R0FTRztBQUVJLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWMsU0FBUSxxQkFBK0I7SUFDaEUsWUFBWSxVQUFrQixrQ0FBc0IsQ0FBQyxJQUFJO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFNBQVMsQ0FDZCxLQUFVLEVBQ1YsT0FBNkIsRUFDN0IsUUFBYTtRQUViLElBQUksdUJBQTRCLENBQUM7UUFDakMsSUFBSSxDQUFDO1lBQ0gsdUJBQXVCLEdBQUcsSUFBQSxzQkFBYyxFQUN0QyxRQUFRLEVBQ1IsT0FBTyxDQUFDLDBCQUFjLENBQUMsSUFBSSxDQUFDLENBQzdCLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE9BQU8sSUFBQSxvQkFBTyxFQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQztZQUM1QyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDYixPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQy9CLE9BQU8sQ0FBQywwQkFBYyxDQUFDLElBQUksQ0FBQyxDQUM3QjtZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUF0Q1ksc0NBQWE7d0JBQWIsYUFBYTtJQUR6QixJQUFBLHNCQUFTLEVBQUMsMEJBQWMsQ0FBQyxJQUFJLENBQUM7O0dBQ2xCLGFBQWEsQ0FzQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRGlmZlZhbGlkYXRvck9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IGdldFZhbHVlQnlQYXRoIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBEaWZmIFZhbGlkYXRvclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjRGlmZlZhbGlkYXRvcn1cbiAqXG4gKiBAY2xhc3MgRGlmZlZhbGlkYXRvclxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuQHZhbGlkYXRvcihWYWxpZGF0aW9uS2V5cy5ESUZGKVxuZXhwb3J0IGNsYXNzIERpZmZWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8RGlmZlZhbGlkYXRvck9wdGlvbnM+IHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5ESUZGKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7Q29tcGFyaXNvblZhbGlkYXRvck9wdGlvbnN9IG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICogQHNlZSBWYWxpZGF0b3IjaGFzRXJyb3JzXG4gICAqL1xuICBwdWJsaWMgaGFzRXJyb3JzKFxuICAgIHZhbHVlOiBhbnksXG4gICAgb3B0aW9uczogRGlmZlZhbGlkYXRvck9wdGlvbnMsXG4gICAgaW5zdGFuY2U6IGFueVxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxldCBjb21wYXJpc29uUHJvcGVydHlWYWx1ZTogYW55O1xuICAgIHRyeSB7XG4gICAgICBjb21wYXJpc29uUHJvcGVydHlWYWx1ZSA9IGdldFZhbHVlQnlQYXRoKFxuICAgICAgICBpbnN0YW5jZSxcbiAgICAgICAgb3B0aW9uc1tWYWxpZGF0aW9uS2V5cy5ESUZGXVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoZS5tZXNzYWdlIHx8IHRoaXMubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzRXF1YWwodmFsdWUsIGNvbXBhcmlzb25Qcm9wZXJ0eVZhbHVlKVxuICAgICAgPyB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgICAgb3B0aW9ucy5tZXNzYWdlIHx8IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICBvcHRpb25zW1ZhbGlkYXRpb25LZXlzLkRJRkZdXG4gICAgICAgIClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|