@fgv/ts-utils 1.9.3 → 2.0.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/CHANGELOG.json +26 -0
- package/CHANGELOG.md +14 -0
- package/dist/ts-utils.d.ts +3007 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +68 -0
- package/lib/index.js.map +1 -0
- package/lib/packlets/base/brand.d.ts.map +1 -0
- package/lib/packlets/base/brand.js +24 -0
- package/lib/packlets/base/brand.js.map +1 -0
- package/lib/packlets/base/index.d.ts +7 -0
- package/lib/packlets/base/index.d.ts.map +1 -0
- package/lib/packlets/base/index.js +58 -0
- package/lib/packlets/base/index.js.map +1 -0
- package/{logger.d.ts → lib/packlets/base/logger.d.ts} +16 -1
- package/lib/packlets/base/logger.d.ts.map +1 -0
- package/lib/packlets/base/logger.js +128 -0
- package/lib/packlets/base/logger.js.map +1 -0
- package/{normalize.d.ts → lib/packlets/base/normalize.d.ts} +6 -0
- package/lib/packlets/base/normalize.d.ts.map +1 -0
- package/lib/packlets/base/normalize.js +139 -0
- package/lib/packlets/base/normalize.js.map +1 -0
- package/{result.d.ts → lib/packlets/base/result.d.ts} +16 -15
- package/lib/packlets/base/result.d.ts.map +1 -0
- package/lib/packlets/base/result.js +571 -0
- package/lib/packlets/base/result.js.map +1 -0
- package/lib/packlets/base/utils.d.ts.map +1 -0
- package/lib/packlets/base/utils.js +200 -0
- package/lib/packlets/base/utils.js.map +1 -0
- package/{converter.d.ts → lib/packlets/conversion/converter.d.ts} +11 -12
- package/lib/packlets/conversion/converter.d.ts.map +1 -0
- package/lib/packlets/conversion/converter.js +218 -0
- package/lib/packlets/conversion/converter.js.map +1 -0
- package/{converters.d.ts → lib/packlets/conversion/converters.d.ts} +52 -216
- package/lib/packlets/conversion/converters.d.ts.map +1 -0
- package/lib/packlets/conversion/converters.js +739 -0
- package/lib/packlets/conversion/converters.js.map +1 -0
- package/lib/packlets/conversion/index.d.ts +6 -0
- package/lib/packlets/conversion/index.d.ts.map +1 -0
- package/lib/packlets/conversion/index.js +56 -0
- package/lib/packlets/conversion/index.js.map +1 -0
- package/lib/packlets/conversion/objectConverter.d.ts +94 -0
- package/lib/packlets/conversion/objectConverter.d.ts.map +1 -0
- package/lib/packlets/conversion/objectConverter.js +110 -0
- package/lib/packlets/conversion/objectConverter.js.map +1 -0
- package/lib/packlets/conversion/stringConverter.d.ts +78 -0
- package/lib/packlets/conversion/stringConverter.d.ts.map +1 -0
- package/lib/packlets/conversion/stringConverter.js +97 -0
- package/lib/packlets/conversion/stringConverter.js.map +1 -0
- package/{csvHelpers.d.ts → lib/packlets/csv/csvHelpers.d.ts} +1 -1
- package/lib/packlets/csv/csvHelpers.d.ts.map +1 -0
- package/lib/packlets/csv/csvHelpers.js +69 -0
- package/lib/packlets/csv/csvHelpers.js.map +1 -0
- package/lib/packlets/csv/index.d.ts +2 -0
- package/lib/packlets/csv/index.d.ts.map +1 -0
- package/lib/packlets/csv/index.js +39 -0
- package/lib/packlets/csv/index.js.map +1 -0
- package/{extendedArray.d.ts → lib/packlets/experimental/extendedArray.d.ts} +7 -7
- package/lib/packlets/experimental/extendedArray.d.ts.map +1 -0
- package/lib/packlets/experimental/extendedArray.js +106 -0
- package/lib/packlets/experimental/extendedArray.js.map +1 -0
- package/{formatter.d.ts → lib/packlets/experimental/formatter.d.ts} +6 -6
- package/lib/packlets/experimental/formatter.d.ts.map +1 -0
- package/lib/packlets/experimental/formatter.js +75 -0
- package/lib/packlets/experimental/formatter.js.map +1 -0
- package/lib/packlets/experimental/index.d.ts +4 -0
- package/lib/packlets/experimental/index.d.ts.map +1 -0
- package/lib/packlets/experimental/index.js +41 -0
- package/lib/packlets/experimental/index.js.map +1 -0
- package/{rangeOf.d.ts → lib/packlets/experimental/rangeOf.d.ts} +21 -24
- package/lib/packlets/experimental/rangeOf.d.ts.map +1 -0
- package/lib/packlets/experimental/rangeOf.js +185 -0
- package/lib/packlets/experimental/rangeOf.js.map +1 -0
- package/{hash.d.ts → lib/packlets/hash/hash.d.ts} +1 -1
- package/lib/packlets/hash/hash.d.ts.map +1 -0
- package/lib/packlets/hash/hash.js +168 -0
- package/lib/packlets/hash/hash.js.map +1 -0
- package/lib/packlets/hash/index.d.ts +2 -0
- package/lib/packlets/hash/index.d.ts.map +1 -0
- package/lib/packlets/hash/index.js +39 -0
- package/lib/packlets/hash/index.js.map +1 -0
- package/lib/packlets/record-jar/index.d.ts +2 -0
- package/lib/packlets/record-jar/index.d.ts.map +1 -0
- package/lib/packlets/record-jar/index.js +39 -0
- package/lib/packlets/record-jar/index.js.map +1 -0
- package/{recordJarHelpers.d.ts → lib/packlets/record-jar/recordJarHelpers.d.ts} +1 -1
- package/lib/packlets/record-jar/recordJarHelpers.d.ts.map +1 -0
- package/lib/packlets/record-jar/recordJarHelpers.js +263 -0
- package/lib/packlets/record-jar/recordJarHelpers.js.map +1 -0
- package/{validation → lib/packlets/validation}/array.d.ts +2 -2
- package/lib/packlets/validation/array.d.ts.map +1 -0
- package/lib/packlets/validation/array.js +67 -0
- package/lib/packlets/validation/array.js.map +1 -0
- package/{validation → lib/packlets/validation}/boolean.d.ts +1 -1
- package/lib/packlets/validation/boolean.d.ts.map +1 -0
- package/lib/packlets/validation/boolean.js +56 -0
- package/lib/packlets/validation/boolean.js.map +1 -0
- package/lib/packlets/validation/classes.d.ts.map +1 -0
- package/lib/packlets/validation/classes.js +38 -0
- package/lib/packlets/validation/classes.js.map +1 -0
- package/lib/packlets/validation/common.d.ts.map +1 -0
- package/lib/packlets/validation/common.js +24 -0
- package/lib/packlets/validation/common.js.map +1 -0
- package/{validation → lib/packlets/validation}/field.d.ts +1 -1
- package/lib/packlets/validation/field.d.ts.map +1 -0
- package/lib/packlets/validation/field.js +71 -0
- package/lib/packlets/validation/field.js.map +1 -0
- package/{validation → lib/packlets/validation}/genericValidator.d.ts +2 -3
- package/lib/packlets/validation/genericValidator.d.ts.map +1 -0
- package/lib/packlets/validation/genericValidator.js +137 -0
- package/lib/packlets/validation/genericValidator.js.map +1 -0
- package/lib/packlets/validation/index.d.ts.map +1 -0
- package/{validation → lib/packlets/validation}/index.js +1 -1
- package/lib/packlets/validation/index.js.map +1 -0
- package/{validation → lib/packlets/validation}/number.d.ts +1 -1
- package/lib/packlets/validation/number.d.ts.map +1 -0
- package/lib/packlets/validation/number.js +54 -0
- package/lib/packlets/validation/number.js.map +1 -0
- package/{validation → lib/packlets/validation}/object.d.ts +1 -1
- package/lib/packlets/validation/object.d.ts.map +1 -0
- package/lib/packlets/validation/object.js +139 -0
- package/lib/packlets/validation/object.js.map +1 -0
- package/{validation → lib/packlets/validation}/string.d.ts +1 -1
- package/lib/packlets/validation/string.d.ts.map +1 -0
- package/lib/packlets/validation/string.js +54 -0
- package/lib/packlets/validation/string.js.map +1 -0
- package/lib/packlets/validation/traits.d.ts.map +1 -0
- package/lib/packlets/validation/traits.js +58 -0
- package/lib/packlets/validation/traits.js.map +1 -0
- package/{validation → lib/packlets/validation}/typeGuard.d.ts +1 -1
- package/lib/packlets/validation/typeGuard.d.ts.map +1 -0
- package/lib/packlets/validation/typeGuard.js +62 -0
- package/lib/packlets/validation/typeGuard.js.map +1 -0
- package/{validation → lib/packlets/validation}/validator.d.ts +15 -16
- package/lib/packlets/validation/validator.d.ts.map +1 -0
- package/lib/packlets/validation/validator.js +24 -0
- package/lib/packlets/validation/validator.js.map +1 -0
- package/{validation → lib/packlets/validation}/validatorBase.d.ts +1 -1
- package/lib/packlets/validation/validatorBase.d.ts.map +1 -0
- package/lib/packlets/validation/validatorBase.js +41 -0
- package/lib/packlets/validation/validatorBase.js.map +1 -0
- package/{validation → lib/packlets/validation}/validators.d.ts +3 -6
- package/lib/packlets/validation/validators.d.ts.map +1 -0
- package/lib/packlets/validation/validators.js +121 -0
- package/lib/packlets/validation/validators.js.map +1 -0
- package/package.json +34 -33
- package/brand.d.ts.map +0 -1
- package/brand.js +0 -24
- package/converter.d.ts.map +0 -1
- package/converter.js +0 -222
- package/converters.d.ts.map +0 -1
- package/converters.js +0 -896
- package/csvHelpers.d.ts.map +0 -1
- package/csvHelpers.js +0 -69
- package/extendedArray.d.ts.map +0 -1
- package/extendedArray.js +0 -106
- package/formatter.d.ts.map +0 -1
- package/formatter.js +0 -75
- package/hash.d.ts.map +0 -1
- package/hash.js +0 -168
- package/index.d.ts +0 -15
- package/index.d.ts.map +0 -1
- package/index.js +0 -70
- package/logger.d.ts.map +0 -1
- package/logger.js +0 -115
- package/normalize.d.ts.map +0 -1
- package/normalize.js +0 -139
- package/rangeOf.d.ts.map +0 -1
- package/rangeOf.js +0 -185
- package/recordJarHelpers.d.ts.map +0 -1
- package/recordJarHelpers.js +0 -262
- package/result.d.ts.map +0 -1
- package/result.js +0 -569
- package/utils.d.ts.map +0 -1
- package/utils.js +0 -200
- package/validation/array.d.ts.map +0 -1
- package/validation/array.js +0 -67
- package/validation/boolean.d.ts.map +0 -1
- package/validation/boolean.js +0 -59
- package/validation/classes.d.ts.map +0 -1
- package/validation/classes.js +0 -38
- package/validation/common.d.ts.map +0 -1
- package/validation/common.js +0 -24
- package/validation/field.d.ts.map +0 -1
- package/validation/field.js +0 -72
- package/validation/genericValidator.d.ts.map +0 -1
- package/validation/genericValidator.js +0 -138
- package/validation/index.d.ts.map +0 -1
- package/validation/number.d.ts.map +0 -1
- package/validation/number.js +0 -57
- package/validation/object.d.ts.map +0 -1
- package/validation/object.js +0 -143
- package/validation/string.d.ts.map +0 -1
- package/validation/string.js +0 -57
- package/validation/traits.d.ts.map +0 -1
- package/validation/traits.js +0 -58
- package/validation/typeGuard.d.ts.map +0 -1
- package/validation/typeGuard.js +0 -62
- package/validation/validator.d.ts.map +0 -1
- package/validation/validator.js +0 -24
- package/validation/validatorBase.d.ts.map +0 -1
- package/validation/validatorBase.js +0 -44
- package/validation/validators.d.ts.map +0 -1
- package/validation/validators.js +0 -119
- /package/{brand.d.ts → lib/packlets/base/brand.d.ts} +0 -0
- /package/{utils.d.ts → lib/packlets/base/utils.d.ts} +0 -0
- /package/{validation → lib/packlets/validation}/classes.d.ts +0 -0
- /package/{validation → lib/packlets/validation}/common.d.ts +0 -0
- /package/{validation → lib/packlets/validation}/index.d.ts +0 -0
- /package/{validation → lib/packlets/validation}/traits.d.ts +0 -0
package/converter.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
|
package/converter.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseConverter = void 0;
|
|
4
|
-
/*
|
|
5
|
-
* Copyright (c) 2020 Erik Fortune
|
|
6
|
-
*
|
|
7
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
-
* in the Software without restriction, including without limitation the rights
|
|
10
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
-
* furnished to do so, subject to the following conditions:
|
|
13
|
-
*
|
|
14
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
15
|
-
* copies or substantial portions of the Software.
|
|
16
|
-
*
|
|
17
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
-
* SOFTWARE.
|
|
24
|
-
*/
|
|
25
|
-
const result_1 = require("./result");
|
|
26
|
-
/**
|
|
27
|
-
* Base templated wrapper to simplify creation of new {@link Converter}s.
|
|
28
|
-
* @public
|
|
29
|
-
*/
|
|
30
|
-
class BaseConverter {
|
|
31
|
-
/**
|
|
32
|
-
* Constructs a new {@link Converter} which uses the supplied function to perform the conversion.
|
|
33
|
-
* @param converter - The conversion function to be applied.
|
|
34
|
-
* @param defaultContext - Optional conversion context to be used by default.
|
|
35
|
-
* @param traits - Optional {@link ConverterTraits | traits} to be assigned to the resulting
|
|
36
|
-
* converter.
|
|
37
|
-
*/
|
|
38
|
-
constructor(converter, defaultContext, traits) {
|
|
39
|
-
/**
|
|
40
|
-
* @internal
|
|
41
|
-
*/
|
|
42
|
-
this._isOptional = false;
|
|
43
|
-
this._converter = converter;
|
|
44
|
-
this._defaultContext = defaultContext;
|
|
45
|
-
this._isOptional = ((traits === null || traits === void 0 ? void 0 : traits.isOptional) === true);
|
|
46
|
-
this._brand = (traits === null || traits === void 0 ? void 0 : traits.brand);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* {@inheritdoc Converter.isOptional}
|
|
50
|
-
*/
|
|
51
|
-
get isOptional() {
|
|
52
|
-
return this._isOptional;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* {@inheritdoc Converter.brand}
|
|
56
|
-
*/
|
|
57
|
-
get brand() {
|
|
58
|
-
return this._brand;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* {@inheritdoc Converter.convert}
|
|
62
|
-
*/
|
|
63
|
-
convert(from, context) {
|
|
64
|
-
return this._converter(from, this, context !== null && context !== void 0 ? context : this._defaultContext);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* {@inheritdoc Converter.convertOptional}
|
|
68
|
-
*/
|
|
69
|
-
convertOptional(from, context, onError) {
|
|
70
|
-
const result = this._converter(from, this, this._context(context));
|
|
71
|
-
if (result.isFailure()) {
|
|
72
|
-
onError = onError !== null && onError !== void 0 ? onError : 'ignoreErrors';
|
|
73
|
-
return ((from === undefined) || onError === 'ignoreErrors') ? (0, result_1.succeed)(undefined) : result;
|
|
74
|
-
}
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* {@inheritdoc Converter.optional}
|
|
79
|
-
*/
|
|
80
|
-
optional(onError) {
|
|
81
|
-
return new BaseConverter((from, _self, context) => {
|
|
82
|
-
onError = onError !== null && onError !== void 0 ? onError : 'failOnError';
|
|
83
|
-
return this.convertOptional(from, this._context(context), onError);
|
|
84
|
-
})._with(this._traits({ isOptional: true }));
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* {@inheritdoc Converter.map}
|
|
88
|
-
*/
|
|
89
|
-
map(mapper) {
|
|
90
|
-
return new BaseConverter((from, _self, context) => {
|
|
91
|
-
const innerResult = this._converter(from, this, this._context(context));
|
|
92
|
-
if (innerResult.isSuccess()) {
|
|
93
|
-
return mapper(innerResult.value);
|
|
94
|
-
}
|
|
95
|
-
return (0, result_1.fail)(innerResult.message);
|
|
96
|
-
})._with(this._traits());
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* {@inheritdoc Converter.mapConvert}
|
|
100
|
-
*/
|
|
101
|
-
mapConvert(mapConverter) {
|
|
102
|
-
return new BaseConverter((from, _self, context) => {
|
|
103
|
-
const innerResult = this._converter(from, this, this._context(context));
|
|
104
|
-
if (innerResult.isSuccess()) {
|
|
105
|
-
return mapConverter.convert(innerResult.value);
|
|
106
|
-
}
|
|
107
|
-
return (0, result_1.fail)(innerResult.message);
|
|
108
|
-
// eslint-disable-next-line no-return-assign
|
|
109
|
-
})._with(this._traits());
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* {@inheritdoc Converter.mapItems}
|
|
113
|
-
*/
|
|
114
|
-
mapItems(mapper) {
|
|
115
|
-
return new BaseConverter((from, _self, context) => {
|
|
116
|
-
return this._converter(from, this, this._context(context)).onSuccess((items) => {
|
|
117
|
-
if (Array.isArray(items)) {
|
|
118
|
-
return (0, result_1.mapResults)(items.map((i) => mapper(i)));
|
|
119
|
-
}
|
|
120
|
-
return (0, result_1.fail)('Cannot map items - not an array');
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* {@inheritdoc Converter.mapConvertItems}
|
|
126
|
-
*/
|
|
127
|
-
mapConvertItems(mapConverter) {
|
|
128
|
-
return new BaseConverter((from, _self, context) => {
|
|
129
|
-
return this._converter(from, this, this._context(context)).onSuccess((items) => {
|
|
130
|
-
if (Array.isArray(items)) {
|
|
131
|
-
return (0, result_1.mapResults)(items.map((i) => mapConverter.convert(i)));
|
|
132
|
-
}
|
|
133
|
-
return (0, result_1.fail)('Cannot map items - not an array');
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* {@inheritdoc Converter.withTypeGuard}
|
|
139
|
-
*/
|
|
140
|
-
withTypeGuard(guard, message) {
|
|
141
|
-
return new BaseConverter((from, _self, context) => {
|
|
142
|
-
return this._converter(from, this, this._context(context)).onSuccess((inner) => {
|
|
143
|
-
message = message !== null && message !== void 0 ? message : 'invalid type';
|
|
144
|
-
return guard(inner) ? (0, result_1.succeed)(inner) : (0, result_1.fail)(`${message}: ${JSON.stringify(from)}`);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* {@inheritdoc Converter.withItemTypeGuard}
|
|
150
|
-
*/
|
|
151
|
-
withItemTypeGuard(guard, message) {
|
|
152
|
-
return new BaseConverter((from, _self, context) => {
|
|
153
|
-
return this._converter(from, this, this._context(context)).onSuccess((items) => {
|
|
154
|
-
if (Array.isArray(items)) {
|
|
155
|
-
return (0, result_1.mapResults)(items.map((i) => {
|
|
156
|
-
message = message !== null && message !== void 0 ? message : 'invalid type';
|
|
157
|
-
return guard(i) ? (0, result_1.succeed)(i) : (0, result_1.fail)(`${message}: ${JSON.stringify(from)}`);
|
|
158
|
-
}));
|
|
159
|
-
}
|
|
160
|
-
return (0, result_1.fail)('Cannot guard item type - not an array');
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* {@inheritdoc Converter.withConstraint}
|
|
166
|
-
*/
|
|
167
|
-
withConstraint(constraint, options) {
|
|
168
|
-
return new BaseConverter((from, _self, context) => {
|
|
169
|
-
var _a;
|
|
170
|
-
const result = this._converter(from, this, this._context(context));
|
|
171
|
-
if (result.isSuccess()) {
|
|
172
|
-
const constraintResult = constraint(result.value);
|
|
173
|
-
if (typeof constraintResult === 'boolean') {
|
|
174
|
-
return constraintResult
|
|
175
|
-
? result
|
|
176
|
-
: (0, result_1.fail)(`"${JSON.stringify(result.value)}": ${(_a = options === null || options === void 0 ? void 0 : options.description) !== null && _a !== void 0 ? _a : 'does not meet constraint'}`);
|
|
177
|
-
}
|
|
178
|
-
return constraintResult;
|
|
179
|
-
}
|
|
180
|
-
return result;
|
|
181
|
-
})._with(this._traits());
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* {@inheritdoc Converter.withBrand}
|
|
185
|
-
*/
|
|
186
|
-
withBrand(brand) {
|
|
187
|
-
if (this._brand) {
|
|
188
|
-
throw new Error(`Cannot replace existing brand "${this._brand}" with "${brand}".`);
|
|
189
|
-
}
|
|
190
|
-
return new BaseConverter((from, _self, context) => {
|
|
191
|
-
return this._converter(from, this, this._context(context)).onSuccess((v) => {
|
|
192
|
-
return (0, result_1.succeed)(v);
|
|
193
|
-
});
|
|
194
|
-
})._with(this._traits({ brand }));
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* @internal
|
|
198
|
-
*/
|
|
199
|
-
_context(supplied) {
|
|
200
|
-
return supplied !== null && supplied !== void 0 ? supplied : this._defaultContext;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* @internal
|
|
204
|
-
*/
|
|
205
|
-
_traits(traits) {
|
|
206
|
-
return {
|
|
207
|
-
isOptional: this.isOptional,
|
|
208
|
-
brand: this.brand,
|
|
209
|
-
...(traits !== null && traits !== void 0 ? traits : {}),
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* @internal
|
|
214
|
-
*/
|
|
215
|
-
_with(traits) {
|
|
216
|
-
this._isOptional = (traits.isOptional === true);
|
|
217
|
-
this._brand = (traits.brand);
|
|
218
|
-
return this;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
exports.BaseConverter = BaseConverter;
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxxQ0FBNkQ7QUEyTTdEOzs7R0FHRztBQUNILE1BQWEsYUFBYTtJQWdCdEI7Ozs7OztPQU1HO0lBQ0gsWUFDSSxTQUE2RSxFQUM3RSxjQUFtQixFQUNuQixNQUF3QjtRQXJCNUI7O1dBRUc7UUFDTyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQW9CMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsTUFBSyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxJQUFhLEVBQUUsT0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLElBQWEsRUFBRSxPQUFZLEVBQUUsT0FBaUI7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFB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RUQsT0FBTyxJQUFJLGFBQWEsQ0FBa0IsQ0FBQyxJQUFhLEVBQUUsS0FBdUIsRUFBRSxPQUFZLEVBQUUsRUFBRTtZQUMvRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZFLE9BQU8sSUFBQSxnQkFBTyxFQUFDLENBQWdCLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNPLFFBQVEsQ0FBQyxRQUFhO1FBQzVCLE9BQU8sUUFBUSxhQUFSLFFBQVEsY0FBUixRQUFRLEdBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxPQUFPLENBQUMsTUFBaUM7UUFDL0MsT0FBTztZQUNILFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsR0FBRyxDQUFDLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLEVBQUUsQ0FBQztTQUNwQixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ08sS0FBSyxDQUFDLE1BQWdDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBbE9ELHNDQWtPQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0IHsgUmVzdWx0LCBmYWlsLCBtYXBSZXN1bHRzLCBzdWNjZWVkIH0gZnJvbSAnLi9yZXN1bHQnO1xuaW1wb3J0IHsgQnJhbmQgfSBmcm9tICcuL2JyYW5kJztcblxudHlwZSBPbkVycm9yID0gJ2ZhaWxPbkVycm9yJyB8ICdpZ25vcmVFcnJvcnMnO1xuXG4vKipcbiAqIENvbnZlcnRlciB0cmFpdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVydGVyVHJhaXRzIHtcbiAgICByZWFkb25seSBpc09wdGlvbmFsOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGJyYW5kPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBDb252ZXJ0ZXIud2l0aENvbnN0cmFpbnR9LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cmFpbnRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgZXJyb3IgbWVzc2FnZXMgd2hlbiBjb25zdHJhaW50XG4gICAgICogZnVuY3Rpb24gcmV0dXJucyBmYWxzZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgY29udmVydGVyIHRvIGNvbnZlcnQgdW5rbm93biB0byBhIHRlbXBsYXRlZCB0eXBlIGA8VD5gLCB1c2luZ1xuICogaW50cmluc2ljIHJ1bGVzIG9yIGFzIG1vZGlmaWVkIGJ5IGFuIG9wdGlvbmFsIGNvbnZlcnNpb24gY29udGV4dFxuICogb2Ygb3B0aW9uYWwgdGVtcGxhdGVkIHR5cGUgYDxUQz5gIChkZWZhdWx0IGB1bmRlZmluZWRgKS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0ZXI8VCwgVEM9dW5kZWZpbmVkPiBleHRlbmRzIENvbnZlcnRlclRyYWl0cyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBlbGVtZW50IGlzIGV4cGxpY2l0bHkgb3B0aW9uYWwuXG4gICAgICovXG4gICAgIHJlYWRvbmx5IGlzT3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgICAgLyoqXG4gICAgICAqIFJldHVybnMgdGhlIGJyYW5kIGZvciBhIGJyYW5kZWQgdHlwZS5cbiAgICAgICovXG4gICAgIHJlYWRvbmx5IGJyYW5kPzogc3RyaW5nO1xuXG4gICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGZyb20gYHVua25vd25gIHRvIGA8VD5gLlxuICAgICAqIEBwYXJhbSBmcm9tIC0gVGhlIGB1bmtub3duYCB0byBiZSBjb252ZXJ0ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCAtIEFuIG9wdGlvbmFsIGNvbnZlcnNpb24gY29udGV4dCBvZiB0eXBlIGA8VEM+YCB0byBiZSB1c2VkIGluXG4gICAgICogdGhlIGNvbnZlcnNpb24uXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgUmVzdWx0fSB3aXRoIGEge0BsaW5rIFN1Y2Nlc3N9IGFuZCBhIHZhbHVlIG9uIHN1Y2Nlc3Mgb3IgYW5cbiAgICAgKiB7QGxpbmsgRmFpbHVyZX0gd2l0aCBhIGEgbWVzc2FnZSBvbiBmYWlsdXJlLlxuICAgICAqL1xuICAgIGNvbnZlcnQoZnJvbTogdW5rbm93biwgY29udGV4dD86IFRDKTogUmVzdWx0PFQ+O1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgZnJvbSBgdW5rbm93bmAgdG8gYDxUPmAgb3IgYHVuZGVmaW5lZGAsIGFzIGFwcHJvcHJpYXRlLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBgb25FcnJvcmAgaXMgYGZhaWxPbkVycm9yYCwgdGhlIGNvbnZlcnRlciBzdWNjZWVkcyBmb3JcbiAgICAgKiBgdW5kZWZpbmVkYCBvciBhbnkgY29udmVydGlibGUgdmFsdWUsIGJ1dCByZXBvcnRzIGFuIGVycm9yXG4gICAgICogaWYgaXQgZW5jb3VudGVycyBhIHZhbHVlIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZC5cbiAgICAgKlxuICAgICAqIElmIGBvbkVycm9yYCBpcyBgaWdub3JlRXJyb3JzYCAoZGVmYXVsdCkgdGhlbiB2YWx1ZXMgdGhhdFxuICAgICAqIGNhbm5vdCBiZSBjb252ZXJ0ZWQgcmVzdWx0IGluIGEgc3VjY2Vzc2Z1bCByZXR1cm4gb2YgYHVuZGVmaW5lZGAuXG4gICAgICogQHBhcmFtIGZyb20gLSBUaGUgYHVua25vd25gIHRvIGJlIGNvbnZlcnRlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IC0gQW4gb3B0aW9uYWwgY29udmVyc2lvbiBjb250ZXh0IG9mIHR5cGUgYDxUQz5gIHRvIGJlIHVzZWQgaW5cbiAgICAgKiB0aGUgY29udmVyc2lvbi5cbiAgICAgKiBAcGFyYW0gb25FcnJvciAtIFNwZWNpZmllcyBoYW5kbGluZyBvZiB2YWx1ZXMgdGhhdCBjYW5ub3QgYmUgY29udmVydGVkIChkZWZhdWx0IGBpZ25vcmVFcnJvcnNgKS5cbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBSZXN1bHR9IHdpdGggYSB7QGxpbmsgU3VjY2Vzc30gYW5kIGEgdmFsdWUgb24gc3VjY2VzcyBvciBhblxuICAgICAqIHtAbGluayBGYWlsdXJlfSB3aXRoIGEgYSBtZXNzYWdlIG9uIGZhaWx1cmUuXG4gICAgICovXG4gICAgY29udmVydE9wdGlvbmFsKGZyb206IHVua25vd24sIGNvbnRleHQ/OiBUQywgb25FcnJvcj86IE9uRXJyb3IpOiBSZXN1bHQ8VHx1bmRlZmluZWQ+O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBDb252ZXJ0ZXJ9IGZvciBhbiBvcHRpb25hbCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogSWYgYG9uRXJyb3JgIGlzIGBmYWlsT25FcnJvcmAsIHRoZSByZXN1bHRpbmcgY29udmVydGVyIHdpbGwgYWNjZXB0IGB1bmRlZmluZWRgXG4gICAgICogb3IgYSBjb252ZXJ0aWJsZSB2YWx1ZSwgYnV0IHJlcG9ydCBhbiBlcnJvciBpZiBpdCBlbmNvdW50ZXJzIGEgdmFsdWUgdGhhdCBjYW5ub3QgYmVcbiAgICAgKiBjb252ZXJ0ZWQuXG4gICAgICpcbiAgICAgKiBJZiBgb25FcnJvcmAgaXMgYGlnbm9yZUVycm9yc2AgKGRlZmF1bHQpIHRoZW4gdmFsdWVzIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZCB3aWxsXG4gICAgICogcmVzdWx0IGluIGEgc3VjY2Vzc2Z1bCByZXR1cm4gb2YgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb25FcnJvciAtIFNwZWNpZmllcyBoYW5kbGluZyBvZiB2YWx1ZXMgdGhhdCBjYW5ub3QgYmUgY29udmVydGVkIChkZWZhdWx0IGBpZ25vcmVFcnJvcnNgKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29udmVydGVyfSByZXR1cm5pbmcgYDxUfHVuZGVmaW5lZD5gLlxuICAgICAqICovXG4gICAgb3B0aW9uYWwob25FcnJvcj86IE9uRXJyb3IpOiBDb252ZXJ0ZXI8VHx1bmRlZmluZWQsIFRDPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQ29udmVydGVyfSB3aGljaCBhcHBsaWVzIGEgKHBvc3NpYmx5KSBtYXBwaW5nIGNvbnZlcnNpb24gdG9cbiAgICAgKiB0aGUgY29udmVydGVkIHZhbHVlIG9mIHRoaXMge0BsaW5rIENvbnZlcnRlcn0uXG4gICAgICogQHBhcmFtIG1hcHBlciAtIEEgZnVuY3Rpb24gd2hpY2ggbWFwcyBmcm9tIHRoZSB0aGUgcmVzdWx0IHR5cGUgYDxUPmAgb2YgdGhpc1xuICAgICAqIGNvbnZlcnRlciB0byBhIG5ldyByZXN1bHQgdHlwZSBgPFQyPmAuXG4gICAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIENvbnZlcnRlcn0gcmV0dXJuaW5nIGA8VDI+YC5cbiAgICAgKi9cbiAgICBtYXA8VDI+KG1hcHBlcjogKGZyb206IFQpID0+IFJlc3VsdDxUMj4pOiBDb252ZXJ0ZXI8VDIsIFRDPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQ29udmVydGVyfSB3aGljaCBhcHBsaWVzIGFuIGFkZGl0aW9uYWwgc3VwcGxpZWRcbiAgICAgKiBjb252ZXJ0ZXIgdG8gdGhlIHJlc3VsdCBvZiB0aGlzIGNvbnZlcnRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtYXBDb252ZXJ0ZXIgLSBUaGUge0BsaW5rIENvbnZlcnRlcn0gdG8gYmUgYXBwbGllZCB0byB0aGVcbiAgICAgKiBjb252ZXJ0ZWQgcmVzdWx0IGZyb20gdGhpcyB7QGxpbmsgQ29udmVydGVyfS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29udmVydGVyfSByZXR1cm5pbmcgYDxUMj5gLlxuICAgICAqL1xuICAgIG1hcENvbnZlcnQ8VDI+KG1hcENvbnZlcnRlcjogQ29udmVydGVyPFQyPik6IENvbnZlcnRlcjxUMiwgVEM+O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBDb252ZXJ0ZXJ9IHdoaWNoIG1hcHMgdGhlIGluZGl2aWR1YWwgaXRlbXMgb2YgYSBjb2xsZWN0aW9uXG4gICAgICogcmVzdWx0aW5nIGZyb20gdGhpcyB7QGxpbmsgQ29udmVydGVyfSB1c2luZyB0aGUgc3VwcGxpZWQgbWFwIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBGYWlscyBpZiBgZnJvbWAgaXMgbm90IGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIG1hcHBlciAtIFRoZSBtYXAgZnVuY3Rpb24gdG8gYmUgYXBwbGllZCB0byBlYWNoIGVsZW1lbnQgb2YgdGhlXG4gICAgICogcmVzdWx0IG9mIHRoaXMge0BsaW5rIENvbnZlcnRlcn0uXG4gICAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIENvbnZlcnRlcn0gcmV0dXJuaW5nIGA8VElbXT5gLlxuICAgICAqL1xuICAgIG1hcEl0ZW1zPFRJPihtYXBwZXI6IChmcm9tOiB1bmtub3duKSA9PiBSZXN1bHQ8VEk+KTogQ29udmVydGVyPFRJW10sIFRDPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQ29udmVydGVyfSB3aGljaCBtYXBzIHRoZSBpbmRpdmlkdWFsIGl0ZW1zIG9mIGEgY29sbGVjdGlvblxuICAgICAqIHJlc3VsdGluZyBmcm9tIHRoaXMge0BsaW5rIENvbnZlcnRlcn0gdXNpbmcgdGhlIHN1cHBsaWVkIHtAbGluayBDb252ZXJ0ZXJ9LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBGYWlscyBpZiBgZnJvbWAgaXMgbm90IGFuIGFycmF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIG1hcENvbnZlcnRlciAtIFRoZSB7QGxpbmsgQ29udmVydGVyfSB0byBiZSBhcHBsaWVkIHRvIGVhY2ggZWxlbWVudCBvZiB0aGVcbiAgICAgKiByZXN1bHQgb2YgdGhpcyB7QGxpbmsgQ29udmVydGVyfS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29udmVydGVyfSByZXR1cm5pbmcgYDxUSVtdPmAuXG4gICAgICovXG4gICAgIG1hcENvbnZlcnRJdGVtczxUST4obWFwQ29udmVydGVyOiBDb252ZXJ0ZXI8VEksIHVua25vd24+KTogQ29udmVydGVyPFRJW10sIFRDPjtcblxuICAgICAvKipcbiAgICAgICogQ3JlYXRlcyBhIHtAbGluayBDb252ZXJ0ZXJ9IHdoaWNoIGFwcGxpZXMgYSBzdXBwbGllZCB0eXBlIGd1YXJkIHRvIHRoZSBjb252ZXJzaW9uXG4gICAgICAqIHJlc3VsdC5cbiAgICAgICogQHBhcmFtIGd1YXJkIC0gVGhlIHR5cGUgZ3VhcmQgZnVuY3Rpb24gdG8gYXBwbHkuXG4gICAgICAqIEBwYXJhbSBtZXNzYWdlIC0gT3B0aW9uYWwgbWVzc2FnZSB0byBiZSByZXBvcnRlZCBpZiB0aGUgdHlwZSBndWFyZCBmYWlscy5cbiAgICAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIENvbnZlcnRlcn0gcmV0dXJuaW5nIGA8VEk+YC5cbiAgICAgICovXG4gICAgd2l0aFR5cGVHdWFyZDxUST4oZ3VhcmQ6IChmcm9tOiB1bmtub3duKSA9PiBmcm9tIGlzIFRJLCBtZXNzYWdlPzogc3RyaW5nKTogQ29udmVydGVyPFRJLCBUQz47XG5cbiAgICAgLyoqXG4gICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQ29udmVydGVyfSB3aGljaCBhcHBsaWVzIGEgc3VwcGxpZWQgdHlwZSBndWFyZCB0byBlYWNoIG1lbWJlciBvZlxuICAgICAgKiB0aGUgY29udmVyc2lvbiByZXN1bHQgZnJvbSB0aGlzIGNvbnZlcnRlci5cbiAgICAgICpcbiAgICAgICogQHJlbWFya3NcbiAgICAgICogRmFpbHMgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIG5vdCBhbiBhcnJheSBvciBpZiBhbnkgbWVtYmVyIGZhaWxzIHRoZVxuICAgICAgKiB0eXBlIGd1YXJkLlxuICAgICAgKiBAcGFyYW0gZ3VhcmQgLSBUaGUgdHlwZSBndWFyZCBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGVsZW1lbnQuXG4gICAgICAqIEBwYXJhbSBtZXNzYWdlIC0gT3B0aW9uYWwgbWVzc2FnZSB0byBiZSByZXBvcnRlZCBpZiB0aGUgdHlwZSBndWFyZCBmYWlscy5cbiAgICAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIENvbnZlcnRlcn0gcmV0dXJuaW5nIGA8VEk+YC5cbiAgICAgICovXG4gICAgICB3aXRoSXRlbVR5cGVHdWFyZDxUST4oZ3VhcmQ6IChmcm9tOiB1bmtub3duKSA9PiBmcm9tIGlzIFRJLCBtZXNzYWdlPzogc3RyaW5nKTogQ29udmVydGVyPFRJW10sIFRDPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQ29udmVydGVyfSB3aGljaCBhcHBsaWVzIGFuIG9wdGlvbmFsIGNvbnN0cmFpbnQgdG8gdGhlIHJlc3VsdFxuICAgICAqIG9mIHRoaXMgY29udmVyc2lvbi4gIElmIHRoaXMge0BsaW5rIENvbnZlcnRlcn0gKHRoZSBiYXNlIGNvbnZlcnRlcikgc3VjY2VlZHMsIHRoZSBuZXdcbiAgICAgKiBjb252ZXJ0ZXIgY2FsbHMgYSBzdXBwbGllZCBjb25zdHJhaW50IGV2YWx1YXRpb24gZnVuY3Rpb24gd2l0aCB0aGUgY29udmVyc2lvbiwgd2hpY2hcbiAgICAgKiBmYWlscyB0aGUgZW50aXJlIGNvbnZlcnNpb24gaWYgdGhlIGNvbnN0cmFpbnQgZnVuY3Rpb24gcmV0dXJucyBlaXRoZXIgYGZhbHNlYCBvclxuICAgICAqIHtAbGluayBGYWlsdXJlIHwgRmFpbHVyZTxUPn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uc3RyYWludCAtIENvbnN0cmFpbnQgZXZhbHVhdGlvbiBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIHtAbGluayBDb25zdHJhaW50T3B0aW9ucyB8IE9wdGlvbnN9IGZvciBjb25zdHJhaW50IGV2YWx1YXRpb24uXG4gICAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIENvbnZlcnRlcn0gcmV0dXJuaW5nIGA8VD5gLlxuICAgICAqL1xuICAgIHdpdGhDb25zdHJhaW50KFxuICAgICAgICBjb25zdHJhaW50OiAodmFsOiBUKSA9PiBib29sZWFufFJlc3VsdDxUPixcbiAgICAgICAgb3B0aW9ucz86IENvbnN0cmFpbnRPcHRpb25zLFxuICAgICk6IENvbnZlcnRlcjxULCBUQz47XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGEgY29udmVydGVyIHdoaWNoIGFkZHMgYSBicmFuZCB0byB0aGUgdHlwZSB0byBwcmV2ZW50IG1pc21hdGNoZWQgdXNhZ2VcbiAgICAgKiBvZiBzaW1wbGUgdHlwZXMuXG4gICAgICogQHBhcmFtIGJyYW5kIC0gVGhlIGJyYW5kIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3VsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBDb252ZXJ0ZXJ9IHJldHVybmluZyBgQnJhbmQ8VCwgQj5gLlxuICAgICAqL1xuICAgIHdpdGhCcmFuZDxCIGV4dGVuZHMgc3RyaW5nPihicmFuZDogQik6IENvbnZlcnRlcjxCcmFuZDxULCBCPiwgVEM+O1xufVxuXG4vKipcbiAqIGludGVybmFsXG4gKi9cbnR5cGUgSW5uZXJJbmZlcnJlZFR5cGU8VENPTlY+ID1cbiAgICBUQ09OViBleHRlbmRzIENvbnZlcnRlcjxpbmZlciBUVE8+XG4gICAgICAgID8gKFRUTyBleHRlbmRzIEFycmF5PGluZmVyIFRUT0VMRU0+ID8gSW5uZXJJbmZlcnJlZFR5cGU8VFRPRUxFTT5bXSA6IFRUTylcbiAgICAgICAgOiAoVENPTlYgZXh0ZW5kcyBBcnJheTxpbmZlciBURUxFTT4gPyBJbm5lckluZmVycmVkVHlwZTxURUxFTT5bXSA6IFRDT05WKTtcblxuLyoqXG4gKiBJbmZlcnMgdGhlIHR5cGUgdGhhdCB3aWxsIGJlIHJldHVybmVkIGJ5IGFuIGluc3RhbnRpYXRlZCBjb252ZXJ0ZXIuICBXb3Jrc1xuICogZm9yIGNvbXBsZXggYXMgd2VsbCBhcyBzaW1wbGUgdHlwZXMuXG4gKiBAZXhhbXBsZSBgSW5mZXI8dHlwZW9mIENvbnZlcnRlcnMubWFwT2YoQ29udmVydGVycy5zdHJpbmdBcnJheSk+YCBpcyBgTWFwPHN0cmluZywgc3RyaW5nW10+YFxuICogQGJldGFcbiAqL1xuZXhwb3J0IHR5cGUgSW5mZXI8VENPTlY+ID0gVENPTlYgZXh0ZW5kcyBDb252ZXJ0ZXI8aW5mZXIgVFRPPiA/IElubmVySW5mZXJyZWRUeXBlPFRUTz4gOiBuZXZlcjtcblxuLyoqXG4gKiBEZXByZWNhdGVkIG5hbWUgZm9yIEluZmVyPFQ+IHJldGFpbmVkIGZvciBjb21wYXRpYmlsaXR5XG4gKiBAZGVwcmVjYXRlZCB1c2UgQHNlZSBJbmZlciBpbnN0ZWFkXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHR5cGUgQ29udmVydGVkVG9UeXBlPFRDT05WPiA9IEluZmVyPFRDT05WPjtcblxuLyoqXG4gKiBCYXNlIHRlbXBsYXRlZCB3cmFwcGVyIHRvIHNpbXBsaWZ5IGNyZWF0aW9uIG9mIG5ldyB7QGxpbmsgQ29udmVydGVyfXMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlQ29udmVydGVyPFQsIFRDPXVuZGVmaW5lZD4gaW1wbGVtZW50cyBDb252ZXJ0ZXI8VCwgVEM+IHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RlZmF1bHRDb250ZXh0PzogVEM7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc09wdGlvbmFsID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9icmFuZD86IHN0cmluZztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbnZlcnRlcjogKGZyb206IHVua25vd24sIHNlbGY6IENvbnZlcnRlcjxULCBUQz4sIGNvbnRleHQ/OiBUQykgPT4gUmVzdWx0PFQ+O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgQ29udmVydGVyfSB3aGljaCB1c2VzIHRoZSBzdXBwbGllZCBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBjb252ZXJzaW9uLlxuICAgICAqIEBwYXJhbSBjb252ZXJ0ZXIgLSBUaGUgY29udmVyc2lvbiBmdW5jdGlvbiB0byBiZSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSBkZWZhdWx0Q29udGV4dCAtIE9wdGlvbmFsIGNvbnZlcnNpb24gY29udGV4dCB0byBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAgICogQHBhcmFtIHRyYWl0cyAtIE9wdGlvbmFsIHtAbGluayBDb252ZXJ0ZXJUcmFpdHMgfCB0cmFpdHN9IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSByZXN1bHRpbmdcbiAgICAgKiBjb252ZXJ0ZXIuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBjb252ZXJ0ZXI6IChmcm9tOiB1bmtub3duLCBzZWxmOiBDb252ZXJ0ZXI8VCwgVEM+LCBjb250ZXh0PzogVEMpID0+IFJlc3VsdDxUPixcbiAgICAgICAgZGVmYXVsdENvbnRleHQ/OiBUQyxcbiAgICAgICAgdHJhaXRzPzogQ29udmVydGVyVHJhaXRzLFxuICAgICkge1xuICAgICAgICB0aGlzLl9jb252ZXJ0ZXIgPSBjb252ZXJ0ZXI7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRDb250ZXh0ID0gZGVmYXVsdENvbnRleHQ7XG4gICAgICAgIHRoaXMuX2lzT3B0aW9uYWwgPSAodHJhaXRzPy5pc09wdGlvbmFsID09PSB0cnVlKTtcbiAgICAgICAgdGhpcy5fYnJhbmQgPSAodHJhaXRzPy5icmFuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci5pc09wdGlvbmFsfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNPcHRpb25hbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzT3B0aW9uYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci5icmFuZH1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGJyYW5kKCk6IHN0cmluZ3x1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJhbmQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci5jb252ZXJ0fVxuICAgICAqL1xuICAgIHB1YmxpYyBjb252ZXJ0KGZyb206IHVua25vd24sIGNvbnRleHQ/OiBUQyk6IFJlc3VsdDxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0ZXIoZnJvbSwgdGhpcywgY29udGV4dCA/PyB0aGlzLl9kZWZhdWx0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci5jb252ZXJ0T3B0aW9uYWx9XG4gICAgICovXG4gICAgcHVibGljIGNvbnZlcnRPcHRpb25hbChmcm9tOiB1bmtub3duLCBjb250ZXh0PzogVEMsIG9uRXJyb3I/OiBPbkVycm9yKTogUmVzdWx0PFR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2NvbnZlcnRlcihmcm9tLCB0aGlzLCB0aGlzLl9jb250ZXh0KGNvbnRleHQpKTtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgb25FcnJvciA9IG9uRXJyb3IgPz8gJ2lnbm9yZUVycm9ycyc7XG4gICAgICAgICAgICByZXR1cm4gKChmcm9tID09PSB1bmRlZmluZWQpIHx8IG9uRXJyb3IgPT09ICdpZ25vcmVFcnJvcnMnKSA/IHN1Y2NlZWQodW5kZWZpbmVkKSA6IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHtAaW5oZXJpdGRvYyBDb252ZXJ0ZXIub3B0aW9uYWx9XG4gICAgICovXG4gICAgcHVibGljIG9wdGlvbmFsKG9uRXJyb3I/OiBPbkVycm9yKTogQ29udmVydGVyPFR8dW5kZWZpbmVkLCBUQz4ge1xuICAgICAgICByZXR1cm4gbmV3IEJhc2VDb252ZXJ0ZXIoKGZyb206IHVua25vd24sIF9zZWxmOiBDb252ZXJ0ZXI8VHx1bmRlZmluZWQsIFRDPiwgY29udGV4dD86IFRDKSA9PiB7XG4gICAgICAgICAgICBvbkVycm9yID0gb25FcnJvciA/PyAnZmFpbE9uRXJyb3InO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydE9wdGlvbmFsKGZyb20sIHRoaXMuX2NvbnRleHQoY29udGV4dCksIG9uRXJyb3IpO1xuICAgICAgICB9KS5fd2l0aCh0aGlzLl90cmFpdHMoeyBpc09wdGlvbmFsOiB0cnVlIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGluaGVyaXRkb2MgQ29udmVydGVyLm1hcH1cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFwPFQyPihtYXBwZXI6IChmcm9tOiBUKSA9PiBSZXN1bHQ8VDI+KTogQ29udmVydGVyPFQyLCBUQz4ge1xuICAgICAgICByZXR1cm4gbmV3IEJhc2VDb252ZXJ0ZXI8VDIsIFRDPigoZnJvbTogdW5rbm93biwgX3NlbGY6IENvbnZlcnRlcjxUMiwgVEM+LCBjb250ZXh0PzogVEMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyUmVzdWx0ID0gdGhpcy5fY29udmVydGVyKGZyb20sIHRoaXMsIHRoaXMuX2NvbnRleHQoY29udGV4dCkpO1xuICAgICAgICAgICAgaWYgKGlubmVyUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlcihpbm5lclJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFpbChpbm5lclJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfSkuX3dpdGgodGhpcy5fdHJhaXRzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHtAaW5oZXJpdGRvYyBDb252ZXJ0ZXIubWFwQ29udmVydH1cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFwQ29udmVydDxUMj4obWFwQ29udmVydGVyOiBDb252ZXJ0ZXI8VDI+KTogQ29udmVydGVyPFQyLCBUQz4ge1xuICAgICAgICByZXR1cm4gbmV3IEJhc2VDb252ZXJ0ZXI8VDIsIFRDPigoZnJvbTogdW5rbm93biwgX3NlbGY6IENvbnZlcnRlcjxUMiwgVEM+LCBjb250ZXh0PzogVEMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyUmVzdWx0ID0gdGhpcy5fY29udmVydGVyKGZyb20sIHRoaXMsIHRoaXMuX2NvbnRleHQoY29udGV4dCkpO1xuICAgICAgICAgICAgaWYgKGlubmVyUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcENvbnZlcnRlci5jb252ZXJ0KGlubmVyUmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWlsKGlubmVyUmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmV0dXJuLWFzc2lnblxuICAgICAgICB9KS5fd2l0aCh0aGlzLl90cmFpdHMoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci5tYXBJdGVtc31cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFwSXRlbXM8VEk+KG1hcHBlcjogKGZyb206IHVua25vd24pID0+IFJlc3VsdDxUST4pOiBDb252ZXJ0ZXI8VElbXSwgVEM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlQ29udmVydGVyPFRJW10sIFRDPigoZnJvbTogdW5rbm93biwgX3NlbGY6IENvbnZlcnRlcjxUSVtdLCBUQz4sIGNvbnRleHQ/OiBUQykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRlcihmcm9tLCB0aGlzLCB0aGlzLl9jb250ZXh0KGNvbnRleHQpKS5vblN1Y2Nlc3MoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaSkgPT4gbWFwcGVyKGkpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCdDYW5ub3QgbWFwIGl0ZW1zIC0gbm90IGFuIGFycmF5Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci5tYXBDb252ZXJ0SXRlbXN9XG4gICAgICovXG4gICAgcHVibGljIG1hcENvbnZlcnRJdGVtczxUST4obWFwQ29udmVydGVyOiBDb252ZXJ0ZXI8VEksIHVua25vd24+KTogQ29udmVydGVyPFRJW10sIFRDPiB7XG4gICAgICAgIHJldHVybiBuZXcgQmFzZUNvbnZlcnRlcjxUSVtdLCBUQz4oKGZyb206IHVua25vd24sIF9zZWxmOiBDb252ZXJ0ZXI8VElbXSwgVEM+LCBjb250ZXh0PzogVEMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0ZXIoZnJvbSwgdGhpcywgdGhpcy5fY29udGV4dChjb250ZXh0KSkub25TdWNjZXNzKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhpdGVtcy5tYXAoKGkpID0+IG1hcENvbnZlcnRlci5jb252ZXJ0KGkpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCdDYW5ub3QgbWFwIGl0ZW1zIC0gbm90IGFuIGFycmF5Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIENvbnZlcnRlci53aXRoVHlwZUd1YXJkfVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVHlwZUd1YXJkPFRJPihndWFyZDogKGZyb206IHVua25vd24pID0+IGZyb20gaXMgVEksIG1lc3NhZ2U/OiBzdHJpbmcpOiBDb252ZXJ0ZXI8VEksIFRDPiB7XG4gICAgICAgIHJldHVybiBuZXcgQmFzZUNvbnZlcnRlcjxUSSwgVEM+KChmcm9tOiB1bmtub3duLCBfc2VsZjogQ29udmVydGVyPFRJLCBUQz4sIGNvbnRleHQ/OiBUQykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRlcihmcm9tLCB0aGlzLCB0aGlzLl9jb250ZXh0KGNvbnRleHQpKS5vblN1Y2Nlc3MoKGlubmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UgPz8gJ2ludmFsaWQgdHlwZSc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGd1YXJkKGlubmVyKSA/IHN1Y2NlZWQoaW5uZXIpIDogZmFpbChgJHttZXNzYWdlfTogJHtKU09OLnN0cmluZ2lmeShmcm9tKX1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGluaGVyaXRkb2MgQ29udmVydGVyLndpdGhJdGVtVHlwZUd1YXJkfVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoSXRlbVR5cGVHdWFyZDxUST4oZ3VhcmQ6IChmcm9tOiB1bmtub3duKSA9PiBmcm9tIGlzIFRJLCBtZXNzYWdlPzogc3RyaW5nKTogQ29udmVydGVyPFRJW10sIFRDPiB7XG4gICAgICAgIHJldHVybiBuZXcgQmFzZUNvbnZlcnRlcjxUSVtdLCBUQz4oKGZyb206IHVua25vd24sIF9zZWxmOiBDb252ZXJ0ZXI8VElbXSwgVEM+LCBjb250ZXh0PzogVEMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0ZXIoZnJvbSwgdGhpcywgdGhpcy5fY29udGV4dChjb250ZXh0KSkub25TdWNjZXNzKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhpdGVtcy5tYXAoKGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlID8/ICdpbnZhbGlkIHR5cGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGd1YXJkKGkpID8gc3VjY2VlZChpKSA6IGZhaWwoYCR7bWVzc2FnZX06ICR7SlNPTi5zdHJpbmdpZnkoZnJvbSl9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoJ0Nhbm5vdCBndWFyZCBpdGVtIHR5cGUgLSBub3QgYW4gYXJyYXknKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGluaGVyaXRkb2MgQ29udmVydGVyLndpdGhDb25zdHJhaW50fVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29uc3RyYWludChcbiAgICAgICAgY29uc3RyYWludDogKHZhbDogVCkgPT4gYm9vbGVhbnxSZXN1bHQ8VD4sXG4gICAgICAgIG9wdGlvbnM/OiBDb25zdHJhaW50T3B0aW9ucyxcbiAgICApOiBDb252ZXJ0ZXI8VCwgVEM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlQ29udmVydGVyPFQsIFRDPigoZnJvbTogdW5rbm93biwgX3NlbGY6IENvbnZlcnRlcjxULCBUQz4sIGNvbnRleHQ/OiBUQykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY29udmVydGVyKGZyb20sIHRoaXMsIHRoaXMuX2NvbnRleHQoY29udGV4dCkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRSZXN1bHQgPSBjb25zdHJhaW50KHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zdHJhaW50UmVzdWx0ID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRSZXN1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYFwiJHtKU09OLnN0cmluZ2lmeShyZXN1bHQudmFsdWUpfVwiOiAke29wdGlvbnM/LmRlc2NyaXB0aW9uID8/ICdkb2VzIG5vdCBtZWV0IGNvbnN0cmFpbnQnfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50UmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSkuX3dpdGgodGhpcy5fdHJhaXRzKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHtAaW5oZXJpdGRvYyBDb252ZXJ0ZXIud2l0aEJyYW5kfVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQnJhbmQ8QiBleHRlbmRzIHN0cmluZz4oYnJhbmQ6IEIpOiBDb252ZXJ0ZXI8QnJhbmQ8VCwgQj4sIFRDPiB7XG4gICAgICAgIGlmICh0aGlzLl9icmFuZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVwbGFjZSBleGlzdGluZyBicmFuZCBcIiR7dGhpcy5fYnJhbmR9XCIgd2l0aCBcIiR7YnJhbmR9XCIuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IEJhc2VDb252ZXJ0ZXI8QnJhbmQ8VCwgQj4sIFRDPigoZnJvbTogdW5rbm93biwgX3NlbGY6IENvbnZlcnRlcjxULCBUQz4sIGNvbnRleHQ/OiBUQykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRlcihmcm9tLCB0aGlzLCB0aGlzLl9jb250ZXh0KGNvbnRleHQpKS5vblN1Y2Nlc3MoKHYpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh2IGFzIEJyYW5kPFQsIEI+KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5fd2l0aCh0aGlzLl90cmFpdHMoeyBicmFuZCB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb250ZXh0KHN1cHBsaWVkPzogVEMpOiBUQ3x1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gc3VwcGxpZWQgPz8gdGhpcy5fZGVmYXVsdENvbnRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF90cmFpdHModHJhaXRzPzogUGFydGlhbDxDb252ZXJ0ZXJUcmFpdHM+KTogQ29udmVydGVyVHJhaXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzT3B0aW9uYWw6IHRoaXMuaXNPcHRpb25hbCxcbiAgICAgICAgICAgIGJyYW5kOiB0aGlzLmJyYW5kLFxuICAgICAgICAgICAgLi4uKHRyYWl0cyA/PyB7fSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF93aXRoKHRyYWl0czogUGFydGlhbDxDb252ZXJ0ZXJUcmFpdHM+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzT3B0aW9uYWwgPSAodHJhaXRzLmlzT3B0aW9uYWwgPT09IHRydWUpO1xuICAgICAgICB0aGlzLl9icmFuZCA9ICh0cmFpdHMuYnJhbmQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXX0=
|
package/converters.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"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"}
|