@fgv/ts-utils 1.2.0-alpha.2 → 1.3.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.
Files changed (77) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +4 -0
  3. package/brand.d.ts +2 -0
  4. package/brand.d.ts.map +1 -0
  5. package/brand.js +1 -1
  6. package/converter.d.ts +185 -73
  7. package/converter.d.ts.map +1 -0
  8. package/converter.js +104 -51
  9. package/converters.d.ts +440 -182
  10. package/converters.d.ts.map +1 -0
  11. package/converters.js +358 -209
  12. package/csvHelpers.d.ts +7 -0
  13. package/csvHelpers.d.ts.map +1 -0
  14. package/csvHelpers.js +14 -4
  15. package/extendedArray.d.ts +46 -0
  16. package/extendedArray.d.ts.map +1 -0
  17. package/extendedArray.js +53 -8
  18. package/formatter.d.ts +53 -0
  19. package/formatter.d.ts.map +1 -0
  20. package/formatter.js +27 -4
  21. package/hash.d.ts +51 -0
  22. package/hash.d.ts.map +1 -0
  23. package/hash.js +168 -0
  24. package/index.d.ts +6 -2
  25. package/index.d.ts.map +1 -0
  26. package/index.js +15 -5
  27. package/logger.d.ts +3 -2
  28. package/logger.d.ts.map +1 -0
  29. package/logger.js +12 -12
  30. package/package.json +24 -20
  31. package/rangeOf.d.ts +96 -0
  32. package/rangeOf.d.ts.map +1 -0
  33. package/rangeOf.js +81 -2
  34. package/result.d.ts +391 -39
  35. package/result.d.ts.map +1 -0
  36. package/result.js +257 -49
  37. package/ts-utils.d.ts +2451 -0
  38. package/tsdoc-metadata.json +11 -0
  39. package/utils.d.ts +49 -27
  40. package/utils.d.ts.map +1 -0
  41. package/utils.js +53 -36
  42. package/validation/boolean.d.ts +27 -0
  43. package/validation/boolean.d.ts.map +1 -0
  44. package/validation/boolean.js +59 -0
  45. package/validation/classes.d.ts +5 -1
  46. package/validation/classes.d.ts.map +1 -0
  47. package/validation/classes.js +9 -2
  48. package/validation/field.d.ts +30 -0
  49. package/validation/field.d.ts.map +1 -0
  50. package/validation/field.js +23 -5
  51. package/validation/genericValidator.d.ts +41 -22
  52. package/validation/genericValidator.d.ts.map +1 -0
  53. package/validation/genericValidator.js +25 -26
  54. package/validation/index.d.ts +5 -3
  55. package/validation/index.d.ts.map +1 -0
  56. package/validation/index.js +15 -8
  57. package/validation/number.d.ts +20 -0
  58. package/validation/number.d.ts.map +1 -0
  59. package/validation/number.js +17 -2
  60. package/validation/object.d.ts +76 -11
  61. package/validation/object.d.ts.map +1 -0
  62. package/validation/object.js +52 -14
  63. package/validation/string.d.ts +20 -0
  64. package/validation/string.d.ts.map +1 -0
  65. package/validation/string.js +17 -2
  66. package/validation/traits.d.ts +50 -1
  67. package/validation/traits.d.ts.map +1 -0
  68. package/validation/traits.js +15 -2
  69. package/validation/validator.d.ts +44 -23
  70. package/validation/validator.d.ts.map +1 -0
  71. package/validation/validator.js +1 -1
  72. package/validation/validatorBase.d.ts +16 -1
  73. package/validation/validatorBase.d.ts.map +1 -0
  74. package/validation/validatorBase.js +7 -1
  75. package/validation/validators.d.ts +26 -2
  76. package/validation/validators.d.ts.map +1 -0
  77. package/validation/validators.js +26 -8
@@ -26,17 +26,20 @@ const result_1 = require("../result");
26
26
  const validatorBase_1 = require("./validatorBase");
27
27
  const field_1 = require("./field");
28
28
  /**
29
- * In-place validation for an object of type T, given a @see FieldValidators<T>.
30
- * If all of the required fields exist and ar valid, returns a strongly typed reference
31
- * to the object. If any required fields do not exist or are invalid, returns @see Failure
32
- * with an error description. See @see ObjectValidatorOptions for other validatiorion options.
29
+ * In-place {@link Validation.Validator | Validator} for an object of type `<T>`.
30
+ * @remarks
31
+ * By default, succeeds if all of the required fields exist and are validate, and fails if
32
+ * any required fields do not exist or are invalid. See {@link Validation.Classes.ObjectValidatorOptions}
33
+ * for other validation options.
34
+ * @public
33
35
  */
34
36
  class ObjectValidator extends validatorBase_1.ValidatorBase {
35
37
  /**
36
- * Constructs a new @see ObjectValidator<T> using options supplied in an
37
- * optional @see ObjectValidatorOptions<T>.
38
- * @param fields A @see FieldValidators<T> containing converters for each field
39
- * @param options An optional @see ObjectValidatorOptions to configure the conversion
38
+ * Constructs a new {@link Validation.Classes.ObjectValidator | ObjectValidator<T>}.
39
+ * @param fields - A {@link Validation.Classes.FieldValidators | FieldValidators<T>} containing
40
+ * a {@link Validation.Validator | Validator} for each field.
41
+ * @param options - An optional {@link Validation.Classes.ObjectValidatorOptions} to configure
42
+ * validation.
40
43
  */
41
44
  constructor(params) {
42
45
  var _a;
@@ -48,36 +51,71 @@ class ObjectValidator extends validatorBase_1.ValidatorBase {
48
51
  ? new Set(Object.keys(this.fields))
49
52
  : undefined;
50
53
  }
54
+ /**
55
+ * Creates the actual {@link Validation.Classes.FieldValidators | FieldValidators<T>} to be
56
+ * used by this converter by applying any options or traits defined in the options
57
+ * to the field converters passed to the constructor.
58
+ * @param fields - The base {@link Validation.Classes.FieldValidators | FieldValidators<T>} passed
59
+ * in to the constructor.
60
+ * @param options - The {@link Validation.Classes.ObjectValidatorOptions | object validator options}
61
+ * passed in to the constructor.
62
+ * @returns A new {@link Validation.Classes.FieldValidators | FieldValidators} with the fully-configured
63
+ * individual {@link Validation.Validator | field validators} to be applied.
64
+ * @internal
65
+ */
51
66
  static _resolveValidators(fields, options) {
52
67
  var _a;
53
68
  const resolved = {};
54
69
  for (const key in fields) {
55
70
  if (fields[key]) {
71
+ // istanbul ignore next
56
72
  const optional = fields[key].isOptional || ((_a = options === null || options === void 0 ? void 0 : options.optionalFields) === null || _a === void 0 ? void 0 : _a.includes(key));
57
73
  resolved[key] = new field_1.FieldValidator(key, fields[key], { optional });
58
74
  }
59
75
  }
60
76
  return resolved;
61
77
  }
78
+ /**
79
+ * Creates a new {@link Validation.Classes.ObjectValidator | ObjectValidator} derived from this one but with
80
+ * new optional properties as specified by a supplied
81
+ * {@link Validation.Classes.ObjectValidatorOptions | ObjectValidatorOptions<T>}.
82
+ * @param options - The {@link Validation.Classes.ObjectValidatorOptions | options} to be applied to the new
83
+ * {@link Validation.Classes.ObjectValidator | validator}.
84
+ * @returns A new {@link Validation.Classes.ObjectValidator | ObjectValidator} with the additional optional
85
+ * source properties.
86
+ */
62
87
  partial(options) {
88
+ // istanbul ignore next
89
+ options = options !== null && options !== void 0 ? options : {};
63
90
  return new ObjectValidator({
64
91
  fields: this.fields,
65
92
  options: {
66
93
  ...this.options,
67
- ...(options !== null && options !== void 0 ? options : {}),
94
+ ...options,
68
95
  },
69
96
  traits: this.traits,
70
97
  });
71
98
  }
99
+ /**
100
+ * Creates a new {@link Validation.Classes.ObjectValidator | ObjectValidator} derived from this one but with
101
+ * new optional properties as specified by a supplied array of `keyof T`.
102
+ * @param addOptionalProperties - The keys to be made optional.
103
+ * @returns A new {@link Validation.Classes.ObjectValidator | ObjectValidator} with the additional optional
104
+ * source properties.
105
+ */
72
106
  addPartial(addOptionalFields) {
73
107
  var _a;
74
108
  return this.partial({
75
- optionalFields: [...(_a = this.options.optionalFields) !== null && _a !== void 0 ? _a : [], ...addOptionalFields],
109
+ optionalFields: [...((_a = this.options.optionalFields) !== null && _a !== void 0 ? _a : []), ...addOptionalFields],
76
110
  });
77
111
  }
112
+ /**
113
+ * {@inheritdoc Validation.ValidatorBase._validate}
114
+ * @internal
115
+ */
78
116
  _validate(from, context) {
79
117
  if ((typeof from !== 'object') || (from === null) || Array.isArray(from)) {
80
- return result_1.fail('source is not an object');
118
+ return (0, result_1.fail)('source is not an object');
81
119
  }
82
120
  // eslint bug thinks key is used before defined
83
121
  // eslint-disable-next-line no-use-before-define
@@ -95,11 +133,11 @@ class ObjectValidator extends validatorBase_1.ValidatorBase {
95
133
  }
96
134
  }
97
135
  if (this._allowedFields) {
98
- const invalid = Object.keys(from).filter((k) => { var _a; return !((_a = this._allowedFields) === null || _a === void 0 ? void 0 : _a.has(k)); });
136
+ const invalid = Object.keys(from).filter((k) => !this._allowedFields.has(k));
99
137
  invalid.forEach((key) => errors.push((`${key}: unexpected field in source object.`)));
100
138
  }
101
- return (errors.length === 0) ? true : result_1.fail(errors.join('\n'));
139
+ return (errors.length === 0) ? true : (0, result_1.fail)(errors.join('\n'));
102
140
  }
103
141
  }
