@fgv/ts-utils 1.2.1 → 1.4.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/LICENSE +0 -0
- package/README.md +4 -0
- package/brand.d.ts +8 -0
- package/brand.d.ts.map +1 -0
- package/brand.js +24 -0
- package/converter.d.ts +149 -105
- package/converter.d.ts.map +1 -0
- package/converter.js +46 -59
- package/converters.d.ts +432 -194
- package/converters.d.ts.map +1 -0
- package/converters.js +262 -151
- package/csvHelpers.d.ts +7 -0
- package/csvHelpers.d.ts.map +1 -0
- package/csvHelpers.js +12 -2
- package/extendedArray.d.ts +46 -0
- package/extendedArray.d.ts.map +1 -0
- package/extendedArray.js +46 -1
- package/formatter.d.ts +53 -0
- package/formatter.d.ts.map +1 -0
- package/formatter.js +24 -1
- package/hash.d.ts +31 -3
- package/hash.d.ts.map +1 -0
- package/hash.js +36 -5
- package/index.d.ts +8 -3
- package/index.d.ts.map +1 -0
- package/index.js +18 -6
- package/logger.d.ts +3 -2
- package/logger.d.ts.map +1 -0
- package/logger.js +1 -1
- package/normalize.d.ts +43 -0
- package/normalize.d.ts.map +1 -0
- package/normalize.js +139 -0
- package/package.json +13 -9
- package/rangeOf.d.ts +96 -0
- package/rangeOf.d.ts.map +1 -0
- package/rangeOf.js +80 -1
- package/result.d.ts +393 -39
- package/result.d.ts.map +1 -0
- package/result.js +259 -49
- package/utils.d.ts +71 -27
- package/utils.d.ts.map +1 -0
- package/utils.js +74 -29
- package/validation/boolean.d.ts +27 -0
- package/validation/boolean.d.ts.map +1 -0
- package/validation/boolean.js +59 -0
- package/validation/classes.d.ts +5 -0
- package/validation/classes.d.ts.map +1 -0
- package/validation/classes.js +34 -0
- package/validation/field.d.ts +43 -0
- package/validation/field.d.ts.map +1 -0
- package/validation/field.js +72 -0
- package/validation/genericValidator.d.ts +84 -0
- package/validation/genericValidator.d.ts.map +1 -0
- package/validation/genericValidator.js +138 -0
- package/validation/index.d.ts +7 -0
- package/validation/index.d.ts.map +1 -0
- package/validation/index.js +59 -0
- package/validation/number.d.ts +27 -0
- package/validation/number.d.ts.map +1 -0
- package/validation/number.js +57 -0
- package/validation/object.d.ts +115 -0
- package/validation/object.d.ts.map +1 -0
- package/validation/object.js +143 -0
- package/validation/string.d.ts +27 -0
- package/validation/string.d.ts.map +1 -0
- package/validation/string.js +57 -0
- package/validation/traits.d.ts +68 -0
- package/validation/traits.d.ts.map +1 -0
- package/validation/traits.js +58 -0
- package/validation/validator.d.ts +82 -0
- package/validation/validator.d.ts.map +1 -0
- package/validation/validator.js +24 -0
- package/validation/validatorBase.d.ts +25 -0
- package/validation/validatorBase.d.ts.map +1 -0
- package/validation/validatorBase.js +44 -0
- package/validation/validators.d.ts +32 -0
- package/validation/validators.d.ts.map +1 -0
- package/validation/validators.js +59 -0
package/utils.d.ts
CHANGED
|
@@ -1,49 +1,93 @@
|
|
|
1
1
|
import { Result } from './result';
|
|
2
|
+
/**
|
|
3
|
+
* Helper type-guard function to report whether a specified key is present in
|
|
4
|
+
* a supplied object.
|
|
5
|
+
* @param key - The key to be tested.
|
|
6
|
+
* @param item - The object to be tested.
|
|
7
|
+
* @returns Returns `true` if the key is present, `false` otherwise.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
2
10
|
export declare function isKeyOf<T extends object>(key: string | number | symbol, item: T): key is keyof T;
|
|
11
|
+
/**
|
|
12
|
+
* Gets the value of a property specified by key from an arbitrary object,
|
|
13
|
+
* or a default value if the property does not exist.
|
|
14
|
+
* @param key - The key specifying the property to be retrieved.
|
|
15
|
+
* @param item - The object from which the property is to be retrieved.
|
|
16
|
+
* @param defaultValue - An optional default value to be returned if the property
|
|
17
|
+
* is not present (default `undefined`).
|
|
18
|
+
* @returns The value of the requested property, or the default value if the
|
|
19
|
+
* requested property does not exist.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getValueOfPropertyOrDefault<T extends object>(key: string | number | symbol, item: T, defaultValue?: unknown): unknown | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the type of a property specified by key from an arbitrary object.
|
|
24
|
+
* @param key - The key specifying the property to be tested.
|
|
25
|
+
* @param item - The object from which the property is to be tested.
|
|
26
|
+
* @returns The type of the requested property, or `undefined` if the
|
|
27
|
+
* property does not exist.
|
|
28
|
+
* @example
|
|
29
|
+
* Returns `'undefined'` (a string) if the property exists but has the value
|
|
30
|
+
* undefined but `undefined` (the literal) if the property does not exist.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getTypeOfProperty<T extends object>(key: string | number | symbol, item: T): 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'undefined' | 'object' | 'function' | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Type for factory methods which convert a key-value pair to a new unique value.
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
3
37
|
declare type KeyedThingFactory<TS, TD, TK extends string = string> = (key: TK, thing: TS) => Result<TD>;
|
|
4
38
|
/**
|
|
5
|
-
* Applies a factory method to convert a Record<TK, TS
|
|
6
|
-
* @param src The Record
|
|
7
|
-
* @param factory The factory method used to convert elements
|
|
8
|
-
* @returns Success with the resulting map, or Failure
|
|
39
|
+
* Applies a factory method to convert a `Record<TK, TS>` into a `Map<TK, TD>`.
|
|
40
|
+
* @param src - The `Record` to be converted.
|
|
41
|
+
* @param factory - The factory method used to convert elements.
|
|
42
|
+
* @returns {@link Success} with the resulting map on success, or {@link Failure} with a
|
|
43
|
+
* message if an error occurs.
|
|
44
|
+
* @public
|
|
9
45
|
*/
|
|
10
46
|
export declare function recordToMap<TS, TD, TK extends string = string>(src: Record<TK, TS>, factory: KeyedThingFactory<TS, TD, TK>): Result<Map<TK, TD>>;
|
|
11
47
|
/**
|
|
12
|
-
* Applies a factory method to convert an optional Record<TK, TS
|
|
13
|
-
* @param src The Record
|
|
14
|
-
* @param factory The factory method used to convert elements
|
|
15
|
-
* @returns Success with the resulting map if conversion succeeds, or
|
|
16
|
-
* a message if an error occurs.
|
|
48
|
+
* Applies a factory method to convert an optional `Record<TK, TS>` into a `Map<TK, TD>`, or `undefined`.
|
|
49
|
+
* @param src - The `Record` to be converted, or undefined.
|
|
50
|
+
* @param factory - The factory method used to convert elements.
|
|
51
|
+
* @returns {@link Success} with the resulting map if conversion succeeds, or {@link Success} with `undefined`
|
|
52
|
+
* if `src` is `undefined`. Returns {@link Failure} with a message if an error occurs.
|
|
53
|
+
* @public
|
|
17
54
|
*/
|
|
18
55
|
export declare function optionalRecordToMap<TS, TD, TK extends string = string>(src: Record<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Map<TK, TD> | undefined>;
|
|
19
56
|
/**
|
|
20
|
-
* Applies a factory method to convert an optional Record<TK, TS
|
|
21
|
-
* @param src The Record
|
|
22
|
-
* @param factory The factory method used to convert elements
|
|
23
|
-
* @returns Success with the resulting map (empty if src is undefined) if conversion succeeds.
|
|
24
|
-
* a message if an error occurs.
|
|
57
|
+
* Applies a factory method to convert an optional `Record<TK, TS>` into a `Map<TK, TD>`
|
|
58
|
+
* @param src - The `Record` to be converted, or `undefined`.
|
|
59
|
+
* @param factory - The factory method used to convert elements.
|
|
60
|
+
* @returns {@link Success} with the resulting map (empty if `src` is `undefined`) if conversion succeeds.
|
|
61
|
+
* Returns {@link Failure} with a message if an error occurs.
|
|
62
|
+
* @public
|
|
25
63
|
*/
|
|
26
64
|
export declare function optionalRecordToPossiblyEmptyMap<TS, TD, TK extends string = string>(src: Record<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Map<TK, TD>>;
|
|
27
65
|
/**
|
|
28
|
-
* Applies a factory method to convert a Map<TK, TS
|
|
29
|
-
* @param src The Map object to be converted
|
|
30
|
-
* @param factory The factory method used to convert elements
|
|
66
|
+
* Applies a factory method to convert a `Map<TK, TS>` into a `Record<TK, TD>`.
|
|
67
|
+
* @param src - The `Map` object to be converted.
|
|
68
|
+
* @param factory - The factory method used to convert elements.
|
|
69
|
+
* @returns {@link Success} with the resulting `Record<TK, TD>` if conversion succeeds, or
|
|
70
|
+
* {@link Failure} with an error message if an error occurs.
|
|
71
|
+
* @public
|
|
31
72
|
*/
|
|
32
73
|
export declare function mapToRecord<TS, TD, TK extends string = string>(src: Map<TK, TS>, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD>>;
|
|
33
74
|
/**
|
|
34
|
-
* Applies a factory method to convert an optional Map<string, TS
|
|
35
|
-
* @param src The Map object to be converted or undefined
|
|
36
|
-
* @param factory The factory method used to convert elements
|
|
37
|
-
* @returns Success with the resulting record if conversion succeeds, or
|
|
38
|
-
* a message if an error occurs.
|
|
75
|
+
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>` or `undefined`.
|
|
76
|
+
* @param src - The `Map` object to be converted, or `undefined`.
|
|
77
|
+
* @param factory - The factory method used to convert elements.
|
|
78
|
+
* @returns {@link Success} with the resulting record if conversion succeeds, or {@link Success} with `undefined` if
|
|
79
|
+
* `src` is `undefined`. Returns {@link Failure} with a message if an error occurs.
|
|
80
|
+
* @public
|
|
39
81
|
*/
|
|
40
82
|
export declare function optionalMapToRecord<TS, TD, TK extends string = string>(src: Map<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD> | undefined>;
|
|
41
83
|
/**
|
|
42
|
-
* Applies a factory method to convert an optional Map<string, TS
|
|
43
|
-
* @param src The Map object to be converted or undefined
|
|
44
|
-
* @param factory The factory method used to convert elements
|
|
45
|
-
* @returns Success with the resulting record (empty if src is undefined) if conversion succeeds.
|
|
46
|
-
* a message if an error occurs.
|
|
84
|
+
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>`
|
|
85
|
+
* @param src - The `Map` object to be converted, or `undefined`.
|
|
86
|
+
* @param factory - The factory method used to convert elements.
|
|
87
|
+
* @returns {@link Success} with the resulting record (empty if `src` is `undefined`) if conversion succeeds.
|
|
88
|
+
* Returns {@link Failure} with a message if an error occurs.
|
|
89
|
+
* @public
|
|
47
90
|
*/
|
|
48
91
|
export declare function optionalMapToPossiblyEmptyRecord<TS, TD, TK extends string = string>(src: Map<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD>>;
|
|
49
92
|
export {};
|
|
93
|
+
//# sourceMappingURL=utils.d.ts.map
|
package/utils.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAiB,MAAM,UAAU,CAAC;AAEjD;;;;;;;GAOG;AAEH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,GAAC,MAAM,GAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,CAE5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,EACxD,GAAG,EAAE,MAAM,GAAC,MAAM,GAAC,MAAM,EACzB,IAAI,EAAE,CAAC,EACP,YAAY,CAAC,EAAE,OAAO,GACvB,OAAO,GAAG,SAAS,CAErB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAC9C,GAAG,EAAE,MAAM,GAAC,MAAM,GAAC,MAAM,EACzB,IAAI,EAAE,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAElI;AAED;;;GAGG;AACH,aAAK,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AAEhG;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAchJ;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAC,SAAS,CAAC,CAE5K;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAE/K;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAchJ;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAC,SAAS,CAAC,CAE5K;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAE/K"}
|
package/utils.js
CHANGED
|
@@ -21,18 +21,56 @@
|
|
|
21
21
|
* SOFTWARE.
|
|
22
22
|
*/
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.optionalMapToPossiblyEmptyRecord = exports.optionalMapToRecord = exports.mapToRecord = exports.optionalRecordToPossiblyEmptyMap = exports.optionalRecordToMap = exports.recordToMap = exports.isKeyOf = void 0;
|
|
24
|
+
exports.optionalMapToPossiblyEmptyRecord = exports.optionalMapToRecord = exports.mapToRecord = exports.optionalRecordToPossiblyEmptyMap = exports.optionalRecordToMap = exports.recordToMap = exports.getTypeOfProperty = exports.getValueOfPropertyOrDefault = exports.isKeyOf = void 0;
|
|
25
25
|
const result_1 = require("./result");
|
|
26
|
+
/**
|
|
27
|
+
* Helper type-guard function to report whether a specified key is present in
|
|
28
|
+
* a supplied object.
|
|
29
|
+
* @param key - The key to be tested.
|
|
30
|
+
* @param item - The object to be tested.
|
|
31
|
+
* @returns Returns `true` if the key is present, `false` otherwise.
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
26
34
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
27
35
|
function isKeyOf(key, item) {
|
|
28
36
|
return item.hasOwnProperty(key);
|
|
29
37
|
}
|
|
30
38
|
exports.isKeyOf = isKeyOf;
|
|
31
39
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* @param
|
|
35
|
-
* @
|
|
40
|
+
* Gets the value of a property specified by key from an arbitrary object,
|
|
41
|
+
* or a default value if the property does not exist.
|
|
42
|
+
* @param key - The key specifying the property to be retrieved.
|
|
43
|
+
* @param item - The object from which the property is to be retrieved.
|
|
44
|
+
* @param defaultValue - An optional default value to be returned if the property
|
|
45
|
+
* is not present (default `undefined`).
|
|
46
|
+
* @returns The value of the requested property, or the default value if the
|
|
47
|
+
* requested property does not exist.
|
|
48
|
+
*/
|
|
49
|
+
function getValueOfPropertyOrDefault(key, item, defaultValue) {
|
|
50
|
+
return isKeyOf(key, item) ? item[key] : defaultValue;
|
|
51
|
+
}
|
|
52
|
+
exports.getValueOfPropertyOrDefault = getValueOfPropertyOrDefault;
|
|
53
|
+
/**
|
|
54
|
+
* Gets the type of a property specified by key from an arbitrary object.
|
|
55
|
+
* @param key - The key specifying the property to be tested.
|
|
56
|
+
* @param item - The object from which the property is to be tested.
|
|
57
|
+
* @returns The type of the requested property, or `undefined` if the
|
|
58
|
+
* property does not exist.
|
|
59
|
+
* @example
|
|
60
|
+
* Returns `'undefined'` (a string) if the property exists but has the value
|
|
61
|
+
* undefined but `undefined` (the literal) if the property does not exist.
|
|
62
|
+
*/
|
|
63
|
+
function getTypeOfProperty(key, item) {
|
|
64
|
+
return isKeyOf(key, item) ? typeof item[key] : undefined;
|
|
65
|
+
}
|
|
66
|
+
exports.getTypeOfProperty = getTypeOfProperty;
|
|
67
|
+
/**
|
|
68
|
+
* Applies a factory method to convert a `Record<TK, TS>` into a `Map<TK, TD>`.
|
|
69
|
+
* @param src - The `Record` to be converted.
|
|
70
|
+
* @param factory - The factory method used to convert elements.
|
|
71
|
+
* @returns {@link Success} with the resulting map on success, or {@link Failure} with a
|
|
72
|
+
* message if an error occurs.
|
|
73
|
+
* @public
|
|
36
74
|
*/
|
|
37
75
|
function recordToMap(src, factory) {
|
|
38
76
|
const map = new Map();
|
|
@@ -51,31 +89,36 @@ function recordToMap(src, factory) {
|
|
|
51
89
|
}
|
|
52
90
|
exports.recordToMap = recordToMap;
|
|
53
91
|
/**
|
|
54
|
-
* Applies a factory method to convert an optional Record<TK, TS
|
|
55
|
-
* @param src The Record
|
|
56
|
-
* @param factory The factory method used to convert elements
|
|
57
|
-
* @returns Success with the resulting map if conversion succeeds, or
|
|
58
|
-
* a message if an error occurs.
|
|
92
|
+
* Applies a factory method to convert an optional `Record<TK, TS>` into a `Map<TK, TD>`, or `undefined`.
|
|
93
|
+
* @param src - The `Record` to be converted, or undefined.
|
|
94
|
+
* @param factory - The factory method used to convert elements.
|
|
95
|
+
* @returns {@link Success} with the resulting map if conversion succeeds, or {@link Success} with `undefined`
|
|
96
|
+
* if `src` is `undefined`. Returns {@link Failure} with a message if an error occurs.
|
|
97
|
+
* @public
|
|
59
98
|
*/
|
|
60
99
|
function optionalRecordToMap(src, factory) {
|
|
61
100
|
return (src === undefined) ? (0, result_1.succeed)(undefined) : recordToMap(src, factory);
|
|
62
101
|
}
|
|
63
102
|
exports.optionalRecordToMap = optionalRecordToMap;
|
|
64
103
|
/**
|
|
65
|
-
* Applies a factory method to convert an optional Record<TK, TS
|
|
66
|
-
* @param src The Record
|
|
67
|
-
* @param factory The factory method used to convert elements
|
|
68
|
-
* @returns Success with the resulting map (empty if src is undefined) if conversion succeeds.
|
|
69
|
-
* a message if an error occurs.
|
|
104
|
+
* Applies a factory method to convert an optional `Record<TK, TS>` into a `Map<TK, TD>`
|
|
105
|
+
* @param src - The `Record` to be converted, or `undefined`.
|
|
106
|
+
* @param factory - The factory method used to convert elements.
|
|
107
|
+
* @returns {@link Success} with the resulting map (empty if `src` is `undefined`) if conversion succeeds.
|
|
108
|
+
* Returns {@link Failure} with a message if an error occurs.
|
|
109
|
+
* @public
|
|
70
110
|
*/
|
|
71
111
|
function optionalRecordToPossiblyEmptyMap(src, factory) {
|
|
72
112
|
return (src === undefined) ? (0, result_1.succeed)(new Map()) : recordToMap(src, factory);
|
|
73
113
|
}
|
|
74
114
|
exports.optionalRecordToPossiblyEmptyMap = optionalRecordToPossiblyEmptyMap;
|
|
75
115
|
/**
|
|
76
|
-
* Applies a factory method to convert a Map<TK, TS
|
|
77
|
-
* @param src The Map object to be converted
|
|
78
|
-
* @param factory The factory method used to convert elements
|
|
116
|
+
* Applies a factory method to convert a `Map<TK, TS>` into a `Record<TK, TD>`.
|
|
117
|
+
* @param src - The `Map` object to be converted.
|
|
118
|
+
* @param factory - The factory method used to convert elements.
|
|
119
|
+
* @returns {@link Success} with the resulting `Record<TK, TD>` if conversion succeeds, or
|
|
120
|
+
* {@link Failure} with an error message if an error occurs.
|
|
121
|
+
* @public
|
|
79
122
|
*/
|
|
80
123
|
function mapToRecord(src, factory) {
|
|
81
124
|
const record = {};
|
|
@@ -94,25 +137,27 @@ function mapToRecord(src, factory) {
|
|
|
94
137
|
}
|
|
95
138
|
exports.mapToRecord = mapToRecord;
|
|
96
139
|
/**
|
|
97
|
-
* Applies a factory method to convert an optional Map<string, TS
|
|
98
|
-
* @param src The Map object to be converted or undefined
|
|
99
|
-
* @param factory The factory method used to convert elements
|
|
100
|
-
* @returns Success with the resulting record if conversion succeeds, or
|
|
101
|
-
* a message if an error occurs.
|
|
140
|
+
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>` or `undefined`.
|
|
141
|
+
* @param src - The `Map` object to be converted, or `undefined`.
|
|
142
|
+
* @param factory - The factory method used to convert elements.
|
|
143
|
+
* @returns {@link Success} with the resulting record if conversion succeeds, or {@link Success} with `undefined` if
|
|
144
|
+
* `src` is `undefined`. Returns {@link Failure} with a message if an error occurs.
|
|
145
|
+
* @public
|
|
102
146
|
*/
|
|
103
147
|
function optionalMapToRecord(src, factory) {
|
|
104
148
|
return (src === undefined) ? (0, result_1.succeed)(undefined) : mapToRecord(src, factory);
|
|
105
149
|
}
|
|
106
150
|
exports.optionalMapToRecord = optionalMapToRecord;
|
|
107
151
|
/**
|
|
108
|
-
* Applies a factory method to convert an optional Map<string, TS
|
|
109
|
-
* @param src The Map object to be converted or undefined
|
|
110
|
-
* @param factory The factory method used to convert elements
|
|
111
|
-
* @returns Success with the resulting record (empty if src is undefined) if conversion succeeds.
|
|
112
|
-
* a message if an error occurs.
|
|
152
|
+
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>`
|
|
153
|
+
* @param src - The `Map` object to be converted, or `undefined`.
|
|
154
|
+
* @param factory - The factory method used to convert elements.
|
|
155
|
+
* @returns {@link Success} with the resulting record (empty if `src` is `undefined`) if conversion succeeds.
|
|
156
|
+
* Returns {@link Failure} with a message if an error occurs.
|
|
157
|
+
* @public
|
|
113
158
|
*/
|
|
114
159
|
function optionalMapToPossiblyEmptyRecord(src, factory) {
|
|
115
160
|
return (src === undefined) ? (0, result_1.succeed)({}) : mapToRecord(src, factory);
|
|
116
161
|
}
|
|
117
162
|
exports.optionalMapToPossiblyEmptyRecord = optionalMapToPossiblyEmptyRecord;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgscUNBQWlEO0FBRWpELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQW1CLEdBQXlCLEVBQUUsSUFBTztJQUN4RSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUZELDBCQUVDO0FBSUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQXFDLEdBQW1CLEVBQUUsT0FBc0M7SUFDdkgsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRTtRQUNuQixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDeEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDeEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2xDO2lCQUNJO2dCQUNELE9BQU8sSUFBQSxhQUFJLEVBQUMsR0FBRyxHQUFHLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDaEQ7U0FDSjtLQUNKO0lBQ0QsT0FBTyxJQUFBLGdCQUFPLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQWRELGtDQWNDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQXFDLEdBQTZCLEVBQUUsT0FBc0M7SUFDekksT0FBTyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCxrREFFQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFxQyxHQUE2QixFQUFFLE9BQXNDO0lBQ3RKLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0JBQU8sRUFBQyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUZELDRFQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBcUMsR0FBZ0IsRUFBRSxPQUFzQztJQUNwSCxNQUFNLE1BQU0sR0FBbUIsRUFBb0IsQ0FBQztJQUNwRCxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRTtRQUNuQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDdEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7YUFDckM7aUJBQ0k7Z0JBQ0QsT0FBTyxJQUFBLGFBQUksRUFBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUNuRDtTQUNKO0tBQ0o7SUFDRCxPQUFPLElBQUEsZ0JBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBZEQsa0NBY0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBcUMsR0FBMEIsRUFBRSxPQUFzQztJQUN0SSxPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGdCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELGtEQUVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZ0NBQWdDLENBQXFDLEdBQTBCLEVBQUUsT0FBc0M7SUFDbkosT0FBTyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnQkFBTyxFQUFDLEVBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRkQsNEVBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXHJcbiAqXHJcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcclxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxyXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXHJcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcclxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXHJcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XHJcbiAqXHJcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxyXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxyXG4gKlxyXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXHJcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxyXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcclxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxyXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxyXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxyXG4gKiBTT0ZUV0FSRS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBSZXN1bHQsIGZhaWwsIHN1Y2NlZWQgfSBmcm9tICcuL3Jlc3VsdCc7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xyXG5leHBvcnQgZnVuY3Rpb24gaXNLZXlPZjxUIGV4dGVuZHMgb2JqZWN0PihrZXk6IHN0cmluZ3xudW1iZXJ8c3ltYm9sLCBpdGVtOiBUKToga2V5IGlzIGtleW9mIFQge1xyXG4gICAgcmV0dXJuIGl0ZW0uaGFzT3duUHJvcGVydHkoa2V5KTtcclxufVxyXG5cclxudHlwZSBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IChrZXk6IFRLLCB0aGluZzogVFMpID0+IFJlc3VsdDxURD47XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYSBSZWNvcmQ8VEssIFRTPiBpbnRvIGEgTWFwPFRLLCBURD5cclxuICogQHBhcmFtIHNyYyBUaGUgUmVjb3JkIG9iamVjdCB0byBiZSBjb252ZXJ0ZWRcclxuICogQHBhcmFtIGZhY3RvcnkgVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50c1xyXG4gKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIHJlc3VsdGluZyBtYXAsIG9yIEZhaWx1cmUgaWYgYW4gZXJyb3Igb2NjdXJzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkVG9NYXA8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oc3JjOiBSZWNvcmQ8VEssIFRTPiwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8TWFwPFRLLCBURD4+IHtcclxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8VEssIFREPigpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc3JjKSB7XHJcbiAgICAgICAgaWYgKHNyY1trZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbVJlc3VsdCA9IGZhY3Rvcnkoa2V5LCBzcmNba2V5XSk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0LmlzU3VjY2VzcygpKSB7XHJcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGtleSwgaXRlbVJlc3VsdC52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiAke2l0ZW1SZXN1bHQubWVzc2FnZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZWVkKG1hcCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBSZWNvcmQ8VEssIFRTPiBpbnRvIGEgTWFwPFRLLCBURD4gb3IgdW5kZWZpbmVkXHJcbiAqIEBwYXJhbSBzcmMgVGhlIFJlY29yZCBvYmplY3QgdG8gYmUgY29udmVydGVkIG9yIHVuZGVmaW5lZFxyXG4gKiBAcGFyYW0gZmFjdG9yeSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzXHJcbiAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgcmVzdWx0aW5nIG1hcCBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLCBvciBzdWNjZXNzIHdpdGggdW5kZWZpbmVkIGlmIHNyYyBpcyB1bmRlZmluZWQuIFJldHVybnMgRmFpbHVyZSB3aXRoXHJcbiAqIGEgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxSZWNvcmRUb01hcDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IFJlY29yZDxUSywgVFM+fHVuZGVmaW5lZCwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8TWFwPFRLLCBURD58dW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gKHNyYyA9PT0gdW5kZWZpbmVkKSA/IHN1Y2NlZWQodW5kZWZpbmVkKSA6IHJlY29yZFRvTWFwKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBSZWNvcmQ8VEssIFRTPiBpbnRvIGEgTWFwPFRLLCBURD5cclxuICogQHBhcmFtIHNyYyBUaGUgUmVjb3JkIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgb3IgdW5kZWZpbmVkXHJcbiAqIEBwYXJhbSBmYWN0b3J5IFRoZSBmYWN0b3J5IG1ldGhvZCB1c2VkIHRvIGNvbnZlcnQgZWxlbWVudHNcclxuICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSByZXN1bHRpbmcgbWFwIChlbXB0eSBpZiBzcmMgaXMgdW5kZWZpbmVkKSBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLiBSZXR1cm5zIEZhaWx1cmUgd2l0aFxyXG4gKiBhIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsUmVjb3JkVG9Qb3NzaWJseUVtcHR5TWFwPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogUmVjb3JkPFRLLCBUUz58dW5kZWZpbmVkLCBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPik6IFJlc3VsdDxNYXA8VEssIFREPj4ge1xyXG4gICAgcmV0dXJuIChzcmMgPT09IHVuZGVmaW5lZCkgPyBzdWNjZWVkKG5ldyBNYXA8VEssIFREPigpKSA6IHJlY29yZFRvTWFwKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhIE1hcDxUSywgVFM+IGludG8gYSBSZWNvcmQ8VEssIFREPlxyXG4gKiBAcGFyYW0gc3JjIFRoZSBNYXAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZFxyXG4gKiBAcGFyYW0gZmFjdG9yeSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9SZWNvcmQ8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oc3JjOiBNYXA8VEssIFRTPiwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8UmVjb3JkPFRLLCBURD4+IHtcclxuICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPFRLLCBURD4gPSB7fSBhcyBSZWNvcmQ8VEssIFREPjtcclxuICAgIGZvciAoY29uc3Qga3ZwIG9mIHNyYykge1xyXG4gICAgICAgIGlmIChrdnBbMV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtUmVzdWx0ID0gZmFjdG9yeShrdnBbMF0sIGt2cFsxXSk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0LmlzU3VjY2VzcygpKSB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmRba3ZwWzBdXSA9IGl0ZW1SZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrdnBbMF19OiAke2l0ZW1SZXN1bHQubWVzc2FnZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZWVkKHJlY29yZCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBNYXA8c3RyaW5nLCBUUz4gaW50byBhIFJlY29yZDxzdHJpbmcsIFREPiBvciB1bmRlZmluZWRcclxuICogQHBhcmFtIHNyYyBUaGUgTWFwIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgb3IgdW5kZWZpbmVkXHJcbiAqIEBwYXJhbSBmYWN0b3J5IFRoZSBmYWN0b3J5IG1ldGhvZCB1c2VkIHRvIGNvbnZlcnQgZWxlbWVudHNcclxuICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSByZXN1bHRpbmcgcmVjb3JkIGlmIGNvbnZlcnNpb24gc3VjY2VlZHMsIG9yIHN1Y2Nlc3Mgd2l0aCB1bmRlZmluZWQgaWYgc3JjIGlzIHVuZGVmaW5lZC4gUmV0dXJucyBGYWlsdXJlIHdpdGhcclxuICogYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbE1hcFRvUmVjb3JkPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogTWFwPFRLLCBUUz58dW5kZWZpbmVkLCBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPik6IFJlc3VsdDxSZWNvcmQ8VEssIFREPnx1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiAoc3JjID09PSB1bmRlZmluZWQpID8gc3VjY2VlZCh1bmRlZmluZWQpIDogbWFwVG9SZWNvcmQoc3JjLCBmYWN0b3J5KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFwcGxpZXMgYSBmYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGFuIG9wdGlvbmFsIE1hcDxzdHJpbmcsIFRTPiBpbnRvIGEgUmVjb3JkPHN0cmluZywgVEQ+XHJcbiAqIEBwYXJhbSBzcmMgVGhlIE1hcCBvYmplY3QgdG8gYmUgY29udmVydGVkIG9yIHVuZGVmaW5lZFxyXG4gKiBAcGFyYW0gZmFjdG9yeSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzXHJcbiAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgcmVzdWx0aW5nIHJlY29yZCAoZW1wdHkgaWYgc3JjIGlzIHVuZGVmaW5lZCkgaWYgY29udmVyc2lvbiBzdWNjZWVkcy4gUmV0dXJucyBGYWlsdXJlIHdpdGhcclxuICogYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbE1hcFRvUG9zc2libHlFbXB0eVJlY29yZDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IE1hcDxUSywgVFM+fHVuZGVmaW5lZCwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8UmVjb3JkPFRLLCBURD4+IHtcclxuICAgIHJldHVybiAoc3JjID09PSB1bmRlZmluZWQpID8gc3VjY2VlZCh7fSBhcyBSZWNvcmQ8VEssIFREPikgOiBtYXBUb1JlY29yZChzcmMsIGZhY3RvcnkpO1xyXG59XHJcbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgscUNBQWlEO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFtQixHQUF5QixFQUFFLElBQU87SUFDeEUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFGRCwwQkFFQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLDJCQUEyQixDQUN2QyxHQUF5QixFQUN6QixJQUFPLEVBQ1AsWUFBc0I7SUFFdEIsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUN6RCxDQUFDO0FBTkQsa0VBTUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FDN0IsR0FBeUIsRUFDekIsSUFBTztJQUNQLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM3RCxDQUFDO0FBSkQsOENBSUM7QUFRRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsV0FBVyxDQUFxQyxHQUFtQixFQUFFLE9BQXNDO0lBQ3ZILE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3hCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsQztpQkFDSTtnQkFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsR0FBRyxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0o7S0FDSjtJQUNELE9BQU8sSUFBQSxnQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFkRCxrQ0FjQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBcUMsR0FBNkIsRUFBRSxPQUFzQztJQUN6SSxPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGdCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELGtEQUVDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGdDQUFnQyxDQUFxQyxHQUE2QixFQUFFLE9BQXNDO0lBQ3RKLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0JBQU8sRUFBQyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUZELDRFQUVDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLFdBQVcsQ0FBcUMsR0FBZ0IsRUFBRSxPQUFzQztJQUNwSCxNQUFNLE1BQU0sR0FBbUIsRUFBb0IsQ0FBQztJQUNwRCxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRTtRQUNuQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDdEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7YUFDckM7aUJBQ0k7Z0JBQ0QsT0FBTyxJQUFBLGFBQUksRUFBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUNuRDtTQUNKO0tBQ0o7SUFDRCxPQUFPLElBQUEsZ0JBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBZEQsa0NBY0M7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQXFDLEdBQTBCLEVBQUUsT0FBc0M7SUFDdEksT0FBTyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCxrREFFQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixnQ0FBZ0MsQ0FBcUMsR0FBMEIsRUFBRSxPQUFzQztJQUNuSixPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGdCQUFPLEVBQUMsRUFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUFGRCw0RUFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcclxuICpcclxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxyXG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXHJcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcclxuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxyXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcclxuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcclxuICpcclxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXHJcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXHJcbiAqXHJcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcclxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXHJcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxyXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXHJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXHJcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXHJcbiAqIFNPRlRXQVJFLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFJlc3VsdCwgZmFpbCwgc3VjY2VlZCB9IGZyb20gJy4vcmVzdWx0JztcclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgdHlwZS1ndWFyZCBmdW5jdGlvbiB0byByZXBvcnQgd2hldGhlciBhIHNwZWNpZmllZCBrZXkgaXMgcHJlc2VudCBpblxyXG4gKiBhIHN1cHBsaWVkIG9iamVjdC5cclxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcGFyYW0gaXRlbSAtIFRoZSBvYmplY3QgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUga2V5IGlzIHByZXNlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xyXG5leHBvcnQgZnVuY3Rpb24gaXNLZXlPZjxUIGV4dGVuZHMgb2JqZWN0PihrZXk6IHN0cmluZ3xudW1iZXJ8c3ltYm9sLCBpdGVtOiBUKToga2V5IGlzIGtleW9mIFQge1xyXG4gICAgcmV0dXJuIGl0ZW0uaGFzT3duUHJvcGVydHkoa2V5KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IGtleSBmcm9tIGFuIGFyYml0cmFyeSBvYmplY3QsXHJcbiAqIG9yIGEgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuXHJcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHNwZWNpZnlpbmcgdGhlIHByb3BlcnR5IHRvIGJlIHJldHJpZXZlZC5cclxuICogQHBhcmFtIGl0ZW0gLSBUaGUgb2JqZWN0IGZyb20gd2hpY2ggdGhlIHByb3BlcnR5IGlzIHRvIGJlIHJldHJpZXZlZC5cclxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIEFuIG9wdGlvbmFsIGRlZmF1bHQgdmFsdWUgdG8gYmUgcmV0dXJuZWQgaWYgdGhlIHByb3BlcnR5XHJcbiAqIGlzIG5vdCBwcmVzZW50IChkZWZhdWx0IGB1bmRlZmluZWRgKS5cclxuICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHksIG9yIHRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZVxyXG4gKiByZXF1ZXN0ZWQgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVPZlByb3BlcnR5T3JEZWZhdWx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAga2V5OiBzdHJpbmd8bnVtYmVyfHN5bWJvbCxcclxuICAgIGl0ZW06IFQsXHJcbiAgICBkZWZhdWx0VmFsdWU/OiB1bmtub3duXHJcbik6IHVua25vd24gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGlzS2V5T2Yoa2V5LCBpdGVtKSA/IGl0ZW1ba2V5XSA6IGRlZmF1bHRWYWx1ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHR5cGUgb2YgYSBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkga2V5IGZyb20gYW4gYXJiaXRyYXJ5IG9iamVjdC5cclxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgc3BlY2lmeWluZyB0aGUgcHJvcGVydHkgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcGFyYW0gaXRlbSAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCB0aGUgcHJvcGVydHkgaXMgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBvZiB0aGUgcmVxdWVzdGVkIHByb3BlcnR5LCBvciBgdW5kZWZpbmVkYCBpZiB0aGVcclxuICogcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuXHJcbiAqIEBleGFtcGxlXHJcbiAqIFJldHVybnMgYCd1bmRlZmluZWQnYCAoYSBzdHJpbmcpIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMgYnV0IGhhcyB0aGUgdmFsdWVcclxuICogdW5kZWZpbmVkIGJ1dCBgdW5kZWZpbmVkYCAodGhlIGxpdGVyYWwpIGlmIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlT2ZQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIGtleTogc3RyaW5nfG51bWJlcnxzeW1ib2wsXHJcbiAgICBpdGVtOiBUKTogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdiaWdpbnQnIHwgJ2Jvb2xlYW4nIHwgJ3N5bWJvbCcgfCAndW5kZWZpbmVkJyB8ICd1bmRlZmluZWQnIHwgJ29iamVjdCcgfCAnZnVuY3Rpb24nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBpc0tleU9mKGtleSwgaXRlbSkgPyB0eXBlb2YgaXRlbVtrZXldIDogdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vKipcclxuICogVHlwZSBmb3IgZmFjdG9yeSBtZXRob2RzIHdoaWNoIGNvbnZlcnQgYSBrZXktdmFsdWUgcGFpciB0byBhIG5ldyB1bmlxdWUgdmFsdWUuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbnR5cGUgS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAoa2V5OiBUSywgdGhpbmc6IFRTKSA9PiBSZXN1bHQ8VEQ+O1xyXG5cclxuLyoqXHJcbiAqIEFwcGxpZXMgYSBmYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGEgYFJlY29yZDxUSywgVFM+YCBpbnRvIGEgYE1hcDxUSywgVEQ+YC5cclxuICogQHBhcmFtIHNyYyAtIFRoZSBgUmVjb3JkYCB0byBiZSBjb252ZXJ0ZWQuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyBtYXAgb24gc3VjY2Vzcywgb3Ige0BsaW5rIEZhaWx1cmV9IHdpdGggYVxyXG4gKiBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZFRvTWFwPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogUmVjb3JkPFRLLCBUUz4sIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+KTogUmVzdWx0PE1hcDxUSywgVEQ+PiB7XHJcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPFRLLCBURD4oKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHNyYykge1xyXG4gICAgICAgIGlmIChzcmNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1SZXN1bHQgPSBmYWN0b3J5KGtleSwgc3JjW2tleV0pO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xyXG4gICAgICAgICAgICAgICAgbWFwLnNldChrZXksIGl0ZW1SZXN1bHQudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a2V5fTogJHtpdGVtUmVzdWx0Lm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VlZChtYXApO1xyXG59XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYW4gb3B0aW9uYWwgYFJlY29yZDxUSywgVFM+YCBpbnRvIGEgYE1hcDxUSywgVEQ+YCwgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYFJlY29yZGAgdG8gYmUgY29udmVydGVkLCBvciB1bmRlZmluZWQuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyBtYXAgaWYgY29udmVyc2lvbiBzdWNjZWVkcywgb3Ige0BsaW5rIFN1Y2Nlc3N9IHdpdGggYHVuZGVmaW5lZGBcclxuICogaWYgYHNyY2AgaXMgYHVuZGVmaW5lZGAuIFJldHVybnMge0BsaW5rIEZhaWx1cmV9IHdpdGggYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsUmVjb3JkVG9NYXA8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oc3JjOiBSZWNvcmQ8VEssIFRTPnx1bmRlZmluZWQsIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+KTogUmVzdWx0PE1hcDxUSywgVEQ+fHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIChzcmMgPT09IHVuZGVmaW5lZCkgPyBzdWNjZWVkKHVuZGVmaW5lZCkgOiByZWNvcmRUb01hcChzcmMsIGZhY3RvcnkpO1xyXG59XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYW4gb3B0aW9uYWwgYFJlY29yZDxUSywgVFM+YCBpbnRvIGEgYE1hcDxUSywgVEQ+YFxyXG4gKiBAcGFyYW0gc3JjIC0gVGhlIGBSZWNvcmRgIHRvIGJlIGNvbnZlcnRlZCwgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyBtYXAgKGVtcHR5IGlmIGBzcmNgIGlzIGB1bmRlZmluZWRgKSBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLlxyXG4gKiBSZXR1cm5zIHtAbGluayBGYWlsdXJlfSB3aXRoIGEgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbFJlY29yZFRvUG9zc2libHlFbXB0eU1hcDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IFJlY29yZDxUSywgVFM+fHVuZGVmaW5lZCwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8TWFwPFRLLCBURD4+IHtcclxuICAgIHJldHVybiAoc3JjID09PSB1bmRlZmluZWQpID8gc3VjY2VlZChuZXcgTWFwPFRLLCBURD4oKSkgOiByZWNvcmRUb01hcChzcmMsIGZhY3RvcnkpO1xyXG59XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYSBgTWFwPFRLLCBUUz5gIGludG8gYSBgUmVjb3JkPFRLLCBURD5gLlxyXG4gKiBAcGFyYW0gc3JjIC0gVGhlIGBNYXBgIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyBgUmVjb3JkPFRLLCBURD5gIGlmIGNvbnZlcnNpb24gc3VjY2VlZHMsIG9yXHJcbiAqIHtAbGluayBGYWlsdXJlfSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9SZWNvcmQ8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oc3JjOiBNYXA8VEssIFRTPiwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8UmVjb3JkPFRLLCBURD4+IHtcclxuICAgIGNvbnN0IHJlY29yZDogUmVjb3JkPFRLLCBURD4gPSB7fSBhcyBSZWNvcmQ8VEssIFREPjtcclxuICAgIGZvciAoY29uc3Qga3ZwIG9mIHNyYykge1xyXG4gICAgICAgIGlmIChrdnBbMV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtUmVzdWx0ID0gZmFjdG9yeShrdnBbMF0sIGt2cFsxXSk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0LmlzU3VjY2VzcygpKSB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmRba3ZwWzBdXSA9IGl0ZW1SZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrdnBbMF19OiAke2l0ZW1SZXN1bHQubWVzc2FnZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZWVkKHJlY29yZCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBgTWFwPHN0cmluZywgVFM+YCBpbnRvIGEgYFJlY29yZDxzdHJpbmcsIFREPmAgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYE1hcGAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZCwgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyByZWNvcmQgaWYgY29udmVyc2lvbiBzdWNjZWVkcywgb3Ige0BsaW5rIFN1Y2Nlc3N9IHdpdGggYHVuZGVmaW5lZGAgaWZcclxuICogYHNyY2AgaXMgYHVuZGVmaW5lZGAuIFJldHVybnMge0BsaW5rIEZhaWx1cmV9IHdpdGggYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsTWFwVG9SZWNvcmQ8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oc3JjOiBNYXA8VEssIFRTPnx1bmRlZmluZWQsIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+KTogUmVzdWx0PFJlY29yZDxUSywgVEQ+fHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIChzcmMgPT09IHVuZGVmaW5lZCkgPyBzdWNjZWVkKHVuZGVmaW5lZCkgOiBtYXBUb1JlY29yZChzcmMsIGZhY3RvcnkpO1xyXG59XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYW4gb3B0aW9uYWwgYE1hcDxzdHJpbmcsIFRTPmAgaW50byBhIGBSZWNvcmQ8c3RyaW5nLCBURD5gXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYE1hcGAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZCwgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyByZWNvcmQgKGVtcHR5IGlmIGBzcmNgIGlzIGB1bmRlZmluZWRgKSBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLlxyXG4gKiBSZXR1cm5zIHtAbGluayBGYWlsdXJlfSB3aXRoIGEgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbE1hcFRvUG9zc2libHlFbXB0eVJlY29yZDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IE1hcDxUSywgVFM+fHVuZGVmaW5lZCwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8UmVjb3JkPFRLLCBURD4+IHtcclxuICAgIHJldHVybiAoc3JjID09PSB1bmRlZmluZWQpID8gc3VjY2VlZCh7fSBhcyBSZWNvcmQ8VEssIFREPikgOiBtYXBUb1JlY29yZChzcmMsIGZhY3RvcnkpO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Failure } from '../result';
|
|
2
|
+
import { GenericValidator, GenericValidatorConstructorParams } from './genericValidator';
|
|
3
|
+
/**
|
|
4
|
+
* Parameters used to construct a {@link Validation.Classes.BooleanValidator | BooleanValidator}.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare type BooleanValidatorConstructorParams<TC = unknown> = GenericValidatorConstructorParams<boolean, TC>;
|
|
8
|
+
/**
|
|
9
|
+
* An in-place {@link Validation.Validator | Validator} for `boolean` values.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare class BooleanValidator<TC = unknown> extends GenericValidator<boolean, TC> {
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new {@link Validation.Classes.BooleanValidator | BooleanValidator}.
|
|
15
|
+
* @param params - Optional {@link Validation.Classes.BooleanValidatorConstructorParams | init params} for the
|
|
16
|
+
* new {@link Validation.Classes.BooleanValidator | BooleanValidator}.
|
|
17
|
+
*/
|
|
18
|
+
constructor(params?: BooleanValidatorConstructorParams<TC>);
|
|
19
|
+
/**
|
|
20
|
+
* Static method which validates that a supplied `unknown` value is a `boolean`.
|
|
21
|
+
* @param from - The `unknown` value to be tested.
|
|
22
|
+
* @returns Returns `true` if `from` is a `boolean`, or {@link Failure} with an error
|
|
23
|
+
* message if not.
|
|
24
|
+
*/
|
|
25
|
+
static validateBoolean(from: unknown): boolean | Failure<boolean>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=boolean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/validation/boolean.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEzF;;;GAGG;AACH,oBAAY,iCAAiC,CAAC,EAAE,GAAG,OAAO,IAAI,iCAAiC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAE7G;;;GAGG;AACH,qBAAa,gBAAgB,CAAC,EAAE,GAAG,OAAO,CAAE,SAAQ,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;IAC7E;;;;OAIG;gBACgB,MAAM,CAAC,EAAE,iCAAiC,CAAC,EAAE,CAAC;IASjE;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAM3E"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2021 Erik Fortune
|
|
4
|
+
*
|
|
5
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
* in the Software without restriction, including without limitation the rights
|
|
8
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
* furnished to do so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
* copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.BooleanValidator = void 0;
|
|
25
|
+
const result_1 = require("../result");
|
|
26
|
+
const genericValidator_1 = require("./genericValidator");
|
|
27
|
+
/**
|
|
28
|
+
* An in-place {@link Validation.Validator | Validator} for `boolean` values.
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
class BooleanValidator extends genericValidator_1.GenericValidator {
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new {@link Validation.Classes.BooleanValidator | BooleanValidator}.
|
|
34
|
+
* @param params - Optional {@link Validation.Classes.BooleanValidatorConstructorParams | init params} for the
|
|
35
|
+
* new {@link Validation.Classes.BooleanValidator | BooleanValidator}.
|
|
36
|
+
*/
|
|
37
|
+
constructor(params) {
|
|
38
|
+
// istanbul ignore next
|
|
39
|
+
params = params !== null && params !== void 0 ? params : {};
|
|
40
|
+
super({
|
|
41
|
+
validator: BooleanValidator.validateBoolean,
|
|
42
|
+
...params,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Static method which validates that a supplied `unknown` value is a `boolean`.
|
|
47
|
+
* @param from - The `unknown` value to be tested.
|
|
48
|
+
* @returns Returns `true` if `from` is a `boolean`, or {@link Failure} with an error
|
|
49
|
+
* message if not.
|
|
50
|
+
*/
|
|
51
|
+
static validateBoolean(from) {
|
|
52
|
+
if (typeof from === 'boolean') {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return (0, result_1.fail)(`"${from}": not a boolean`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.BooleanValidator = BooleanValidator;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2Jvb2xlYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsc0NBQTBDO0FBQzFDLHlEQUF5RjtBQVF6Rjs7O0dBR0c7QUFDSCxNQUFhLGdCQUErQixTQUFRLG1DQUE2QjtJQUM3RTs7OztPQUlHO0lBQ0gsWUFBbUIsTUFBOEM7UUFDN0QsdUJBQXVCO1FBQ3ZCLE1BQU0sR0FBRyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxFQUFFLENBQUM7UUFDdEIsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLGdCQUFnQixDQUFDLGVBQWU7WUFDM0MsR0FBRyxNQUFNO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFhO1FBQ3ZDLElBQUksT0FBTyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQTNCRCw0Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIxIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRmFpbHVyZSwgZmFpbCB9IGZyb20gJy4uL3Jlc3VsdCc7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yLCBHZW5lcmljVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2dlbmVyaWNWYWxpZGF0b3InO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgdXNlZCB0byBjb25zdHJ1Y3QgYSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkJvb2xlYW5WYWxpZGF0b3IgfCBCb29sZWFuVmFsaWRhdG9yfS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQm9vbGVhblZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zPFRDID0gdW5rbm93bj4gPSBHZW5lcmljVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXM8Ym9vbGVhbiwgVEM+O1xuXG4vKipcbiAqIEFuIGluLXBsYWNlIHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IFZhbGlkYXRvcn0gZm9yIGBib29sZWFuYCB2YWx1ZXMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBCb29sZWFuVmFsaWRhdG9yPFRDID0gdW5rbm93bj4gZXh0ZW5kcyBHZW5lcmljVmFsaWRhdG9yPGJvb2xlYW4sIFRDPiB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkJvb2xlYW5WYWxpZGF0b3IgfCBCb29sZWFuVmFsaWRhdG9yfS5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5Cb29sZWFuVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfCBpbml0IHBhcmFtc30gZm9yIHRoZVxuICAgICAqIG5ldyB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkJvb2xlYW5WYWxpZGF0b3IgfCBCb29sZWFuVmFsaWRhdG9yfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zPzogQm9vbGVhblZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zPFRDPikge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMgPz8ge307XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHZhbGlkYXRvcjogQm9vbGVhblZhbGlkYXRvci52YWxpZGF0ZUJvb2xlYW4sXG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXRpYyBtZXRob2Qgd2hpY2ggdmFsaWRhdGVzIHRoYXQgYSBzdXBwbGllZCBgdW5rbm93bmAgdmFsdWUgaXMgYSBgYm9vbGVhbmAuXG4gICAgICogQHBhcmFtIGZyb20gLSBUaGUgYHVua25vd25gIHZhbHVlIHRvIGJlIHRlc3RlZC5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiBgZnJvbWAgaXMgYSBgYm9vbGVhbmAsIG9yIHtAbGluayBGYWlsdXJlfSB3aXRoIGFuIGVycm9yXG4gICAgICogbWVzc2FnZSBpZiBub3QuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZUJvb2xlYW4oZnJvbTogdW5rbm93bik6IGJvb2xlYW4gfCBGYWlsdXJlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmcm9tID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsKGBcIiR7ZnJvbX1cIjogbm90IGEgYm9vbGVhbmApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { StringValidator, StringValidatorConstructorParams } from './string';
|
|
2
|
+
export { BooleanValidator, BooleanValidatorConstructorParams } from './boolean';
|
|
3
|
+
export { NumberValidator, NumberValidatorConstructorParams } from './number';
|
|
4
|
+
export { FieldValidators, ObjectValidator, ObjectValidatorConstructorParams, ObjectValidatorOptions } from './object';
|
|
5
|
+
//# sourceMappingURL=classes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../src/validation/classes.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,eAAe,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,iCAAiC,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2021 Erik Fortune
|
|
4
|
+
*
|
|
5
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
* in the Software without restriction, including without limitation the rights
|
|
8
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
* furnished to do so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
* copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.ObjectValidator = exports.NumberValidator = exports.BooleanValidator = exports.StringValidator = void 0;
|
|
25
|
+
/* istanbul ignore file */
|
|
26
|
+
var string_1 = require("./string");
|
|
27
|
+
Object.defineProperty(exports, "StringValidator", { enumerable: true, get: function () { return string_1.StringValidator; } });
|
|
28
|
+
var boolean_1 = require("./boolean");
|
|
29
|
+
Object.defineProperty(exports, "BooleanValidator", { enumerable: true, get: function () { return boolean_1.BooleanValidator; } });
|
|
30
|
+
var number_1 = require("./number");
|
|
31
|
+
Object.defineProperty(exports, "NumberValidator", { enumerable: true, get: function () { return number_1.NumberValidator; } });
|
|
32
|
+
var object_1 = require("./object");
|
|
33
|
+
Object.defineProperty(exports, "ObjectValidator", { enumerable: true, get: function () { return object_1.ObjectValidator; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2NsYXNzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsMEJBQTBCO0FBRTFCLG1DQUE2RTtBQUFwRSx5R0FBQSxlQUFlLE9BQUE7QUFDeEIscUNBQWdGO0FBQXZFLDJHQUFBLGdCQUFnQixPQUFBO0FBQ3pCLG1DQUE2RTtBQUFwRSx5R0FBQSxlQUFlLE9BQUE7QUFDeEIsbUNBQXNIO0FBQTVGLHlHQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuXG5leHBvcnQgeyBTdHJpbmdWYWxpZGF0b3IsIFN0cmluZ1ZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9zdHJpbmcnO1xuZXhwb3J0IHsgQm9vbGVhblZhbGlkYXRvciwgQm9vbGVhblZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9ib29sZWFuJztcbmV4cG9ydCB7IE51bWJlclZhbGlkYXRvciwgTnVtYmVyVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL251bWJlcic7XG5leHBvcnQgeyBGaWVsZFZhbGlkYXRvcnMsIE9iamVjdFZhbGlkYXRvciwgT2JqZWN0VmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMsIE9iamVjdFZhbGlkYXRvck9wdGlvbnMgfSBmcm9tICcuL29iamVjdCc7XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Failure } from '../result';
|
|
2
|
+
import { Validator, ValidatorOptions } from './validator';
|
|
3
|
+
import { ValidatorBase } from './validatorBase';
|
|
4
|
+
/**
|
|
5
|
+
* Parameters used to construct a {@link Validation.FieldValidator | FieldValidator}.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export interface FieldValidatorOptions<TC> extends ValidatorOptions<TC> {
|
|
9
|
+
optional?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* An in-place {@link Validation.Validator | Validator} for properties
|
|
13
|
+
* an an object.
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export declare class FieldValidator<T, TC = undefined> extends ValidatorBase<T, TC> {
|
|
17
|
+
/**
|
|
18
|
+
* The name of the property that this validator should validate.
|
|
19
|
+
*/
|
|
20
|
+
readonly fieldName: string;
|
|
21
|
+
/**
|
|
22
|
+
* The {@link Validation.Validator | Validator} to be applied against the named property.
|
|
23
|
+
*/
|
|
24
|
+
readonly fieldValidator: Validator<T, TC>;
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
protected readonly _fieldOptions: FieldValidatorOptions<TC>;
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new {@link Validation.FieldValidator | FieldValidator.}.
|
|
31
|
+
* @param fieldName - The name of the property that this validator should validate.
|
|
32
|
+
* @param fieldValidator - The {@link Validation.Validator | Validator} to be applied
|
|
33
|
+
* against the named property.
|
|
34
|
+
* @param options - Additional {@link Validation.FieldValidatorOptions | options} to be
|
|
35
|
+
* applied to this validation.
|
|
36
|
+
*/
|
|
37
|
+
constructor(fieldName: string, fieldValidator: Validator<T, TC>, options?: FieldValidatorOptions<TC>);
|
|
38
|
+
/**
|
|
39
|
+
* {@inheritdoc Validation.ValidatorBase._validate}
|
|
40
|
+
*/
|
|
41
|
+
protected _validate(from: unknown, context?: TC): boolean | Failure<T>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/validation/field.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAAC,EAAE,CAAE,SAAQ,gBAAgB,CAAC,EAAE,CAAC;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,cAAc,CAAC,CAAC,EAAE,EAAE,GAAC,SAAS,CAAE,SAAQ,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC;IACrE;;OAEG;IACH,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,SAAgB,cAAc,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAE5D;;;;;;;OAOG;gBAEC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAChC,OAAO,CAAC,EAAE,qBAAqB,CAAC,EAAE,CAAC;IASvC;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAqBzE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2020 Erik Fortune
|
|
4
|
+
*
|
|
5
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
* in the Software without restriction, including without limitation the rights
|
|
8
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
* furnished to do so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
* copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.FieldValidator = void 0;
|
|
25
|
+
const result_1 = require("../result");
|
|
26
|
+
const validatorBase_1 = require("./validatorBase");
|
|
27
|
+
const utils_1 = require("../utils");
|
|
28
|
+
/**
|
|
29
|
+
* An in-place {@link Validation.Validator | Validator} for properties
|
|
30
|
+
* an an object.
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
class FieldValidator extends validatorBase_1.ValidatorBase {
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new {@link Validation.FieldValidator | FieldValidator.}.
|
|
36
|
+
* @param fieldName - The name of the property that this validator should validate.
|
|
37
|
+
* @param fieldValidator - The {@link Validation.Validator | Validator} to be applied
|
|
38
|
+
* against the named property.
|
|
39
|
+
* @param options - Additional {@link Validation.FieldValidatorOptions | options} to be
|
|
40
|
+
* applied to this validation.
|
|
41
|
+
*/
|
|
42
|
+
constructor(fieldName, fieldValidator, options) {
|
|
43
|
+
super({ options });
|
|
44
|
+
this.fieldName = fieldName;
|
|
45
|
+
this.fieldValidator = fieldValidator;
|
|
46
|
+
// istanbul ignore next
|
|
47
|
+
this._fieldOptions = options !== null && options !== void 0 ? options : {};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* {@inheritdoc Validation.ValidatorBase._validate}
|
|
51
|
+
*/
|
|
52
|
+
_validate(from, context) {
|
|
53
|
+
if (typeof from === 'object' && !Array.isArray(from) && from !== null) {
|
|
54
|
+
const optional = this._fieldOptions.optional === true;
|
|
55
|
+
if ((0, utils_1.isKeyOf)(this.fieldName, from)) {
|
|
56
|
+
if ((!optional) || (from[this.fieldName] !== undefined)) {
|
|
57
|
+
const result = this.fieldValidator.validate(from[this.fieldName], context).onFailure((message) => {
|
|
58
|
+
return (0, result_1.fail)(`${this.fieldName}: ${message}`);
|
|
59
|
+
});
|
|
60
|
+
return result.success ? true : result;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return optional
|
|
64
|
+
? true
|
|
65
|
+
: (0, result_1.fail)(`"${this.fieldName}": Field not found in "${JSON.stringify(from)}`);
|
|
66
|
+
}
|
|
67
|
+
// istanbul ignore next -- defense in depth
|
|
68
|
+
return (0, result_1.fail)(`Cannot validate field '${this.fieldName}' from non-object "${JSON.stringify(from)}"`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.FieldValidator = FieldValidator;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi9maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCxzQ0FBMEM7QUFFMUMsbURBQWdEO0FBQ2hELG9DQUFtQztBQVVuQzs7OztHQUlHO0FBQ0gsTUFBYSxjQUFnQyxTQUFRLDZCQUFvQjtJQWNyRTs7Ozs7OztPQU9HO0lBQ0gsWUFDSSxTQUFpQixFQUNqQixjQUFnQyxFQUNoQyxPQUFtQztRQUVuQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxTQUFTLENBQUMsSUFBYSxFQUFFLE9BQVk7UUFDM0MsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO1lBRXRELElBQUksSUFBQSxlQUFPLEVBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUFFO29CQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO3dCQUNyRyxPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUNqRCxDQUFDLENBQUMsQ0FBQztvQkFFSCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2lCQUN6QzthQUNKO1lBRUQsT0FBTyxRQUFRO2dCQUNYLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxJQUFBLGFBQUksRUFBQyxJQUFJLElBQUksQ0FBQyxTQUFTLDBCQUEwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNsRjtRQUNELDJDQUEyQztRQUMzQyxPQUFPLElBQUEsYUFBSSxFQUFDLDBCQUEwQixJQUFJLENBQUMsU0FBUyxzQkFBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkcsQ0FBQztDQUNKO0FBMURELHdDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEZhaWx1cmUsIGZhaWwgfSBmcm9tICcuLi9yZXN1bHQnO1xuaW1wb3J0IHsgVmFsaWRhdG9yLCBWYWxpZGF0b3JPcHRpb25zIH0gZnJvbSAnLi92YWxpZGF0b3InO1xuaW1wb3J0IHsgVmFsaWRhdG9yQmFzZSB9IGZyb20gJy4vdmFsaWRhdG9yQmFzZSc7XG5pbXBvcnQgeyBpc0tleU9mIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgdXNlZCB0byBjb25zdHJ1Y3QgYSB7QGxpbmsgVmFsaWRhdGlvbi5GaWVsZFZhbGlkYXRvciB8IEZpZWxkVmFsaWRhdG9yfS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWVsZFZhbGlkYXRvck9wdGlvbnM8VEM+IGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9uczxUQz4ge1xuICAgIG9wdGlvbmFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbiBpbi1wbGFjZSB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBWYWxpZGF0b3J9IGZvciBwcm9wZXJ0aWVzXG4gKiBhbiBhbiBvYmplY3QuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWVsZFZhbGlkYXRvcjxULCBUQz11bmRlZmluZWQ+IGV4dGVuZHMgVmFsaWRhdG9yQmFzZTxULCBUQz4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IHRoaXMgdmFsaWRhdG9yIHNob3VsZCB2YWxpZGF0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGROYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IFZhbGlkYXRvcn0gdG8gYmUgYXBwbGllZCBhZ2FpbnN0IHRoZSBuYW1lZCBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGRWYWxpZGF0b3I6IFZhbGlkYXRvcjxULCBUQz47XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZE9wdGlvbnM6IEZpZWxkVmFsaWRhdG9yT3B0aW9uczxUQz47XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBWYWxpZGF0aW9uLkZpZWxkVmFsaWRhdG9yIHwgRmllbGRWYWxpZGF0b3IufS5cbiAgICAgKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgdGhpcyB2YWxpZGF0b3Igc2hvdWxkIHZhbGlkYXRlLlxuICAgICAqIEBwYXJhbSBmaWVsZFZhbGlkYXRvciAtIFRoZSB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBWYWxpZGF0b3J9IHRvIGJlIGFwcGxpZWRcbiAgICAgKiBhZ2FpbnN0IHRoZSBuYW1lZCBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwge0BsaW5rIFZhbGlkYXRpb24uRmllbGRWYWxpZGF0b3JPcHRpb25zIHwgb3B0aW9uc30gdG8gYmVcbiAgICAgKiBhcHBsaWVkIHRvIHRoaXMgdmFsaWRhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZpZWxkTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWVsZFZhbGlkYXRvcjogVmFsaWRhdG9yPFQsIFRDPixcbiAgICAgICAgb3B0aW9ucz86IEZpZWxkVmFsaWRhdG9yT3B0aW9uczxUQz4sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHsgb3B0aW9ucyB9KTtcbiAgICAgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0b3IgPSBmaWVsZFZhbGlkYXRvcjtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgdGhpcy5fZmllbGRPcHRpb25zID0gb3B0aW9ucyA/PyB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGluaGVyaXRkb2MgVmFsaWRhdGlvbi5WYWxpZGF0b3JCYXNlLl92YWxpZGF0ZX1cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3ZhbGlkYXRlKGZyb206IHVua25vd24sIGNvbnRleHQ/OiBUQyk6IGJvb2xlYW4gfCBGYWlsdXJlPFQ+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmcm9tID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShmcm9tKSAmJiBmcm9tICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25hbCA9IHRoaXMuX2ZpZWxkT3B0aW9ucy5vcHRpb25hbCA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGlzS2V5T2YodGhpcy5maWVsZE5hbWUsIGZyb20pKSB7XG4gICAgICAgICAgICAgICAgaWYgKCghb3B0aW9uYWwpIHx8IChmcm9tW3RoaXMuZmllbGROYW1lXSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpZWxkVmFsaWRhdG9yLnZhbGlkYXRlKGZyb21bdGhpcy5maWVsZE5hbWVdLCBjb250ZXh0KS5vbkZhaWx1cmUoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7dGhpcy5maWVsZE5hbWV9OiAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc3VjY2VzcyA/IHRydWUgOiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uYWxcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhaWwoYFwiJHt0aGlzLmZpZWxkTmFtZX1cIjogRmllbGQgbm90IGZvdW5kIGluIFwiJHtKU09OLnN0cmluZ2lmeShmcm9tKX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtLSBkZWZlbnNlIGluIGRlcHRoXG4gICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgdmFsaWRhdGUgZmllbGQgJyR7dGhpcy5maWVsZE5hbWV9JyBmcm9tIG5vbi1vYmplY3QgXCIke0pTT04uc3RyaW5naWZ5KGZyb20pfVwiYCk7XG4gICAgfVxufVxuIl19
|