vest 4.4.2 → 4.5.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 (51) hide show
  1. package/dist/cjs/classnames.development.js +16 -90
  2. package/dist/cjs/classnames.production.js +1 -1
  3. package/dist/cjs/enforce/compose.development.js +5 -58
  4. package/dist/cjs/enforce/compose.production.js +1 -1
  5. package/dist/cjs/enforce/compounds.development.js +8 -51
  6. package/dist/cjs/enforce/compounds.production.js +1 -1
  7. package/dist/cjs/enforce/schema.development.js +5 -57
  8. package/dist/cjs/enforce/schema.production.js +1 -1
  9. package/dist/cjs/parser.development.js +15 -89
  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 +197 -452
  14. package/dist/cjs/vest.production.js +1 -1
  15. package/dist/es/classnames.development.js +14 -88
  16. package/dist/es/classnames.production.js +1 -1
  17. package/dist/es/enforce/compose.development.js +1 -54
  18. package/dist/es/enforce/compose.production.js +1 -1
  19. package/dist/es/enforce/compounds.development.js +2 -45
  20. package/dist/es/enforce/compounds.production.js +1 -1
  21. package/dist/es/enforce/schema.development.js +1 -53
  22. package/dist/es/enforce/schema.production.js +1 -1
  23. package/dist/es/parser.development.js +14 -88
  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 +131 -387
  28. package/dist/es/vest.production.js +1 -1
  29. package/dist/umd/classnames.development.js +27 -56
  30. package/dist/umd/classnames.production.js +1 -1
  31. package/dist/umd/enforce/compose.development.js +111 -94
  32. package/dist/umd/enforce/compose.production.js +1 -1
  33. package/dist/umd/enforce/compounds.development.js +185 -168
  34. package/dist/umd/enforce/compounds.production.js +1 -1
  35. package/dist/umd/enforce/schema.development.js +134 -117
  36. package/dist/umd/enforce/schema.production.js +1 -1
  37. package/dist/umd/parser.development.js +27 -56
  38. package/dist/umd/parser.production.js +1 -1
  39. package/dist/umd/vest.development.js +398 -386
  40. package/dist/umd/vest.production.js +1 -1
  41. package/package.json +4 -3
  42. package/testUtils/__tests__/partition.test.ts +21 -0
  43. package/testUtils/mockThrowError.ts +2 -1
  44. package/testUtils/partition.ts +13 -0
  45. package/testUtils/suiteDummy.ts +1 -1
  46. package/types/enforce/compose.d.ts +17 -32
  47. package/types/enforce/compounds.d.ts +17 -32
  48. package/types/enforce/schema.d.ts +17 -32
  49. package/types/parser.d.ts +8 -7
  50. package/types/promisify.d.ts +20 -35
  51. package/types/vest.d.ts +45 -60
@@ -3,12 +3,6 @@
3
3
  factory();
4
4
  }((function () { 'use strict';
5
5
 
6
- var assign = Object.assign;
7
-
8
- function isFunction(value) {
9
- return typeof value === 'function';
10
- }
11
-
12
6
  function bindNot(fn) {
13
7
  return function () {
14
8
  var args = [];
@@ -19,6 +13,32 @@
19
13
  };
20
14
  }
21
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
+
22
42
  function isNull(value) {
23
43
  return value === null;
24
44
  }
@@ -34,48 +54,165 @@
34
54
  }
35
55
  var isNotNullish = bindNot(isNullish);
36
56
 
57
+ function isFunction(value) {
58
+ return typeof value === 'function';
59
+ }
60
+
61
+ function optionalFunctionValue(value) {
62
+ var args = [];
63
+ for (var _i = 1; _i < arguments.length; _i++) {
64
+ args[_i - 1] = arguments[_i];
65
+ }
66
+ return isFunction(value) ? value.apply(void 0, args) : value;
67
+ }
68
+
69
+ function defaultTo(value, defaultValue) {
70
+ var _a;
71
+ return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
72
+ }
73
+
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));
79
+ }
80
+ var isNotArray = bindNot(isArray);
81
+
82
+ /**
83
+ * A safe hasOwnProperty access
84
+ */
85
+ function hasOwnProperty(obj, key) {
86
+ return Object.prototype.hasOwnProperty.call(obj, key);
87
+ }
88
+
89
+ var assign = Object.assign;
90
+
91
+ function invariant(condition,
92
+ // eslint-disable-next-line @typescript-eslint/ban-types
93
+ message) {
94
+ if (condition) {
95
+ return;
96
+ }
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));
107
+ }
108
+
37
109
  function isStringValue(v) {
38
110
  return String(v) === v;
39
111
  }