104
142
  exports.ObjectValidator = ObjectValidator;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILHNDQUEwQztBQUUxQyxtREFBZ0Y7QUFFaEYsbUNBQXlDO0FBMkJ6Qzs7Ozs7R0FLRztBQUNILE1BQWEsZUFBK0IsU0FBUSw2QkFBb0I7SUFNcEU7Ozs7O09BS0c7SUFDSCxZQUFtQixNQUErQzs7UUFDOUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxNQUFNLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO1lBQ2hELENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQWdCLENBQUM7WUFDbEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwQixDQUFDO0lBRVMsTUFBTSxDQUFDLGtCQUFrQixDQUMvQixNQUE4QixFQUM5QixPQUF1Qzs7UUFFdkMsTUFBTSxRQUFRLEdBQW9DLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtZQUN0QixJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDYixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxLQUFJLE1BQUEsT0FBTyxh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RkQsMENBaUZDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMSBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEZhaWx1cmUsIGZhaWwgfSBmcm9tICcuLi9yZXN1bHQnO1xuaW1wb3J0IHsgVmFsaWRhdG9yLCBWYWxpZGF0b3JPcHRpb25zIH0gZnJvbSAnLi92YWxpZGF0b3InO1xuaW1wb3J0IHsgVmFsaWRhdG9yQmFzZSwgVmFsaWRhdG9yQmFzZUNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi92YWxpZGF0b3JCYXNlJztcblxuaW1wb3J0IHsgRmllbGRWYWxpZGF0b3IgfSBmcm9tICcuL2ZpZWxkJztcblxuLyoqXG4gKiBQZXItcHJvcGVydHkgdmFsaWRhdG9ycyBmb3IgZWFjaCBvZiB0aGUgcHJvcGVydGllcyBpbiB0eXBlIFRcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRWYWxpZGF0b3JzPFQsIFRDPXVua25vd24+ID0geyBba2V5IGluIGtleW9mIFRdOiBWYWxpZGF0b3I8VFtrZXldLCBUQz4gfTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBhbiBAc2VlIE9iamVjdFZhbGlkYXRvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RWYWxpZGF0b3JPcHRpb25zPFQsIFRDPiBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnM8VEM+IHtcbiAgICAvKipcbiAgICAgKiBJZiBwcmVzZW50LCBsaXN0cyBvcHRpb25hbCBmaWVsZHMuIE1pc3Npbmcgbm9uLW9wdGlvbmFsIGZpZWxkcyBjYXVzZSBhbiBlcnJvci5cbiAgICAgKi9cbiAgICBvcHRpb25hbEZpZWxkcz86IChrZXlvZiBUKVtdO1xuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHVucmVjb2duaXplZCBmaWVsZHMgeWllbGQgYW4gZXJyb3IuICBJZiBmYWxzZSBvciB1bmRlZmluZWQgKGRlZmF1bHQpLFxuICAgICAqIHVucmVjb2duaXplZCBmaWVsZHMgYXJlIGlnbm9yZWQuXG4gICAgICovXG4gICAgc3RyaWN0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxULCBUQz4gZXh0ZW5kcyBWYWxpZGF0b3JCYXNlQ29uc3RydWN0b3JQYXJhbXM8VCwgVEM+IHtcbiAgICBmaWVsZHM6IEZpZWxkVmFsaWRhdG9yczxUPixcbiAgICBvcHRpb25zPzogT2JqZWN0VmFsaWRhdG9yT3B0aW9uczxULCBUQz47XG59XG5cbi8qKlxuICogSW4tcGxhY2UgdmFsaWRhdGlvbiBmb3IgYW4gb2JqZWN0IG9mIHR5cGUgVCwgZ2l2ZW4gYSBAc2VlIEZpZWxkVmFsaWRhdG9yczxUPi5cbiAqIElmIGFsbCBvZiB0aGUgcmVxdWlyZWQgZmllbGRzIGV4aXN0IGFuZCBhciB2YWxpZCwgcmV0dXJucyBhIHN0cm9uZ2x5IHR5cGVkIHJlZmVyZW5jZVxuICogdG8gdGhlIG9iamVjdC4gIElmIGFueSByZXF1aXJlZCBmaWVsZHMgZG8gbm90IGV4aXN0IG9yIGFyZSBpbnZhbGlkLCByZXR1cm5zIEBzZWUgRmFpbHVyZVxuICogd2l0aCBhbiBlcnJvciBkZXNjcmlwdGlvbi4gIFNlZSBAc2VlIE9iamVjdFZhbGlkYXRvck9wdGlvbnMgZm9yIG90aGVyIHZhbGlkYXRpb3Jpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIE9iamVjdFZhbGlkYXRvcjxULCBUQz11bmtub3duPiBleHRlbmRzIFZhbGlkYXRvckJhc2U8VCwgVEM+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzOiBGaWVsZFZhbGlkYXRvcnM8VD47XG4gICAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IE9iamVjdFZhbGlkYXRvck9wdGlvbnM8VCwgVEM+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfaW5uZXJWYWxpZGF0b3JzOiBGaWVsZFZhbGlkYXRvcnM8VD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hbGxvd2VkRmllbGRzPzogU2V0PGtleW9mIFQ+O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIE9iamVjdFZhbGlkYXRvcjxUPiB1c2luZyBvcHRpb25zIHN1cHBsaWVkIGluIGFuXG4gICAgICogb3B0aW9uYWwgQHNlZSBPYmplY3RWYWxpZGF0b3JPcHRpb25zPFQ+LlxuICAgICAqIEBwYXJhbSBmaWVsZHMgQSBAc2VlIEZpZWxkVmFsaWRhdG9yczxUPiBjb250YWluaW5nIGNvbnZlcnRlcnMgZm9yIGVhY2ggZmllbGRcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBBbiBvcHRpb25hbCBAc2VlIE9iamVjdFZhbGlkYXRvck9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb252ZXJzaW9uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogT2JqZWN0VmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXM8VCwgVEM+KSB7XG4gICAgICAgIHN1cGVyKHBhcmFtcyk7XG5cbiAgICAgICAgdGhpcy5maWVsZHMgPSBwYXJhbXMuZmllbGRzO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBwYXJhbXMub3B0aW9ucyA/PyB7fTtcbiAgICAgICAgdGhpcy5faW5uZXJWYWxpZGF0b3JzID0gT2JqZWN0VmFsaWRhdG9yLl9yZXNvbHZlVmFsaWRhdG9ycyh0aGlzLmZpZWxkcywgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5fYWxsb3dlZEZpZWxkcyA9ICh0aGlzLm9wdGlvbnMuc3RyaWN0ID09PSB0cnVlKVxuICAgICAgICAgICAgPyBuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMuZmllbGRzKSBhcyAoa2V5b2YgVClbXSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3Jlc29sdmVWYWxpZGF0b3JzPFQsIFRDPihcbiAgICAgICAgZmllbGRzOiBGaWVsZFZhbGlkYXRvcnM8VCwgVEM+LFxuICAgICAgICBvcHRpb25zPzogT2JqZWN0VmFsaWRhdG9yT3B0aW9uczxULCBUQz4sXG4gICAgKTogRmllbGRWYWxpZGF0b3JzPFQsIFRDPiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkOiBQYXJ0aWFsPEZpZWxkVmFsaWRhdG9yczxULCBUQz4+ID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgICAgICAgICAgaWYgKGZpZWxkc1trZXldKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uYWwgPSBmaWVsZHNba2V5XS5pc09wdGlvbmFsIHx8IG9wdGlvbnM/Lm9wdGlvbmFsRmllbGRzPy5pbmNsdWRlcyhrZXkpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVkW2tleV0gPSBuZXcgRmllbGRWYWxpZGF0b3Ioa2V5LCBmaWVsZHNba2V5XSwgeyBvcHRpb25hbCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWQgYXMgRmllbGRWYWxpZGF0b3JzPFQsIFRDPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFydGlhbChvcHRpb25zOiBPYmplY3RWYWxpZGF0b3JPcHRpb25zPFQsIFRDPik6IE9iamVjdFZhbGlkYXRvcjxQYXJ0aWFsPFQ+LCBUQz4ge1xuICAgICAgICByZXR1cm4gbmV3IE9iamVjdFZhbGlkYXRvcjxQYXJ0aWFsPFQ+LCBUQz4oe1xuICAgICAgICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyBhcyBGaWVsZFZhbGlkYXRvcnM8UGFydGlhbDxUPiwgVEM+LFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJhaXRzOiB0aGlzLnRyYWl0cyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFBhcnRpYWwoYWRkT3B0aW9uYWxGaWVsZHM6IChrZXlvZiBUKVtdKTogT2JqZWN0VmFsaWRhdG9yPFBhcnRpYWw8VD4sIFRDPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWwoe1xuICAgICAgICAgICAgb3B0aW9uYWxGaWVsZHM6IFsuLi50aGlzLm9wdGlvbnMub3B0aW9uYWxGaWVsZHMgPz8gW10sIC4uLmFkZE9wdGlvbmFsRmllbGRzXSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92YWxpZGF0ZShmcm9tOiB1bmtub3duLCBjb250ZXh0PzogVEMpOiBib29sZWFuIHwgRmFpbHVyZTxUPiB7XG4gICAgICAgIGlmICgodHlwZW9mIGZyb20gIT09ICdvYmplY3QnKSB8fCAoZnJvbSA9PT0gbnVsbCkgfHwgQXJyYXkuaXNBcnJheShmcm9tKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoJ3NvdXJjZSBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQgYnVnIHRoaW5rcyBrZXkgaXMgdXNlZCBiZWZvcmUgZGVmaW5lZFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgY29uc3QgY29udmVydGVkID0ge30gYXMgeyBba2V5IGluIGtleW9mIFRdOiBUW2tleV0gfTtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9pbm5lclZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbm5lclZhbGlkYXRvcnNba2V5XSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2lubmVyVmFsaWRhdG9yc1trZXldLnZhbGlkYXRlKGZyb20sIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiAocmVzdWx0LnZhbHVlICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZFtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkRmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkID0gT2JqZWN0LmtleXMoZnJvbSkuZmlsdGVyKChrKSA9PiAhdGhpcy5fYWxsb3dlZEZpZWxkcz8uaGFzKGsgYXMga2V5b2YgVCkpO1xuICAgICAgICAgICAgaW52YWxpZC5mb3JFYWNoKChrZXkpID0+IGVycm9ycy5wdXNoKChgJHtrZXl9OiB1bmV4cGVjdGVkIGZpZWxkIGluIHNvdXJjZSBvYmplY3QuYCkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGVycm9ycy5sZW5ndGggPT09IDApID8gdHJ1ZSA6IGZhaWwoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILHNDQUEwQztBQUUxQyxtREFBZ0Y7QUFFaEYsbUNBQXlDO0FBMEN6Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxlQUErQixTQUFRLDZCQUFvQjtJQW9CcEU7Ozs7OztPQU1HO0lBQ0gsWUFBbUIsTUFBK0M7O1FBQzlELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsTUFBTSxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztZQUNoRCxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFnQixDQUFDO1lBQ2xELENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ08sTUFBTSxDQUFDLGtCQUFrQixDQUMvQixNQUE4QixFQUM5QixPQUF1Qzs7UUFFdkMsTUFBTSxRQUFRLEdBQW9DLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtZQUN0QixJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDYix1QkFBdUI7Z0JBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FB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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsYUFBSSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0o7QUFuSUQsMENBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMSBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEZhaWx1cmUsIGZhaWwgfSBmcm9tICcuLi9yZXN1bHQnO1xuaW1wb3J0IHsgVmFsaWRhdG9yLCBWYWxpZGF0b3JPcHRpb25zIH0gZnJvbSAnLi92YWxpZGF0b3InO1xuaW1wb3J0IHsgVmFsaWRhdG9yQmFzZSwgVmFsaWRhdG9yQmFzZUNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi92YWxpZGF0b3JCYXNlJztcblxuaW1wb3J0IHsgRmllbGRWYWxpZGF0b3IgfSBmcm9tICcuL2ZpZWxkJztcblxuLyoqXG4gKiBQZXItcHJvcGVydHkge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgdmFsaWRhdG9yc30gZm9yIGVhY2ggb2YgdGhlIHByb3BlcnRpZXMgaW4gYDxUPmAuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkVmFsaWRhdG9yczxULCBUQz11bmtub3duPiA9IHsgW2tleSBpbiBrZXlvZiBUXTogVmFsaWRhdG9yPFRba2V5XSwgVEM+IH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYW4ge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3IgfCBPYmplY3RWYWxpZGF0b3J9LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFZhbGlkYXRvck9wdGlvbnM8VCwgVEM+IGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9uczxUQz4ge1xuICAgIC8qKlxuICAgICAqIElmIHByZXNlbnQsIGxpc3RzIG9wdGlvbmFsIGZpZWxkcy4gTWlzc2luZyBub24tb3B0aW9uYWwgZmllbGRzIGNhdXNlIGFuIGVycm9yLlxuICAgICAqL1xuICAgIG9wdGlvbmFsRmllbGRzPzogKGtleW9mIFQpW107XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdW5yZWNvZ25pemVkIGZpZWxkcyB5aWVsZCBhbiBlcnJvci4gIElmIGZhbHNlIG9yIHVuZGVmaW5lZCAoZGVmYXVsdCksXG4gICAgICogdW5yZWNvZ25pemVkIGZpZWxkcyBhcmUgaWdub3JlZC5cbiAgICAgKi9cbiAgICBzdHJpY3Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLk9iamVjdFZhbGlkYXRvciB8IE9iamVjdFZhbGlkYXRvcn0gY29uc3RydWN0b3IuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0VmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXM8VCwgVEM+IGV4dGVuZHMgVmFsaWRhdG9yQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPiB7XG4gICAgLyoqXG4gICAgICogQSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkZpZWxkVmFsaWRhdG9ycyB8IEZpZWxkVmFsaWRhdG9yc30gb2JqZWN0IHNwZWNpZnlpbmcgYVxuICAgICAqIHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IFZhbGlkYXRvcn0gZm9yIGVhY2ggb2YgdGhlIGV4cGVjdGVkIHByb3BlcnRpZXNcbiAgICAgKiBvZiBhIHJlc3VsdCBvYmplY3QuXG4gICAgICovXG4gICAgZmllbGRzOiBGaWVsZFZhbGlkYXRvcnM8VD4sXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgYWRkaXRpb25hbCB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLk9iamVjdFZhbGlkYXRvck9wdGlvbnMgfCBWYWxpZGF0b3JPcHRpb25zfSB0b1xuICAgICAqIGNvbmZpZ3VyZSB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBPYmplY3RWYWxpZGF0b3JPcHRpb25zPFQsIFRDPjtcbn1cblxuLyoqXG4gKiBJbi1wbGFjZSB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBWYWxpZGF0b3J9IGZvciBhbiBvYmplY3Qgb2YgdHlwZSBgPFQ+YC5cbiAqIEByZW1hcmtzXG4gKiBCeSBkZWZhdWx0LCBzdWNjZWVkcyBpZiBhbGwgb2YgdGhlIHJlcXVpcmVkIGZpZWxkcyBleGlzdCBhbmQgYXJlIHZhbGlkYXRlLCBhbmQgZmFpbHMgaWZcbiAqIGFueSByZXF1aXJlZCBmaWVsZHMgZG8gbm90IGV4aXN0IG9yIGFyZSBpbnZhbGlkLiAgU2VlIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yT3B0aW9uc31cbiAqIGZvciBvdGhlciB2YWxpZGF0aW9uIG9wdGlvbnMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RWYWxpZGF0b3I8VCwgVEM9dW5rbm93bj4gZXh0ZW5kcyBWYWxpZGF0b3JCYXNlPFQsIFRDPiB7XG4gICAgLyoqXG4gICAgICogQSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkZpZWxkVmFsaWRhdG9ycyB8IEZpZWxkVmFsaWRhdG9yc30gb2JqZWN0IHNwZWNpZnlpbmcgYVxuICAgICAqIHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IFZhbGlkYXRvcn0gZm9yIGVhY2ggb2YgdGhlIGV4cGVjdGVkIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzOiBGaWVsZFZhbGlkYXRvcnM8VD47XG4gICAgLyoqXG4gICAgICoge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3JPcHRpb25zIHwgT3B0aW9uc30gd2hpY2ggYXBwbHkgdG8gdGhpc1xuICAgICAqIHZhbGlkYXRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogT2JqZWN0VmFsaWRhdG9yT3B0aW9uczxULCBUQz47XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pbm5lclZhbGlkYXRvcnM6IEZpZWxkVmFsaWRhdG9yczxUPjtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FsbG93ZWRGaWVsZHM/OiBTZXQ8a2V5b2YgVD47XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yIHwgT2JqZWN0VmFsaWRhdG9yPFQ+fS5cbiAgICAgKiBAcGFyYW0gZmllbGRzIC0gQSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkZpZWxkVmFsaWRhdG9ycyB8IEZpZWxkVmFsaWRhdG9yczxUPn0gY29udGFpbmluZ1xuICAgICAqIGEge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgVmFsaWRhdG9yfSBmb3IgZWFjaCBmaWVsZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9wdGlvbmFsIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yT3B0aW9uc30gdG8gY29uZmlndXJlXG4gICAgICogdmFsaWRhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBPYmplY3RWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxULCBUQz4pIHtcbiAgICAgICAgc3VwZXIocGFyYW1zKTtcblxuICAgICAgICB0aGlzLmZpZWxkcyA9IHBhcmFtcy5maWVsZHM7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHBhcmFtcy5vcHRpb25zID8/IHt9O1xuICAgICAgICB0aGlzLl9pbm5lclZhbGlkYXRvcnMgPSBPYmplY3RWYWxpZGF0b3IuX3Jlc29sdmVWYWxpZGF0b3JzKHRoaXMuZmllbGRzLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLl9hbGxvd2VkRmllbGRzID0gKHRoaXMub3B0aW9ucy5zdHJpY3QgPT09IHRydWUpXG4gICAgICAgICAgICA/IG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5maWVsZHMpIGFzIChrZXlvZiBUKVtdKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB0aGUgYWN0dWFsIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuRmllbGRWYWxpZGF0b3JzIHwgRmllbGRWYWxpZGF0b3JzPFQ+fSB0byBiZVxuICAgICAqIHVzZWQgYnkgdGhpcyBjb252ZXJ0ZXIgYnkgYXBwbHlpbmcgYW55IG9wdGlvbnMgb3IgdHJhaXRzIGRlZmluZWQgaW4gdGhlIG9wdGlvbnNcbiAgICAgKiB0byB0aGUgZmllbGQgY29udmVydGVycyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZHMgLSBUaGUgYmFzZSB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLkZpZWxkVmFsaWRhdG9ycyB8IEZpZWxkVmFsaWRhdG9yczxUPn0gcGFzc2VkXG4gICAgICogaW4gdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yT3B0aW9ucyB8IG9iamVjdCB2YWxpZGF0b3Igb3B0aW9uc31cbiAgICAgKiBwYXNzZWQgaW4gdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuRmllbGRWYWxpZGF0b3JzIHwgRmllbGRWYWxpZGF0b3JzfSB3aXRoIHRoZSBmdWxseS1jb25maWd1cmVkXG4gICAgICogaW5kaXZpZHVhbCB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBmaWVsZCB2YWxpZGF0b3JzfSB0byBiZSBhcHBsaWVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3Jlc29sdmVWYWxpZGF0b3JzPFQsIFRDPihcbiAgICAgICAgZmllbGRzOiBGaWVsZFZhbGlkYXRvcnM8VCwgVEM+LFxuICAgICAgICBvcHRpb25zPzogT2JqZWN0VmFsaWRhdG9yT3B0aW9uczxULCBUQz4sXG4gICAgKTogRmllbGRWYWxpZGF0b3JzPFQsIFRDPiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkOiBQYXJ0aWFsPEZpZWxkVmFsaWRhdG9yczxULCBUQz4+ID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgICAgICAgICAgaWYgKGZpZWxkc1trZXldKSB7XG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25hbCA9IGZpZWxkc1trZXldLmlzT3B0aW9uYWwgfHwgb3B0aW9ucz8ub3B0aW9uYWxGaWVsZHM/LmluY2x1ZGVzKGtleSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRba2V5XSA9IG5ldyBGaWVsZFZhbGlkYXRvcihrZXksIGZpZWxkc1trZXldLCB7IG9wdGlvbmFsIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZCBhcyBGaWVsZFZhbGlkYXRvcnM8VCwgVEM+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3IgfCBPYmplY3RWYWxpZGF0b3J9IGRlcml2ZWQgZnJvbSB0aGlzIG9uZSBidXQgd2l0aFxuICAgICAqIG5ldyBvcHRpb25hbCBwcm9wZXJ0aWVzIGFzIHNwZWNpZmllZCBieSBhIHN1cHBsaWVkXG4gICAgICoge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3JPcHRpb25zIHwgT2JqZWN0VmFsaWRhdG9yT3B0aW9uczxUPn0uXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3JPcHRpb25zIHwgb3B0aW9uc30gdG8gYmUgYXBwbGllZCB0byB0aGUgbmV3XG4gICAgICoge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3IgfCB2YWxpZGF0b3J9LlxuICAgICAqIEByZXR1cm5zIEEgbmV3IHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuT2JqZWN0VmFsaWRhdG9yIHwgT2JqZWN0VmFsaWRhdG9yfSB3aXRoIHRoZSBhZGRpdGlvbmFsIG9wdGlvbmFsXG4gICAgICogc291cmNlIHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgcHVibGljIHBhcnRpYWwob3B0aW9ucz86IE9iamVjdFZhbGlkYXRvck9wdGlvbnM8VCwgVEM+KTogT2JqZWN0VmFsaWRhdG9yPFBhcnRpYWw8VD4sIFRDPiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xuICAgICAgICByZXR1cm4gbmV3IE9iamVjdFZhbGlkYXRvcjxQYXJ0aWFsPFQ+LCBUQz4oe1xuICAgICAgICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyBhcyBGaWVsZFZhbGlkYXRvcnM8UGFydGlhbDxUPiwgVEM+LFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRyYWl0czogdGhpcy50cmFpdHMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5PYmplY3RWYWxpZGF0b3IgfCBPYmplY3RWYWxpZGF0b3J9IGRlcml2ZWQgZnJvbSB0aGlzIG9uZSBidXQgd2l0aFxuICAgICAqIG5ldyBvcHRpb25hbCBwcm9wZXJ0aWVzIGFzIHNwZWNpZmllZCBieSBhIHN1cHBsaWVkIGFycmF5IG9mIGBrZXlvZiBUYC5cbiAgICAgKiBAcGFyYW0gYWRkT3B0aW9uYWxQcm9wZXJ0aWVzIC0gVGhlIGtleXMgdG8gYmUgbWFkZSBvcHRpb25hbC5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgVmFsaWRhdGlvbi5DbGFzc2VzLk9iamVjdFZhbGlkYXRvciB8IE9iamVjdFZhbGlkYXRvcn0gd2l0aCB0aGUgYWRkaXRpb25hbCBvcHRpb25hbFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRQYXJ0aWFsKGFkZE9wdGlvbmFsRmllbGRzOiAoa2V5b2YgVClbXSk6IE9iamVjdFZhbGlkYXRvcjxQYXJ0aWFsPFQ+LCBUQz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJ0aWFsKHtcbiAgICAgICAgICAgIG9wdGlvbmFsRmllbGRzOiBbLi4uKHRoaXMub3B0aW9ucy5vcHRpb25hbEZpZWxkcyA/PyBbXSksIC4uLmFkZE9wdGlvbmFsRmllbGRzXSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIFZhbGlkYXRpb24uVmFsaWRhdG9yQmFzZS5fdmFsaWRhdGV9XG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF92YWxpZGF0ZShmcm9tOiB1bmtub3duLCBjb250ZXh0PzogVEMpOiBib29sZWFuIHwgRmFpbHVyZTxUPiB7XG4gICAgICAgIGlmICgodHlwZW9mIGZyb20gIT09ICdvYmplY3QnKSB8fCAoZnJvbSA9PT0gbnVsbCkgfHwgQXJyYXkuaXNBcnJheShmcm9tKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoJ3NvdXJjZSBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQgYnVnIHRoaW5rcyBrZXkgaXMgdXNlZCBiZWZvcmUgZGVmaW5lZFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgY29uc3QgY29udmVydGVkID0ge30gYXMgeyBba2V5IGluIGtleW9mIFRdOiBUW2tleV0gfTtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9pbm5lclZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbm5lclZhbGlkYXRvcnNba2V5XSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2lubmVyVmFsaWRhdG9yc1trZXldLnZhbGlkYXRlKGZyb20sIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiAocmVzdWx0LnZhbHVlICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZFtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9hbGxvd2VkRmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkID0gT2JqZWN0LmtleXMoZnJvbSkuZmlsdGVyKChrKSA9PiAhdGhpcy5fYWxsb3dlZEZpZWxkcyEuaGFzKGsgYXMga2V5b2YgVCkpO1xuICAgICAgICAgICAgaW52YWxpZC5mb3JFYWNoKChrZXkpID0+IGVycm9ycy5wdXNoKChgJHtrZXl9OiB1bmV4cGVjdGVkIGZpZWxkIGluIHNvdXJjZSBvYmplY3QuYCkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGVycm9ycy5sZW5ndGggPT09IDApID8gdHJ1ZSA6IGZhaWwoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG59XG4iXX0=
