vest 4.4.1 → 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 +94 -293
  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 +19 -218
  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 +121 -121
  32. package/dist/umd/enforce/compose.production.js +1 -1
  33. package/dist/umd/enforce/compounds.development.js +180 -184
  34. package/dist/umd/enforce/compounds.production.js +1 -1
  35. package/dist/umd/enforce/schema.development.js +132 -132
  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 +277 -277
  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 +0 -8
  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 +4 -3
  49. package/testUtils/itWithContext.ts +0 -23
@@ -4,6 +4,57 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compose = factory());
5
5
  }(this, (function () { 'use strict';
6
6
 
7
+ function bindNot(fn) {
8
+ return function () {
9
+ var args = [];
10
+ for (var _i = 0; _i < arguments.length; _i++) {
11
+ args[_i] = arguments[_i];
12
+ }
13
+ return !fn.apply(void 0, args);
14
+ };
15
+ }
16
+
17
+ function isNumeric(value) {
18
+ var str = String(value);
19
+ var num = Number(value);
20
+ var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
21
+ return Boolean(result);
22
+ }
23
+ var isNotNumeric = bindNot(isNumeric);
24
+
25
+ function numberEquals(value, eq) {
26
+ return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
27
+ }
28
+ var numberNotEquals = bindNot(numberEquals);
29
+
30
+ function lengthEquals(value, arg1) {
31
+ return numberEquals(value.length, arg1);
32
+ }
33
+ var lengthNotEquals = bindNot(lengthEquals);
34
+
35
+ function greaterThan(value, gt) {
36
+ return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
37
+ }
38
+
39
+ function longerThan(value, arg1) {
40
+ return greaterThan(value.length, arg1);
41
+ }
42
+
43
+ function isNull(value) {
44
+ return value === null;
45
+ }
46
+ var isNotNull = bindNot(isNull);
47
+
48
+ function isUndefined(value) {
49
+ return value === undefined;
50
+ }
51
+ var isNotUndefined = bindNot(isUndefined);
52
+
53
+ function isNullish(value) {
54
+ return isNull(value) || isUndefined(value);
55
+ }
56
+ var isNotNullish = bindNot(isNullish);
57
+
7
58
  function isFunction(value) {
8
59
  return typeof value === 'function';
9
60
  }
@@ -16,6 +67,28 @@
16
67
  return isFunction(value) ? value.apply(void 0, args) : value;
17
68
  }
18
69
 
70
+ function defaultTo(value, defaultValue) {
71
+ var _a;
72
+ return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
73
+ }
74
+
75
+ // The module is named "isArrayValue" since it
76
+ // is conflicting with a nested npm dependency.
77
+ // We may need to revisit this in the future.
78
+ function isArray(value) {
79
+ return Boolean(Array.isArray(value));
80
+ }
81
+ var isNotArray = bindNot(isArray);
82
+
83
+ /**
84
+ * A safe hasOwnProperty access
85
+ */
86
+ function hasOwnProperty(obj, key) {
87
+ return Object.prototype.hasOwnProperty.call(obj, key);
88
+ }
89
+
90
+ var assign = Object.assign;
91
+
19
92
  function invariant(condition,
20
93
  // eslint-disable-next-line @typescript-eslint/ban-types
21
94
  message) {
@@ -29,6 +102,18 @@
29
102
  ? message.valueOf()
30
103
  : new Error(message ? optionalFunctionValue(message) : message);
31
104
  }
105
+ // eslint-disable-next-line @typescript-eslint/ban-types
106
+ function StringObject(value) {
107
+ return new String(optionalFunctionValue(value));
108
+ }
109
+
110
+ function isStringValue(v) {
111
+ return String(v) === v;
112
+ }
113
+
114
+ function isBoolean(value) {
115
+ return !!value === value;
116
+ }
32
117
 
33
118
  function mapFirst(array, callback) {
34
119
  var broke = false;
@@ -39,41 +124,30 @@
39
124
  return breakoutValue;
40
125
  }
41
126
  }
42
- function breakout(value) {
43
- broke = true;
44
- breakoutValue = value;
45
- }
46
- }
47
-
48
- var assign = Object.assign;
49
-
50
- function bindNot(fn) {
51
- return function () {
52
- var args = [];
53
- for (var _i = 0; _i < arguments.length; _i++) {
54
- args[_i] = arguments[_i];
127
+ function breakout(conditional, value) {
128
+ if (conditional) {
129
+ broke = true;
130
+ breakoutValue = value;
55
131
  }
56
- return !fn.apply(void 0, args);
57
- };
58
- }
59
-
60
- function isNull(value) {
61
- return value === null;
132
+ }
62
133
  }
63
- var isNotNull = bindNot(isNull);
64
134
 
65
- function isUndefined(value) {
66
- return value === undefined;
67
- }
68
- var isNotUndefined = bindNot(isUndefined);
69
-
70
- function isNullish(value) {
71
- return isNull(value) || isUndefined(value);
135
+ function isEmpty(value) {
136
+ if (!value) {
137
+ return true;
138
+ }
139
+ else if (hasOwnProperty(value, 'length')) {
140
+ return lengthEquals(value, 0);
141
+ }
142
+ else if (typeof value === 'object') {
143
+ return lengthEquals(Object.keys(value), 0);
144
+ }
145
+ return false;
72
146
  }
73
- var isNotNullish = bindNot(isNullish);
147
+ var isNotEmpty = bindNot(isEmpty);
74
148
 
75
- function isStringValue(v) {
76
- return String(v) === v;
149
+ function isPositive(value) {
150
+ return greaterThan(value, 0);
77
151
  }
78
152
 
79
153
  function endsWith(value, arg1) {
@@ -86,35 +160,10 @@
86
160
  }
87
161
  var notEquals = bindNot(equals);
88
162
 
89
- function isNumeric(value) {
90
- var str = String(value);
91
- var num = Number(value);
92
- var result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
93
- return Boolean(result);
94
- }
95
- var isNotNumeric = bindNot(isNumeric);
96
-
97
- function greaterThan(value, gt) {
98
- return isNumeric(value) && isNumeric(gt) && Number(value) > Number(gt);
99
- }
100
-
101
- function numberEquals(value, eq) {
102
- return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
103
- }
104
- var numberNotEquals = bindNot(numberEquals);
105
-
106
163
  function greaterThanOrEquals(value, gte) {
107
164
  return numberEquals(value, gte) || greaterThan(value, gte);
108
165
  }
109
166
 
110
- // The module is named "isArrayValue" since it
111
- // is conflicting with a nested npm dependency.
112
- // We may need to revisit this in the future.
113
- function isArray(value) {
114
- return Boolean(Array.isArray(value));
115
- }
116
- var isNotArray = bindNot(isArray);
117
-
118
167
  function inside(value, arg1) {
119
168
  if (isArray(arg1)) {
120
169
  return arg1.indexOf(value) !== -1;
@@ -145,46 +194,8 @@
145
194
  }
146
195
  var isNotBlank = bindNot(isBlank);
147
196
 
148
- function isBoolean(value) {
149
- return !!value === value;
150
- }
151
-
152
197
  var isNotBoolean = bindNot(isBoolean);
153
198
 
154
- /**
155
- * A safe hasOwnProperty access
156
- */
157
- function hasOwnProperty(obj, key) {
158
- return Object.prototype.hasOwnProperty.call(obj, key);
159
- }
160
-
161
- function isNumber(value) {
162
- return Boolean(typeof value === 'number');
163
- }
164
- var isNotNumber = bindNot(isNumber);
165
-
166
- function lengthEquals(value, arg1) {
167
- return numberEquals(value.length, arg1);
168
- }
169
- var lengthNotEquals = bindNot(lengthEquals);
170
-
171
- function isEmpty(value) {
172
- if (!value) {
173
- return true;
174
- }
175
- else if (isNumber(value)) {
176
- return value === 0;
177
- }
178
- else if (hasOwnProperty(value, 'length')) {
179
- return lengthEquals(value, 0);
180
- }
181
- else if (typeof value === 'object') {
182
- return lengthEquals(Object.keys(value), 0);
183
- }
184
- return false;
185
- }
186
- var isNotEmpty = bindNot(isEmpty);
187
-
188
199
  /**
189
200
  * Validates that a given value is an even number
190
201
  */
@@ -209,6 +220,11 @@
209
220
  return lessThan(value, 0);
210
221
  }
211
222
 
223
+ function isNumber(value) {
224
+ return Boolean(typeof value === 'number');
225
+ }
226
+ var isNotNumber = bindNot(isNumber);
227
+
212
228
  /**
213
229
  * Validates that a given value is an odd number
214
230
  */
@@ -219,10 +235,6 @@
219
235
  return false;
220
236
  };
221
237
 
222
- function isPositive(value) {
223
- return greaterThan(value, 0);
224
- }
225
-
226
238
  var isNotString = bindNot(isStringValue);
227
239
 
228
240
  function isTruthy(value) {
@@ -243,10 +255,6 @@
243
255
  }
244
256
  var isNotValueOf = bindNot(isValueOf);
245
257
 
246
- function longerThan(value, arg1) {
247
- return greaterThan(value.length, arg1);
248
- }
249
-
250
258
  function longerThanOrEquals(value, arg1) {
251
259
  return greaterThanOrEquals(value.length, arg1);
252
260
  }
@@ -367,11 +375,6 @@
367
375
  }
368
376
  }
