vest 4.4.0-dev-08ec91 → 4.4.2-dev-afe5de

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 (49) hide show
  1. package/dist/cjs/classnames.development.js +9 -60
  2. package/dist/cjs/classnames.production.js +1 -1
  3. package/dist/cjs/enforce/compose.development.js +6 -53
  4. package/dist/cjs/enforce/compose.production.js +1 -1
  5. package/dist/cjs/enforce/compounds.development.js +16 -71
  6. package/dist/cjs/enforce/compounds.production.js +1 -1
  7. package/dist/cjs/enforce/schema.development.js +6 -58
  8. package/dist/cjs/enforce/schema.production.js +1 -1
  9. package/dist/cjs/parser.development.js +8 -59
  10. package/dist/cjs/parser.production.js +1 -1
  11. package/dist/cjs/promisify.development.js +2 -26
  12. package/dist/cjs/promisify.production.js +1 -1
  13. package/dist/cjs/vest.development.js +176 -390
  14. package/dist/cjs/vest.production.js +1 -1
  15. package/dist/es/classnames.development.js +1 -52
  16. package/dist/es/classnames.production.js +1 -1
  17. package/dist/es/enforce/compose.development.js +4 -51
  18. package/dist/es/enforce/compose.production.js +1 -1
  19. package/dist/es/enforce/compounds.development.js +11 -66
  20. package/dist/es/enforce/compounds.production.js +1 -1
  21. package/dist/es/enforce/schema.development.js +2 -54
  22. package/dist/es/enforce/schema.production.js +1 -1
  23. package/dist/es/parser.development.js +1 -52
  24. package/dist/es/parser.production.js +1 -1
  25. package/dist/es/promisify.development.js +1 -25
  26. package/dist/es/promisify.production.js +1 -1
  27. package/dist/es/vest.development.js +101 -315
  28. package/dist/es/vest.production.js +1 -1
  29. package/dist/umd/classnames.development.js +13 -13
  30. package/dist/umd/classnames.production.js +1 -1
  31. package/dist/umd/enforce/compose.development.js +122 -122
  32. package/dist/umd/enforce/compose.production.js +1 -1
  33. package/dist/umd/enforce/compounds.development.js +181 -185
  34. package/dist/umd/enforce/compounds.production.js +1 -1
  35. package/dist/umd/enforce/schema.development.js +133 -133
  36. package/dist/umd/enforce/schema.production.js +1 -1
  37. package/dist/umd/parser.development.js +13 -13
  38. package/dist/umd/parser.production.js +1 -1
  39. package/dist/umd/vest.development.js +361 -376
  40. package/dist/umd/vest.production.js +1 -1
  41. package/package.json +4 -3
  42. package/testUtils/mockThrowError.ts +2 -1
  43. package/testUtils/suiteDummy.ts +1 -1
  44. package/testUtils/testObjects.ts +2 -17
  45. package/types/enforce/compose.d.ts +14 -30
  46. package/types/enforce/compounds.d.ts +14 -30
  47. package/types/enforce/schema.d.ts +14 -30
  48. package/types/vest.d.ts +14 -15
  49. package/testUtils/itWithContext.ts +0 -23
@@ -3,20 +3,56 @@
3
3
  factory();