@@ -1,7 +1,27 @@
1
1
  import { Failure } from '../result';
2
2
  import { GenericValidator, GenericValidatorConstructorParams } from './genericValidator';
3
+ /**
4
+ * Parameters used to construct a {@link Validation.Classes.StringValidator | StringValidator}.
5
+ * @public
6
+ */
3
7
  export declare type StringValidatorConstructorParams<T extends string = string, TC = unknown> = GenericValidatorConstructorParams<T, TC>;
8
+ /**
9
+ * An in-place {@link Validation.Validator | Validator} for `string` values.
10
+ * @public
11
+ */
4
12
  export declare class StringValidator<T extends string = string, TC = unknown> extends GenericValidator<T, TC> {
13
+ /**
14
+ * Constructs a new {@link Validation.Classes.StringValidator | StringValidator}.
15
+ * @param params - Optional {@link Validation.Classes.StringValidatorConstructorParams | init params}
16
+ * for the new {@link Validation.Classes.StringValidator | StringValidator}.
17
+ */
5
18
  constructor(params?: StringValidatorConstructorParams<T, TC>);
19
+ /**
20
+ * Static method which validates that a supplied `unknown` value is a `string`.
21
+ * @param from - The `unknown` value to be tested.
22
+ * @returns Returns `true` if `from` is a `string`, or {@link Failure} with an error
23
+ * message if not.
24
+ */
6
25
  static validateString<T extends string>(from: unknown): boolean | Failure<T>;
7
26
  }