369
377
 
370
- function defaultTo(callback, defaultValue) {
371
- var _a;
372
- return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
373
- }
374
-
375
378
  // eslint-disable-next-line max-lines-per-function
376
379
  function createContext(init) {
377
380
  var storage = { ancestry: [] };
@@ -382,8 +385,9 @@
382
385
  useX: useX
383
386
  };
384
387
  function useX(errorMessage) {
385
- invariant(storage.ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
386
- return storage.ctx;
388
+ var ctx = use();
389
+ invariant(ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
390
+ return ctx;
387
391
  }
388
392
  function run(ctxRef, fn) {
389
393
  var _a;
@@ -549,12 +553,12 @@
549
553
  for (var _i = 0; _i < arguments.length; _i++) {
550
554
  args[_i] = arguments[_i];
551
555
  }
552
- var transformedResult = transformResult.apply(void 0, __spreadArray([ctx.run({ value: value }, function () { return rule.apply(void 0, __spreadArray([value], args, false)); }),
553
- ruleName,
554
- value], args, false));
555
- invariant(transformedResult.pass, isEmpty(transformedResult.message)
556
+ var transformedResult = ctx.run({ value: value }, function () {
557
+ return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
558
+ });
559
+ invariant(transformedResult.pass, isNullish(transformedResult.message)
556
560
  ? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
557
- : new String(transformedResult.message));
561
+ : StringObject(transformedResult.message));
558
562
  return target;
559
563
  };
560
564
  }
@@ -582,9 +586,7 @@
582
586
  return defaultToPassing(mapFirst(registeredRules, function (rule, breakout) {
583
587
  var _a;
584
588
  var res = ctx.run({ value: value }, function () { return rule(value); });
585
- if (!res.pass) {
586
- breakout(ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
587
- }
589
+ breakout(!res.pass, ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
588
590
  }));
589
591
  },
590
592
  test: function (value) { return proxy.run(value).pass; },
@@ -690,9 +692,9 @@
690
692
  for (var _i = 0; _i < arguments.length; _i++) {
691
693
  composites[_i] = arguments[_i];
692
694
  }
693
- return Object.assign(function (value) {
695
+ return assign(function (value) {
694
696
  var res = run(value);
695
- invariant(res.pass, new String(res.message));
697
+ invariant(res.pass, StringObject(res.message));
696
698
  }, {
697
699
  run: run,
698
700
  test: function (value) { return run(value).pass; }
@@ -706,9 +708,7 @@
706
708
  so we're limiting it to a small set of functions.
707
709
  */
708
710
  var res = runLazyRule(composite, value);
709
- if (!res.pass) {
710
- breakout(res);
711
- }
711
+ breakout(!res.pass, res);
712
712
  }));
713
713
  });
714
714
  }
