vest 4.0.0-dev-7acb76 → 4.0.0-dev-31f012

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 (42) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/dist/cjs/classnames.development.js +3 -3
  3. package/dist/cjs/classnames.production.js +1 -1
  4. package/dist/cjs/promisify.development.js +1 -1
  5. package/dist/cjs/promisify.production.js +1 -1
  6. package/dist/cjs/vest.development.js +95 -66
  7. package/dist/cjs/vest.production.js +1 -1
  8. package/dist/es/classnames.development.js +3 -3
  9. package/dist/es/classnames.production.js +1 -1
  10. package/dist/es/promisify.development.js +1 -1
  11. package/dist/es/promisify.production.js +1 -1
  12. package/dist/es/vest.development.js +95 -66
  13. package/dist/es/vest.production.js +1 -1
  14. package/dist/umd/classnames.development.js +3 -3
  15. package/dist/umd/classnames.production.js +1 -1
  16. package/dist/umd/promisify.development.js +1 -1
  17. package/dist/umd/promisify.production.js +1 -1
  18. package/dist/umd/vest.development.js +95 -66
  19. package/dist/umd/vest.production.js +1 -1
  20. package/package.json +1 -1
  21. package/types/classnames.d.ts +2 -2
  22. package/types/vest.d.ts +9 -2
  23. package/docs/.nojekyll +0 -0
  24. package/docs/README.md +0 -113
  25. package/docs/_assets/favicon.ico +0 -0
  26. package/docs/_assets/vest-logo.png +0 -0
  27. package/docs/_sidebar.md +0 -14
  28. package/docs/cross_field_validations.md +0 -33
  29. package/docs/enforce.md +0 -11
  30. package/docs/exclusion.md +0 -129
  31. package/docs/getting_started.md +0 -72
  32. package/docs/group.md +0 -142
  33. package/docs/index.html +0 -41
  34. package/docs/migration.md +0 -202
  35. package/docs/n4s/rules.md +0 -1282
  36. package/docs/node.md +0 -36
  37. package/docs/optional.md +0 -103
  38. package/docs/result.md +0 -249
  39. package/docs/state.md +0 -102
  40. package/docs/test.md +0 -172
  41. package/docs/utilities.md +0 -109
  42. package/docs/warn.md +0 -82