27
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/validation/string.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,gCAAgC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,GAAG,OAAO,IAAI,iCAAiC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEjI;;;GAGG;AACH,qBAAa,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,GAAG,OAAO,CAAE,SAAQ,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC;IACjG;;;;OAIG;gBACgB,MAAM,CAAC,EAAE,gCAAgC,CAAC,CAAC,EAAE,EAAE,CAAC;IAOnE;;;;;OAKG;WACW,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAMtF"}
@@ -24,19 +24,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.StringValidator = void 0;
25
25
  const result_1 = require("../result");
26
26
  const genericValidator_1 = require("./genericValidator");
27
+ /**
28
+ * An in-place {@link Validation.Validator | Validator} for `string` values.
29
+ * @public
30
+ */
27
31
  class StringValidator extends genericValidator_1.GenericValidator {
32
+ /**
33
+ * Constructs a new {@link Validation.Classes.StringValidator | StringValidator}.
34
+ * @param params - Optional {@link Validation.Classes.StringValidatorConstructorParams | init params}
35
+ * for the new {@link Validation.Classes.StringValidator | StringValidator}.
36
+ */
28
37
  constructor(params) {
29
38
  super({
30
39
  validator: StringValidator.validateString,
31
40
  ...(params !== null && params !== void 0 ? params : {}),
32
41
  });
33
42
  }
43
+ /**
44
+ * Static method which validates that a supplied `unknown` value is a `string`.
45
+ * @param from - The `unknown` value to be tested.
46
+ * @returns Returns `true` if `from` is a `string`, or {@link Failure} with an error
47
+ * message if not.
48
+ */
34
49
  static validateString(from) {
35
50
  if (typeof from === 'string') {
36
51
  return true;
37
52
  }
38
- return result_1.fail(`"${from}": not a string`);
53
+ return (0, result_1.fail)(`"${from}": not a string`);
39
54
  }
40
55
  }
41
56
  exports.StringValidator = StringValidator;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILHNDQUEwQztBQUMxQyx5REFBeUY7QUFJekYsTUFBYSxlQUF5RCxTQUFRLG1DQUF1QjtJQUNqRyxZQUFtQixNQUFnRDtRQUMvRCxLQUFLLENBQUM7WUFDRixTQUFTLEVBQUUsZUFBZSxDQUFDLGNBQWM7WUFDekMsR0FBRyxDQUFDLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLEVBQUUsQ0FBQztTQUNwQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBbUIsSUFBYTtRQUN4RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxhQUFJLENBQUksSUFBSSxJQUFJLGlCQUFpQixDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNKO0FBZEQsMENBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIxIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRmFpbHVyZSwgZmFpbCB9IGZyb20gJy4uL3Jlc3VsdCc7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yLCBHZW5lcmljVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2dlbmVyaWNWYWxpZGF0b3InO1xuXG5leHBvcnQgdHlwZSBTdHJpbmdWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQyA9IHVua25vd24+ID0gR2VuZXJpY1ZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPjtcblxuZXhwb3J0IGNsYXNzIFN0cmluZ1ZhbGlkYXRvcjxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQyA9IHVua25vd24+IGV4dGVuZHMgR2VuZXJpY1ZhbGlkYXRvcjxULCBUQz4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM/OiBTdHJpbmdWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxULCBUQz4pIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdmFsaWRhdG9yOiBTdHJpbmdWYWxpZGF0b3IudmFsaWRhdGVTdHJpbmcsXG4gICAgICAgICAgICAuLi4ocGFyYW1zID8/IHt9KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZVN0cmluZzxUIGV4dGVuZHMgc3RyaW5nPihmcm9tOiB1bmtub3duKTogYm9vbGVhbiB8IEZhaWx1cmU8VD4ge1xuICAgICAgICBpZiAodHlwZW9mIGZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbDxUPihgXCIke2Zyb219XCI6IG5vdCBhIHN0cmluZ2ApO1xuICAgIH1cbn1cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILHNDQUEwQztBQUMxQyx5REFBeUY7QUFRekY7OztHQUdHO0FBQ0gsTUFBYSxlQUF5RCxTQUFRLG1DQUF1QjtJQUNqRzs7OztPQUlHO0lBQ0gsWUFBbUIsTUFBZ0Q7UUFDL0QsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLGVBQWUsQ0FBQyxjQUFjO1lBQ3pDLEdBQUcsQ0FBQyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxFQUFFLENBQUM7U0FDcEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBbUIsSUFBYTtRQUN4RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxJQUFBLGFBQUksRUFBSSxJQUFJLElBQUksaUJBQWlCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0o7QUF6QkQsMENBeUJDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMSBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEZhaWx1cmUsIGZhaWwgfSBmcm9tICcuLi9yZXN1bHQnO1xuaW1wb3J0IHsgR2VuZXJpY1ZhbGlkYXRvciwgR2VuZXJpY1ZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9nZW5lcmljVmFsaWRhdG9yJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHVzZWQgdG8gY29uc3RydWN0IGEge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5TdHJpbmdWYWxpZGF0b3IgfCBTdHJpbmdWYWxpZGF0b3J9LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBTdHJpbmdWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtczxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQyA9IHVua25vd24+ID0gR2VuZXJpY1ZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPjtcblxuLyoqXG4gKiBBbiBpbi1wbGFjZSB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBWYWxpZGF0b3J9IGZvciBgc3RyaW5nYCB2YWx1ZXMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJpbmdWYWxpZGF0b3I8VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEMgPSB1bmtub3duPiBleHRlbmRzIEdlbmVyaWNWYWxpZGF0b3I8VCwgVEM+IHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuU3RyaW5nVmFsaWRhdG9yIHwgU3RyaW5nVmFsaWRhdG9yfS5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwge0BsaW5rIFZhbGlkYXRpb24uQ2xhc3Nlcy5TdHJpbmdWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtcyB8IGluaXQgcGFyYW1zfVxuICAgICAqIGZvciB0aGUgbmV3IHtAbGluayBWYWxpZGF0aW9uLkNsYXNzZXMuU3RyaW5nVmFsaWRhdG9yIHwgU3RyaW5nVmFsaWRhdG9yfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zPzogU3RyaW5nVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXM8VCwgVEM+KSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHZhbGlkYXRvcjogU3RyaW5nVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nLFxuICAgICAgICAgICAgLi4uKHBhcmFtcyA/PyB7fSksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXRpYyBtZXRob2Qgd2hpY2ggdmFsaWRhdGVzIHRoYXQgYSBzdXBwbGllZCBgdW5rbm93bmAgdmFsdWUgaXMgYSBgc3RyaW5nYC5cbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBgdW5rbm93bmAgdmFsdWUgdG8gYmUgdGVzdGVkLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIGBmcm9tYCBpcyBhIGBzdHJpbmdgLCBvciB7QGxpbmsgRmFpbHVyZX0gd2l0aCBhbiBlcnJvclxuICAgICAqIG1lc3NhZ2UgaWYgbm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGVTdHJpbmc8VCBleHRlbmRzIHN0cmluZz4oZnJvbTogdW5rbm93bik6IGJvb2xlYW4gfCBGYWlsdXJlPFQ+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmcm9tID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWw8VD4oYFwiJHtmcm9tfVwiOiBub3QgYSBzdHJpbmdgKTtcbiAgICB9XG59XG4iXX0=