@@ -1 +1 @@
1
- "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).compose=t()}(this,(function(){function n(n){return"function"==typeof n}function t(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 r(n,r){if(!n)throw r instanceof String?r.valueOf():Error(r?t(r):r)}function e(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 u(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function i(n){return null===n}function o(n){return void 0===n}function s(n){return null===n||o(n)}function f(n){return String(n)===n}function a(n,t){return f(n)&&f(t)&&n.endsWith(t)}function c(n,t){return n===t}function l(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function p(n,t){return l(n)&&l(t)&&Number(n)>Number(t)}function v(n,t){return l(n)&&l(t)&&Number(n)===Number(t)}function g(n,t){return v(n,t)||p(n,t)}function h(n){return!!Array.isArray(n)}function N(n,t){return!!(h(t)||f(t)&&f(n))&&-1!==t.indexOf(n)}function y(n,t){return l(n)&&l(t)&&Number(n)<Number(t)}function d(n,t){return v(n,t)||y(n,t)}function m(n,t,r){return g(n,t)&&d(n,r)}function b(n){return s(n)||f(n)&&!n.trim()}function O(n){return!!n===n}function x(n){return"number"==typeof n}function E(n,t){return v(n.length,t)}function w(n){return!n||(x(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?E(n,0):"object"==typeof n&&E(Object.keys(n),0))}function T(n,t){return n in t}function q(n){return Number.isNaN(n)}function S(n){return!!n}function j(n,t){if(s(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function A(n,t){return t instanceof RegExp?t.test(n):!!f(t)&&new RegExp(t).test(n)}function B(n,t){return f(n)&&f(t)&&n.startsWith(t)}function P(t){for(var r in an){var e=an[r];n(e)&&t(r,e)}}function W(n,r){var e;return null!==(e=t(n))&&void 0!==e?e: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 n(Proxy)}catch(n){return!1}}function J(n,t){return n={pass:n},t&&(n.message=t),n}function K(n,e,u){for(var i=[],o=3;o<arguments.length;o++)i[o-3]=arguments[o];return r(O(n)||n&&O(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),O(n)?J(n):J(n.pass,t.apply(void 0,F([n.message,e,u],i,!1)))}function R(n){function t(t,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];return r((o=K.apply(void 0,F([cn.run({value:n},(function(){return e.apply(void 0,F([n],i,!1))})),u,n],i,!1))).pass,w(o.message)?"enforce/".concat(u," failed with ").concat(JSON.stringify(n)):new String(o.message)),t}}var e={};if(!I())return P((function(n,r){e[n]=t(e,r,n)})),e;var u=new Proxy(e,{get:function(n,r){if(n=an[r])return t(u,n,r)}});return u}function U(n){var r,u=[];return function n(i){return function(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var f=an[i];u.push((function(n){return K.apply(void 0,F([f.apply(void 0,F([n],o,!1)),i,n],o,!1))}));var a={run:function(n){return W(e(u,(function(e,u){var i,o=cn.run({value:n},(function(){return e(n)}));o.pass||u(J(!!o.pass,null!==(i=t(r,n,o.message))&&void 0!==i?i:o.message))})),J(!0))},test:function(n){return a.run(n).pass},message:function(n){return n&&(r=n),a}};return I()?a=new Proxy(a,{get:function(t,r){return an[r]?n(r):t[r]}}):(P((function(t){a[t]=n(t)})),a)}}(n)}var V=Object.assign,X=u(i),z=u(o),C=u(s),M=u(a),D=u(c),G=u(l),H=u(v),L=u(h),Q=u(N),Y=u(m),Z=u(b),$=u(O),_=u(x),nn=u(E),tn=u(w),rn=u(T),en=u(q),un=u(f),on=u(S),sn=u(j),fn=u(A),an={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:M,doesNotStartWith:u(B),endsWith:a,equals:c,greaterThan:p,greaterThanOrEquals:g,gt:p,gte:g,inside:N,isArray:h,isBetween:m,isBlank:b,isBoolean:O,isEmpty:w,isEven:function(n){return!!l(n)&&0==n%2},isFalsy:on,isKeyOf:T,isNaN:q,isNegative:function(n){return y(n,0)},isNotArray:L,isNotBetween:Y,isNotBlank:Z,isNotBoolean:$,isNotEmpty:tn,isNotKeyOf:rn,isNotNaN:en,isNotNull:X,isNotNullish:C,isNotNumber:_,isNotNumeric:G,isNotString:un,isNotUndefined:z,isNotValueOf:sn,isNull:i,isNullish:s,isNumber:x,isNumeric:l,isOdd:function(n){return!!l(n)&&0!=n%2},isPositive:function(n){return p(n,0)},isString:f,isTruthy:S,isUndefined:o,isValueOf:j,lengthEquals:E,lengthNotEquals:nn,lessThan:y,lessThanOrEquals:d,longerThan:function(n,t){return p(n.length,t)},longerThanOrEquals:function(n,t){return g(n.length,t)},lt:y,lte:d,matches:A,notEquals:D,notInside:Q,notMatches:fn,numberEquals:v,numberNotEquals:H,shorterThan:function(n,t){return y(n.length,t)},shorterThanOrEquals:function(n,t){return d(n.length,t)},startsWith:B},cn=function(n){function e(r,e){var o,s,f=u();return r=V({},f||{},null!==(o=t(n,r,f))&&void 0!==o?o:r),o=i.ctx=Object.freeze(r),i.ancestry.unshift(o),e=e(o),i.ancestry.shift(),i.ctx=null!==(s=i.ancestry[0])&&void 0!==s?s:null,e}function u(){return i.ctx}var i={ancestry:[]};return{bind:function(n,t){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return e(n,(function(){return t.apply(void 0,r)}))}},run:e,use:u,useX:function(n){return r(i.ctx,W(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?V(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:V(r,{parent:k})}));return function(){function n(){if(!I())return P((function(n){t[n]=U(n)})),V(R,t)}var t={context:function(){return cn.useX()},extend:function(t){V(an,t),n()}};n(),new Proxy(V(R,t),{get:function(n,t){return t in n?n[t]:an[t]?U(t):void 0}})}(),function(){function n(n){return cn.run({value:n},(function(){return W(e(t,(function(t,r){try{var e=t.run(n)}catch(n){e=J(!1)}e.pass||r(e)})),J(!0))}))}for(var t=[],u=0;u<arguments.length;u++)t[u]=arguments[u];return Object.assign((function(t){r((t=n(t)).pass,new String(t.message))}),{run:n,test:function(t){return n(t).pass}})}}));
1
+ "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).compose=t()}(this,(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 s(n){return null===n||o(n)}function f(n){return"function"==typeof n}function a(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return f(n)?n.apply(void 0,t):n}function c(n,t){var r;return null!==(r=a(n))&&void 0!==r?r:a(t)}function l(n){return!!Array.isArray(n)}function p(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?a(t):t)}function v(n){return String(n)===n}function h(n){return!!n===n}function g(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 v(n)&&v(t)&&n.endsWith(t)}function d(n,t){return n===t}function m(n,t){return r(n,t)||u(n,t)}function b(n,t){return!!(l(t)||v(t)&&v(n))&&-1!==t.indexOf(n)}function O(n,r){return t(n)&&t(r)&&Number(n)<Number(r)}function E(n,t){return r(n,t)||O(n,t)}function x(n,t,r){return m(n,t)&&E(n,r)}function w(n){return s(n)||v(n)&&!n.trim()}function T(n,t){return n in t}function q(n){return Number.isNaN(n)}function S(n){return"number"==typeof n}function j(n){return!!n}function A(n,t){if(s(t))return!1;for(var r in t)if(t[r]===n)return!0;return!1}function B(n,t){return t instanceof RegExp?t.test(n):!!v(t)&&new RegExp(t).test(n)}function P(n,t){return v(n)&&v(t)&&n.startsWith(t)}function W(n){for(var t in an){var r=an[t];f(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 f(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 p(h(n)||n&&h(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),h(n)?J(n):J(n.pass,a.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 p((i=cn.run({value:n},(function(){return K.apply(void 0,F([r.apply(void 0,F([n],u,!1)),e,n],u,!1))}))).pass,s(i.message)?"enforce/".concat(e," failed with ").concat(JSON.stringify(n)):new String(a(i.message))),t}}var r={};if(!I())return W((function(n,e){r[n]=t(r,e,n)})),r;var e=new Proxy(r,{get:function(n,r){if(n=an[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=an[e];r.push((function(n){return K.apply(void 0,F([o.apply(void 0,F([n],u,!1)),e,n],u,!1))}));var s={run:function(n){return c(g(r,(function(r,e){var u,i=cn.run({value:n},(function(){return r(n)}));e(!i.pass,J(!!i.pass,null!==(u=a(t,n,i.message))&&void 0!==u?u:i.message))})),J(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return I()?s=new Proxy(s,{get:function(t,r){return an[r]?n(r):t[r]}}):(W((function(t){s[t]=n(t)})),s)}}(n)}var V=n(t),X=n(r),z=n(e),C=n(i),M=n(o),D=n(s),G=n(l),H=Object.assign,L=n(N),Q=n(y),Y=n(d),Z=n(b),$=n(x),_=n(w),nn=n(h),tn=n(T),rn=n(q),en=n(S),un=n(v),on=n(j),sn=n(A),fn=n(B),an={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Q,doesNotStartWith:n(P),endsWith:y,equals:d,greaterThan:u,greaterThanOrEquals:m,gt:u,gte:m,inside:b,isArray:l,isBetween:x,isBlank:w,isBoolean:h,isEmpty:N,isEven:function(n){return!!t(n)&&0==n%2},isFalsy:on,isKeyOf:T,isNaN:q,isNegative:function(n){return O(n,0)},isNotArray:G,isNotBetween:$,isNotBlank:_,isNotBoolean:nn,isNotEmpty:L,isNotKeyOf:tn,isNotNaN:rn,isNotNull:C,isNotNullish:D,isNotNumber:en,isNotNumeric:V,isNotString:un,isNotUndefined:M,isNotValueOf:sn,isNull:i,isNullish:s,isNumber:S,isNumeric:t,isOdd:function(n){return!!t(n)&&0!=n%2},isPositive:function(n){return u(n,0)},isString:v,isTruthy:j,isUndefined:o,isValueOf:A,lengthEquals:e,lengthNotEquals:z,lessThan:O,lessThanOrEquals:E,longerThan:function(n,t){return u(n.length,t)},longerThanOrEquals:function(n,t){return m(n.length,t)},lt:O,lte:E,matches:B,notEquals:Y,notInside:Z,notMatches:fn,numberEquals:r,numberNotEquals:X,shorterThan:function(n,t){return O(n.length,t)},shorterThanOrEquals:function(n,t){return E(n.length,t)},startsWith:P},cn=function(n){function t(t,u){var i,o,s=r();return t=H({},s||{},null!==(i=a(n,t,s))&&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 p(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?H(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:H(r,{parent:k})}));return function(){function n(){if(!I())return W((function(n){t[n]=U(n)})),H(R,t)}var t={context:function(){return cn.useX()},extend:function(t){H(an,t),n()}};n(),new Proxy(H(R,t),{get:function(n,t){return t in n?n[t]:an[t]?U(t):void 0}})}(),function(){function n(n){return cn.run({value:n},(function(){return c(g(t,(function(t,r){try{var e=t.run(n)}catch(n){e=J(!1)}r(!e.pass,e)})),J(!0))}))}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return H((function(t){p((t=n(t)).pass,new String(a(t.message)))}),{run:n,test:function(t){return n(t).pass}})}}));