@@ -596,7 +596,7 @@ function eachEnforceRule(action) {
596
596
 
597
597
  function isProxySupported() {
598
598
  try {
599
- return typeof Proxy === 'function';
599
+ return isFunction(Proxy);
600
600
  }
601
601
  catch (_a) {
602
602
  return false;
@@ -1139,35 +1139,6 @@ function matchingFieldName(testObject, fieldName) {
1139
1139
  return !!(fieldName && testObject.fieldName === fieldName);
1140
1140
  }
1141
1141
 
1142
- function omitOptionalTests() {
1143
- var optionalFields = useOptionalFields()[0];
1144
- if (isEmpty(optionalFields)) {
1145
- return;
1146
- }
1147
- var shouldOmit = {};
1148
- useSetTests(function (tests) {
1149
- return transform(tests, function (testObject) {
1150
- var fieldName = testObject.fieldName;
1151
- if (shouldOmit.hasOwnProperty(fieldName)) {
1152
- omit(testObject);
1153
- }
1154
- else {
1155
- var optionalConfig = optionalFields[fieldName];
1156
- if (isFunction(optionalConfig)) {
1157
- shouldOmit[fieldName] = optionalConfig();
1158
- omit(testObject);
1159
- }
1160
- }
1161
- return testObject;
1162
- });
1163
- });
1164
- function omit(testObject) {
1165
- if (shouldOmit[testObject.fieldName]) {
1166
- testObject.omit();
1167
- }
1168
- }
1169
- }
1170
-
1171
1142
  /**
1172
1143
  * Checks if a given field, or the suite as a whole still have remaining tests.
1173
1144
  */
@@ -1518,15 +1489,6 @@ function deferDoneCallback(doneCallback, fieldName) {
1518
1489
  });
1519
1490
  }
1520
1491
 
1521
- /**
1522
- * Removes test object from suite state
1523
- */
1524
- function removeTestFromState (testObject) {
1525
- useSetTests(function (tests) {
1526
- return transform(tests, function (test) { return (testObject !== test ? test : null); });
1527
- });
1528
- }
1529
-
1530
1492
  function createBus() {
1531
1493
  var listeners = {};
1532
1494
  return {
@@ -1552,6 +1514,44 @@ function createBus() {
1552
1514
  };
1553
1515
  }
1554
1516
 
1517
+ function omitOptionalTests() {
1518
+ var optionalFields = useOptionalFields()[0];
1519
+ if (isEmpty(optionalFields)) {
1520
+ return;
1521
+ }
1522
+ var shouldOmit = {};
1523
+ useSetTests(function (tests) {
1524
+ return transform(tests, function (testObject) {
1525
+ var fieldName = testObject.fieldName;
1526
+ if (shouldOmit.hasOwnProperty(fieldName)) {
1527
+ omit(testObject);
1528
+ }
1529
+ else {
1530
+ var optionalConfig = optionalFields[fieldName];
1531
+ if (isFunction(optionalConfig)) {
1532
+ shouldOmit[fieldName] = optionalConfig();
1533
+ omit(testObject);
1534
+ }
1535
+ }
1536
+ return testObject;
1537
+ });
1538
+ });
1539
+ function omit(testObject) {
1540
+ if (shouldOmit[testObject.fieldName]) {
1541
+ testObject.omit();
1542
+ }
1543
+ }
1544
+ }
1545
+
1546
+ /**
1547
+ * Removes test object from suite state
1548
+ */
1549
+ function removeTestFromState (testObject) {
1550
+ useSetTests(function (tests) {
1551
+ return transform(tests, function (test) { return (testObject !== test ? test : null); });
1552
+ });
1553
+ }
1554
+
1555
1555
  function callEach(arr) {
1556
1556
  return arr.forEach(function (fn) { return fn(); });
1557
1557
  }
@@ -1579,6 +1579,8 @@ function runDoneCallbacks() {
1579
1579
 
1580
1580
  function initBus() {
1581
1581
  var bus = createBus();
1582
+ // Report a the completion of a test. There may be other tests with the same
1583
+ // name that are still running, or not yet started.
1582
1584
  bus.on(Events.TEST_COMPLETED, function (testObject) {
1583
1585
  if (testObject.isCanceled()) {
1584
1586
  return;
@@ -1587,6 +1589,22 @@ function initBus() {
1587
1589
  runFieldCallbacks(testObject.fieldName);
1588
1590
  runDoneCallbacks();
1589
1591
  });
1592
+ // Report that the suite completed its synchronous test run.
1593
+ // Async operations may still be running.
1594
+ bus.on(Events.SUITE_COMPLETED, function () {
1595
+ // Remove tests that are optional and need to be omitted
1596
+ omitOptionalTests();
1597
+ });
1598
+ // Removes a certain field from the state.
1599
+ bus.on(Events.REMOVE_FIELD, function (fieldName) {
1600
+ var testObjects = useTestsFlat();
1601
+ testObjects.forEach(function (testObject) {
1602
+ if (matchingFieldName(testObject, fieldName)) {
1603
+ testObject.cancel();
1604
+ removeTestFromState(testObject);
1605
+ }
1606
+ });
1607
+ });
1590
1608
  return bus;
1591
1609
  }
1592
1610
  function useBus() {
@@ -1599,42 +1617,48 @@ function useBus() {
1599
1617
  var Events;
1600
1618
  (function (Events) {
1601
1619
  Events["TEST_COMPLETED"] = "test_completed";
1620
+ Events["REMOVE_FIELD"] = "remove_field";
1621
+ Events["SUITE_COMPLETED"] = "suite_completed";
1602
1622
  })(Events || (Events = {}));
1603
1623
 
1604
1624
  // eslint-disable-next-line max-lines-per-function
1605
1625
  function create(suiteCallback) {
1606
1626
  if (!isFunction(suiteCallback)) {
1607
- throwError('Suite initialization error. Expected `tests` to be a function.');
1627
+ throwError('vest.create: Expected callback to be a function.');
1608
1628
  }
1629
+ // Event bus initialization
1609
1630
  var bus = initBus();
1631
+ // State initialization
1610
1632
  var state = createState();
1633
+ // State reference - this holds the actual state values
1611
1634
  var stateRef = createStateRef(state, { suiteId: genId() });
1612
- var suite = assign(ctx.bind({ stateRef: stateRef, bus: bus }, function () {
1635
+ // Create base context reference. All hooks will derive their data from this
1636
+ var ctxRef = { stateRef: stateRef, bus: bus };
1637
+ var suite = assign(
1638
+ // Bind the suite body to the context
1639
+ ctx.bind(ctxRef, function () {
1613
1640
  var args = [];
1614
1641
  for (var _i = 0; _i < arguments.length; _i++) {
1615
1642
  args[_i] = arguments[_i];
1616
1643
  }
1644
+ // Reset the state. Migrates current test objects to `prev` array.
1617
1645
  state.reset();
1618
- // Run the consumer's callback
1646
+ // Create a top level isolate
1619
1647
  isolate({ type: IsolateTypes.SUITE }, function () {
1648
+ // Run the consumer's callback
1620
1649
  suiteCallback.apply(void 0, args);
1621
1650
  });
1622
- omitOptionalTests();
1623
- var res = produceFullResult();
1624
- return res;
1651
+ // Report the suite is done registering tests
1652
+ // Async tests may still be running
1653
+ bus.emit(Events.SUITE_COMPLETED);
1654
+ // Return the result
1655
+ return produceFullResult();
1625
1656
  }), {
1626
- get: ctx.bind({ stateRef: stateRef }, produceDraft),
1627
- remove: ctx.bind({ stateRef: stateRef }, function (name) {
1628
- var testObjects = useTestsFlat();
1629
- // We're mutating the array in `cancel`, so we have to first copy it.
1630
- testObjects.forEach(function (testObject) {
1631
- if (matchingFieldName(testObject, name)) {
1632
- testObject.cancel();
1633
- removeTestFromState(testObject);
1634
- }
1635
- });
1636
- }),
1637
- reset: state.reset
1657
+ get: ctx.bind(ctxRef, produceDraft),
1658
+ reset: state.reset,
1659
+ remove: ctx.bind(ctxRef, function (fieldName) {
1660
+ bus.emit(Events.REMOVE_FIELD, fieldName);
1661
+ })
1638
1662
  });
1639
1663
  return suite;
1640
1664
  }
@@ -1648,16 +1672,20 @@ var ERROR_HOOK_CALLED_OUTSIDE = 'hook called outside of a running suite.';
1648
1672
  * Adds a field or multiple fields to inclusion group.
1649
1673
  */
1650
1674
  function only(item) {
1651
- return addTo('only', 'tests', item);
1675
+ return addTo(0 /* ONLY */, 'tests', item);
1652
1676
  }
1653
- only.group = function (item) { return addTo('only', 'groups', item); };
1677
+ only.group = function (item) {
1678
+ return addTo(0 /* ONLY */, 'groups', item);
1679
+ };
1654
1680
  /**
1655
1681
  * Adds a field or multiple fields to exclusion group.
1656
1682
  */
1657
1683
  function skip(item) {
1658
- return addTo('skip', 'tests', item);
1684
+ return addTo(1 /* SKIP */, 'tests', item);
1659
1685
  }
1660
- skip.group = function (item) { return addTo('skip', 'groups', item); };
1686
+ skip.group = function (item) {
1687
+ return addTo(1 /* SKIP */, 'groups', item);
1688
+ };
1661
1689
  //Checks whether a certain test profile excluded by any of the exclusion groups.
1662
1690
  // eslint-disable-next-line complexity, max-statements
1663
1691
  function isExcluded(testObject) {
@@ -1729,7 +1757,8 @@ function addTo(exclusionGroup, itemType, item) {
1729
1757
  if (!isStringValue(itemName)) {
1730
1758
  return;
1731
1759
  }
1732
- context.exclusion[itemType][itemName] = exclusionGroup === 'only';
1760
+ context.exclusion[itemType][itemName] =
1761
+ exclusionGroup === 0 /* ONLY */;
1733
1762
  });
1734
1763
  }
1735
1764
  /**
@@ -1996,7 +2025,7 @@ function runSyncTest(testObject) {
1996
2025
  * Registers test, if async - adds to pending array
1997
2026
  */
1998
2027
  function registerTest(testObject) {
1999
- var emit = useBus().emit;
2028
+ var bus = useBus();
2000
2029
  // Run test callback.
2001
2030
  // If a promise is returned, set as async and
2002
2031
  // Move to pending list.
@@ -2010,11 +2039,11 @@ function registerTest(testObject) {
2010
2039
  runAsyncTest(testObject);
2011
2040
  }
2012
2041
  else {
2013
- emit(Events.TEST_COMPLETED, testObject);
2042
+ bus.emit(Events.TEST_COMPLETED, testObject);
2014
2043
  }
2015
2044
  }
2016
2045
  catch (e) {
2017
- throwError("Your test function " + testObject.fieldName + " returned " + JSON.stringify(result) + ". Only \"false\" or a Promise are supported. Return values may cause unexpected behavior.");
2046
+ throwError("Your test function " + testObject.fieldName + " returned a value. Only \"false\" or Promise returns are supported.");
2018
2047
  }
2019
2048
  }
2020
2049
 
@@ -2180,6 +2209,6 @@ var test = assign(testBase, {
2180
2209
  memo: bindTestMemo(testBase)
2181
2210
  });
2182
2211
 
2183
- var VERSION = "4.0.0-dev-7acb76";
2212
+ var VERSION = "4.0.0-dev-31f012";
2184
2213
 
2185
2214
  export { VERSION, create, enforce, group, only, optional, skip, skipWhen, test, warn };
@@ -1 +1 @@
1
- function n(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)}function t(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||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(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 i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(n,t){try{return n.run(t)}catch(n){return s(!1)}}function c(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,t){return n.length===Number(t)}var l=c(f);function p(n,t){return n.length>Number(t)}function v(n){return null===n}var d=c(v);function h(n){return void 0===n}var g=c(h);function m(n){return String(n)===n}function y(n,t){return m(n)&&m(t)&&n.endsWith(t)}var N=c(y);function b(n,t){return n===t}var E=c(b);function C(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var O=c(C);function T(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function w(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function S(n){return!!Array.isArray(n)}var P=c(S);function x(n,t){return!!(S(t)||m(t)&&m(n))&&-1!==t.indexOf(n)}var k=c(x);function F(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function A(n,t,r){return w(n,t)&&F(n,r)}var I=c(A);function W(n){return m(n)&&!n.trim()}var X=c(W);function R(n){return!!n===n}var j=c(R);function U(n){return"number"==typeof n}var D=c(U);function L(n){if(n){if(U(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}var G=c(L);function q(n){return Number.isNaN(n)}var B=c(q);function K(n){return!!C(n)&&0>Number(n)}var _=c(K),H=c(m);function M(n){return!!n}var J=c(M);function z(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function V(n,t){return t instanceof RegExp?t.test(n):!!m(t)&&new RegExp(t).test(n)}var Y=c(V);function Q(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var Z=c(Q);function $(n,t){return m(n)&&m(t)&&n.startsWith(t)}var nn=c($);function tn(n,t){throw Error(o(t,n))}function rn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={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:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:tn(o(n,"Context was used after it was closed"))}}}var en=rn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:un})}));function un(){return null}function on(n,t){function r(r){var e=n[r],u=t[r];if(!(r=en.run({value:e,set:!0,meta:{key:r}},(function(){return a(u,e)}))).pass)return{value:r}}for(var e in t){var u=r(e);if("object"==typeof u)return u.value}return s(!0)}var sn=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:N,doesNotStartWith:nn,endsWith:y,equals:b,greaterThan:T,greaterThanOrEquals:w,gt:T,gte:w,inside:x,isArray:S,isBetween:A,isBlank:W,isBoolean:R,isEmpty:L,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:J,isNaN:q,isNegative:K,isNotArray:P,isNotBetween:I,isNotBlank:X,isNotBoolean:j,isNotEmpty:G,isNotNaN:B,isNotNull:d,isNotNumber:D,isNotNumeric:O,isNotString:H,isNotUndefined:g,isNull:v,isNumber:U,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:_,isString:m,isTruthy:M,isUndefined:h,lengthEquals:f,lengthNotEquals:l,lessThan:z,lessThanOrEquals:F,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:z,lte:F,matches:V,notEquals:E,notInside:k,notMatches:Y,numberEquals:Q,numberNotEquals:Z,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:$},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass||r(t)})),s(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass&&r(t)})),s(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){a(t,n).pass&&r(s(!1))})),s(!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(p(e,1))return!1;(t=a(t,n)).pass&&e.push(t)})),s(f(e,1))},optional:function(n,t){return h(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=on(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return s(!1);return s(!0)},loose:on,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=en.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function an(n){for(var t in sn){var r=sn[t];e(r)&&n(t,r)}}function cn(){return"function"==typeof Proxy}function fn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return R(n)||n&&R(n.pass)||tn("Incorrect return value for rule: "+JSON.stringify(n)),R(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function ln(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=fn.apply(void 0,t([en.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!L(o.message))throw o.message;tn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!cn())return an((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=sn[t])return r(u,n,t)}});return u}function pn(n){var r,e=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=sn[a];e.push((function(n){return fn.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=en.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})),s(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return cn()?p=new Proxy(p,{get:function(t,r){return sn[r]?n(r):t[r]}}):(an((function(t){p[t]=n(t)})),p)}}(n)}function vn(n){var t,r={};for(t in n)r[t]=hn.optional(n[t]);return r}var dn,hn=(dn=n({context:function(){return en.useX()},extend:function(n){r(sn,n)}},{partial:vn}),cn()?new Proxy(r(ln,dn),{get:function(n,t){return t in n?n[t]:sn[t]?pn(t):void 0}}):(an((function(n){dn[n]=pn(n)})),dn)),gn=function(n){return function(){return""+n++}}(0);var mn,yn=mn||(mn={});function Nn(n){return(n=[].concat(n))[n.length-1]}function bn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Nn(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,Nn(t)},removeLevel:function(){t.pop()},reset:n}}yn[yn.DEFAULT=0]="DEFAULT",yn[yn.SUITE=1]="SUITE",yn[yn.EACH=2]="EACH",yn[yn.SKIP_WHEN=3]="SKIP_WHEN",yn[yn.GROUP=4]="GROUP";var En=rn((function(n,t){return t?null:r({},{isolate:{type:mn.DEFAULT},testCursor:bn(),exclusion:{tests:{},groups:{}}},n)}));function Cn(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];S(u)?r.push(Cn(u,t)):(u=t(u),d(u)&&r.push(u))}return r}function On(n){return[].concat(n).reduce((function(n,t){return S(t)?n.concat(On(t)):[].concat(n).concat(t)}),[])}function Tn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function wn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),p(r,n)&&(r.length=n),u)}void 0===n&&(n=1);var r=[];return t.invalidate=function(n){var t=r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<t&&r.splice(t,1)},t.get=function(n){return r[r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},t}function Sn(){return En.useX().stateRef}function Pn(){(0,Sn().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function xn(n){(0,Sn().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function kn(){return On(Cn(Sn().testObjects()[0].current,(function(n){return n.isPending()?n:null})))}var Fn=wn();function An(){var n=Sn().testObjects()[0].current;return Fn([n],(function(){return On(n)}))}function In(){return En.useX().testCursor.getCursor()}function Wn(n,t){if(n=void 0===(n=n.type)?mn.DEFAULT:n,e(t)){var r=In();return En.run({isolate:{type:n}},(function(){En.useX().testCursor.addLevel(),xn((function(n){return Tn(n,r)[Nn(r)]=[],n}));var n=t();return En.useX().testCursor.removeLevel(),En.useX().testCursor.next(),n}))}}function Xn(n,t){return!(!t||n.fieldName!==t)}function Rn(){var n=Sn().optionalFields()[0];if(!L(n)){var t={};xn((function(r){return Cn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}function jn(n){var t=kn();return!L(t)&&(n?t.some((function(t){return Xn(t,n)})):G(t))}function Un(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function Dn(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return i&&r.groupName!==i||o&&!Xn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function Ln(n){return qn("errors",n)}function Gn(n){return qn("warnings",n)}function qn(n,t){return n=Dn(n,An(),{fieldName:t}),t?n[t]:n}function Bn(n,t){return n=_n("errors",n,t),t?n[t]:n}function Kn(n,t){return n=_n("warnings",n,t),t?n[t]:n}function _n(n,t,r){return t||tn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Dn(n,An(),{group:t,fieldName:r})}function Hn(n,t,r){return!(!n.hasFailures()||r&&!Xn(n,r)||"warnings"===t!=!!n.warns)}function Mn(n){return zn("errors",n)}function Jn(n){return zn("warnings",n)}function zn(n,t){return An().some((function(r){return Hn(r,n,t)}))}function Vn(n,t){return Qn("errors",n,t)}function Yn(n,t){return Qn("warnings",n,t)}function Qn(n,t,r){return An().some((function(e){return t===e.groupName&&Hn(e,n,r)}))}var Zn=wn(20);function $n(){var n=An(),t={stateRef:Sn()};return Zn([n],En.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return An().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Un(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Un(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:En.bind(t,Ln),getErrorsByGroup:En.bind(t,Bn),getWarnings:En.bind(t,Gn),getWarningsByGroup:En.bind(t,Kn),hasErrors:En.bind(t,Mn),hasErrorsByGroup:En.bind(t,Vn),hasWarnings:En.bind(t,Jn),hasWarningsByGroup:En.bind(t,Yn),isValid:En.bind(t,(function(n){var t=$n(),r=An().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(r=!!n&&!!r[n])?n=!0:t.hasErrors(n)?n=!1:n=!(L(r=An())||n&&L(t.tests[n])||function(n){var t=Sn().optionalFields()[0];return G(kn().filter((function(r){return!(n&&!Xn(r,n))&&!0!==t[r.fieldName]})))}(n))&&function(n){var t=An(),r=Sn().optionalFields()[0];return t.every((function(t){return!(!n||Xn(t,n))||!0===r[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n}))})})))}var nt,tt=wn(20);function rt(){var n=An(),t={stateRef:Sn()};return tt([n],En.bind(t,(function(){return r({},$n(),{done:En.bind(t,it)})})))}function et(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function ut(n){return!(jn()&&(!n||jn(n)))}function it(){function n(){return e($n())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=rt(),et(e,t,r)?r:ut(t)?(n(),r):(ot(n,t),r)}function ot(n,t){var r=En.bind({},n);(0,Sn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function st(n){return n.forEach((function(n){return n()}))}function at(){var n=En.useX();return n.bus||tn(),n.bus}function ct(n){return lt("only","tests",n)}function ft(n){return lt("skip","tests",n)}function lt(n,t,r){var e=En.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){m(r)&&(e.exclusion[t][r]="only"===n)}))}function pt(n){for(var t in n)if(!0===n[t])return!0;return!1}function vt(n){tn("Wrong arguments passed to group. Group "+n+".")}(nt||(nt={})).TEST_COMPLETED="test_completed",ct.group=function(n){return lt("only","groups",n)},ft.group=function(n){return lt("skip","groups",n)};var dt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gn(),this.warns=!1,this.status=ht,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,h(this.message)&&m(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Ct||(this.status=n)},n.prototype.setPending=function(){this.setStatus(bt)},n.prototype.fail=function(){this.setStatus(this.warns?yt:mt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Nt)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.isPending()||this.setStatus(gt)},n.prototype.cancel=function(){this.setStatus(Et),Pn()},n.prototype.omit=function(){this.setStatus(Ct)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===bt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===Ct},n.prototype.isUntested=function(){return this.status===ht},n.prototype.isFailing=function(){return this.status===mt},n.prototype.isCanceled=function(){return this.status===Et},n.prototype.isSkipped=function(){return this.status===gt},n.prototype.isPassing=function(){return this.status===Nt},n.prototype.isWarning=function(){return this.status===yt},n}(),ht="UNTESTED",gt="SKIPPED",mt="FAILED",yt="WARNING",Nt="PASSING",bt="PENDING",Et="CANCELED",Ct="OMITTED";function Ot(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=at().emit,i=Sn(),o=En.bind({stateRef:i},(function(){Pn(),u(nt.TEST_COMPLETED,n)}));i=En.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=m(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Tt(n){var t=Sn().testObjects(),r=t[1],e=t[0].prev;if(L(e))return wt(n),n;if(function(n,t){return G(n)&&!(n.fieldName===t.fieldName&&n.groupName===t.groupName)}(t=function(n){var t=In();return Tn(n,t)[Nn(t)]}(e),n)){!function(n,t){En.useX().isolate.type!==mn.EACH&&function(n,t){setTimeout((function(){tn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=Tn(e,In());var u=En.useX().testCursor.cursorAt();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return wt(n=o(t,n)),n}function wt(n){var t=In();xn((function(r){return Tn(r,t)[Nn(t)]=n,r}))}function St(n){var t=Tt(n);if(function(n){var t=n.fieldName;n=n.groupName;var r=En.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){n:{var i=En.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!pt(e)&&!1!==e[t])}return!u&&pt(e)}(n))return n.skip(),En.useX().testCursor.next(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),wt(n),En.useX().testCursor.next(),n.isUntested()){t=at().emit;var r=function(n){return En.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,h(n.message)&&m(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),Ot(n)):t(nt.TEST_COMPLETED,n)}catch(t){tn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&e(t.then)&&(n.setPending(),Ot(n));return n}function Pt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=En.useX();return St(t=new dt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var xt=r(Pt,{each:function(n){return function(r){return S(r)||tn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return Wn({type:mn.EACH},(function(){return r.map((function(r){return r=[].concat(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(Pt),memo:function(n){var t=wn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Sn().suiteId()[0];var i=En.useX().testCursor.cursorAt(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):St(u[1])}}(Pt)}),kt="4.0.0-dev-7acb76";function Ft(n){e(n)||tn("Suite initialization error. Expected `tests` to be a function.");var t=function(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(nt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=Sn().testCallbacks()[0].fieldCallbacks;n&&!jn(n)&&S(t[n])&&st(t[n]),n=Sn().testCallbacks()[0].doneCallbacks,jn()||st(n)}})),n}(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),o=function(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}(u,{suiteId:gn()});return r(En.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return u.reset(),Wn({type:mn.SUITE},(function(){n.apply(void 0,t)})),Rn(),rt()})),{get:En.bind({stateRef:o},$n),remove:En.bind({stateRef:o},(function(n){An().forEach((function(t){Xn(t,n)&&(t.cancel(),function(n){xn((function(t){return Cn(t,(function(t){return n!==t?t:null}))}))}(t))}))})),reset:u.reset})}function At(n,t){m(n)||vt("name must be a string"),e(t)||vt("callback must be a function"),Wn({type:mn.GROUP},(function(){En.run({groupName:n},t)}))}function It(n){(0,Sn().optionalFields()[1])((function(t){if(S(n)||m(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))}function Wt(n,t){Wn({type:mn.SKIP_WHEN},(function(){En.run({skipped:i(n)},(function(){return t()}))}))}function Xt(){var n=En.useX("warn hook called outside of a running suite.");n.currentTest||tn("warn called outside of a test."),n.currentTest.warn()}export{kt as VERSION,Ft as create,hn as enforce,At as group,ct as only,It as optional,ft as skip,Wt as skipWhen,xt as test,Xt as warn};
1
+ function n(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)}function t(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||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(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 i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(n,t){try{return n.run(t)}catch(n){return s(!1)}}function c(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,t){return n.length===Number(t)}var l=c(f);function p(n,t){return n.length>Number(t)}function v(n){return null===n}var d=c(v);function h(n){return void 0===n}var g=c(h);function m(n){return String(n)===n}function y(n,t){return m(n)&&m(t)&&n.endsWith(t)}var N=c(y);function E(n,t){return n===t}var b=c(E);function C(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var O=c(C);function T(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function S(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function w(n){return!!Array.isArray(n)}var P=c(w);function F(n,t){return!!(w(t)||m(t)&&m(n))&&-1!==t.indexOf(n)}var x=c(F);function k(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function I(n,t,r){return S(n,t)&&k(n,r)}var A=c(I);function D(n){return m(n)&&!n.trim()}var L=c(D);function U(n){return!!n===n}var W=c(U);function X(n){return"number"==typeof n}var R=c(X);function j(n){if(n){if(X(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}var _=c(j);function G(n){return Number.isNaN(n)}var M=c(G);function q(n){return!!C(n)&&0>Number(n)}var B=c(q),K=c(m);function H(n){return!!n}var V=c(H);function J(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function z(n,t){return t instanceof RegExp?t.test(n):!!m(t)&&new RegExp(t).test(n)}var Y=c(z);function Q(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var Z=c(Q);function $(n,t){return m(n)&&m(t)&&n.startsWith(t)}var nn=c($);function tn(n,t){throw Error(o(t,n))}function rn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={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:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:tn(o(n,"Context was used after it was closed"))}}}var en=rn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:r(e,{parent:un})}));function un(){return null}function on(n,t){function r(r){var e=n[r],u=t[r];if(!(r=en.run({value:e,set:!0,meta:{key:r}},(function(){return a(u,e)}))).pass)return{value:r}}for(var e in t){var u=r(e);if("object"==typeof u)return u.value}return s(!0)}var sn=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:N,doesNotStartWith:nn,endsWith:y,equals:E,greaterThan:T,greaterThanOrEquals:S,gt:T,gte:S,inside:F,isArray:w,isBetween:I,isBlank:D,isBoolean:U,isEmpty:j,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:V,isNaN:G,isNegative:q,isNotArray:P,isNotBetween:A,isNotBlank:L,isNotBoolean:W,isNotEmpty:_,isNotNaN:M,isNotNull:d,isNotNumber:R,isNotNumeric:O,isNotString:K,isNotUndefined:g,isNull:v,isNumber:X,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:B,isString:m,isTruthy:H,isUndefined:h,lengthEquals:f,lengthNotEquals:l,lessThan:J,lessThanOrEquals:k,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:J,lte:k,matches:z,notEquals:b,notInside:x,notMatches:Y,numberEquals:Q,numberNotEquals:Z,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:$},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass||r(t)})),s(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){(t=a(t,n)).pass&&r(t)})),s(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return o(u(t,(function(t,r){a(t,n).pass&&r(s(!1))})),s(!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(p(e,1))return!1;(t=a(t,n)).pass&&e.push(t)})),s(f(e,1))},optional:function(n,t){return h(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=on(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return s(!1);return s(!0)},loose:on,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=en.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function an(n){for(var t in sn){var r=sn[t];e(r)&&n(t,r)}}function cn(){try{return e(Proxy)}catch(n){return!1}}function fn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return U(n)||n&&U(n.pass)||tn("Incorrect return value for rule: "+JSON.stringify(n)),U(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function ln(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=fn.apply(void 0,t([en.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!j(o.message))throw o.message;tn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!cn())return an((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=sn[t])return r(u,n,t)}});return u}function pn(n){var r,e=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=sn[a];e.push((function(n){return fn.apply(void 0,t([l.apply(void 0,t([n],c)),a,n],c))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=en.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})),s(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return cn()?p=new Proxy(p,{get:function(t,r){return sn[r]?n(r):t[r]}}):(an((function(t){p[t]=n(t)})),p)}}(n)}function vn(n){var t,r={};for(t in n)r[t]=hn.optional(n[t]);return r}var dn,hn=(dn=n({context:function(){return en.useX()},extend:function(n){r(sn,n)}},{partial:vn}),cn()?new Proxy(r(ln,dn),{get:function(n,t){return t in n?n[t]:sn[t]?pn(t):void 0}}):(an((function(n){dn[n]=pn(n)})),dn)),gn=function(n){return function(){return""+n++}}(0);var mn,yn=mn||(mn={});function Nn(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function En(n){return(n=[].concat(n))[n.length-1]}function bn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return En(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,En(t)},removeLevel:function(){t.pop()},reset:n}}yn[yn.DEFAULT=0]="DEFAULT",yn[yn.SUITE=1]="SUITE",yn[yn.EACH=2]="EACH",yn[yn.SKIP_WHEN=3]="SKIP_WHEN",yn[yn.GROUP=4]="GROUP";var Cn=rn((function(n,t){return t?null:r({},{isolate:{type:mn.DEFAULT},testCursor:bn(),exclusion:{tests:{},groups:{}}},n)}));function On(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];w(u)?r.push(On(u,t)):(u=t(u),d(u)&&r.push(u))}return r}function Tn(n){return[].concat(n).reduce((function(n,t){return w(t)?n.concat(Tn(t)):[].concat(n).concat(t)}),[])}function Sn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function wn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),p(r,n)&&(r.length=n),u)}void 0===n&&(n=1);var r=[];return t.invalidate=function(n){var t=r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<t&&r.splice(t,1)},t.get=function(n){return r[r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},t}function Pn(){return Cn.useX().stateRef}function Fn(){(0,Pn().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function xn(n){(0,Pn().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function kn(){return Tn(On(Pn().testObjects()[0].current,(function(n){return n.isPending()?n:null})))}var In=wn();function An(){var n=Pn().testObjects()[0].current;return In([n],(function(){return Tn(n)}))}function Dn(){return Cn.useX().testCursor.getCursor()}function Ln(n,t){if(n=void 0===(n=n.type)?mn.DEFAULT:n,e(t)){var r=Dn();return Cn.run({isolate:{type:n}},(function(){Cn.useX().testCursor.addLevel(),xn((function(n){return Sn(n,r)[En(r)]=[],n}));var n=t();return Cn.useX().testCursor.removeLevel(),Cn.useX().testCursor.next(),n}))}}function Un(n,t){return!(!t||n.fieldName!==t)}function Wn(n){var t=kn();return!j(t)&&(n?t.some((function(t){return Un(t,n)})):_(t))}function Xn(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function Rn(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return i&&r.groupName!==i||o&&!Un(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function jn(n){return Gn("errors",n)}function _n(n){return Gn("warnings",n)}function Gn(n,t){return n=Rn(n,An(),{fieldName:t}),t?n[t]:n}function Mn(n,t){return n=Bn("errors",n,t),t?n[t]:n}function qn(n,t){return n=Bn("warnings",n,t),t?n[t]:n}function Bn(n,t,r){return t||tn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Rn(n,An(),{group:t,fieldName:r})}function Kn(n,t,r){return!(!n.hasFailures()||r&&!Un(n,r)||"warnings"===t!=!!n.warns)}function Hn(n){return Jn("errors",n)}function Vn(n){return Jn("warnings",n)}function Jn(n,t){return An().some((function(r){return Kn(r,n,t)}))}function zn(n,t){return Qn("errors",n,t)}function Yn(n,t){return Qn("warnings",n,t)}function Qn(n,t,r){return An().some((function(e){return t===e.groupName&&Kn(e,n,r)}))}var Zn=wn(20);function $n(){var n=An(),t={stateRef:Pn()};return Zn([n],Cn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return An().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Xn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Xn(n.groups[e],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:Cn.bind(t,jn),getErrorsByGroup:Cn.bind(t,Mn),getWarnings:Cn.bind(t,_n),getWarningsByGroup:Cn.bind(t,qn),hasErrors:Cn.bind(t,Hn),hasErrorsByGroup:Cn.bind(t,zn),hasWarnings:Cn.bind(t,Vn),hasWarningsByGroup:Cn.bind(t,Yn),isValid:Cn.bind(t,(function(n){var t=$n(),r=An().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(r=!!n&&!!r[n])?n=!0:t.hasErrors(n)?n=!1:n=!(j(r=An())||n&&j(t.tests[n])||function(n){var t=Pn().optionalFields()[0];return _(kn().filter((function(r){return!(n&&!Un(r,n))&&!0!==t[r.fieldName]})))}(n))&&function(n){var t=An(),r=Pn().optionalFields()[0];return t.every((function(t){return!(!n||Un(t,n))||!0===r[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n}))})})))}var nt=wn(20);function tt(){var n=An(),t={stateRef:Pn()};return nt([n],Cn.bind(t,(function(){return r({},$n(),{done:Cn.bind(t,ut)})})))}function rt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function et(n){return!(Wn()&&(!n||Wn(n)))}function ut(){function n(){return e($n())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=tt(),rt(e,t,r)?r:et(t)?(n(),r):(it(n,t),r)}function it(n,t){var r=Cn.bind({},n);(0,Pn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function ot(n){return n.forEach((function(n){return n()}))}function st(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(ct.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=Pn().testCallbacks()[0].fieldCallbacks;n&&!Wn(n)&&w(t[n])&&ot(t[n]),n=Pn().testCallbacks()[0].doneCallbacks,Wn()||ot(n)}})),n.on(ct.SUITE_COMPLETED,(function(){!function(){var n=Pn().optionalFields()[0];if(!j(n)){var t={};xn((function(r){return On(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(ct.REMOVE_FIELD,(function(n){An().forEach((function(t){Un(t,n)&&(t.cancel(),function(n){xn((function(t){return On(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n}function at(){var n=Cn.useX();return n.bus||tn(),n.bus}var ct,ft=ct||(ct={});function lt(n){return vt(0,"tests",n)}function pt(n){return vt(1,"tests",n)}function vt(n,t,r){var e=Cn.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){m(r)&&(e.exclusion[t][r]=0===n)}))}function dt(n){for(var t in n)if(!0===n[t])return!0;return!1}function ht(n){tn("Wrong arguments passed to group. Group "+n+".")}ft.TEST_COMPLETED="test_completed",ft.REMOVE_FIELD="remove_field",ft.SUITE_COMPLETED="suite_completed",lt.group=function(n){return vt(0,"groups",n)},pt.group=function(n){return vt(1,"groups",n)};var gt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=gn(),this.warns=!1,this.status=mt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,h(this.message)&&m(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Tt||(this.status=n)},n.prototype.setPending=function(){this.setStatus(Ct)},n.prototype.fail=function(){this.setStatus(this.warns?Et:Nt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(bt)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.isPending()||this.setStatus(yt)},n.prototype.cancel=function(){this.setStatus(Ot),Fn()},n.prototype.omit=function(){this.setStatus(Tt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===Ct},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===Tt},n.prototype.isUntested=function(){return this.status===mt},n.prototype.isFailing=function(){return this.status===Nt},n.prototype.isCanceled=function(){return this.status===Ot},n.prototype.isSkipped=function(){return this.status===yt},n.prototype.isPassing=function(){return this.status===bt},n.prototype.isWarning=function(){return this.status===Et},n}(),mt="UNTESTED",yt="SKIPPED",Nt="FAILED",Et="WARNING",bt="PASSING",Ct="PENDING",Ot="CANCELED",Tt="OMITTED";function St(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=at().emit,i=Pn(),o=Cn.bind({stateRef:i},(function(){Fn(),u(ct.TEST_COMPLETED,n)}));i=Cn.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=m(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function wt(n){var t=Pn().testObjects(),r=t[1],e=t[0].prev;if(j(e))return Pt(n),n;if(function(n,t){return _(n)&&!(n.fieldName===t.fieldName&&n.groupName===t.groupName)}(t=function(n){var t=Dn();return Sn(n,t)[En(t)]}(e),n)){!function(n,t){Cn.useX().isolate.type!==mn.EACH&&function(n,t){setTimeout((function(){tn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=Sn(e,Dn());var u=Cn.useX().testCursor.cursorAt();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return Pt(n=o(t,n)),n}function Pt(n){var t=Dn();xn((function(r){return Sn(r,t)[En(t)]=n,r}))}function Ft(n){var t=wt(n);if(function(n){var t=n.fieldName;n=n.groupName;var r=Cn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){n:{var i=Cn.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(i,n))var o=!1===i[n];else{for(o in i)if(!0===i[o]){o=!0;break n}o=!1}}if(o)return!0;if(!0===r.groups[n])return!(u||!dt(e)&&!1!==e[t])}return!u&&dt(e)}(n))return n.skip(),Cn.useX().testCursor.next(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),Pt(n),Cn.useX().testCursor.next(),n.isUntested()){t=at();var r=function(n){return Cn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,h(n.message)&&m(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),St(n)):t.emit(ct.TEST_COMPLETED,n)}catch(t){tn("Your test function "+n.fieldName+' returned a value. Only "false" or Promise returns are supported.')}}else(t=n.asyncTest)&&e(t.then)&&(n.setPending(),St(n));return n}function xt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=Cn.useX();return Ft(t=new gt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var kt=r(xt,{each:function(n){return function(r){return w(r)||tn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return Ln({type:mn.EACH},(function(){return r.map((function(r){return r=[].concat(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(xt),memo:function(n){var t=wn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Pn().suiteId()[0];var i=Cn.useX().testCursor.cursorAt(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),null===(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):Ft(u[1])}}(xt)}),It="4.0.0-dev-31f012";function At(n){e(n)||tn("vest.create: Expected callback to be a function.");var t=st(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),o={stateRef:Nn(u,{suiteId:gn()}),bus:t};return r(Cn.bind(o,(function(){for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return u.reset(),Ln({type:mn.SUITE},(function(){n.apply(void 0,r)})),t.emit(ct.SUITE_COMPLETED),tt()})),{get:Cn.bind(o,$n),reset:u.reset,remove:Cn.bind(o,(function(n){t.emit(ct.REMOVE_FIELD,n)}))})}function Dt(n,t){m(n)||ht("name must be a string"),e(t)||ht("callback must be a function"),Ln({type:mn.GROUP},(function(){Cn.run({groupName:n},t)}))}function Lt(n){(0,Pn().optionalFields()[1])((function(t){if(w(n)||m(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))}function Ut(n,t){Ln({type:mn.SKIP_WHEN},(function(){Cn.run({skipped:i(n)},(function(){return t()}))}))}function Wt(){var n=Cn.useX("warn hook called outside of a running suite.");n.currentTest||tn("warn called outside of a test."),n.currentTest.warn()}export{It as VERSION,At as create,hn as enforce,Dt as group,lt as only,Lt as optional,pt as skip,Ut as skipWhen,kt as test,Wt as warn};
@@ -60,10 +60,10 @@
60
60
  /**
61
61
  * Creates a function that returns class names that match the validation result
62
62
  */
63
- function classNames(res, classes) {
63
+ function classnames(res, classes) {
64
64
  if (classes === void 0) { classes = {}; }
65
65
  if (!res || !isFunction(res.hasErrors)) {
66
- throwError("[vest/classNames]: Expected first argument to be Vest's result object.");
66
+ throwError("classnames: Expected first argument to be Vest's result object.");
67
67
  }
68
68
  var selectors = parse(res);
69
69
  return function (key) {
@@ -78,6 +78,6 @@
78
78
  };
79
79
  }
80
80
 
81
- return classNames;
81
+ return classnames;
82
82
 
83
83
  })));
@@ -1 +1 @@
1
- "use strict";!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).classnames=e()}(this,(function(){function t(t){return"function"==typeof t}function e(e,n){var r;return null!==(r=function(e){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return t(e)?e.apply(void 0,n):e}(e))&&void 0!==r?r:n}function n(t){var e=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(e))}function r(t,e){return n(t)&&n(e)&&Number(t)>Number(e)}return function(n,o){if(void 0===o&&(o={}),!n||!t(n.hasErrors))throw Error(e(void 0,"[vest/classNames]: Expected first argument to be Vest's result object."));var i=function(t){var e={},n={invalid:t.hasErrors,tested:function(o){return o?Object.prototype.hasOwnProperty.call(e,o)?e[o]:(e[o]=Object.prototype.hasOwnProperty.call(t.tests,o)&&r(t.tests[o].testCount,0),n.tested(o)):r(t.testCount,0)},untested:function(e){return 0===t.testCount||!n.tested(e)},valid:t.isValid,warning:t.hasWarnings};return n}(n);return function(e){var n,r=[];for(n in o){var s=n;t(i[s])&&i[s](e)&&r.push(o[s])}return r.join(" ")}}}));
1
+ "use strict";!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).classnames=e()}(this,(function(){function t(t){return"function"==typeof t}function e(e,n){var r;return null!==(r=function(e){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return t(e)?e.apply(void 0,n):e}(e))&&void 0!==r?r:n}function n(t){var e=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(e))}function r(t,e){return n(t)&&n(e)&&Number(t)>Number(e)}return function(n,o){if(void 0===o&&(o={}),!n||!t(n.hasErrors))throw Error(e(void 0,"classnames: Expected first argument to be Vest's result object."));var i=function(t){var e={},n={invalid:t.hasErrors,tested:function(o){return o?Object.prototype.hasOwnProperty.call(e,o)?e[o]:(e[o]=Object.prototype.hasOwnProperty.call(t.tests,o)&&r(t.tests[o].testCount,0),n.tested(o)):r(t.testCount,0)},untested:function(e){return 0===t.testCount||!n.tested(e)},valid:t.isValid,warning:t.hasWarnings};return n}(n);return function(e){var n,r=[];for(n in o){var s=n;t(i[s])&&i[s](e)&&r.push(o[s])}return r.join(" ")}}}));
@@ -22,7 +22,7 @@
22
22
  args[_i] = arguments[_i];
23
23
  }
24
24
  if (!isFunction(validatorFn)) {
25
- throwError('[vest/promisify]: Expected validatorFn to be a function.');
25
+ throwError('promisify: Expected validatorFn to be a function.');
26
26
  }
27
27
  return new Promise(function (resolve) { return validatorFn.apply(void 0, args).done(resolve); });
28
28
  };
@@ -1 +1 @@
1
- "use strict";!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n="undefined"!=typeof globalThis?globalThis:n||self).promisify=e()}(this,(function(){function n(n,e){var o;return null!==(o=function(n){for(var e=[],o=1;o<arguments.length;o++)e[o-1]=arguments[o];return"function"==typeof n?n.apply(void 0,e):n}(n))&&void 0!==o?o:e}return function(e){return function(){for(var o=[],t=0;t<arguments.length;t++)o[t]=arguments[t];if("function"!=typeof e)throw Error(n(void 0,"[vest/promisify]: Expected validatorFn to be a function."));return new Promise((function(n){return e.apply(void 0,o).done(n)}))}}}));
1
+ "use strict";!function(n,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(n="undefined"!=typeof globalThis?globalThis:n||self).promisify=o()}(this,(function(){function n(n,o){var e;return null!==(e=function(n){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return"function"==typeof n?n.apply(void 0,o):n}(n))&&void 0!==e?e:o}return function(o){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if("function"!=typeof o)throw Error(n(void 0,"promisify: Expected validatorFn to be a function."));return new Promise((function(n){return o.apply(void 0,e).done(n)}))}}}));