@@ -1,19 +1,68 @@
1
+ /**
2
+ * A {@link Validation.ConstraintTrait | ConstraintTrait} indicating that
3
+ * a {@link Validation.Constraint | Constraint<T>} function provides an
4
+ * additional constraint implementation.
5
+ * @public
6
+ */
1
7
  export interface FunctionConstraintTrait {
2
8
  type: 'function';
3
9
  }
10
+ /**
11
+ * Union of all supported constraint traits.
12
+ * @public
13
+ */
4
14
  export declare type ConstraintTrait = FunctionConstraintTrait;
15
+ /**
16
+ * Interface describing the supported validator traits.
17
+ * @public
18
+ */
5
19
  export interface ValidatorTraitValues {
20
+ /**
21
+ * Indicates whether the validator accepts `undefined` as
22
+ * a valid value.
23
+ */
6
24
  readonly isOptional: boolean;
25
+ /**
26
+ * If present, indicates that the result will be branded
27
+ * with the corresponding brand.
28
+ */
7
29
  readonly brand?: string;
30
+ /**
31
+ * Zero or more additional {@link Validation.ConstraintTrait | ConstraintTrait}s
32
+ * describing additional constraints applied by this {@link Validation.Validator | Validator}.
33
+ */
8
34
  readonly constraints: ConstraintTrait[];
9
35
  }
36
+ /**
37
+ * Default {@link Validation.ValidatorTraitValues | validation traits}.
38
+ * @public
39
+ */
10
40
  export declare const defaultValidatorTraits: ValidatorTraitValues;
11
41
  /**
12
- * Validator traits
42
+ * Generic implementation of {@link Validation.ValidatorTraitValues | ValidatorTraitValues}.
43
+ * @public
13
44
  */
14
45
  export declare class ValidatorTraits implements ValidatorTraitValues {
46
+ /**
47
+ * {@inheritdoc Validation.ValidatorTraitValues.isOptional}
48
+ */
15
49
  readonly isOptional: boolean;
50
+ /**
51
+ * {@inheritdoc Validation.ValidatorTraitValues.brand}
52
+ */
16
53
  readonly brand?: string;
54
+ /**
55
+ * {@inheritdoc Validation.ValidatorTraitValues.constraints}
56
+ */
17
57
  readonly constraints: ConstraintTrait[];
58
+ /**
59
+ * Constructs a new {@link Validation.ValidatorTraits | ValidatorTraits} optionally
60
+ * initialized with the supplied base and initial values.
61
+ * @remarks
62
+ * Initial values take priority over base values, which fall back to the global default values.
63
+ * @param init - Partial initial values to be set in the resulting {@link Validation.Validator | Validator}.
64
+ * @param base - Base values to be used when no initial values are present.
65
+ */
18
66
  constructor(init?: Partial<ValidatorTraitValues>, base?: ValidatorTraitValues);
19
67
  }
68
+ //# sourceMappingURL=traits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traits.d.ts","sourceRoot":"","sources":["../../src/validation/traits.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,UAAU,CAAC;CACpB;AAED;;;GAGG;AACH,oBAAY,eAAe,GAAG,uBAAuB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,oBAGpC,CAAC;AAEF;;;GAGG;AACH,qBAAa,eAAgB,YAAW,oBAAoB;IACxD;;OAEG;IACH,SAAgB,UAAU,EAAE,OAAO,CAAC;IAEpC;;OAEG;IACH,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,WAAW,EAAE,eAAe,EAAE,CAAC;IAE/C;;;;;;;OAOG;gBAEC,IAAI,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EACpC,IAAI,CAAC,EAAE,oBAAoB;CAUlC"}
@@ -22,14 +22,27 @@
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.ValidatorTraits = exports.defaultValidatorTraits = void 0;
25
+ /**
26
+ * Default {@link Validation.ValidatorTraitValues | validation traits}.
27
+ * @public
28
+ */
25
29
  exports.defaultValidatorTraits = {
26
30
  isOptional: false,
27
31
  constraints: [],
28
32
  };
29
33
  /**
30
- * Validator traits
34
+ * Generic implementation of {@link Validation.ValidatorTraitValues | ValidatorTraitValues}.
35
+ * @public
31
36
  */