40
112
 
41
- function endsWith(value, arg1) {
42
- return isStringValue(value) && isStringValue(arg1) && value.endsWith(arg1);
113
+ function isBoolean(value) {
114
+ return !!value === value;
43
115
  }
44
- var doesNotEndWith = bindNot(endsWith);
45
116
 
46
- function equals(value, arg1) {
47
- return value === arg1;
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
+ }
48
132
  }
49
- var notEquals = bindNot(equals);
50
133
 
51
- function isNumeric(value) {
52
- var str = String(value);
53
- var num = Number(value);
54
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
55
- return Boolean(result);
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;
56
145
  }
57
- var isNotNumeric = bindNot(isNumeric);
146
+ var isNotEmpty = bindNot(isEmpty);
58
147
 
59
- function greaterThan(value, gt) {
60
- return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
148
+ function isPositive(value) {
149
+ return greaterThan(value, 0);
61
150
  }
62
151
 
63
- function numberEquals(value, eq) {
64
- return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
152
+ function ruleReturn(pass, message) {
153
+ var output = { pass: pass };
154
+ if (message) {
155
+ output.message = message;
156
+ }
157
+ return output;
158
+ }
159
+ function failing() {
160
+ return ruleReturn(false);
161
+ }
162
+ function passing() {
163
+ return ruleReturn(true);
164
+ }
165
+ function defaultToFailing(callback) {
166
+ return defaultTo(callback, failing());
167
+ }
168
+ function defaultToPassing(callback) {
169
+ return defaultTo(callback, passing());
65
170
  }
66
- var numberNotEquals = bindNot(numberEquals);
67
171
 
68
- function greaterThanOrEquals(value, gte) {
69
- return numberEquals(value, gte) || greaterThan(value, gte);
172
+ function runLazyRule(lazyRule, currentValue) {
173
+ try {
174
+ return lazyRule.run(currentValue);
175
+ }
176
+ catch (_a) {
177
+ return failing();
178
+ }
70
179
  }
71
180
 
72
- // The module is named "isArrayValue" since it
73
- // is conflicting with a nested npm dependency.
74
- // We may need to revisit this in the future.
75
- function isArray(value) {
76
- return Boolean(Array.isArray(value));
181
+ function allOf(value) {
182
+ var rules = [];
183
+ for (var _i = 1; _i < arguments.length; _i++) {
184
+ rules[_i - 1] = arguments[_i];
185
+ }
186
+ return defaultToPassing(mapFirst(rules, function (rule, breakout) {
187
+ var res = runLazyRule(rule, value);
188
+ breakout(!res.pass, res);
189
+ }));
190
+ }
191
+
192
+ function anyOf(value) {
193
+ var rules = [];
194
+ for (var _i = 1; _i < arguments.length; _i++) {
195
+ rules[_i - 1] = arguments[_i];
196
+ }
197
+ return defaultToFailing(mapFirst(rules, function (rule, breakout) {
198
+ var res = runLazyRule(rule, value);
199
+ breakout(res.pass, res);
200
+ }));
201
+ }
202
+
203
+ function endsWith(value, arg1) {
204
+ return isStringValue(value) && isStringValue(arg1) && value.endsWith(arg1);
205
+ }
206
+ var doesNotEndWith = bindNot(endsWith);
207
+
208
+ function equals(value, arg1) {
209
+ return value === arg1;
210
+ }
211
+ var notEquals = bindNot(equals);
212
+
213
+ function greaterThanOrEquals(value, gte) {
214
+ return numberEquals(value, gte) || greaterThan(value, gte);
77
215
  }
78
- var isNotArray = bindNot(isArray);
79
216
 
80
217
  function inside(value, arg1) {
81
218
  if (isArray(arg1)) {
@@ -107,38 +244,8 @@
107
244
  }
108
245
  var isNotBlank = bindNot(isBlank);
109
246
 
110
- function isBoolean(value) {
111
- return !!value === value;
112
- }
113
-
114
247
  var isNotBoolean = bindNot(isBoolean);
115
248
 
116
- /**
117
- * A safe hasOwnProperty access
118
- */
119
- function hasOwnProperty(obj, key) {
120
- return Object.prototype.hasOwnProperty.call(obj, key);
121
- }
122
-
123
- function lengthEquals(value, arg1) {
124
- return numberEquals(value.length, arg1);
125
- }
126
- var lengthNotEquals = bindNot(lengthEquals);
127
-
128
- function isEmpty(value) {
129
- if (!value) {
130
- return true;
131
- }
132
- else if (hasOwnProperty(value, 'length')) {
133
- return lengthEquals(value, 0);
134
- }
135
- else if (typeof value === 'object') {
136
- return lengthEquals(Object.keys(value), 0);
137
- }
138
- return false;
139
- }
140
- var isNotEmpty = bindNot(isEmpty);
141
-
142
249
  /**
143
250
  * Validates that a given value is an even number
144
251
  */
@@ -178,10 +285,6 @@
178
285
  return false;
179
286
  };
180
287
 
181
- function isPositive(value) {
182
- return greaterThan(value, 0);
183
- }
184
-
185
288
  var isNotString = bindNot(isStringValue);
186
289
 
187
290
  function isTruthy(value) {
@@ -202,10 +305,6 @@
202
305
  }
203
306
  var isNotValueOf = bindNot(isValueOf);
204
307
 
205
- function longerThan(value, arg1) {
206
- return greaterThan(value.length, arg1);
207
- }
208
-
209
308
  function longerThanOrEquals(value, arg1) {
210
309
  return greaterThanOrEquals(value.length, arg1);
211
310
  }
@@ -326,37 +425,6 @@
326
425
  }
327
426
  }
328
427
 
329
- function optionalFunctionValue(value) {
330
- var args = [];
331
- for (var _i = 1; _i < arguments.length; _i++) {
332
- args[_i - 1] = arguments[_i];
333
- }
334
- return isFunction(value) ? value.apply(void 0, args) : value;
335
- }
336
-
337
- function defaultTo(value, defaultValue) {
338
- var _a;
339
- return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
340
- }
341
-
342
- function invariant(condition,
343
- // eslint-disable-next-line @typescript-eslint/ban-types
344
- message) {
345
- if (condition) {
346
- return;
347
- }
348
- // If message is a string object (rather than string literal)
349
- // Throw the value directly as a string
350
- // Alternatively, throw an error with the message
351
- throw message instanceof String
352
- ? message.valueOf()
353
- : new Error(message ? optionalFunctionValue(message) : message);
354
- }
355
- // eslint-disable-next-line @typescript-eslint/ban-types
356
- function StringObject(value) {
357
- return new String(optionalFunctionValue(value));
358
- }
359
-
360
428
  // eslint-disable-next-line max-lines-per-function
361
429
  function createContext(init) {
362
430
  var storage = { ancestry: [] };
@@ -473,26 +541,6 @@
473
541
  }
474
542
  }
475
543
 
476
- function ruleReturn(pass, message) {
477
- var output = { pass: pass };
478
- if (message) {
479
- output.message = message;
480
- }
481
- return output;
482
- }
483
- function failing() {
484
- return ruleReturn(false);
485
- }
486
- function passing() {
487
- return ruleReturn(true);
488
- }
489
- function defaultToFailing(callback) {
490
- return defaultTo(callback, failing());
491
- }
492
- function defaultToPassing(callback) {
493
- return defaultTo(callback, passing());
494
- }
495
-
496
544
  /**
497
545
  * Transform the result of a rule into a standard format
498
546
  */
@@ -517,30 +565,47 @@
517
565
 
518
566
  function enforceEager(value) {
519
567
  var target = {};
568
+ // This condition is for when we don't have proxy support (ES5).
569
+ // In this case, we need to manually assign the rules to the target object on runtime.
570
+ // The follow up proxy block is used in case we do have proxy support, and we can assign each rule upon invocation.
520
571
  if (!isProxySupported()) {
572
+ // We iterate over each of the rules, and add them to the target object being return by enforce
521
573
  eachEnforceRule(function (ruleName, ruleFn) {
574
+ // We then wrap the rule with `genRuleCall` that adds the base enforce behavior
522
575
  target[ruleName] = genRuleCall(target, ruleFn, ruleName);
523
576
  });
524
577
  return target;
525
578
  }
579
+ // We create a proxy intercepting access to the target object (which is empty).
526
580
  var proxy = new Proxy(target, {
527
581
  get: function (_, ruleName) {
582
+ // On property access, we identify if it is a rule or not.
528
583
  var rule = getRule(ruleName);
584
+ // If it is a rule, we wrap it with `genRuleCall` that adds the base enforce behavior
529
585
  if (rule) {
530
586
  return genRuleCall(proxy, rule, ruleName);
531
587
  }
532
588
  }
533
589
  });
534
590
  return proxy;
591
+ // This function is used to wrap a rule with the base enforce behavior
592
+ // It takes the target object, the rule function, and the rule name
593
+ // It then returns the rule, in a manner that can be used by enforce
535
594
  function genRuleCall(target, rule, ruleName) {
536
595
  return function ruleCall() {
537
596
  var args = [];
538
597
  for (var _i = 0; _i < arguments.length; _i++) {
539
598
  args[_i] = arguments[_i];
540
599
  }
600
+ // Order of operation:
601
+ // 1. Create a context with the value being enforced
602
+ // 2. Call the rule within the context, and pass over the arguments passed to it
603
+ // 3. Transform the result to the correct output format
541
604
  var transformedResult = ctx.run({ value: value }, function () {
542
605
  return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
543
606
  });
607
+ // On rule failure (the result is false), we either throw an error
608
+ // or throw a string value if the rule has a message defined in it.
544
609
  invariant(transformedResult.pass, isNullish(transformedResult.message)
545
610
  ? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
546
611
  : StringObject(transformedResult.message));
@@ -549,23 +614,6 @@
549
614
  }
550
615
  }
551
616
 
552
- function mapFirst(array, callback) {
553
- var broke = false;
554
- var breakoutValue = null;
555
- for (var i = 0; i < array.length; i++) {
556
- callback(array[i], breakout, i);
557
- if (broke) {
558
- return breakoutValue;
559
- }
560
- }
561
- function breakout(conditional, value) {
562
- if (conditional) {
563
- broke = true;
564
- breakoutValue = value;
565
- }
566
- }
567
- }
568
-
569
617
  // eslint-disable-next-line max-lines-per-function
570
618
  function genEnforceLazy(key) {
571
619
  var registeredRules = [];
@@ -679,37 +727,6 @@
679
727
  }
680
728
  var enforce = genEnforce();
681
729
 
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
-
713
730
  function noneOf(value) {
714
731
  var rules = [];
715
732
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -1 +1 @@
1
- "use strict";!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){function n(n){return"function"==typeof n}function t(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function r(n){return null===n}function e(n){return void 0===n}function u(n){return null===n||e(n)}function i(n){return String(n)===n}function o(n,t){return i(n)&&i(t)&&n.endsWith(t)}function f(n,t){return n===t}function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function s(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function c(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}function l(n,t){return c(n,t)||s(n,t)}function v(n){return!!Array.isArray(n)}function h(n,t){return!!(v(t)||i(t)&&i(n))&&-1!==t.indexOf(n)}function g(n,t){return a(n)&&a(t)&&Number(n)<Number(t)}function p(n,t){return c(n,t)||g(n,t)}function N(n,t,r){return l(n,t)&&p(n,r)}function y(n){return u(n)||i(n)&&!n.trim()}function d(n){return!!n===n}function m(n,t){return c(n.length,t)}function O(n){return!n||(Object.prototype.hasOwnProperty.call(n,"length")?m(n,0):"object"==typeof n&&m(Object.keys(n),0))}function b(n,t){return n in t}function E(n){return Number.isNaN(n)}function x(n){return"number"==typeof n}function w(n){return!!n}function q(n,t){if(u(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function S(n,t){return t instanceof RegExp?t.test(n):!!i(t)&&new RegExp(t).test(n)}function T(n,t){return i(n)&&i(t)&&n.startsWith(t)}function A(t){for(var r in cn){var e=cn[r];n(e)&&t(r,e)}}function B(t){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return n(t)?t.apply(void 0,r):t}function P(n,t){var r;return null!==(r=B(n))&&void 0!==r?r:B(t)}function W(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?B(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 F(){try{return n(Proxy)}catch(n){return!1}}function I(n,t){return n={pass:n},t&&(n.message=t),n}function J(n,t,r){for(var e=[],u=3;u<arguments.length;u++)e[u-3]=arguments[u];return W(d(n)||n&&d(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),d(n)?I(n):I(n.pass,B.apply(void 0,k([n.message,t,r],e,!1)))}function K(n){function t(t,r,e){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];return W((o=ln.run({value:n},(function(){return J.apply(void 0,k([r.apply(void 0,k([n],i,!1)),e,n],i,!1))}))).pass,u(o.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(B(o.message))),t}}var r={};if(!F())return A((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 R(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 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 J.apply(void 0,k([o.apply(void 0,k([n],u,!1)),e,n],u,!1))}));var f={run:function(n){return P(R(r,(function(r,e){var u,i=ln.run({value:n},(function(){return r(n)}));e(!i.pass,I(!!i.pass,null!==(u=B(t,n,i.message))&&void 0!==u?u:i.message))})),I(!0))},test:function(n){return f.run(n).pass},message:function(n){return n&&(t=n),f}};return F()?f=new Proxy(f,{get:function(t,r){return cn[r]?n(r):t[r]}}):(A((function(t){f[t]=n(t)})),f)}}(n)}function V(n,t){try{return n.run(t)}catch(n){return I(!1)}}var X=Object.assign,z=t(r),C=t(e),M=t(u),D=t(o),G=t(f),H=t(a),L=t(c),Q=t(v),Y=t(h),Z=t(N),$=t(y),_=t(d),nn=t(m),tn=t(O),rn=t(b),en=t(E),un=t(x),on=t(i),fn=t(w),an=t(q),sn=t(S),cn={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:D,doesNotStartWith:t(T),endsWith:o,equals:f,greaterThan:s,greaterThanOrEquals:l,gt:s,gte:l,inside:h,isArray:v,isBetween:N,isBlank:y,isBoolean:d,isEmpty:O,isEven:function(n){return!!a(n)&&0==n%2},isFalsy:fn,isKeyOf:b,isNaN:E,isNegative:function(n){return g(n,0)},isNotArray:Q,isNotBetween:Z,isNotBlank:$,isNotBoolean:_,isNotEmpty:tn,isNotKeyOf:rn,isNotNaN:en,isNotNull:z,isNotNullish:M,isNotNumber:un,isNotNumeric:H,isNotString:on,isNotUndefined:C,isNotValueOf:an,isNull:r,isNullish:u,isNumber:x,isNumeric:a,isOdd:function(n){return!!a(n)&&0!=n%2},isPositive:function(n){return s(n,0)},isString:i,isTruthy:w,isUndefined:e,isValueOf:q,lengthEquals:m,lengthNotEquals:nn,lessThan:g,lessThanOrEquals:p,longerThan:function(n,t){return s(n.length,t)},longerThanOrEquals:function(n,t){return l(n.length,t)},lt:g,lte:p,matches:S,notEquals:G,notInside:Y,notMatches:sn,numberEquals:c,numberNotEquals:L,shorterThan:function(n,t){return g(n.length,t)},shorterThanOrEquals:function(n,t){return p(n.length,t)},startsWith:T},ln=function(n){function t(t,u){var i,o,f=r();return t=X({},f||{},null!==(i=B(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 W(t,P(n,"Context was used after it was closed")),t}}}((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?X(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:X(r,{parent:j})}));(function(){function n(){if(!F())return A((function(n){t[n]=U(n)})),X(K,t)}var t={context:function(){return ln.useX()},extend:function(t){X(cn,t),n()}};return n(),new Proxy(X(K,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 P(R(t,(function(t,r){r(!(t=V(t,n)).pass,t)})),I(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return P(R(t,(function(t,r){r((t=V(t,n)).pass,t)})),I(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return P(R(t,(function(t,r){r((t=V(t,n)).pass,I(!1))})),I(!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++,s(e,1))return!1})),I(1===e)}})}));
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 n={pass:n},t&&(n.message=t),n}function d(n,t){try{return n.run(t)}catch(n){return y(!1)}}function m(n,t){return h(n)&&h(t)&&n.endsWith(t)}function O(n,t){return n===t}function b(n,t){return r(n,t)||u(n,t)}function E(n,t){return!!(l(t)||h(t)&&h(n))&&-1!==t.indexOf(n)}function x(n,r){return t(n)&&t(r)&&Number(n)<Number(r)}function w(n,t){return r(n,t)||x(n,t)}function q(n,t,r){return b(n,t)&&w(n,r)}function S(n){return f(n)||h(n)&&!n.trim()}function T(n,t){return n in t}function A(n){return Number.isNaN(n)}function B(n){return"number"==typeof n}function P(n){return!!n}function W(n,t){if(f(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function j(n,t){return t instanceof RegExp?t.test(n):!!h(t)&&new RegExp(t).test(n)}function k(n,t){return h(n)&&h(t)&&n.startsWith(t)}function F(n){for(var t in cn){var r=cn[t];a(r)&&n(t,r)}}function I(){return null}function J(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 K(){try{return a(Proxy)}catch(n){return!1}}function R(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)?y(n):y(n.pass,s.apply(void 0,J([n.message,t,r],e,!1)))}function U(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 R.apply(void 0,J([r.apply(void 0,J([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(!K())return F((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 V(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 R.apply(void 0,J([o.apply(void 0,J([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,y(!!i.pass,null!==(u=s(t,n,i.message))&&void 0!==u?u:i.message))})),y(!0))},test:function(n){return f.run(n).pass},message:function(n){return n&&(t=n),f}};return K()?f=new Proxy(f,{get:function(t,r){return cn[r]?n(r):t[r]}}):(F((function(t){f[t]=n(t)})),f)}}(n)}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(m),Z=n(O),$=n(E),_=n(q),nn=n(S),tn=n(g),rn=n(T),en=n(A),un=n(B),on=n(h),fn=n(P),an=n(W),sn=n(j),cn={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Y,doesNotStartWith:n(k),endsWith:m,equals:O,greaterThan:u,greaterThanOrEquals:b,gt:u,gte:b,inside:E,isArray:l,isBetween:q,isBlank:S,isBoolean:g,isEmpty:N,isEven:function(n){return!!t(n)&&0==n%2},isFalsy:fn,isKeyOf:T,isNaN:A,isNegative:function(n){return x(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:B,isNumeric:t,isOdd:function(n){return!!t(n)&&0!=n%2},isPositive:function(n){return u(n,0)},isString:h,isTruthy:P,isUndefined:o,isValueOf:W,lengthEquals:e,lengthNotEquals:C,lessThan:x,lessThanOrEquals:w,longerThan:function(n,t){return u(n.length,t)},longerThanOrEquals:function(n,t){return b(n.length,t)},lt:x,lte:w,matches:j,notEquals:Z,notInside:$,notMatches:sn,numberEquals:r,numberNotEquals:z,shorterThan:function(n,t){return x(n.length,t)},shorterThanOrEquals:function(n,t){return w(n.length,t)},startsWith:k},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:I})}));(function(){function n(){if(!K())return F((function(n){t[n]=V(n)})),L(U,t)}var t={context:function(){return ln.useX()},extend:function(t){L(cn,t),n()}};return n(),new Proxy(L(U,t),{get:function(n,t){return t in n?n[t]:cn[t]?V(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=d(t,n)).pass,t)})),y(!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=d(t,n)).pass,t)})),y(!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=d(t,n)).pass,y(!1))})),y(!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(d(t,n).pass&&e++,u(e,1))return!1})),y(1===e)}})}));