4
4
  }((function () { 'use strict';
5
5
 
6
- function mapFirst(array, callback) {
7
- var broke = false;
8
- var breakoutValue = null;
9
- for (var i = 0; i < array.length; i++) {
10
- callback(array[i], breakout, i);
11
- if (broke) {
12
- return breakoutValue;
6
+ function bindNot(fn) {
7
+ return function () {
8
+ var args = [];
9
+ for (var _i = 0; _i < arguments.length; _i++) {
10
+ args[_i] = arguments[_i];
13
11
  }
14
- }
15
- function breakout(value) {
16
- broke = true;
17
- breakoutValue = value;
18
- }
12
+ return !fn.apply(void 0, args);
13
+ };
14
+ }
15
+
16
+ function isNumeric(value) {
17
+ var str = String(value);
18
+ var num = Number(value);
19
+ var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
20
+ return Boolean(result);
21
+ }
22
+ var isNotNumeric = bindNot(isNumeric);
23
+
24
+ function numberEquals(value, eq) {
25
+ return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
26
+ }
27
+ var numberNotEquals = bindNot(numberEquals);
28
+
29
+ function lengthEquals(value, arg1) {
30
+ return numberEquals(value.length, arg1);
31
+ }
32
+ var lengthNotEquals = bindNot(lengthEquals);
33
+
34
+ function greaterThan(value, gt) {
35
+ return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
36
+ }
37
+
38
+ function longerThan(value, arg1) {
39
+ return greaterThan(value.length, arg1);
40
+ }
41
+
42
+ function isNull(value) {
43
+ return value === null;
44
+ }
45
+ var isNotNull = bindNot(isNull);
46
+
47
+ function isUndefined(value) {
48
+ return value === undefined;
49
+ }
50
+ var isNotUndefined = bindNot(isUndefined);
51
+
52
+ function isNullish(value) {
53
+ return isNull(value) || isUndefined(value);
19
54
  }
55
+ var isNotNullish = bindNot(isNullish);
20
56
 
21
57
  function isFunction(value) {
22
58
  return typeof value === 'function';
@@ -30,95 +66,87 @@
30
66
  return isFunction(value) ? value.apply(void 0, args) : value;
31
67
  }
32
68
 
33
- function defaultTo(callback, defaultValue) {
69
+ function defaultTo(value, defaultValue) {
34
70
  var _a;
35
- return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
71
+ return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
36
72
  }
37
73
 
38
- function ruleReturn(pass, message) {
39
- var output = { pass: pass };
40
- if (message) {
41
- output.message = message;
42
- }
43
- return output;
44
- }
45
- function failing() {
46
- return ruleReturn(false);
47
- }
48
- function passing() {
49
- return ruleReturn(true);
50
- }
51
- function defaultToFailing(callback) {
52
- return defaultTo(callback, failing());
53
- }
54
- function defaultToPassing(callback) {
55
- return defaultTo(callback, passing());
74
+ // The module is named "isArrayValue" since it
75
+ // is conflicting with a nested npm dependency.
76
+ // We may need to revisit this in the future.
77
+ function isArray(value) {
78
+ return Boolean(Array.isArray(value));
56
79
  }
80
+ var isNotArray = bindNot(isArray);
57
81
 
58
- function runLazyRule(lazyRule, currentValue) {
59
- try {
60
- return lazyRule.run(currentValue);
61
- }
62
- catch (_a) {
63
- return failing();
64
- }
82
+ /**
83
+ * A safe hasOwnProperty access
84
+ */
85
+ function hasOwnProperty(obj, key) {
86
+ return Object.prototype.hasOwnProperty.call(obj, key);
65
87
  }
66
88
 
67
- function allOf(value) {
68
- var rules = [];
69
- for (var _i = 1; _i < arguments.length; _i++) {
70
- rules[_i - 1] = arguments[_i];
71
- }
72
- return defaultToPassing(mapFirst(rules, function (rule, breakout) {
73
- var res = runLazyRule(rule, value);
74
- if (!res.pass) {
75
- breakout(res);
76
- }
77
- }));
78
- }
89
+ var assign = Object.assign;
79
90
 
80
- function anyOf(value) {
81
- var rules = [];
82
- for (var _i = 1; _i < arguments.length; _i++) {
83
- rules[_i - 1] = arguments[_i];
91
+ function invariant(condition,
92
+ // eslint-disable-next-line @typescript-eslint/ban-types
93
+ message) {
94
+ if (condition) {
95
+ return;
84
96
  }
85
- return defaultToFailing(mapFirst(rules, function (rule, breakout) {
86
- var res = runLazyRule(rule, value);
87
- if (res.pass) {
88
- breakout(res);
89
- }
90
- }));
97
+ // If message is a string object (rather than string literal)
98
+ // Throw the value directly as a string
99
+ // Alternatively, throw an error with the message
100
+ throw message instanceof String
101
+ ? message.valueOf()
102
+ : new Error(message ? optionalFunctionValue(message) : message);
103
+ }
104
+ // eslint-disable-next-line @typescript-eslint/ban-types
105
+ function StringObject(value) {
106
+ return new String(optionalFunctionValue(value));
91
107
  }
92
108
 
93
- var assign = Object.assign;
94
-
95
- function bindNot(fn) {
96
- return function () {
97
- var args = [];
98
- for (var _i = 0; _i < arguments.length; _i++) {
99
- args[_i] = arguments[_i];
100
- }
101
- return !fn.apply(void 0, args);
102
- };
109
+ function isStringValue(v) {
110
+ return String(v) === v;
103
111
  }
104
112
 
105
- function isNull(value) {
106
- return value === null;
113
+ function isBoolean(value) {
114
+ return !!value === value;
107
115
  }
108
- var isNotNull = bindNot(isNull);
109
116
 
110
- function isUndefined(value) {
111
- return value === undefined;
117
+ function mapFirst(array, callback) {
118
+ var broke = false;
119
+ var breakoutValue = null;
120
+ for (var i = 0; i < array.length; i++) {
121
+ callback(array[i], breakout, i);
122
+ if (broke) {
123
+ return breakoutValue;
124
+ }
125
+ }
126
+ function breakout(conditional, value) {
127
+ if (conditional) {
128
+ broke = true;
129
+ breakoutValue = value;
130
+ }
131
+ }
112
132
  }
113
- var isNotUndefined = bindNot(isUndefined);
114
133
 
115
- function isNullish(value) {
116
- return isNull(value) || isUndefined(value);
134
+ function isEmpty(value) {
135
+ if (!value) {
136
+ return true;
137
+ }
138
+ else if (hasOwnProperty(value, 'length')) {
139
+ return lengthEquals(value, 0);
140
+ }
141
+ else if (typeof value === 'object') {
142
+ return lengthEquals(Object.keys(value), 0);
143
+ }
144
+ return false;
117
145
  }
118
- var isNotNullish = bindNot(isNullish);
146
+ var isNotEmpty = bindNot(isEmpty);
119
147
 
120
- function isStringValue(v) {
121
- return String(v) === v;
148
+ function isPositive(value) {
149
+ return greaterThan(value, 0);
122
150
  }
123
151
 
124
152
  function endsWith(value, arg1) {
@@ -131,35 +159,10 @@
131
159
  }
132
160
  var notEquals = bindNot(equals);
133
161
 
134
- function isNumeric(value) {
135
- var str = String(value);
136
- var num = Number(value);
137
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
138
- return Boolean(result);
139
- }
140
- var isNotNumeric = bindNot(isNumeric);
141
-
142
- function greaterThan(value, gt) {
143
- return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
144
- }
145
-
146
- function numberEquals(value, eq) {
147
- return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
148
- }
149
- var numberNotEquals = bindNot(numberEquals);
150
-
151
162
  function greaterThanOrEquals(value, gte) {
152
163
  return numberEquals(value, gte) || greaterThan(value, gte);
153
164
  }
154
165
 
155
- // The module is named "isArrayValue" since it
156
- // is conflicting with a nested npm dependency.
157
- // We may need to revisit this in the future.
158
- function isArray(value) {
159
- return Boolean(Array.isArray(value));
160
- }
161
- var isNotArray = bindNot(isArray);
162
-
163
166
  function inside(value, arg1) {
164
167
  if (isArray(arg1)) {
165
168
  return arg1.indexOf(value) !== -1;
@@ -190,46 +193,8 @@
190
193
  }
191
194
  var isNotBlank = bindNot(isBlank);
192
195
 
193
- function isBoolean(value) {
194
- return !!value === value;
195
- }
196
-
197
196
  var isNotBoolean = bindNot(isBoolean);
198
197
 
199
- /**
200
- * A safe hasOwnProperty access
201
- */
202
- function hasOwnProperty(obj, key) {
203
- return Object.prototype.hasOwnProperty.call(obj, key);
204
- }
205
-
206
- function isNumber(value) {
207
- return Boolean(typeof value === 'number');
208
- }
209
- var isNotNumber = bindNot(isNumber);
210
-
211
- function lengthEquals(value, arg1) {
212
- return numberEquals(value.length, arg1);
213
- }
214
- var lengthNotEquals = bindNot(lengthEquals);
215
-
216
- function isEmpty(value) {
217
- if (!value) {
218
- return true;
219
- }
220
- else if (isNumber(value)) {
221
- return value === 0;
222
- }
223
- else if (hasOwnProperty(value, 'length')) {
224
- return lengthEquals(value, 0);
225
- }
226
- else if (typeof value === 'object') {
227
- return lengthEquals(Object.keys(value), 0);
228
- }
229
- return false;
230
- }
231
- var isNotEmpty = bindNot(isEmpty);
232
-
233
198
  /**
234
199
  * Validates that a given value is an even number
235
200
  */
@@ -254,6 +219,11 @@
254
219
  return lessThan(value, 0);
255
220
  }
256
221
 
222
+ function isNumber(value) {
223
+ return Boolean(typeof value === 'number');
224
+ }
225
+ var isNotNumber = bindNot(isNumber);
226
+
257
227
  /**
258
228
  * Validates that a given value is an odd number
259
229
  */
@@ -264,10 +234,6 @@
264
234
  return false;
265
235
  };
266
236
 
267
- function isPositive(value) {
268
- return greaterThan(value, 0);
269
- }
270
-
271
237
  var isNotString = bindNot(isStringValue);
272
238
 
273
239
  function isTruthy(value) {
@@ -288,10 +254,6 @@
288
254
  }
289
255
  var isNotValueOf = bindNot(isValueOf);
290
256
 
291
- function longerThan(value, arg1) {
292
- return greaterThan(value.length, arg1);
293
- }
294
-
295
257
  function longerThanOrEquals(value, arg1) {
296
258
  return greaterThanOrEquals(value.length, arg1);
297
259
  }
@@ -412,20 +374,6 @@
412
374
  }
413
375
  }
414
376
 
415
- function invariant(condition,
416
- // eslint-disable-next-line @typescript-eslint/ban-types
417
- message) {
418
- if (condition) {
419
- return;
420
- }
421
- // If message is a string object (rather than string literal)
422
- // Throw the value directly as a string
423
- // Alternatively, throw an error with the message
424
- throw message instanceof String
425
- ? message.valueOf()
426
- : new Error(message ? optionalFunctionValue(message) : message);
427
- }
428
-
429
377
  // eslint-disable-next-line max-lines-per-function
430
378
  function createContext(init) {
431
379
  var storage = { ancestry: [] };
@@ -436,8 +384,9 @@
436
384
  useX: useX
437
385
  };
438
386
  function useX(errorMessage) {
439
- invariant(storage.ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
440
- return storage.ctx;
387
+ var ctx = use();
388
+ invariant(ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
389
+ return ctx;
441
390
  }
442
391
  function run(ctxRef, fn) {
443
392
  var _a;
@@ -507,7 +456,7 @@
507
456
  return null;
508
457
  }
509
458
 
510
- /*! *****************************************************************************
459
+ /******************************************************************************
511
460
  Copyright (c) Microsoft Corporation.
512
461
 
513
462
  Permission to use, copy, modify, and/or distribute this software for any
@@ -541,6 +490,26 @@
541
490
  }
542
491
  }
543
492
 
493
+ function ruleReturn(pass, message) {
494
+ var output = { pass: pass };
495
+ if (message) {
496
+ output.message = message;
497
+ }
498
+ return output;
499
+ }
500
+ function failing() {
501
+ return ruleReturn(false);
502
+ }
503
+ function passing() {
504
+ return ruleReturn(true);
505
+ }
506
+ function defaultToFailing(callback) {
507
+ return defaultTo(callback, failing());
508
+ }
509
+ function defaultToPassing(callback) {
510
+ return defaultTo(callback, passing());
511
+ }
512
+
544
513
  /**
545
514
  * Transform the result of a rule into a standard format
546
515
  */
@@ -586,12 +555,12 @@
586
555
  for (var _i = 0; _i < arguments.length; _i++) {
587
556
  args[_i] = arguments[_i];
588
557
  }
589
- var transformedResult = transformResult.apply(void 0, __spreadArray([ctx.run({ value: value }, function () { return rule.apply(void 0, __spreadArray([value], args, false)); }),
590
- ruleName,
591
- value], args, false));
592
- invariant(transformedResult.pass, isEmpty(transformedResult.message)
558
+ var transformedResult = ctx.run({ value: value }, function () {
559
+ return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
560
+ });
561
+ invariant(transformedResult.pass, isNullish(transformedResult.message)
593
562
  ? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
594
- : new String(transformedResult.message));
563
+ : StringObject(transformedResult.message));
595
564
  return target;
596
565
  };
597
566
  }
@@ -619,9 +588,7 @@
619
588
  return defaultToPassing(mapFirst(registeredRules, function (rule, breakout) {
620
589
  var _a;
621
590
  var res = ctx.run({ value: value }, function () { return rule(value); });
622
- if (!res.pass) {
623
- breakout(ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
624
- }
591
+ breakout(!res.pass, ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
625
592
  }));
626
593
  },
627
594
  test: function (value) { return proxy.run(value).pass; },
@@ -712,6 +679,37 @@
712
679
  }
713
680
  var enforce = genEnforce();
714
681
 
682
+ function runLazyRule(lazyRule, currentValue) {
683
+ try {
684
+ return lazyRule.run(currentValue);
685
+ }
686
+ catch (_a) {
687
+ return failing();
688
+ }
689
+ }
690
+
691
+ function allOf(value) {
692
+ var rules = [];
693
+ for (var _i = 1; _i < arguments.length; _i++) {
694
+ rules[_i - 1] = arguments[_i];
695
+ }
696
+ return defaultToPassing(mapFirst(rules, function (rule, breakout) {
697
+ var res = runLazyRule(rule, value);
698
+ breakout(!res.pass, res);
699
+ }));
700
+ }
701
+
702
+ function anyOf(value) {
703
+ var rules = [];
704
+ for (var _i = 1; _i < arguments.length; _i++) {
705
+ rules[_i - 1] = arguments[_i];
706
+ }
707
+ return defaultToFailing(mapFirst(rules, function (rule, breakout) {
708
+ var res = runLazyRule(rule, value);
709
+ breakout(res.pass, res);
710
+ }));
711
+ }
712
+
715
713
  function noneOf(value) {
716
714
  var rules = [];
717
715
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -719,9 +717,7 @@
719
717
  }
720
718
  return defaultToPassing(mapFirst(rules, function (rule, breakout) {
721
719
  var res = runLazyRule(rule, value);
722
- if (res.pass) {
723
- breakout(failing());
724
- }
720
+ breakout(res.pass, failing());
725
721
  }));
726
722
  }
727
723
 
@@ -731,17 +727,17 @@
731
727
  for (var _i = 1; _i < arguments.length; _i++) {
732
728
  rules[_i - 1] = arguments[_i];
733
729
  }
734
- var passing = [];
730
+ var passingCount = 0;
735
731
  rules.some(function (rule) {
736
732
  var res = runLazyRule(rule, value);
737
733
  if (res.pass) {
738
- passing.push(res);
734
+ passingCount++;
739
735
  }
740
- if (longerThan(passing, REQUIRED_COUNT)) {
736
+ if (greaterThan(passingCount, REQUIRED_COUNT)) {
741
737
  return false;
742
738
  }
743
739
  });
744
- return ruleReturn(lengthEquals(passing, REQUIRED_COUNT));
740
+ return ruleReturn(equals(passingCount, REQUIRED_COUNT));
745
741
  }
746
742
 
747
743
  enforce.extend({ allOf: allOf, anyOf: anyOf, noneOf: noneOf, oneOf: oneOf });
@@ -1 +1 @@
1
- "use strict";!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){function n(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function t(n){return"function"==typeof n}function r(n){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return t(n)?n.apply(void 0,r):n}function e(n,t){var e;return null!==(e=r(n))&&void 0!==e?e:t}function u(n,t){return n={pass:n},t&&(n.message=t),n}function i(n,t){try{return n.run(t)}catch(n){return u(!1)}}function o(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function f(n){return null===n}function a(n){return void 0===n}function s(n){return null===n||a(n)}function c(n){return String(n)===n}function l(n,t){return c(n)&&c(t)&&n.endsWith(t)}function v(n,t){return n===t}function h(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function g(n,t){return h(n)&&h(t)&&Number(n)>Number(t)}function p(n,t){return h(n)&&h(t)&&Number(n)===Number(t)}function N(n,t){return p(n,t)||g(n,t)}function y(n){return!!Array.isArray(n)}function d(n,t){return!!(y(t)||c(t)&&c(n))&&-1!==t.indexOf(n)}function m(n,t){return h(n)&&h(t)&&Number(n)<Number(t)}function O(n,t){return p(n,t)||m(n,t)}function b(n,t,r){return N(n,t)&&O(n,r)}function x(n){return s(n)||c(n)&&!n.trim()}function E(n){return!!n===n}function w(n){return"number"==typeof n}function q(n,t){return p(n.length,t)}function S(n){return!n||(w(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?q(n,0):"object"==typeof n&&q(Object.keys(n),0))}function T(n,t){return n in t}function A(n){return Number.isNaN(n)}function B(n){return!!n}function P(n,t){if(s(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function W(n,t){return g(n.length,t)}function j(n,t){return t instanceof RegExp?t.test(n):!!c(t)&&new RegExp(t).test(n)}function k(n,t){return c(n)&&c(t)&&n.startsWith(t)}function F(n){for(var r in ln){var e=ln[r];t(e)&&n(r,e)}}function I(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?r(t):t)}function J(){return null}function K(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||Array.prototype.slice.call(t))}function R(){try{return t(Proxy)}catch(n){return!1}}function U(n,t,e){for(var i=[],o=3;o<arguments.length;o++)i[o-3]=arguments[o];return I(E(n)||n&&E(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),E(n)?u(n):u(n.pass,r.apply(void 0,K([n.message,t,e],i,!1)))}function V(n){function t(t,r,e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return I((i=U.apply(void 0,K([vn.run({value:n},(function(){return r.apply(void 0,K([n],u,!1))})),e,n],u,!1))).pass,S(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var r={};if(!R())return F((function(n,e){r[n]=t(r,e,n)})),r;var e=new Proxy(r,{get:function(n,r){if(n=ln[r])return t(e,n,r)}});return e}function X(t){var i,o=[];return function t(f){return function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];var c=ln[f];o.push((function(n){return U.apply(void 0,K([c.apply(void 0,K([n],a,!1)),f,n],a,!1))}));var l={run:function(t){return e(n(o,(function(n,e){var o,f=vn.run({value:t},(function(){return n(t)}));f.pass||e(u(!!f.pass,null!==(o=r(i,t,f.message))&&void 0!==o?o:f.message))})),u(!0))},test:function(n){return l.run(n).pass},message:function(n){return n&&(i=n),l}};return R()?l=new Proxy(l,{get:function(n,r){return ln[r]?t(r):n[r]}}):(F((function(n){l[n]=t(n)})),l)}}(t)}var z=Object.assign,C=o(f),M=o(a),D=o(s),G=o(l),H=o(v),L=o(h),Q=o(p),Y=o(y),Z=o(d),$=o(b),_=o(x),nn=o(E),tn=o(w),rn=o(q),en=o(S),un=o(T),on=o(A),fn=o(c),an=o(B),sn=o(P),cn=o(j),ln={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:G,doesNotStartWith:o(k),endsWith:l,equals:v,greaterThan:g,greaterThanOrEquals:N,gt:g,gte:N,inside:d,isArray:y,isBetween:b,isBlank:x,isBoolean:E,isEmpty:S,isEven:function(n){return!!h(n)&&0==n%2},isFalsy:an,isKeyOf:T,isNaN:A,isNegative:function(n){return m(n,0)},isNotArray:Y,isNotBetween:$,isNotBlank:_,isNotBoolean:nn,isNotEmpty:en,isNotKeyOf:un,isNotNaN:on,isNotNull:C,isNotNullish:D,isNotNumber:tn,isNotNumeric:L,isNotString:fn,isNotUndefined:M,isNotValueOf:sn,isNull:f,isNullish:s,isNumber:w,isNumeric:h,isOdd:function(n){return!!h(n)&&0!=n%2},isPositive:function(n){return g(n,0)},isString:c,isTruthy:B,isUndefined:a,isValueOf:P,lengthEquals:q,lengthNotEquals:rn,lessThan:m,lessThanOrEquals:O,longerThan:W,longerThanOrEquals:function(n,t){return N(n.length,t)},lt:m,lte:O,matches:j,notEquals:H,notInside:Z,notMatches:cn,numberEquals:p,numberNotEquals:Q,shorterThan:function(n,t){return m(n.length,t)},shorterThanOrEquals:function(n,t){return O(n.length,t)},startsWith:k},vn=function(n){function t(t,e){var o,f,a=u();return t=z({},a||{},null!==(o=r(n,t,a))&&void 0!==o?o:t),o=i.ctx=Object.freeze(t),i.ancestry.unshift(o),e=e(o),i.ancestry.shift(),i.ctx=null!==(f=i.ancestry[0])&&void 0!==f?f:null,e}function u(){return i.ctx}var i={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:u,useX:function(n){return I(i.ctx,e(n,"Context was used after it was closed")),i.ctx}}}((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?z(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:z(r,{parent:J})}));(function(){function n(){if(!R())return F((function(n){t[n]=X(n)})),z(V,t)}var t={context:function(){return vn.useX()},extend:function(t){z(ln,t),n()}};return n(),new Proxy(z(V,t),{get:function(n,t){return t in n?n[t]:ln[t]?X(t):void 0}})})().extend({allOf:function(t){for(var r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];return e(n(r,(function(n,r){(n=i(n,t)).pass||r(n)})),u(!0))},anyOf:function(t){for(var r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];return e(n(r,(function(n,r){(n=i(n,t)).pass&&r(n)})),u(!1))},noneOf:function(t){for(var r=[],o=1;o<arguments.length;o++)r[o-1]=arguments[o];return e(n(r,(function(n,r){i(n,t).pass&&r(u(!1))})),u(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if((t=i(t,n)).pass&&e.push(t),W(e,1))return!1})),u(q(e,1))}})}));
1
+ "use strict";!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){function n(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function t(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function r(n,r){return t(n)&&t(r)&&Number(n)===Number(r)}function e(n,t){return r(n.length,t)}function u(n,r){return t(n)&&t(r)&&Number(n)>Number(r)}function i(n){return null===n}function o(n){return void 0===n}function f(n){return null===n||o(n)}function a(n){return"function"==typeof n}function s(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return a(n)?n.apply(void 0,t):n}function c(n,t){var r;return null!==(r=s(n))&&void 0!==r?r:s(t)}function l(n){return!!Array.isArray(n)}function v(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?s(t):t)}function h(n){return String(n)===n}function g(n){return!!n===n}function p(n,t){function r(n,t){n&&(e=!0,u=t)}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function N(n){return!n||(Object.prototype.hasOwnProperty.call(n,"length")?e(n,0):"object"==typeof n&&e(Object.keys(n),0))}function y(n,t){return h(n)&&h(t)&&n.endsWith(t)}function d(n,t){return n===t}function m(n,t){return r(n,t)||u(n,t)}function O(n,t){return!!(l(t)||h(t)&&h(n))&&-1!==t.indexOf(n)}function b(n,r){return t(n)&&t(r)&&Number(n)<Number(r)}function E(n,t){return r(n,t)||b(n,t)}function x(n,t,r){return m(n,t)&&E(n,r)}function w(n){return f(n)||h(n)&&!n.trim()}function q(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return"number"==typeof n}function A(n){return!!n}function B(n,t){if(f(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function P(n,t){return t instanceof RegExp?t.test(n):!!h(t)&&new RegExp(t).test(n)}function W(n,t){return h(n)&&h(t)&&n.startsWith(t)}function j(n){for(var t in cn){var r=cn[t];a(r)&&n(t,r)}}function k(){return null}function F(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||Array.prototype.slice.call(t))}function I(){try{return a(Proxy)}catch(n){return!1}}function J(n,t){return n={pass:n},t&&(n.message=t),n}function K(n,t,r){for(var e=[],u=3;u<arguments.length;u++)e[u-3]=arguments[u];return v(g(n)||n&&g(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),g(n)?J(n):J(n.pass,s.apply(void 0,F([n.message,t,r],e,!1)))}function R(n){function t(t,r,e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return v((i=ln.run({value:n},(function(){return K.apply(void 0,F([r.apply(void 0,F([n],u,!1)),e,n],u,!1))}))).pass,f(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(s(i.message))),t}}var r={};if(!I())return j((function(n,e){r[n]=t(r,e,n)})),r;var e=new Proxy(r,{get:function(n,r){if(n=cn[r])return t(e,n,r)}});return e}function U(n){var t,r=[];return function n(e){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=cn[e];r.push((function(n){return K.apply(void 0,F([o.apply(void 0,F([n],u,!1)),e,n],u,!1))}));var f={run:function(n){return c(p(r,(function(r,e){var u,i=ln.run({value:n},(function(){return r(n)}));e(!i.pass,J(!!i.pass,null!==(u=s(t,n,i.message))&&void 0!==u?u:i.message))})),J(!0))},test:function(n){return f.run(n).pass},message:function(n){return n&&(t=n),f}};return I()?f=new Proxy(f,{get:function(t,r){return cn[r]?n(r):t[r]}}):(j((function(t){f[t]=n(t)})),f)}}(n)}function V(n,t){try{return n.run(t)}catch(n){return J(!1)}}var X=n(t),z=n(r),C=n(e),M=n(i),D=n(o),G=n(f),H=n(l),L=Object.assign,Q=n(N),Y=n(y),Z=n(d),$=n(O),_=n(x),nn=n(w),tn=n(g),rn=n(q),en=n(S),un=n(T),on=n(h),fn=n(A),an=n(B),sn=n(P),cn={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Y,doesNotStartWith:n(W),endsWith:y,equals:d,greaterThan:u,greaterThanOrEquals:m,gt:u,gte:m,inside:O,isArray:l,isBetween:x,isBlank:w,isBoolean:g,isEmpty:N,isEven:function(n){return!!t(n)&&0==n%2},isFalsy:fn,isKeyOf:q,isNaN:S,isNegative:function(n){return b(n,0)},isNotArray:H,isNotBetween:_,isNotBlank:nn,isNotBoolean:tn,isNotEmpty:Q,isNotKeyOf:rn,isNotNaN:en,isNotNull:M,isNotNullish:G,isNotNumber:un,isNotNumeric:X,isNotString:on,isNotUndefined:D,isNotValueOf:an,isNull:i,isNullish:f,isNumber:T,isNumeric:t,isOdd:function(n){return!!t(n)&&0!=n%2},isPositive:function(n){return u(n,0)},isString:h,isTruthy:A,isUndefined:o,isValueOf:B,lengthEquals:e,lengthNotEquals:C,lessThan:b,lessThanOrEquals:E,longerThan:function(n,t){return u(n.length,t)},longerThanOrEquals:function(n,t){return m(n.length,t)},lt:b,lte:E,matches:P,notEquals:Z,notInside:$,notMatches:sn,numberEquals:r,numberNotEquals:z,shorterThan:function(n,t){return b(n.length,t)},shorterThanOrEquals:function(n,t){return E(n.length,t)},startsWith:W},ln=function(n){function t(t,u){var i,o,f=r();return t=L({},f||{},null!==(i=s(n,t,f))&&void 0!==i?i:t),i=e.ctx=Object.freeze(t),e.ancestry.unshift(i),u=u(i),e.ancestry.shift(),e.ctx=null!==(o=e.ancestry[0])&&void 0!==o?o:null,u}function r(){return e.ctx}var e={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:r,useX:function(n){var t=r();return v(t,c(n,"Context was used after it was closed")),t}}}((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?L(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:L(r,{parent:k})}));(function(){function n(){if(!I())return j((function(n){t[n]=U(n)})),L(R,t)}var t={context:function(){return ln.useX()},extend:function(t){L(cn,t),n()}};return n(),new Proxy(L(R,t),{get:function(n,t){return t in n?n[t]:cn[t]?U(t):void 0}})})().extend({allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(p(t,(function(t,r){r(!(t=V(t,n)).pass,t)})),J(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(p(t,(function(t,r){r((t=V(t,n)).pass,t)})),J(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(p(t,(function(t,r){r((t=V(t,n)).pass,J(!1))})),J(!0))},oneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=0;return t.some((function(t){if(V(t,n).pass&&e++,u(e,1))return!1})),J(1===e)}})}));