32
37
  class ValidatorTraits {
38
+ /**
39
+ * Constructs a new {@link Validation.ValidatorTraits | ValidatorTraits} optionally
40
+ * initialized with the supplied base and initial values.
41
+ * @remarks
42
+ * Initial values take priority over base values, which fall back to the global default values.
43
+ * @param init - Partial initial values to be set in the resulting {@link Validation.Validator | Validator}.
44
+ * @param base - Base values to be used when no initial values are present.
45
+ */
33
46
  constructor(init, base) {
34
47
  var _a, _b, _c, _d, _e, _f;
35
48
  this.isOptional = (_b = (_a = init === null || init === void 0 ? void 0 : init.isOptional) !== null && _a !== void 0 ? _a : base === null || base === void 0 ? void 0 : base.isOptional) !== null && _b !== void 0 ? _b : exports.defaultValidatorTraits.isOptional;
@@ -42,4 +55,4 @@ class ValidatorTraits {
42
55
  }
43
56
  }
44
57
  exports.ValidatorTraits = ValidatorTraits;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vdHJhaXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQWNVLFFBQUEsc0JBQXNCLEdBQXlCO0lBQ3hELFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFdBQVcsRUFBRSxFQUFFO0NBQ2xCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUt4QixZQUNJLElBQW9DLEVBQ3BDLElBQTJCOztRQUUzQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsVUFBVSxtQ0FBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsVUFBVSxtQ0FBSSw4QkFBc0IsQ0FBQyxVQUFVLENBQUM7UUFDNUYsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEtBQUssbUNBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEtBQUssbUNBQUksOEJBQXNCLENBQUMsS0FBSyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixHQUFHLDhCQUFzQixDQUFDLFdBQVc7WUFDckMsR0FBRyxDQUFDLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsbUNBQUksRUFBRSxDQUFDO1lBQzVCLEdBQUcsQ0FBQyxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLG1DQUFJLEVBQUUsQ0FBQztTQUMvQixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBakJELDBDQWlCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQ29uc3RyYWludFRyYWl0IHtcbiAgICB0eXBlOiAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgdHlwZSBDb25zdHJhaW50VHJhaXQgPSBGdW5jdGlvbkNvbnN0cmFpbnRUcmFpdDtcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JUcmFpdFZhbHVlcyB7XG4gICAgcmVhZG9ubHkgaXNPcHRpb25hbDogYm9vbGVhbjtcbiAgICByZWFkb25seSBicmFuZD86IHN0cmluZztcbiAgICByZWFkb25seSBjb25zdHJhaW50czogQ29uc3RyYWludFRyYWl0W107XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VmFsaWRhdG9yVHJhaXRzOiBWYWxpZGF0b3JUcmFpdFZhbHVlcyA9IHtcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBjb25zdHJhaW50czogW10sXG59O1xuXG4vKipcbiAqIFZhbGlkYXRvciB0cmFpdHNcbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclRyYWl0cyBpbXBsZW1lbnRzIFZhbGlkYXRvclRyYWl0VmFsdWVzIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNPcHRpb25hbDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnJhbmQ/OiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnN0cmFpbnRzOiBDb25zdHJhaW50VHJhaXRbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5pdD86IFBhcnRpYWw8VmFsaWRhdG9yVHJhaXRWYWx1ZXM+LFxuICAgICAgICBiYXNlPzogVmFsaWRhdG9yVHJhaXRWYWx1ZXMsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaXNPcHRpb25hbCA9IGluaXQ/LmlzT3B0aW9uYWwgPz8gYmFzZT8uaXNPcHRpb25hbCA/PyBkZWZhdWx0VmFsaWRhdG9yVHJhaXRzLmlzT3B0aW9uYWw7XG4gICAgICAgIHRoaXMuYnJhbmQgPSBpbml0Py5icmFuZCA/PyBiYXNlPy5icmFuZCA/PyBkZWZhdWx0VmFsaWRhdG9yVHJhaXRzLmJyYW5kO1xuICAgICAgICB0aGlzLmNvbnN0cmFpbnRzID0gW1xuICAgICAgICAgICAgLi4uZGVmYXVsdFZhbGlkYXRvclRyYWl0cy5jb25zdHJhaW50cyxcbiAgICAgICAgICAgIC4uLihiYXNlPy5jb25zdHJhaW50cyA/PyBbXSksXG4gICAgICAgICAgICAuLi4oaW5pdD8uY29uc3RyYWludHMgPz8gW10pLFxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vdHJhaXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQTBDSDs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUF5QjtJQUN4RCxVQUFVLEVBQUUsS0FBSztJQUNqQixXQUFXLEVBQUUsRUFBRTtDQUNsQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBYSxlQUFlO0lBZ0J4Qjs7Ozs7OztPQU9HO0lBQ0gsWUFDSSxJQUFvQyxFQUNwQyxJQUEyQjs7UUFFM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFVBQVUsbUNBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFVBQVUsbUNBQUksOEJBQXNCLENBQUMsVUFBVSxDQUFDO1FBQzVGLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxLQUFLLG1DQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxLQUFLLG1DQUFJLDhCQUFzQixDQUFDLEtBQUssQ0FBQztRQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsR0FBRyw4QkFBc0IsQ0FBQyxXQUFXO1lBQ3JDLEdBQUcsQ0FBQyxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLG1DQUFJLEVBQUUsQ0FBQztZQUM1QixHQUFHLENBQUMsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVyxtQ0FBSSxFQUFFLENBQUM7U0FDL0IsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQXBDRCwwQ0FvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIxIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBBIHtAbGluayBWYWxpZGF0aW9uLkNvbnN0cmFpbnRUcmFpdCB8IENvbnN0cmFpbnRUcmFpdH0gaW5kaWNhdGluZyB0aGF0XG4gKiBhIHtAbGluayBWYWxpZGF0aW9uLkNvbnN0cmFpbnQgfCBDb25zdHJhaW50PFQ+fSBmdW5jdGlvbiBwcm92aWRlcyBhblxuICogYWRkaXRpb25hbCBjb25zdHJhaW50IGltcGxlbWVudGF0aW9uLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQ29uc3RyYWludFRyYWl0IHtcbiAgICB0eXBlOiAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBzdXBwb3J0ZWQgY29uc3RyYWludCB0cmFpdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIENvbnN0cmFpbnRUcmFpdCA9IEZ1bmN0aW9uQ29uc3RyYWludFRyYWl0O1xuXG4vKipcbiAqIEludGVyZmFjZSBkZXNjcmliaW5nIHRoZSBzdXBwb3J0ZWQgdmFsaWRhdG9yIHRyYWl0cy5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JUcmFpdFZhbHVlcyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZhbGlkYXRvciBhY2NlcHRzIGB1bmRlZmluZWRgIGFzXG4gICAgICogYSB2YWxpZCB2YWx1ZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBpc09wdGlvbmFsOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgcHJlc2VudCwgaW5kaWNhdGVzIHRoYXQgdGhlIHJlc3VsdCB3aWxsIGJlIGJyYW5kZWRcbiAgICAgKiB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGJyYW5kLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGJyYW5kPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogWmVybyBvciBtb3JlIGFkZGl0aW9uYWwge0BsaW5rIFZhbGlkYXRpb24uQ29uc3RyYWludFRyYWl0IHwgQ29uc3RyYWludFRyYWl0fXNcbiAgICAgKiBkZXNjcmliaW5nIGFkZGl0aW9uYWwgY29uc3RyYWludHMgYXBwbGllZCBieSB0aGlzIHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IFZhbGlkYXRvcn0uXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29uc3RyYWludHM6IENvbnN0cmFpbnRUcmFpdFtdO1xufVxuXG4vKipcbiAqIERlZmF1bHQge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yVHJhaXRWYWx1ZXMgfCB2YWxpZGF0aW9uIHRyYWl0c30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0VmFsaWRhdG9yVHJhaXRzOiBWYWxpZGF0b3JUcmFpdFZhbHVlcyA9IHtcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBjb25zdHJhaW50czogW10sXG59O1xuXG4vKipcbiAqIEdlbmVyaWMgaW1wbGVtZW50YXRpb24gb2Yge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yVHJhaXRWYWx1ZXMgfCBWYWxpZGF0b3JUcmFpdFZhbHVlc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JUcmFpdHMgaW1wbGVtZW50cyBWYWxpZGF0b3JUcmFpdFZhbHVlcyB7XG4gICAgLyoqXG4gICAgICoge0Bpbmhlcml0ZG9jIFZhbGlkYXRpb24uVmFsaWRhdG9yVHJhaXRWYWx1ZXMuaXNPcHRpb25hbH1cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNPcHRpb25hbDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIHtAaW5oZXJpdGRvYyBWYWxpZGF0aW9uLlZhbGlkYXRvclRyYWl0VmFsdWVzLmJyYW5kfVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBicmFuZD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIHtAaW5oZXJpdGRvYyBWYWxpZGF0aW9uLlZhbGlkYXRvclRyYWl0VmFsdWVzLmNvbnN0cmFpbnRzfVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjb25zdHJhaW50czogQ29uc3RyYWludFRyYWl0W107XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvclRyYWl0cyB8IFZhbGlkYXRvclRyYWl0c30gb3B0aW9uYWxseVxuICAgICAqIGluaXRpYWxpemVkIHdpdGggdGhlIHN1cHBsaWVkIGJhc2UgYW5kIGluaXRpYWwgdmFsdWVzLlxuICAgICAqIEByZW1hcmtzXG4gICAgICogSW5pdGlhbCB2YWx1ZXMgdGFrZSBwcmlvcml0eSBvdmVyIGJhc2UgdmFsdWVzLCB3aGljaCBmYWxsIGJhY2sgdG8gdGhlIGdsb2JhbCBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gaW5pdCAtIFBhcnRpYWwgaW5pdGlhbCB2YWx1ZXMgdG8gYmUgc2V0IGluIHRoZSByZXN1bHRpbmcge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgVmFsaWRhdG9yfS5cbiAgICAgKiBAcGFyYW0gYmFzZSAtIEJhc2UgdmFsdWVzIHRvIGJlIHVzZWQgd2hlbiBubyBpbml0aWFsIHZhbHVlcyBhcmUgcHJlc2VudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGluaXQ/OiBQYXJ0aWFsPFZhbGlkYXRvclRyYWl0VmFsdWVzPixcbiAgICAgICAgYmFzZT86IFZhbGlkYXRvclRyYWl0VmFsdWVzLFxuICAgICkge1xuICAgICAgICB0aGlzLmlzT3B0aW9uYWwgPSBpbml0Py5pc09wdGlvbmFsID8/IGJhc2U/LmlzT3B0aW9uYWwgPz8gZGVmYXVsdFZhbGlkYXRvclRyYWl0cy5pc09wdGlvbmFsO1xuICAgICAgICB0aGlzLmJyYW5kID0gaW5pdD8uYnJhbmQgPz8gYmFzZT8uYnJhbmQgPz8gZGVmYXVsdFZhbGlkYXRvclRyYWl0cy5icmFuZDtcbiAgICAgICAgdGhpcy5jb25zdHJhaW50cyA9IFtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRWYWxpZGF0b3JUcmFpdHMuY29uc3RyYWludHMsXG4gICAgICAgICAgICAuLi4oYmFzZT8uY29uc3RyYWludHMgPz8gW10pLFxuICAgICAgICAgICAgLi4uKGluaXQ/LmNvbnN0cmFpbnRzID8/IFtdKSxcbiAgICAgICAgXTtcbiAgICB9XG59XG4iXX0=
@@ -1,61 +1,82 @@
1
1
  import { ConstraintTrait, ValidatorTraits } from './traits';
2
2
  import { Failure, Result } from '../result';
3
3
  import { Brand } from '../brand';
4
+ /**
5
+ * Options that apply to any {@link Validation.Validator | Validator}.
6
+ * @public
7
+ */
4
8
  export interface ValidatorOptions<TC> {
5
9
  defaultContext?: TC;
6
10
  }
11
+ /**
12
+ * A {@link Validation.Constraint | Constraint<T>} function returns
13
+ * `true` if the supplied value meets the constraint. Can return
14
+ * {@link Failure} with an error message or simply return `false`
15
+ * for a default message.
16
+ * @public
17
+ */
7
18
  export declare type Constraint<T> = (val: T) => boolean | Failure<T>;
8
19
  /**
9
- * In-place validation that a supplied unknown matches a requested
10
- * schema.
20
+ * In-place validation that a supplied unknown matches some
21
+ * required characteristics (type, values, etc).
22
+ * @public
11
23
  */
12
24
  export interface Validator<T, TC = undefined> {
13
25
  /**
14
- * Traits describing this validation
26
+ * {@link Validation.ValidatorTraits | Traits} describing this validation.
15
27
  */
16
28
  readonly traits: ValidatorTraits;
17
29
  /**
18
- * Indicates whether this element is explicitly optional
30
+ * Indicates whether this element is explicitly optional.
19
31
  */
20
32
  readonly isOptional: boolean;
21
33
  /**
22
- * Returns the brand for a branded type.
34
+ * The brand for a branded type.
23
35
  */
24
36
  readonly brand: string | undefined;
25
37
  /**
26
- * Tests to see if a supplied unknown value matches this
27
- * validation.
28
- * @param from The unknown to be tested
29
- * @param context optional context used for validation
30
- */
38
+ * Tests to see if a supplied `unknown` value matches this
39
+ * validation.
40
+ * @param from - The `unknown` value to be tested.
41
+ * @param context - Optional validation context.
42
+ * @returns {@link Success} with the typed, validated value,
43
+ * or {@link Failure} with an error message if validation fails.
44
+ */
31
45
  validate(from: unknown, context?: TC): Result<T>;
32
46
  /**
33
- * Tests to see if a supplied unknown value matches this
34
- * validation. Accepts undefined.
35
- * @param from The unknown to be tested
36
- * @param context optional context used for validation
47
+ * Tests to see if a supplied `unknown` value matches this
48
+ * validation. Accepts `undefined`.
49
+ * @param from - The `unknown` value to be tested.
50
+ * @param context - Optional validation context.
51
+ * @returns {@link Success} with the typed, validated value,
52
+ * or {@link Failure} with an error message if validation fails.
37
53
  */
38
54
  validateOptional(from: unknown, context?: TC): Result<T | undefined>;
39
55
  /**
40
56
  * Non-throwing type guard
41
- * @param from The value to be tested
42
- * @param context Optional context for the test
57
+ * @param from - The value to be tested.
58
+ * @param context - Optional validation context.
43
59
  */
44
60
  guard(from: unknown, context?: TC): from is T;
45
61
  /**
46
- * Creates an in-place validator for an optional value.
62
+ * Creates an {@link Validation.Validator | in-place validator}
63
+ * which is derived from this one but which also matches `undefined`.
47
64
  */
48
65
  optional(): Validator<T | undefined, TC>;
49
66
  /**
50
- * Creates a validator which applies additional constraints.
51
- * @param constraint the constraint to be applied
52
- * @param trait optional trait to be applied to this constraint
67
+ * Creates an {@link Validation.Validator | in-place validator}
68
+ * which is derived from this one but which applies additional constraints.
69
+ * @param constraint - the constraint to be applied
70
+ * @param trait - As optional {@link Validation.ConstraintTrait | ConstraintTrait}
71
+ * to be applied to the resulting {@link Validation.Validator | Validator}.
72
+ * @returns A new {@link Validation.Validator | Validator}.
53
73
  */
54
74
  withConstraint(constraint: Constraint<T>, trait?: ConstraintTrait): Validator<T, TC>;
55
75
  /**
56
- * Creates a validator which produces a branded result on successful
57
- * conversion.
58
- * @param brand The brand to be applied
76
+ * Creates a new {@link Validation.Validator | in-place validator} which
77
+ * is derived from this one but which matches a branded result.
78
+ * @param brand - The brand to be applied.
59
79
  */
60
80
  withBrand<B extends string>(brand: B): Validator<Brand<T, B>, TC>;
61
81
  }
82
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,EAAE;IAChC,cAAc,CAAC,EAAE,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,oBAAY,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,EAAE,GAAC,SAAS;IAClC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAEjC;;OAEG;IACF,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC;;;;;;;QAOI;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAElD;;;;;;;QAOI;IACJ,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAErE;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,QAAQ,IAAI,SAAS,CAAC,CAAC,GAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAErF;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1E"}
@@ -21,4 +21,4 @@
21
21
  * SOFTWARE.
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIxIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RyYWludFRyYWl0LCBWYWxpZGF0b3JUcmFpdHMgfSBmcm9tICcuL3RyYWl0cyc7XG5pbXBvcnQgeyBGYWlsdXJlLCBSZXN1bHQgfSBmcm9tICcuLi9yZXN1bHQnO1xuXG5pbXBvcnQgeyBCcmFuZCB9IGZyb20gJy4uL2JyYW5kJztcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3JPcHRpb25zPFRDPiB7XG4gICAgZGVmYXVsdENvbnRleHQ/OiBUQztcbn1cblxuZXhwb3J0IHR5cGUgQ29uc3RyYWludDxUPiA9ICh2YWw6IFQpID0+IGJvb2xlYW4gfCBGYWlsdXJlPFQ+O1xuXG4vKipcbiAqIEluLXBsYWNlIHZhbGlkYXRpb24gdGhhdCBhIHN1cHBsaWVkIHVua25vd24gbWF0Y2hlcyBhIHJlcXVlc3RlZFxuICogc2NoZW1hLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvcjxULCBUQz11bmRlZmluZWQ+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyYWl0cyBkZXNjcmliaW5nIHRoaXMgdmFsaWRhdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgdHJhaXRzOiBWYWxpZGF0b3JUcmFpdHM7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgZWxlbWVudCBpcyBleHBsaWNpdGx5IG9wdGlvbmFsXG4gICAgICAgICAqL1xuICAgICAgICAgcmVhZG9ubHkgaXNPcHRpb25hbDogYm9vbGVhbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgYnJhbmQgZm9yIGEgYnJhbmRlZCB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgYnJhbmQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgICAgLyoqXG4gICAgICAgICAgKiBUZXN0cyB0byBzZWUgaWYgYSBzdXBwbGllZCB1bmtub3duIHZhbHVlIG1hdGNoZXMgdGhpc1xuICAgICAgICAgICogdmFsaWRhdGlvbi5cbiAgICAgICAgICAqIEBwYXJhbSBmcm9tIFRoZSB1bmtub3duIHRvIGJlIHRlc3RlZFxuICAgICAgICAgICogQHBhcmFtIGNvbnRleHQgb3B0aW9uYWwgY29udGV4dCB1c2VkIGZvciB2YWxpZGF0aW9uXG4gICAgICAgICAgKi9cbiAgICAgICAgIHZhbGlkYXRlKGZyb206IHVua25vd24sIGNvbnRleHQ/OiBUQyk6IFJlc3VsdDxUPjtcblxuICAgICAgICAvKipcbiAgICAgICAgICAqIFRlc3RzIHRvIHNlZSBpZiBhIHN1cHBsaWVkIHVua25vd24gdmFsdWUgbWF0Y2hlcyB0aGlzXG4gICAgICAgICAgKiB2YWxpZGF0aW9uLiAgQWNjZXB0cyB1bmRlZmluZWQuXG4gICAgICAgICAgKiBAcGFyYW0gZnJvbSBUaGUgdW5rbm93biB0byBiZSB0ZXN0ZWRcbiAgICAgICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIGNvbnRleHQgdXNlZCBmb3IgdmFsaWRhdGlvblxuICAgICAgICAgICovXG4gICAgICAgIHZhbGlkYXRlT3B0aW9uYWwoZnJvbTogdW5rbm93biwgY29udGV4dD86IFRDKTogUmVzdWx0PFQgfCB1bmRlZmluZWQ+O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb24tdGhyb3dpbmcgdHlwZSBndWFyZFxuICAgICAgICAgKiBAcGFyYW0gZnJvbSBUaGUgdmFsdWUgdG8gYmUgdGVzdGVkXG4gICAgICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIGNvbnRleHQgZm9yIHRoZSB0ZXN0XG4gICAgICAgICAqL1xuICAgICAgICBndWFyZChmcm9tOiB1bmtub3duLCBjb250ZXh0PzogVEMpOiBmcm9tIGlzIFQ7XG5cbiAgICAgICAgIC8qKlxuICAgICAgICAgICogQ3JlYXRlcyBhbiBpbi1wbGFjZSB2YWxpZGF0b3IgZm9yIGFuIG9wdGlvbmFsIHZhbHVlLlxuICAgICAgICAgICovXG4gICAgICAgICBvcHRpb25hbCgpOiBWYWxpZGF0b3I8VHx1bmRlZmluZWQsIFRDPjtcblxuICAgICAgICAgLyoqXG4gICAgICAgICAgKiBDcmVhdGVzIGEgdmFsaWRhdG9yIHdoaWNoIGFwcGxpZXMgYWRkaXRpb25hbCBjb25zdHJhaW50cy5cbiAgICAgICAgICAqIEBwYXJhbSBjb25zdHJhaW50IHRoZSBjb25zdHJhaW50IHRvIGJlIGFwcGxpZWRcbiAgICAgICAgICAqIEBwYXJhbSB0cmFpdCBvcHRpb25hbCB0cmFpdCB0byBiZSBhcHBsaWVkIHRvIHRoaXMgY29uc3RyYWludFxuICAgICAgICAgICovXG4gICAgICAgICB3aXRoQ29uc3RyYWludChjb25zdHJhaW50OiBDb25zdHJhaW50PFQ+LCB0cmFpdD86IENvbnN0cmFpbnRUcmFpdCk6IFZhbGlkYXRvcjxULCBUQz47XG5cbiAgICAgICAgIC8qKlxuICAgICAgICAgICogQ3JlYXRlcyBhIHZhbGlkYXRvciB3aGljaCBwcm9kdWNlcyBhIGJyYW5kZWQgcmVzdWx0IG9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAqIGNvbnZlcnNpb24uXG4gICAgICAgICAgKiBAcGFyYW0gYnJhbmQgVGhlIGJyYW5kIHRvIGJlIGFwcGxpZWRcbiAgICAgICAgICAqL1xuICAgICAgICAgd2l0aEJyYW5kPEIgZXh0ZW5kcyBzdHJpbmc+KGJyYW5kOiBCKTogVmFsaWRhdG9yPEJyYW5kPFQsIEI+LCBUQz47XG59XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIxIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RyYWludFRyYWl0LCBWYWxpZGF0b3JUcmFpdHMgfSBmcm9tICcuL3RyYWl0cyc7XG5pbXBvcnQgeyBGYWlsdXJlLCBSZXN1bHQgfSBmcm9tICcuLi9yZXN1bHQnO1xuXG5pbXBvcnQgeyBCcmFuZCB9IGZyb20gJy4uL2JyYW5kJztcblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgYXBwbHkgdG8gYW55IHtAbGluayBWYWxpZGF0aW9uLlZhbGlkYXRvciB8IFZhbGlkYXRvcn0uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdG9yT3B0aW9uczxUQz4ge1xuICAgIGRlZmF1bHRDb250ZXh0PzogVEM7XG59XG5cbi8qKlxuICogQSB7QGxpbmsgVmFsaWRhdGlvbi5Db25zdHJhaW50IHwgQ29uc3RyYWludDxUPn0gZnVuY3Rpb24gcmV0dXJuc1xuICogYHRydWVgIGlmIHRoZSBzdXBwbGllZCB2YWx1ZSBtZWV0cyB0aGUgY29uc3RyYWludC4gQ2FuIHJldHVyblxuICoge0BsaW5rIEZhaWx1cmV9IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBvciBzaW1wbHkgcmV0dXJuIGBmYWxzZWBcbiAqIGZvciBhIGRlZmF1bHQgbWVzc2FnZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQ29uc3RyYWludDxUPiA9ICh2YWw6IFQpID0+IGJvb2xlYW4gfCBGYWlsdXJlPFQ+O1xuXG4vKipcbiAqIEluLXBsYWNlIHZhbGlkYXRpb24gdGhhdCBhIHN1cHBsaWVkIHVua25vd24gbWF0Y2hlcyBzb21lXG4gKiByZXF1aXJlZCBjaGFyYWN0ZXJpc3RpY3MgKHR5cGUsIHZhbHVlcywgZXRjKS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3I8VCwgVEM9dW5kZWZpbmVkPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3JUcmFpdHMgfCBUcmFpdHN9IGRlc2NyaWJpbmcgdGhpcyB2YWxpZGF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgdHJhaXRzOiBWYWxpZGF0b3JUcmFpdHM7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgZWxlbWVudCBpcyBleHBsaWNpdGx5IG9wdGlvbmFsLlxuICAgICAgICAgKi9cbiAgICAgICAgIHJlYWRvbmx5IGlzT3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBicmFuZCBmb3IgYSBicmFuZGVkIHR5cGUuXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBicmFuZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgICogVGVzdHMgdG8gc2VlIGlmIGEgc3VwcGxpZWQgYHVua25vd25gIHZhbHVlIG1hdGNoZXMgdGhpc1xuICAgICAgICAgICogdmFsaWRhdGlvbi5cbiAgICAgICAgICAqIEBwYXJhbSBmcm9tIC0gVGhlIGB1bmtub3duYCB2YWx1ZSB0byBiZSB0ZXN0ZWQuXG4gICAgICAgICAgKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHZhbGlkYXRpb24gY29udGV4dC5cbiAgICAgICAgICAqIEByZXR1cm5zIHtAbGluayBTdWNjZXNzfSB3aXRoIHRoZSB0eXBlZCwgdmFsaWRhdGVkIHZhbHVlLFxuICAgICAgICAgICogb3Ige0BsaW5rIEZhaWx1cmV9IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiB2YWxpZGF0aW9uIGZhaWxzLlxuICAgICAgICAgICovXG4gICAgICAgICB2YWxpZGF0ZShmcm9tOiB1bmtub3duLCBjb250ZXh0PzogVEMpOiBSZXN1bHQ8VD47XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAgKiBUZXN0cyB0byBzZWUgaWYgYSBzdXBwbGllZCBgdW5rbm93bmAgdmFsdWUgbWF0Y2hlcyB0aGlzXG4gICAgICAgICAgKiB2YWxpZGF0aW9uLiAgQWNjZXB0cyBgdW5kZWZpbmVkYC5cbiAgICAgICAgICAqIEBwYXJhbSBmcm9tIC0gVGhlIGB1bmtub3duYCB2YWx1ZSB0byBiZSB0ZXN0ZWQuXG4gICAgICAgICAgKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHZhbGlkYXRpb24gY29udGV4dC5cbiAgICAgICAgICAqIEByZXR1cm5zIHtAbGluayBTdWNjZXNzfSB3aXRoIHRoZSB0eXBlZCwgdmFsaWRhdGVkIHZhbHVlLFxuICAgICAgICAgICogb3Ige0BsaW5rIEZhaWx1cmV9IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiB2YWxpZGF0aW9uIGZhaWxzLlxuICAgICAgICAgICovXG4gICAgICAgIHZhbGlkYXRlT3B0aW9uYWwoZnJvbTogdW5rbm93biwgY29udGV4dD86IFRDKTogUmVzdWx0PFQgfCB1bmRlZmluZWQ+O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb24tdGhyb3dpbmcgdHlwZSBndWFyZFxuICAgICAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSB2YWx1ZSB0byBiZSB0ZXN0ZWQuXG4gICAgICAgICAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgdmFsaWRhdGlvbiBjb250ZXh0LlxuICAgICAgICAgKi9cbiAgICAgICAgZ3VhcmQoZnJvbTogdW5rbm93biwgY29udGV4dD86IFRDKTogZnJvbSBpcyBUO1xuXG4gICAgICAgICAvKipcbiAgICAgICAgICAqIENyZWF0ZXMgYW4ge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgaW4tcGxhY2UgdmFsaWRhdG9yfVxuICAgICAgICAgICogd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoaXMgb25lIGJ1dCB3aGljaCBhbHNvIG1hdGNoZXMgYHVuZGVmaW5lZGAuXG4gICAgICAgICAgKi9cbiAgICAgICAgIG9wdGlvbmFsKCk6IFZhbGlkYXRvcjxUfHVuZGVmaW5lZCwgVEM+O1xuXG4gICAgICAgICAvKipcbiAgICAgICAgICAqIENyZWF0ZXMgYW4ge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgaW4tcGxhY2UgdmFsaWRhdG9yfVxuICAgICAgICAgICogd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoaXMgb25lIGJ1dCB3aGljaCBhcHBsaWVzIGFkZGl0aW9uYWwgY29uc3RyYWludHMuXG4gICAgICAgICAgKiBAcGFyYW0gY29uc3RyYWludCAtIHRoZSBjb25zdHJhaW50IHRvIGJlIGFwcGxpZWRcbiAgICAgICAgICAqIEBwYXJhbSB0cmFpdCAtIEFzIG9wdGlvbmFsIHtAbGluayBWYWxpZGF0aW9uLkNvbnN0cmFpbnRUcmFpdCB8IENvbnN0cmFpbnRUcmFpdH1cbiAgICAgICAgICAqIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3VsdGluZyB7QGxpbmsgVmFsaWRhdGlvbi5WYWxpZGF0b3IgfCBWYWxpZGF0b3J9LlxuICAgICAgICAgICogQHJldHVybnMgQSBuZXcge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgVmFsaWRhdG9yfS5cbiAgICAgICAgICAqL1xuICAgICAgICAgd2l0aENvbnN0cmFpbnQoY29uc3RyYWludDogQ29uc3RyYWludDxUPiwgdHJhaXQ/OiBDb25zdHJhaW50VHJhaXQpOiBWYWxpZGF0b3I8VCwgVEM+O1xuXG4gICAgICAgICAvKipcbiAgICAgICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFZhbGlkYXRpb24uVmFsaWRhdG9yIHwgaW4tcGxhY2UgdmFsaWRhdG9yfSB3aGljaFxuICAgICAgICAgICogaXMgZGVyaXZlZCBmcm9tIHRoaXMgb25lIGJ1dCB3aGljaCBtYXRjaGVzIGEgYnJhbmRlZCByZXN1bHQuXG4gICAgICAgICAgKiBAcGFyYW0gYnJhbmQgLSBUaGUgYnJhbmQgdG8gYmUgYXBwbGllZC5cbiAgICAgICAgICAqL1xuICAgICAgICAgd2l0aEJyYW5kPEIgZXh0ZW5kcyBzdHJpbmc+KGJyYW5kOiBCKTogVmFsaWRhdG9yPEJyYW5kPFQsIEI+LCBUQz47XG59XG4iXX0=
@@ -3,8 +3,23 @@ import { Failure } from '../result';
3
3
  export declare type ValidatorBaseConstructorParams<T, TC> = Omit<GenericValidatorConstructorParams<T, TC>, 'validator'>;
4
4
  /**
5
5
  * Abstract base helper class for specific validator implementations
6
+ * @internal
6
7
  */
7
8
  export declare abstract class ValidatorBase<T, TC = undefined> extends GenericValidator<T, TC> {
8
- constructor(params: Partial<ValidatorBaseConstructorParams<T, TC>>);
9
+ /**
10
+ * Inner constructor
11
+ * @param params - Initialization params.
12
+ * @internal
13
+ */
14
+ protected constructor(params: Partial<ValidatorBaseConstructorParams<T, TC>>);
15
+ /**
16
+ * Abstract validation method to me implemented by derived classes.
17
+ * @param from - Value to be converted.
18
+ * @param context - Optional validation context.
19
+ * @returns `true` if `from` is valid, {@link Failure | Failure<T>}
20
+ * with an error message if `from` is invalid.
21
+ * @internal
22
+ */
9
23
  protected abstract _validate(from: unknown, context?: TC): boolean | Failure<T>;
10
24
  }
25
+ //# sourceMappingURL=validatorBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatorBase.d.ts","sourceRoot":"","sources":["../../src/validation/validatorBase.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gBAAgB,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,oBAAY,8BAA8B,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,iCAAiC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;AAEhH;;;GAGG;AACH,8BAAsB,aAAa,CAAC,CAAC,EAAE,EAAE,GAAG,SAAS,CAAE,SAAQ,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC;IAClF;;;;OAIG;IACH,SAAS,aAAa,MAAM,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAO5E;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAClF"}
@@ -25,8 +25,14 @@ exports.ValidatorBase = void 0;
25
25
  const genericValidator_1 = require("./genericValidator");
26
26
  /**
27
27
  * Abstract base helper class for specific validator implementations
28
+ * @internal
28
29
  */
29
30
  class ValidatorBase extends genericValidator_1.GenericValidator {
31
+ /**
32
+ * Inner constructor
33
+ * @param params - Initialization params.
34
+ * @internal
35
+ */
30
36
  constructor(params) {
31
37
  super({
32
38
  validator: (from, context) => this._validate(from, context),
@@ -35,4 +41,4 @@ class ValidatorBase extends genericValidator_1.GenericValidator {
35
41
  }
36
42
  }
37
43
  exports.ValidatorBase = ValidatorBase;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3ZhbGlkYXRvckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgseURBQXlGO0FBTXpGOztHQUVHO0FBQ0gsTUFBc0IsYUFBaUMsU0FBUSxtQ0FBdUI7SUFDbEYsWUFBbUIsTUFBc0Q7UUFDckUsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1lBQzNELEdBQUcsTUFBTTtTQUNaLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FHSjtBQVRELHNDQVNDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMSBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEdlbmVyaWNWYWxpZGF0b3IsIEdlbmVyaWNWYWxpZGF0b3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vZ2VuZXJpY1ZhbGlkYXRvcic7XG5cbmltcG9ydCB7IEZhaWx1cmUgfSBmcm9tICcuLi9yZXN1bHQnO1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JCYXNlQ29uc3RydWN0b3JQYXJhbXM8VCwgVEM+ID0gT21pdDxHZW5lcmljVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXM8VCwgVEM+LCAndmFsaWRhdG9yJz47XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBoZWxwZXIgY2xhc3MgZm9yIHNwZWNpZmljIHZhbGlkYXRvciBpbXBsZW1lbnRhdGlvbnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbGlkYXRvckJhc2U8VCwgVEMgPSB1bmRlZmluZWQ+IGV4dGVuZHMgR2VuZXJpY1ZhbGlkYXRvcjxULCBUQz4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFBhcnRpYWw8VmFsaWRhdG9yQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPj4pIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdmFsaWRhdG9yOiAoZnJvbSwgY29udGV4dCkgPT4gdGhpcy5fdmFsaWRhdGUoZnJvbSwgY29udGV4dCksXG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfdmFsaWRhdGUoZnJvbTogdW5rbm93biwgY29udGV4dD86IFRDKTogYm9vbGVhbiB8IEZhaWx1cmU8VD47XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL3ZhbGlkYXRvckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgseURBQXlGO0FBTXpGOzs7R0FHRztBQUNILE1BQXNCLGFBQWlDLFNBQVEsbUNBQXVCO0lBQ2xGOzs7O09BSUc7SUFDSCxZQUFzQixNQUFzRDtRQUN4RSxLQUFLLENBQUM7WUFDRixTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7WUFDM0QsR0FBRyxNQUFNO1NBQ1osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQVdKO0FBdEJELHNDQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yLCBHZW5lcmljVmFsaWRhdG9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2dlbmVyaWNWYWxpZGF0b3InO1xuXG5pbXBvcnQgeyBGYWlsdXJlIH0gZnJvbSAnLi4vcmVzdWx0JztcblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPiA9IE9taXQ8R2VuZXJpY1ZhbGlkYXRvckNvbnN0cnVjdG9yUGFyYW1zPFQsIFRDPiwgJ3ZhbGlkYXRvcic+O1xuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgaGVscGVyIGNsYXNzIGZvciBzcGVjaWZpYyB2YWxpZGF0b3IgaW1wbGVtZW50YXRpb25zXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbGlkYXRvckJhc2U8VCwgVEMgPSB1bmRlZmluZWQ+IGV4dGVuZHMgR2VuZXJpY1ZhbGlkYXRvcjxULCBUQz4ge1xuICAgIC8qKlxuICAgICAqIElubmVyIGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHBhcmFtcyAtIEluaXRpYWxpemF0aW9uIHBhcmFtcy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocGFyYW1zOiBQYXJ0aWFsPFZhbGlkYXRvckJhc2VDb25zdHJ1Y3RvclBhcmFtczxULCBUQz4+KSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHZhbGlkYXRvcjogKGZyb20sIGNvbnRleHQpID0+IHRoaXMuX3ZhbGlkYXRlKGZyb20sIGNvbnRleHQpLFxuICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBYnN0cmFjdCB2YWxpZGF0aW9uIG1ldGhvZCB0byBtZSBpbXBsZW1lbnRlZCBieSBkZXJpdmVkIGNsYXNzZXMuXG4gICAgICogQHBhcmFtIGZyb20gLSBWYWx1ZSB0byBiZSBjb252ZXJ0ZWQuXG4gICAgICogQHBhcmFtIGNvbnRleHQgLSBPcHRpb25hbCB2YWxpZGF0aW9uIGNvbnRleHQuXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGBmcm9tYCBpcyB2YWxpZCwge0BsaW5rIEZhaWx1cmUgfCBGYWlsdXJlPFQ+fVxuICAgICAqIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiBgZnJvbWAgaXMgaW52YWxpZC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX3ZhbGlkYXRlKGZyb206IHVua25vd24sIGNvbnRleHQ/OiBUQyk6IGJvb2xlYW4gfCBGYWlsdXJlPFQ+O1xufVxuIl19