vest 4.0.0-dev-392d56 → 4.0.0-dev-deabb8

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.
package/CHANGELOG.md CHANGED
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## 4.0.0 - 2021-10-01
7
+ ## 4.0.0 - 2021-10-02
8
8
  ### Changed or removed
9
9
  - 0e3af10 major(context): used named export in context (ealush)
10
10
  - 1897164 major(vest, enforce): setup next major version (ealush)
@@ -19,7 +19,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
19
19
  - f41a444 feat(n4s): context propagation within enforce (undefined)
20
20
 
21
21
  ### Fixed and improved
22
- - 392d560 types(vest): add safeguard around shouldUseErrorAsMessage (ealush)
22
+ - deabb8e patch(vest): add cache invalidation for canceled tests (ealush)
23
+ - fd1e31e types(vest): add safeguard around shouldUseErrorAsMessage (ealush)
23
24
  - 8321a36 patch(vest): some cleanups (ealush)
24
25
  - 8320956 patch(vest): remove duplicate code handling perv test registration (ealush)
25
26
  - 7e3fffb vx: use context directly from published package (ealush)
@@ -895,10 +895,6 @@ function matchingFieldName(testObject, fieldName) {
895
895
  function createCache(maxSize) {
896
896
  if (maxSize === void 0) { maxSize = 10; }
897
897
  var cacheStorage = [];
898
- /**
899
- * @param {any[]} deps dependency array.
900
- * @param {Function} cache action function.
901
- */
902
898
  var cache = function (deps, cacheAction) {
903
899
  var cacheHit = cache.get(deps);
904
900
  // cache hit is not null
@@ -911,10 +907,17 @@ function createCache(maxSize) {
911
907
  }
912
908
  return result;
913
909
  };
914
- /**
915
- * Retrieves an item from the cache.
916
- * @param {deps} deps Dependency array
917
- */
910
+ // invalidate an item in the cache by its dependencies
911
+ cache.invalidate = function (deps) {
912
+ var index = cacheStorage.findIndex(function (_a) {
913
+ var cachedDeps = _a[0];
914
+ return lengthEquals(deps, cachedDeps.length) &&
915
+ deps.every(function (dep, i) { return dep === cachedDeps[i]; });
916
+ });
917
+ if (index > -1)
918
+ cacheStorage.splice(index, 1);
919
+ };
920
+ // Retrieves an item from the cache.
918
921
  cache.get = function (deps) {
919
922
  return cacheStorage[cacheStorage.findIndex(function (_a) {
920
923
  var cachedDeps = _a[0];
@@ -1854,6 +1857,7 @@ function bindTestEach(test) {
1854
1857
  // eslint-disable-next-line max-lines-per-function
1855
1858
  function bindTestMemo(test) {
1856
1859
  var cache = createCache(100); // arbitrary cache size
1860
+ // eslint-disable-next-line max-statements
1857
1861
  function memo(fieldName) {
1858
1862
  var args = [];
1859
1863
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -1869,6 +1873,11 @@ function bindTestMemo(test) {
1869
1873
  // cache miss
1870
1874
  return cache(dependencies, function () { return test(fieldName, msg, testFn); });
1871
1875
  }
1876
+ if (cached[1].isCanceled()) {
1877
+ // cache hit, but test is canceled
1878
+ cache.invalidate(dependencies);
1879
+ return cache(dependencies, function () { return test(fieldName, msg, testFn); });
1880
+ }
1872
1881
  return registerPrevRunTest(cached[1]);
1873
1882
  }
1874
1883
  return memo;
@@ -1892,7 +1901,7 @@ var test = assign(testBase, {
1892
1901
  memo: bindTestMemo(testBase)
1893
1902
  });
1894
1903
 
1895
- var VERSION = "4.0.0-dev-392d56";
1904
+ var VERSION = "4.0.0-dev-deabb8";
1896
1905
 
1897
1906
  exports.VERSION = VERSION;
1898
1907
  exports.create = create;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){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},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(){return s(!1)}function f(){return s(!0)}function c(n){return o(n,a())}function l(n){return o(n,f())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function y(n,t){return n.length===Number(t)}var m=h(y);function N(n,t){return n.length>Number(t)}function b(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(y(e,1))}function E(n){return null===n}var C=h(E);function O(n){return void 0===n}var x=h(O);function w(n,t){return O(n)||E(n)?f():p(t,n)}function S(n){return String(n)===n}function T(n,t){return S(n)&&S(t)&&n.endsWith(t)}var P=h(T);function k(n,t){return n===t}var F=h(k);function W(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var A=h(W);function j(n,t){return W(n)&&W(t)&&Number(n)>Number(t)}function R(n,t){return W(n)&&W(t)&&Number(n)>=Number(t)}function I(n,t){return!!(Array.isArray(t)||S(t)&&S(n))&&-1!==t.indexOf(n)}var q=h(I);function B(n){return!!Array.isArray(n)}var D=h(B);function G(n,t){return W(n)&&W(t)&&Number(n)<=Number(t)}function X(n,t,r){return R(n,t)&&G(n,r)}var K=h(X);function _(n){return!!n===n}var L=h(_);function M(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function U(n){return"number"==typeof n}var J=h(U);function z(n){if(n){if(U(n))return 0===n;if(M(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}var V=h(z),Y=function(n){return!!W(n)&&0==n%2};function H(n){return Number.isNaN(n)}var Q=h(H);function Z(n){return!!W(n)&&0>Number(n)}var $=h(Z),nn=function(n){return!!W(n)&&0!=n%2},tn=h(S);function rn(n){return!!n}var en=h(rn);function un(n,t){return W(n)&&W(t)&&Number(n)<Number(t)}function on(n,t){return n.length>=Number(t)}function sn(n,t){return t instanceof RegExp?t.test(n):!!S(t)&&new RegExp(t).test(n)}var an=h(sn);function fn(n,t){return W(n)&&W(t)&&Number(n)===Number(t)}var cn=h(fn);function ln(n,t){try{return t(n)}catch(n){return!1}}function pn(n,t){return n.length<Number(t)}function vn(n,t){return n.length<=Number(t)}function gn(n,t){return S(n)&&S(t)&&n.startsWith(t)}var dn=h(gn);function hn(n,t){throw Error(o(t,n))}function yn(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:hn(o(n,"Context was used after it was closed"))}}}var mn=yn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:Nn})}));function Nn(){return null}function bn(n,t){return l(u(n,(function(n,r,e){(e=mn.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function En(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=mn.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return f()}function Cn(n,t){var r=En(n,t);if(!r.pass)return r;for(var e in n)if(!M(t,e))return a();return f()}var On=r({condition:ln,doesNotEndWith:P,doesNotStartWith:dn,endsWith:T,equals:k,greaterThan:j,greaterThanOrEquals:R,gt:j,gte:R,inside:I,isArray:B,isBetween:X,isBoolean:_,isEmpty:z,isEven:Y,isFalsy:en,isNaN:H,isNegative:Z,isNotArray:D,isNotBetween:K,isNotBoolean:L,isNotEmpty:V,isNotNaN:Q,isNotNull:C,isNotNumber:J,isNotNumeric:A,isNotString:tn,isNotUndefined:x,isNull:E,isNumber:U,isNumeric:W,isOdd:nn,isPositive:$,isString:S,isTruthy:rn,isUndefined:O,lengthEquals:y,lengthNotEquals:m,lessThan:un,lessThanOrEquals:G,longerThan:N,longerThanOrEquals:on,lt:un,lte:G,matches:sn,notEquals:F,notInside:q,notMatches:an,numberEquals:fn,numberNotEquals:cn,shorterThan:pn,shorterThanOrEquals:vn,startsWith:gn},{allOf:v,anyOf:g,noneOf:d,oneOf:b,optional:w},{shape:Cn,loose:En,isArrayOf:bn});function xn(n){return On[n]}function wn(n){for(var t in On){var r=xn(t);e(r)&&n(t,r)}}function Sn(){return"function"==typeof Proxy}function Tn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return Pn(n),_(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u,!1)))}function Pn(n){_(n)||n&&_(n.pass)||hn("Incorrect return value for rule: "+JSON.stringify(n))}function kn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=Tn.apply(void 0,t([mn.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!z(o.message))throw o.message;hn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Sn())return wn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=xn(t))return r(u,n,t)}});return u}function Fn(n){var r,e=[];return function n(o){return function(){for(var a=[],f=0;f<arguments.length;f++)a[f]=arguments[f];var c=xn(o);e.push((function(n){return Tn.apply(void 0,t([c.apply(void 0,t([n],a,!1)),o,n],a,!1))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=mn.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))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Sn()?p=new Proxy(p,{get:function(t,r){return xn(r)?n(r):t[r]}}):(wn((function(t){p[t]=n(t)})),p)}}(n)}function Wn(n){var t,r={};for(t in n)r[t]=jn.optional(n[t]);return r}var An,jn=(An=n({context:function(){return mn.useX()},extend:function(n){r(On,n)}},{partial:Wn}),Sn()?new Proxy(r(kn,An),{get:function(n,t){return t in n?n[t]:xn(t)?Fn(t):void 0}}):(wn((function(n){An[n]=Fn(n)})),An));function Rn(n){return[].concat(n)}var In=function(n){return function(){return""+n++}}(0);var qn=yn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){return!!t&&!Dn(n,t)}function Dn(n,t){return!(!t||n.fieldName!==t)}function Gn(n){void 0===n&&(n=10);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),t.length>n&&(t.length=n),u)};return r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return y(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Xn(){return Ln().suiteId()}function Kn(){return Ln().testCallbacks()}function _n(){return Ln().optionalFields()}function Ln(){return qn.useX().stateRef}function Mn(){return Ln().testObjects()}function Un(){return Ln().prevTestObjects()}function Jn(n){var t=Vn()[0],r=Mn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function zn(){(0,Vn()[1])((function(n){return n+1}))}function Vn(){return Ln().testObjectsCursor()}function Yn(n){return!!_n()[0][n]}function Hn(){return Mn()[0].filter((function(n){return n.isPending()}))}function Qn(n){var t=Hn();return!z(t)&&(n?t.some((function(t){return Dn(t,n)})):V(t))}function Zn(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 $n(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function nt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||Bn(n,e)||$n(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function tt(n,t){return t?n[t]:n}function rt(n){return ut("errors",n)}function et(n){return ut("warnings",n)}function ut(n,t){return tt(n=nt(n,Mn()[0],{fieldName:t}),t)}function it(n,t){return tt(n=st("errors",n,t),t)}function ot(n,t){return tt(n=st("warnings",n,t),t)}function st(n,t,r){return t||hn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),nt(n,Mn()[0],{group:t,fieldName:r})}function at(n,t,r){return!(!n.hasFailures()||Bn(n,r)||$n(t,n))}function ft(n){return lt("errors",n)}function ct(n){return lt("warnings",n)}function lt(n,t){return Mn()[0].some((function(r){return at(r,n,t)}))}function pt(n,t){return gt("errors",n,t)}function vt(n,t){return gt("warnings",n,t)}function gt(n,t,r){return Mn()[0].some((function(e){return t===e.groupName&&at(e,n,r)}))}function dt(n,t){return!n.hasErrors(t)&&(!(z(Mn()[0])||function(n,t){return!!t&&z(n.tests[t])}(n,t)||V(Hn().filter((function(n){return!Bn(n,t)&&!Yn(n.fieldName)}))))&&function(n){return Mn()[0].every((function(t){return!(!Bn(t,n)&&!Yn(t.fieldName))||t.isTested()}))}(t))}var ht=Gn(20);function yt(){var n=Mn()[0],t={stateRef:Ln()};return ht([n],qn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return Mn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Zn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Zn(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:qn.bind(t,rt),getErrorsByGroup:qn.bind(t,it),getWarnings:qn.bind(t,et),getWarningsByGroup:qn.bind(t,ot),hasErrors:qn.bind(t,ft),hasErrorsByGroup:qn.bind(t,pt),hasWarnings:qn.bind(t,ct),hasWarningsByGroup:qn.bind(t,vt),isValid:qn.bind(t,(function(n){return dt(yt(),n)}))})})))}var mt=Gn(20);function Nt(){var n=Mn()[0],t={stateRef:Ln()};return mt([n],qn.bind(t,(function(){return r({},yt(),{done:qn.bind(t,Ot)})})))}function bt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Et(n){return!(Qn()&&(!n||Qn(n)))}var Ct,Ot=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Nt(),bt(r,n,t))return t;var e=function(){return r(yt())};return Et(n)?(e(),t):(xt(e,n),t)};function xt(n,t){var r=qn.bind({},n);(0,Kn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function wt(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){n.isCanceled()||(n.done(),function(n){var t=Kn()[0].fieldCallbacks;n&&!Qn(n)&&Array.isArray(t[n])&&wt(t[n])}(n.fieldName),function(){var n=Kn()[0].doneCallbacks;Qn()||wt(n)}())})),n}function Tt(){var n=qn.useX();return n.bus||hn(),n.bus}(Ct||(Ct={})).TEST_COMPLETED="test_completed";function Pt(n){return Wt("only","tests",n)}function kt(n){return Wt("skip","tests",n)}function Ft(n){var t=n.fieldName;n=n.groupName;var r=qn.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){if(function(n){var t=qn.useX().exclusion.groups;if(M(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!At(e)||!1===e[t])}return!u&&At(e)}function Wt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&Rn(r).forEach((function(r){S(r)&&(e.exclusion[t][r]="only"===n)}))}function At(n){for(var t in n)if(!0===n[t])return!0;return!1}Pt.group=function(n){return Wt("only","groups",n)},kt.group=function(n){return Wt("skip","groups",n)};function jt(n){hn("Wrong arguments passed to group. Group "+n+".")}function Rt(n,t){return O(n)&&S(t)}var It=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=In(),this.warns=!1,this.status=qt,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){Rt(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(Kt)},n.prototype.fail=function(){this.setStatus(this.warns?Gt:Dt)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(Xt)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(Bt)},n.prototype.cancel=function(){this.setStatus(_t),function(n){(0,Mn()[1])((function(t){return Rn(function(n,t){return-1!==(t=n.indexOf(t))&&n.splice(t,1),n}(t,n))}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===Kt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isUntested=function(){return this.status===qt},n.prototype.isFailing=function(){return this.status===Dt},n.prototype.isCanceled=function(){return this.status===_t},n.prototype.isSkipped=function(){return this.status===Bt},n.prototype.isPassing=function(){return this.status===Xt},n.prototype.isWarning=function(){return this.status===Gt},n}(),qt="UNTESTED",Bt="SKIPPED",Dt="FAILED",Gt="WARNING",Xt="PASSING",Kt="PENDING",_t="CANCELED";function Lt(n){return n&&e(n.then)}function Mt(n){var t=n.asyncTest,r=n.message;if(Lt(t)){var e=Tt().emit,u=Ln(),i=qn.bind({stateRef:u},(function(){e(Ct.TEST_COMPLETED,n)}));u=qn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=S(t)?t:r,n.fail(),(0,Mn()[1])((function(n){return n.slice(0)})),i())}));try{t.then(i,u)}catch(n){u()}}}function Ut(n){var t=Tt().emit,r=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){Rt(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{Lt(r)?(n.asyncTest=r,n.setPending(),Mt(n)):t(Ct.TEST_COMPLETED,n)}catch(t){hn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}function Jt(n){var t=function(n){var t=Vn()[0];return Jn(n=o(Un()[0][t],n)),n}(n);return Ft(n)?(n.skip(),zn(),t):(function(n,t){t!==n&&function(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}(n,t)&&n.isPending()&&n.cancel()}(t,n),Jn(n),zn(),function(n){n.isUntested()?Ut(n):Lt(n.asyncTest)&&(n.setPending(),Mt(n))}(n),n)}function zt(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=qn.useX();return Jt(t=new It(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var Vt=r(zt,{each:function(n){return function(r){return Array.isArray(r)||hn("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 r.map((function(r){return r=Rn(r),n(i.apply(void 0,t([e],r,!1)),i.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(zt),memo:function(n){var t=Gn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Xn()[0];var i=Vn()[0],o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),E(u=t.get(e))?t(e,(function(){return n(r,s,o)})):Jt(u[1])}}(zt)});exports.VERSION="4.0.0-dev-392d56",exports.create=function(n){e(n)||hn("Suite initialization error. Expected `tests` to be a function.");var t=St(),u=function(n){function t(n,t){return u.references.push(),r(n,i(t)),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(){u.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),o=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(u,{suiteId:In()});return r(qn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=Mn()[0];return r=Un()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),Nt()})),{get:qn.bind({stateRef:o},yt),remove:qn.bind({stateRef:o},(function(n){Rn(Mn()[0]).forEach((function(t){Dn(t,n)&&t.cancel()}))})),reset:u.reset})},exports.enforce=jn,exports.group=function(n,t){S(n)||jt("name must be a string"),e(t)||jt("callback must be a function"),qn.run({groupName:n},t)},exports.only=Pt,exports.optional=function(n){(0,_n()[1])((function(t){return Rn(n).forEach((function(n){t[n]=!0})),t}))},exports.skip=kt,exports.skipWhen=function(n,t){qn.run({skipped:i(n)},(function(){return t()}))},exports.test=Vt,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||hn("warn called outside of a test."),n.currentTest.warn()};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){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},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(){return s(!1)}function f(){return s(!0)}function c(n){return o(n,a())}function l(n){return o(n,f())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return c(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function y(n,t){return n.length===Number(t)}var m=h(y);function N(n,t){return n.length>Number(t)}function b(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(y(e,1))}function E(n){return null===n}var C=h(E);function O(n){return void 0===n}var x=h(O);function w(n,t){return O(n)||E(n)?f():p(t,n)}function S(n){return String(n)===n}function T(n,t){return S(n)&&S(t)&&n.endsWith(t)}var P=h(T);function k(n,t){return n===t}var F=h(k);function W(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var A=h(W);function j(n,t){return W(n)&&W(t)&&Number(n)>Number(t)}function I(n,t){return W(n)&&W(t)&&Number(n)>=Number(t)}function R(n,t){return!!(Array.isArray(t)||S(t)&&S(n))&&-1!==t.indexOf(n)}var q=h(R);function B(n){return!!Array.isArray(n)}var D=h(B);function G(n,t){return W(n)&&W(t)&&Number(n)<=Number(t)}function X(n,t,r){return I(n,t)&&G(n,r)}var K=h(X);function _(n){return!!n===n}var L=h(_);function M(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function U(n){return"number"==typeof n}var J=h(U);function z(n){if(n){if(U(n))return 0===n;if(M(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}var V=h(z),Y=function(n){return!!W(n)&&0==n%2};function H(n){return Number.isNaN(n)}var Q=h(H);function Z(n){return!!W(n)&&0>Number(n)}var $=h(Z),nn=function(n){return!!W(n)&&0!=n%2},tn=h(S);function rn(n){return!!n}var en=h(rn);function un(n,t){return W(n)&&W(t)&&Number(n)<Number(t)}function on(n,t){return n.length>=Number(t)}function sn(n,t){return t instanceof RegExp?t.test(n):!!S(t)&&new RegExp(t).test(n)}var an=h(sn);function fn(n,t){return W(n)&&W(t)&&Number(n)===Number(t)}var cn=h(fn);function ln(n,t){try{return t(n)}catch(n){return!1}}function pn(n,t){return n.length<Number(t)}function vn(n,t){return n.length<=Number(t)}function gn(n,t){return S(n)&&S(t)&&n.startsWith(t)}var dn=h(gn);function hn(n,t){throw Error(o(t,n))}function yn(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:hn(o(n,"Context was used after it was closed"))}}}var mn=yn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:Nn})}));function Nn(){return null}function bn(n,t){return l(u(n,(function(n,r,e){(e=mn.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function En(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=mn.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return f()}function Cn(n,t){var r=En(n,t);if(!r.pass)return r;for(var e in n)if(!M(t,e))return a();return f()}var On=r({condition:ln,doesNotEndWith:P,doesNotStartWith:dn,endsWith:T,equals:k,greaterThan:j,greaterThanOrEquals:I,gt:j,gte:I,inside:R,isArray:B,isBetween:X,isBoolean:_,isEmpty:z,isEven:Y,isFalsy:en,isNaN:H,isNegative:Z,isNotArray:D,isNotBetween:K,isNotBoolean:L,isNotEmpty:V,isNotNaN:Q,isNotNull:C,isNotNumber:J,isNotNumeric:A,isNotString:tn,isNotUndefined:x,isNull:E,isNumber:U,isNumeric:W,isOdd:nn,isPositive:$,isString:S,isTruthy:rn,isUndefined:O,lengthEquals:y,lengthNotEquals:m,lessThan:un,lessThanOrEquals:G,longerThan:N,longerThanOrEquals:on,lt:un,lte:G,matches:sn,notEquals:F,notInside:q,notMatches:an,numberEquals:fn,numberNotEquals:cn,shorterThan:pn,shorterThanOrEquals:vn,startsWith:gn},{allOf:v,anyOf:g,noneOf:d,oneOf:b,optional:w},{shape:Cn,loose:En,isArrayOf:bn});function xn(n){return On[n]}function wn(n){for(var t in On){var r=xn(t);e(r)&&n(t,r)}}function Sn(){return"function"==typeof Proxy}function Tn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return Pn(n),_(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u,!1)))}function Pn(n){_(n)||n&&_(n.pass)||hn("Incorrect return value for rule: "+JSON.stringify(n))}function kn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=Tn.apply(void 0,t([mn.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!z(o.message))throw o.message;hn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Sn())return wn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=xn(t))return r(u,n,t)}});return u}function Fn(n){var r,e=[];return function n(o){return function(){for(var a=[],f=0;f<arguments.length;f++)a[f]=arguments[f];var c=xn(o);e.push((function(n){return Tn.apply(void 0,t([c.apply(void 0,t([n],a,!1)),o,n],a,!1))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=mn.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))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Sn()?p=new Proxy(p,{get:function(t,r){return xn(r)?n(r):t[r]}}):(wn((function(t){p[t]=n(t)})),p)}}(n)}function Wn(n){var t,r={};for(t in n)r[t]=jn.optional(n[t]);return r}var An,jn=(An=n({context:function(){return mn.useX()},extend:function(n){r(On,n)}},{partial:Wn}),Sn()?new Proxy(r(kn,An),{get:function(n,t){return t in n?n[t]:xn(t)?Fn(t):void 0}}):(wn((function(n){An[n]=Fn(n)})),An));function In(n){return[].concat(n)}var Rn=function(n){return function(){return""+n++}}(0);var qn=yn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){return!!t&&!Dn(n,t)}function Dn(n,t){return!(!t||n.fieldName!==t)}function Gn(n){void 0===n&&(n=10);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),t.length>n&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return y(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return y(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Xn(){return Ln().suiteId()}function Kn(){return Ln().testCallbacks()}function _n(){return Ln().optionalFields()}function Ln(){return qn.useX().stateRef}function Mn(){return Ln().testObjects()}function Un(){return Ln().prevTestObjects()}function Jn(n){var t=Vn()[0],r=Mn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function zn(){(0,Vn()[1])((function(n){return n+1}))}function Vn(){return Ln().testObjectsCursor()}function Yn(n){return!!_n()[0][n]}function Hn(){return Mn()[0].filter((function(n){return n.isPending()}))}function Qn(n){var t=Hn();return!z(t)&&(n?t.some((function(t){return Dn(t,n)})):V(t))}function Zn(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 $n(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function nt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||Bn(n,e)||$n(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function tt(n,t){return t?n[t]:n}function rt(n){return ut("errors",n)}function et(n){return ut("warnings",n)}function ut(n,t){return tt(n=nt(n,Mn()[0],{fieldName:t}),t)}function it(n,t){return tt(n=st("errors",n,t),t)}function ot(n,t){return tt(n=st("warnings",n,t),t)}function st(n,t,r){return t||hn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),nt(n,Mn()[0],{group:t,fieldName:r})}function at(n,t,r){return!(!n.hasFailures()||Bn(n,r)||$n(t,n))}function ft(n){return lt("errors",n)}function ct(n){return lt("warnings",n)}function lt(n,t){return Mn()[0].some((function(r){return at(r,n,t)}))}function pt(n,t){return gt("errors",n,t)}function vt(n,t){return gt("warnings",n,t)}function gt(n,t,r){return Mn()[0].some((function(e){return t===e.groupName&&at(e,n,r)}))}function dt(n,t){return!n.hasErrors(t)&&(!(z(Mn()[0])||function(n,t){return!!t&&z(n.tests[t])}(n,t)||V(Hn().filter((function(n){return!Bn(n,t)&&!Yn(n.fieldName)}))))&&function(n){return Mn()[0].every((function(t){return!(!Bn(t,n)&&!Yn(t.fieldName))||t.isTested()}))}(t))}var ht=Gn(20);function yt(){var n=Mn()[0],t={stateRef:Ln()};return ht([n],qn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return Mn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Zn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Zn(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:qn.bind(t,rt),getErrorsByGroup:qn.bind(t,it),getWarnings:qn.bind(t,et),getWarningsByGroup:qn.bind(t,ot),hasErrors:qn.bind(t,ft),hasErrorsByGroup:qn.bind(t,pt),hasWarnings:qn.bind(t,ct),hasWarningsByGroup:qn.bind(t,vt),isValid:qn.bind(t,(function(n){return dt(yt(),n)}))})})))}var mt=Gn(20);function Nt(){var n=Mn()[0],t={stateRef:Ln()};return mt([n],qn.bind(t,(function(){return r({},yt(),{done:qn.bind(t,Ot)})})))}function bt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Et(n){return!(Qn()&&(!n||Qn(n)))}var Ct,Ot=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Nt(),bt(r,n,t))return t;var e=function(){return r(yt())};return Et(n)?(e(),t):(xt(e,n),t)};function xt(n,t){var r=qn.bind({},n);(0,Kn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function wt(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){n.isCanceled()||(n.done(),function(n){var t=Kn()[0].fieldCallbacks;n&&!Qn(n)&&Array.isArray(t[n])&&wt(t[n])}(n.fieldName),function(){var n=Kn()[0].doneCallbacks;Qn()||wt(n)}())})),n}function Tt(){var n=qn.useX();return n.bus||hn(),n.bus}(Ct||(Ct={})).TEST_COMPLETED="test_completed";function Pt(n){return Wt("only","tests",n)}function kt(n){return Wt("skip","tests",n)}function Ft(n){var t=n.fieldName;n=n.groupName;var r=qn.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){if(function(n){var t=qn.useX().exclusion.groups;if(M(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!At(e)||!1===e[t])}return!u&&At(e)}function Wt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&In(r).forEach((function(r){S(r)&&(e.exclusion[t][r]="only"===n)}))}function At(n){for(var t in n)if(!0===n[t])return!0;return!1}Pt.group=function(n){return Wt("only","groups",n)},kt.group=function(n){return Wt("skip","groups",n)};function jt(n){hn("Wrong arguments passed to group. Group "+n+".")}function It(n,t){return O(n)&&S(t)}var Rt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Rn(),this.warns=!1,this.status=qt,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){It(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(Kt)},n.prototype.fail=function(){this.setStatus(this.warns?Gt:Dt)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(Xt)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(Bt)},n.prototype.cancel=function(){this.setStatus(_t),function(n){(0,Mn()[1])((function(t){return In(function(n,t){return-1!==(t=n.indexOf(t))&&n.splice(t,1),n}(t,n))}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===Kt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isUntested=function(){return this.status===qt},n.prototype.isFailing=function(){return this.status===Dt},n.prototype.isCanceled=function(){return this.status===_t},n.prototype.isSkipped=function(){return this.status===Bt},n.prototype.isPassing=function(){return this.status===Xt},n.prototype.isWarning=function(){return this.status===Gt},n}(),qt="UNTESTED",Bt="SKIPPED",Dt="FAILED",Gt="WARNING",Xt="PASSING",Kt="PENDING",_t="CANCELED";function Lt(n){return n&&e(n.then)}function Mt(n){var t=n.asyncTest,r=n.message;if(Lt(t)){var e=Tt().emit,u=Ln(),i=qn.bind({stateRef:u},(function(){e(Ct.TEST_COMPLETED,n)}));u=qn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=S(t)?t:r,n.fail(),(0,Mn()[1])((function(n){return n.slice(0)})),i())}));try{t.then(i,u)}catch(n){u()}}}function Ut(n){var t=Tt().emit,r=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){It(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{Lt(r)?(n.asyncTest=r,n.setPending(),Mt(n)):t(Ct.TEST_COMPLETED,n)}catch(t){hn("Your test function "+n.fieldName+" returned "+JSON.stringify(r)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}function Jt(n){var t=function(n){var t=Vn()[0];return Jn(n=o(Un()[0][t],n)),n}(n);return Ft(n)?(n.skip(),zn(),t):(function(n,t){t!==n&&function(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}(n,t)&&n.isPending()&&n.cancel()}(t,n),Jn(n),zn(),function(n){n.isUntested()?Ut(n):Lt(n.asyncTest)&&(n.setPending(),Mt(n))}(n),n)}function zt(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=qn.useX();return Jt(t=new Rt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var Vt=r(zt,{each:function(n){return function(r){return Array.isArray(r)||hn("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 r.map((function(r){return r=In(r),n(i.apply(void 0,t([e],r,!1)),i.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(zt),memo:function(n){var t=Gn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Xn()[0];var i=Vn()[0],o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),E(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)}))):Jt(u[1])}}(zt)});exports.VERSION="4.0.0-dev-deabb8",exports.create=function(n){e(n)||hn("Suite initialization error. Expected `tests` to be a function.");var t=St(),u=function(n){function t(n,t){return u.references.push(),r(n,i(t)),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(){u.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),o=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(u,{suiteId:Rn()});return r(qn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=Mn()[0];return r=Un()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),Nt()})),{get:qn.bind({stateRef:o},yt),remove:qn.bind({stateRef:o},(function(n){In(Mn()[0]).forEach((function(t){Dn(t,n)&&t.cancel()}))})),reset:u.reset})},exports.enforce=jn,exports.group=function(n,t){S(n)||jt("name must be a string"),e(t)||jt("callback must be a function"),qn.run({groupName:n},t)},exports.only=Pt,exports.optional=function(n){(0,_n()[1])((function(t){return In(n).forEach((function(n){t[n]=!0})),t}))},exports.skip=kt,exports.skipWhen=function(n,t){qn.run({skipped:i(n)},(function(){return t()}))},exports.test=Vt,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||hn("warn called outside of a test."),n.currentTest.warn()};
@@ -891,10 +891,6 @@ function matchingFieldName(testObject, fieldName) {
891
891
  function createCache(maxSize) {
892
892
  if (maxSize === void 0) { maxSize = 10; }
893
893
  var cacheStorage = [];
894
- /**
895
- * @param {any[]} deps dependency array.
896
- * @param {Function} cache action function.
897
- */
898
894
  var cache = function (deps, cacheAction) {
899
895
  var cacheHit = cache.get(deps);
900
896
  // cache hit is not null
@@ -907,10 +903,17 @@ function createCache(maxSize) {
907
903
  }
908
904
  return result;
909
905
  };
910
- /**
911
- * Retrieves an item from the cache.
912
- * @param {deps} deps Dependency array
913
- */
906
+ // invalidate an item in the cache by its dependencies
907
+ cache.invalidate = function (deps) {
908
+ var index = cacheStorage.findIndex(function (_a) {
909
+ var cachedDeps = _a[0];
910
+ return lengthEquals(deps, cachedDeps.length) &&
911
+ deps.every(function (dep, i) { return dep === cachedDeps[i]; });
912
+ });
913
+ if (index > -1)
914
+ cacheStorage.splice(index, 1);
915
+ };
916
+ // Retrieves an item from the cache.
914
917
  cache.get = function (deps) {
915
918
  return cacheStorage[cacheStorage.findIndex(function (_a) {
916
919
  var cachedDeps = _a[0];
@@ -1850,6 +1853,7 @@ function bindTestEach(test) {
1850
1853
  // eslint-disable-next-line max-lines-per-function
1851
1854
  function bindTestMemo(test) {
1852
1855
  var cache = createCache(100); // arbitrary cache size
1856
+ // eslint-disable-next-line max-statements
1853
1857
  function memo(fieldName) {
1854
1858
  var args = [];
1855
1859
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -1865,6 +1869,11 @@ function bindTestMemo(test) {
1865
1869
  // cache miss
1866
1870
  return cache(dependencies, function () { return test(fieldName, msg, testFn); });
1867
1871
  }
1872
+ if (cached[1].isCanceled()) {
1873
+ // cache hit, but test is canceled
1874
+ cache.invalidate(dependencies);
1875
+ return cache(dependencies, function () { return test(fieldName, msg, testFn); });
1876
+ }
1868
1877
  return registerPrevRunTest(cached[1]);
1869
1878
  }
1870
1879
  return memo;
@@ -1888,6 +1897,6 @@ var test = assign(testBase, {
1888
1897
  memo: bindTestMemo(testBase)
1889
1898
  });
1890
1899
 
1891
- var VERSION = "4.0.0-dev-392d56";
1900
+ var VERSION = "4.0.0-dev-deabb8";
1892
1901
 
1893
1902
  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},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 g=c(v);function d(n){return void 0===n}var h=c(d);function y(n){return String(n)===n}function m(n,t){return y(n)&&y(t)&&n.endsWith(t)}var N=c(m);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 w(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function T(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function S(n,t){return!!(Array.isArray(t)||y(t)&&y(n))&&-1!==t.indexOf(n)}var k=c(S);function P(n){return!!Array.isArray(n)}var x=c(P);function j(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function F(n,t,r){return T(n,t)&&j(n,r)}var A=c(F);function W(n){return!!n===n}var R=c(W);function I(n){return"number"==typeof n}var q=c(I);function B(n){if(n){if(I(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 D=c(B);function G(n){return Number.isNaN(n)}var X=c(G);function K(n){return!!C(n)&&0>Number(n)}var L=c(K),U=c(y);function M(n){return!!n}var _=c(M);function J(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function z(n,t){return t instanceof RegExp?t.test(n):!!y(t)&&new RegExp(t).test(n)}var V=c(z);function Y(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var H=c(Y);function Q(n,t){return y(n)&&y(t)&&n.startsWith(t)}var Z=c(Q);function $(n,t){throw Error(o(t,n))}function nn(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:$(o(n,"Context was used after it was closed"))}}}var tn=nn((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:rn})}));function rn(){return null}function en(n,t){function r(r){var e=n[r],u=t[r];if(!(r=tn.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 un=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:N,doesNotStartWith:Z,endsWith:m,equals:b,greaterThan:w,greaterThanOrEquals:T,gt:w,gte:T,inside:S,isArray:P,isBetween:F,isBoolean:W,isEmpty:B,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:_,isNaN:G,isNegative:K,isNotArray:x,isNotBetween:A,isNotBoolean:R,isNotEmpty:D,isNotNaN:X,isNotNull:g,isNotNumber:q,isNotNumeric:O,isNotString:U,isNotUndefined:h,isNull:v,isNumber:I,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:L,isString:y,isTruthy:M,isUndefined:d,lengthEquals:f,lengthNotEquals:l,lessThan:J,lessThanOrEquals:j,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:J,lte:j,matches:z,notEquals:E,notInside:k,notMatches:V,numberEquals:Y,numberNotEquals:H,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:Q},{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 d(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=en(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:en,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=tn.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function on(n){for(var t in un){var r=un[t];e(r)&&n(t,r)}}function sn(){return"function"==typeof Proxy}function an(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return W(n)||n&&W(n.pass)||$("Incorrect return value for rule: "+JSON.stringify(n)),W(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u,!1)))}function cn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=an.apply(void 0,t([tn.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!B(o.message))throw o.message;$("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!sn())return on((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=un[t])return r(u,n,t)}});return u}function fn(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=un[a];e.push((function(n){return an.apply(void 0,t([l.apply(void 0,t([n],c,!1)),a,n],c,!1))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=tn.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 sn()?p=new Proxy(p,{get:function(t,r){return un[r]?n(r):t[r]}}):(on((function(t){p[t]=n(t)})),p)}}(n)}function ln(n){var t,r={};for(t in n)r[t]=vn.optional(n[t]);return r}var pn,vn=(pn=n({context:function(){return tn.useX()},extend:function(n){r(un,n)}},{partial:ln}),sn()?new Proxy(r(cn,pn),{get:function(n,t){return t in n?n[t]:un[t]?fn(t):void 0}}):(on((function(n){pn[n]=fn(n)})),pn)),gn=function(n){return function(){return""+n++}}(0);var dn=nn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function hn(n,t){return!(!t||n.fieldName!==t)}function yn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),r.length>n&&(r.length=n),u)}void 0===n&&(n=10);var r=[];return 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 mn(){return dn.useX().stateRef}function Nn(){return mn().testObjects()}function bn(n){var t=mn().testObjectsCursor()[0],r=Nn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function En(){(0,mn().testObjectsCursor()[1])((function(n){return n+1}))}function Cn(n){return!!mn().optionalFields()[0][n]}function On(){return Nn()[0].filter((function(n){return n.isPending()}))}function wn(n){var t=On();return!B(t)&&(n?t.some((function(t){return hn(t,n)})):D(t))}function Tn(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 Sn(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&&!hn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function kn(n){return xn("errors",n)}function Pn(n){return xn("warnings",n)}function xn(n,t){return n=Sn(n,Nn()[0],{fieldName:t}),t?n[t]:n}function jn(n,t){return n=An("errors",n,t),t?n[t]:n}function Fn(n,t){return n=An("warnings",n,t),t?n[t]:n}function An(n,t,r){return t||$("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Sn(n,Nn()[0],{group:t,fieldName:r})}function Wn(n,t,r){return!(!n.hasFailures()||r&&!hn(n,r)||"warnings"===t!=!!n.warns)}function Rn(n){return qn("errors",n)}function In(n){return qn("warnings",n)}function qn(n,t){return Nn()[0].some((function(r){return Wn(r,n,t)}))}function Bn(n,t){return Gn("errors",n,t)}function Dn(n,t){return Gn("warnings",n,t)}function Gn(n,t,r){return Nn()[0].some((function(e){return t===e.groupName&&Wn(e,n,r)}))}function Xn(n,t){return!n.hasErrors(t)&&(!(B(Nn()[0])||t&&B(n.tests[t])||D(On().filter((function(n){return!(t&&!hn(n,t))&&!Cn(n.fieldName)}))))&&function(n){return Nn()[0].every((function(t){return!!(n&&!hn(t,n)||Cn(t.fieldName))||t.isTested()}))}(t))}var Kn=yn(20);function Ln(){var n=Nn()[0],t={stateRef:mn()};return Kn([n],dn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return Nn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Tn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Tn(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:dn.bind(t,kn),getErrorsByGroup:dn.bind(t,jn),getWarnings:dn.bind(t,Pn),getWarningsByGroup:dn.bind(t,Fn),hasErrors:dn.bind(t,Rn),hasErrorsByGroup:dn.bind(t,Bn),hasWarnings:dn.bind(t,In),hasWarningsByGroup:dn.bind(t,Dn),isValid:dn.bind(t,(function(n){return Xn(Ln(),n)}))})})))}var Un,Mn=yn(20);function _n(){var n=Nn()[0],t={stateRef:mn()};return Mn([n],dn.bind(t,(function(){return r({},Ln(),{done:dn.bind(t,Vn)})})))}function Jn(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function zn(n){return!(wn()&&(!n||wn(n)))}function Vn(){function n(){return e(Ln())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=_n(),Jn(e,t,r)?r:zn(t)?(n(),r):(Yn(n,t),r)}function Yn(n,t){var r=dn.bind({},n);(0,mn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Hn(n){return n.forEach((function(n){return n()}))}function Qn(){var n=dn.useX();return n.bus||$(),n.bus}function Zn(n){return nt("only","tests",n)}function $n(n){return nt("skip","tests",n)}function nt(n,t,r){var e=dn.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){y(r)&&(e.exclusion[t][r]="only"===n)}))}function tt(n){for(var t in n)if(!0===n[t])return!0;return!1}function rt(n){$("Wrong arguments passed to group. Group "+n+".")}(Un||(Un={})).TEST_COMPLETED="test_completed",Zn.group=function(n){return nt("only","groups",n)},$n.group=function(n){return nt("skip","groups",n)};var et=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=ut,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,d(this.message)&&y(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(ct)},n.prototype.fail=function(){this.setStatus(this.warns?st:ot)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(at)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(it)},n.prototype.cancel=function(){this.setStatus(ft),function(n){(0,Nn()[1])((function(t){var r=t.indexOf(n);return-1!==r&&t.splice(r,1),[].concat(t)}))}(this)},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.isUntested=function(){return this.status===ut},n.prototype.isFailing=function(){return this.status===ot},n.prototype.isCanceled=function(){return this.status===ft},n.prototype.isSkipped=function(){return this.status===it},n.prototype.isPassing=function(){return this.status===at},n.prototype.isWarning=function(){return this.status===st},n}(),ut="UNTESTED",it="SKIPPED",ot="FAILED",st="WARNING",at="PASSING",ct="PENDING",ft="CANCELED";function lt(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=Qn().emit,i=mn(),o=dn.bind({stateRef:i},(function(){u(Un.TEST_COMPLETED,n)}));i=dn.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=y(t)?t:r,n.fail(),(0,Nn()[1])((function(n){return n.slice(0)})),o())}));try{t.then(o,i)}catch(n){i()}}}function pt(n){var t=mn().testObjectsCursor()[0],r=mn().prevTestObjects()[0];if(bn(t=o(r[t],n)),function(n){var t=n.fieldName;n=n.groupName;var r=dn.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=dn.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||!tt(e)&&!1!==e[t])}return!u&&tt(e)}(n))return n.skip(),En(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),bn(n),En(),n.isUntested()){t=Qn().emit,r=function(n){return dn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,d(n.message)&&y(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),lt(n)):t(Un.TEST_COMPLETED,n)}catch(t){$("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(),lt(n));return n}function vt(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=dn.useX();return pt(t=new et(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var gt=r(vt,{each:function(n){return function(r){return Array.isArray(r)||$("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 r.map((function(r){return r=[].concat(r),n(i.apply(void 0,t([e],r,!1)),i.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(vt),memo:function(n){var t=yn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=mn().suiteId()[0];var i=mn().testObjectsCursor()[0],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)})):pt(u[1])}}(vt)}),dt="4.0.0-dev-392d56";function ht(n){e(n)||$("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(Un.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=mn().testCallbacks()[0].fieldCallbacks;n&&!wn(n)&&Array.isArray(t[n])&&Hn(t[n]),n=mn().testCallbacks()[0].doneCallbacks,wn()||Hn(n)}})),n}(),u=function(n){function t(n,t){return u.references.push(),r(n,i(t)),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(){u.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),o=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(u,{suiteId:gn()});return r(dn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=Nn()[0];return r=mn().prevTestObjects()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),_n()})),{get:dn.bind({stateRef:o},Ln),remove:dn.bind({stateRef:o},(function(n){var t=Nn()[0];[].concat(t).forEach((function(t){hn(t,n)&&t.cancel()}))})),reset:u.reset})}function yt(n,t){y(n)||rt("name must be a string"),e(t)||rt("callback must be a function"),dn.run({groupName:n},t)}function mt(n){(0,mn().optionalFields()[1])((function(t){return[].concat(n).forEach((function(n){t[n]=!0})),t}))}function Nt(n,t){dn.run({skipped:i(n)},(function(){return t()}))}function bt(){var n=dn.useX("warn hook called outside of a running suite.");n.currentTest||$("warn called outside of a test."),n.currentTest.warn()}export{dt as VERSION,ht as create,vn as enforce,yt as group,Zn as only,mt as optional,$n as skip,Nt as skipWhen,gt as test,bt 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},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 g=c(v);function d(n){return void 0===n}var h=c(d);function y(n){return String(n)===n}function m(n,t){return y(n)&&y(t)&&n.endsWith(t)}var b=c(m);function N(n,t){return n===t}var E=c(N);function C(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var O=c(C);function w(n,t){return C(n)&&C(t)&&Number(n)>Number(t)}function T(n,t){return C(n)&&C(t)&&Number(n)>=Number(t)}function S(n,t){return!!(Array.isArray(t)||y(t)&&y(n))&&-1!==t.indexOf(n)}var k=c(S);function x(n){return!!Array.isArray(n)}var P=c(x);function j(n,t){return C(n)&&C(t)&&Number(n)<=Number(t)}function F(n,t,r){return T(n,t)&&j(n,r)}var A=c(F);function W(n){return!!n===n}var I=c(W);function R(n){return"number"==typeof n}var q=c(R);function B(n){if(n){if(R(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 D=c(B);function G(n){return Number.isNaN(n)}var X=c(G);function K(n){return!!C(n)&&0>Number(n)}var L=c(K),U=c(y);function M(n){return!!n}var _=c(M);function J(n,t){return C(n)&&C(t)&&Number(n)<Number(t)}function z(n,t){return t instanceof RegExp?t.test(n):!!y(t)&&new RegExp(t).test(n)}var V=c(z);function Y(n,t){return C(n)&&C(t)&&Number(n)===Number(t)}var H=c(Y);function Q(n,t){return y(n)&&y(t)&&n.startsWith(t)}var Z=c(Q);function $(n,t){throw Error(o(t,n))}function nn(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:$(o(n,"Context was used after it was closed"))}}}var tn=nn((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:rn})}));function rn(){return null}function en(n,t){function r(r){var e=n[r],u=t[r];if(!(r=tn.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 un=r({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:b,doesNotStartWith:Z,endsWith:m,equals:N,greaterThan:w,greaterThanOrEquals:T,gt:w,gte:T,inside:S,isArray:x,isBetween:F,isBoolean:W,isEmpty:B,isEven:function(n){return!!C(n)&&0==n%2},isFalsy:_,isNaN:G,isNegative:K,isNotArray:P,isNotBetween:A,isNotBoolean:I,isNotEmpty:D,isNotNaN:X,isNotNull:g,isNotNumber:q,isNotNumeric:O,isNotString:U,isNotUndefined:h,isNull:v,isNumber:R,isNumeric:C,isOdd:function(n){return!!C(n)&&0!=n%2},isPositive:L,isString:y,isTruthy:M,isUndefined:d,lengthEquals:f,lengthNotEquals:l,lessThan:J,lessThanOrEquals:j,longerThan:p,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:J,lte:j,matches:z,notEquals:E,notInside:k,notMatches:V,numberEquals:Y,numberNotEquals:H,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:Q},{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 d(n)||null===n?s(!0):a(t,n)}},{shape:function(n,t){var r=en(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:en,isArrayOf:function(n,t){return o(u(n,(function(n,r,e){(e=tn.run({value:n,set:!0,meta:{index:e}},(function(){return a(t,n)}))).pass||r(e)})),s(!0))}});function on(n){for(var t in un){var r=un[t];e(r)&&n(t,r)}}function sn(){return"function"==typeof Proxy}function an(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return W(n)||n&&W(n.pass)||$("Incorrect return value for rule: "+JSON.stringify(n)),W(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u,!1)))}function cn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=an.apply(void 0,t([tn.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!B(o.message))throw o.message;$("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!sn())return on((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=un[t])return r(u,n,t)}});return u}function fn(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=un[a];e.push((function(n){return an.apply(void 0,t([l.apply(void 0,t([n],c,!1)),a,n],c,!1))}));var p={run:function(n){return o(u(e,(function(t,e){var u,o=tn.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 sn()?p=new Proxy(p,{get:function(t,r){return un[r]?n(r):t[r]}}):(on((function(t){p[t]=n(t)})),p)}}(n)}function ln(n){var t,r={};for(t in n)r[t]=vn.optional(n[t]);return r}var pn,vn=(pn=n({context:function(){return tn.useX()},extend:function(n){r(un,n)}},{partial:ln}),sn()?new Proxy(r(cn,pn),{get:function(n,t){return t in n?n[t]:un[t]?fn(t):void 0}}):(on((function(n){pn[n]=fn(n)})),pn)),gn=function(n){return function(){return""+n++}}(0);var dn=nn((function(n,t){return t?null:r({},{exclusion:{tests:{},groups:{}}},n)}));function hn(n,t){return!(!t||n.fieldName!==t)}function yn(n){function t(e,u){var i=t.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),r.length>n&&(r.length=n),u)}void 0===n&&(n=10);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 mn(){return dn.useX().stateRef}function bn(){return mn().testObjects()}function Nn(n){var t=mn().testObjectsCursor()[0],r=bn();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function En(){(0,mn().testObjectsCursor()[1])((function(n){return n+1}))}function Cn(n){return!!mn().optionalFields()[0][n]}function On(){return bn()[0].filter((function(n){return n.isPending()}))}function wn(n){var t=On();return!B(t)&&(n?t.some((function(t){return hn(t,n)})):D(t))}function Tn(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 Sn(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&&!hn(r,o)||"warnings"===t!=!!r.warns||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function kn(n){return Pn("errors",n)}function xn(n){return Pn("warnings",n)}function Pn(n,t){return n=Sn(n,bn()[0],{fieldName:t}),t?n[t]:n}function jn(n,t){return n=An("errors",n,t),t?n[t]:n}function Fn(n,t){return n=An("warnings",n,t),t?n[t]:n}function An(n,t,r){return t||$("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),Sn(n,bn()[0],{group:t,fieldName:r})}function Wn(n,t,r){return!(!n.hasFailures()||r&&!hn(n,r)||"warnings"===t!=!!n.warns)}function In(n){return qn("errors",n)}function Rn(n){return qn("warnings",n)}function qn(n,t){return bn()[0].some((function(r){return Wn(r,n,t)}))}function Bn(n,t){return Gn("errors",n,t)}function Dn(n,t){return Gn("warnings",n,t)}function Gn(n,t,r){return bn()[0].some((function(e){return t===e.groupName&&Wn(e,n,r)}))}function Xn(n,t){return!n.hasErrors(t)&&(!(B(bn()[0])||t&&B(n.tests[t])||D(On().filter((function(n){return!(t&&!hn(n,t))&&!Cn(n.fieldName)}))))&&function(n){return bn()[0].every((function(t){return!!(n&&!hn(t,n)||Cn(t.fieldName))||t.isTested()}))}(t))}var Kn=yn(20);function Ln(){var n=bn()[0],t={stateRef:mn()};return Kn([n],dn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return bn()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Tn(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Tn(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:dn.bind(t,kn),getErrorsByGroup:dn.bind(t,jn),getWarnings:dn.bind(t,xn),getWarningsByGroup:dn.bind(t,Fn),hasErrors:dn.bind(t,In),hasErrorsByGroup:dn.bind(t,Bn),hasWarnings:dn.bind(t,Rn),hasWarningsByGroup:dn.bind(t,Dn),isValid:dn.bind(t,(function(n){return Xn(Ln(),n)}))})})))}var Un,Mn=yn(20);function _n(){var n=bn()[0],t={stateRef:mn()};return Mn([n],dn.bind(t,(function(){return r({},Ln(),{done:dn.bind(t,Vn)})})))}function Jn(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function zn(n){return!(wn()&&(!n||wn(n)))}function Vn(){function n(){return e(Ln())}for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=(t=t.reverse())[0];return t=t[1],r=_n(),Jn(e,t,r)?r:zn(t)?(n(),r):(Yn(n,t),r)}function Yn(n,t){var r=dn.bind({},n);(0,mn().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Hn(n){return n.forEach((function(n){return n()}))}function Qn(){var n=dn.useX();return n.bus||$(),n.bus}function Zn(n){return nt("only","tests",n)}function $n(n){return nt("skip","tests",n)}function nt(n,t,r){var e=dn.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){y(r)&&(e.exclusion[t][r]="only"===n)}))}function tt(n){for(var t in n)if(!0===n[t])return!0;return!1}function rt(n){$("Wrong arguments passed to group. Group "+n+".")}(Un||(Un={})).TEST_COMPLETED="test_completed",Zn.group=function(n){return nt("only","groups",n)},$n.group=function(n){return nt("skip","groups",n)};var et=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=ut,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,d(this.message)&&y(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(ct)},n.prototype.fail=function(){this.setStatus(this.warns?st:ot)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(at)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(it)},n.prototype.cancel=function(){this.setStatus(ft),function(n){(0,bn()[1])((function(t){var r=t.indexOf(n);return-1!==r&&t.splice(r,1),[].concat(t)}))}(this)},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.isUntested=function(){return this.status===ut},n.prototype.isFailing=function(){return this.status===ot},n.prototype.isCanceled=function(){return this.status===ft},n.prototype.isSkipped=function(){return this.status===it},n.prototype.isPassing=function(){return this.status===at},n.prototype.isWarning=function(){return this.status===st},n}(),ut="UNTESTED",it="SKIPPED",ot="FAILED",st="WARNING",at="PASSING",ct="PENDING",ft="CANCELED";function lt(n){var t=n.asyncTest,r=n.message;if(t&&e(t.then)){var u=Qn().emit,i=mn(),o=dn.bind({stateRef:i},(function(){u(Un.TEST_COMPLETED,n)}));i=dn.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=y(t)?t:r,n.fail(),(0,bn()[1])((function(n){return n.slice(0)})),o())}));try{t.then(o,i)}catch(n){i()}}}function pt(n){var t=mn().testObjectsCursor()[0],r=mn().prevTestObjects()[0];if(Nn(t=o(r[t],n)),function(n){var t=n.fieldName;n=n.groupName;var r=dn.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=dn.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||!tt(e)&&!1!==e[t])}return!u&&tt(e)}(n))return n.skip(),En(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),Nn(n),En(),n.isUntested()){t=Qn().emit,r=function(n){return dn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,d(n.message)&&y(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&e(r.then)?(n.asyncTest=r,n.setPending(),lt(n)):t(Un.TEST_COMPLETED,n)}catch(t){$("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(),lt(n));return n}function vt(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=dn.useX();return pt(t=new et(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var gt=r(vt,{each:function(n){return function(r){return Array.isArray(r)||$("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 r.map((function(r){return r=[].concat(r),n(i.apply(void 0,t([e],r,!1)),i.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(vt),memo:function(n){var t=yn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=mn().suiteId()[0];var i=mn().testObjectsCursor()[0],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)}))):pt(u[1])}}(vt)}),dt="4.0.0-dev-deabb8";function ht(n){e(n)||$("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(Un.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=mn().testCallbacks()[0].fieldCallbacks;n&&!wn(n)&&Array.isArray(t[n])&&Hn(t[n]),n=mn().testCallbacks()[0].doneCallbacks,wn()||Hn(n)}})),n}(),u=function(n){function t(n,t){return u.references.push(),r(n,i(t)),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(){u.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),o=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(u,{suiteId:gn()});return r(dn.bind({stateRef:o,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=bn()[0];return r=mn().prevTestObjects()[1],u.reset(),r((function(){return e})),n.apply(void 0,t),_n()})),{get:dn.bind({stateRef:o},Ln),remove:dn.bind({stateRef:o},(function(n){var t=bn()[0];[].concat(t).forEach((function(t){hn(t,n)&&t.cancel()}))})),reset:u.reset})}function yt(n,t){y(n)||rt("name must be a string"),e(t)||rt("callback must be a function"),dn.run({groupName:n},t)}function mt(n){(0,mn().optionalFields()[1])((function(t){return[].concat(n).forEach((function(n){t[n]=!0})),t}))}function bt(n,t){dn.run({skipped:i(n)},(function(){return t()}))}function Nt(){var n=dn.useX("warn hook called outside of a running suite.");n.currentTest||$("warn called outside of a test."),n.currentTest.warn()}export{dt as VERSION,ht as create,vn as enforce,yt as group,Zn as only,mt as optional,$n as skip,bt as skipWhen,gt as test,Nt as warn};
@@ -897,10 +897,6 @@
897
897
  function createCache(maxSize) {
898
898
  if (maxSize === void 0) { maxSize = 10; }
899
899
  var cacheStorage = [];
900
- /**
901
- * @param {any[]} deps dependency array.
902
- * @param {Function} cache action function.
903
- */
904
900
  var cache = function (deps, cacheAction) {
905
901
  var cacheHit = cache.get(deps);
906
902
  // cache hit is not null
@@ -913,10 +909,17 @@
913
909
  }
914
910
  return result;
915
911
  };
916
- /**
917
- * Retrieves an item from the cache.
918
- * @param {deps} deps Dependency array
919
- */
912
+ // invalidate an item in the cache by its dependencies
913
+ cache.invalidate = function (deps) {
914
+ var index = cacheStorage.findIndex(function (_a) {
915
+ var cachedDeps = _a[0];
916
+ return lengthEquals(deps, cachedDeps.length) &&
917
+ deps.every(function (dep, i) { return dep === cachedDeps[i]; });
918
+ });
919
+ if (index > -1)
920
+ cacheStorage.splice(index, 1);
921
+ };
922
+ // Retrieves an item from the cache.
920
923
  cache.get = function (deps) {
921
924
  return cacheStorage[cacheStorage.findIndex(function (_a) {
922
925
  var cachedDeps = _a[0];
@@ -1856,6 +1859,7 @@
1856
1859
  // eslint-disable-next-line max-lines-per-function
1857
1860
  function bindTestMemo(test) {
1858
1861
  var cache = createCache(100); // arbitrary cache size
1862
+ // eslint-disable-next-line max-statements
1859
1863
  function memo(fieldName) {
1860
1864
  var args = [];
1861
1865
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -1871,6 +1875,11 @@
1871
1875
  // cache miss
1872
1876
  return cache(dependencies, function () { return test(fieldName, msg, testFn); });
1873
1877
  }
1878
+ if (cached[1].isCanceled()) {
1879
+ // cache hit, but test is canceled
1880
+ cache.invalidate(dependencies);
1881
+ return cache(dependencies, function () { return test(fieldName, msg, testFn); });
1882
+ }
1874
1883
  return registerPrevRunTest(cached[1]);
1875
1884
  }
1876
1885
  return memo;
@@ -1894,7 +1903,7 @@
1894
1903
  memo: bindTestMemo(testBase)
1895
1904
  });
1896
1905
 
1897
- var VERSION = "4.0.0-dev-392d56";
1906
+ var VERSION = "4.0.0-dev-deabb8";
1898
1907
 
1899
1908
  exports.VERSION = VERSION;
1900
1909
  exports.create = create;
@@ -1 +1 @@
1
- "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){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)}function r(n){return"function"==typeof n}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){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return r(n)?n.apply(void 0,t):n}function i(n,t){var r;return null!==(r=u(n))&&void 0!==r?r:t}function o(n,t){return n={pass:n},t&&(n.message=t),n}function s(n,t){try{return n.run(t)}catch(n){return o(!1)}}function a(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)}function c(n,t){return n.length>Number(t)}function l(n){return null===n}function p(n){return void 0===n}function d(n){return String(n)===n}function g(n,t){return d(n)&&d(t)&&n.endsWith(t)}function v(n,t){return n===t}function h(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function y(n,t){return h(n)&&h(t)&&Number(n)>Number(t)}function m(n,t){return h(n)&&h(t)&&Number(n)>=Number(t)}function b(n,t){return!!(Array.isArray(t)||d(t)&&d(n))&&-1!==t.indexOf(n)}function N(n){return!!Array.isArray(n)}function E(n,t){return h(n)&&h(t)&&Number(n)<=Number(t)}function C(n,t,r){return m(n,t)&&E(n,r)}function O(n){return!!n===n}function w(n){return"number"==typeof n}function T(n){if(n){if(w(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}function S(n){return Number.isNaN(n)}function k(n){return!!h(n)&&0>Number(n)}function x(n){return!!n}function P(n,t){return h(n)&&h(t)&&Number(n)<Number(t)}function j(n,t){return t instanceof RegExp?t.test(n):!!d(t)&&new RegExp(t).test(n)}function F(n,t){return h(n)&&h(t)&&Number(n)===Number(t)}function W(n,t){return d(n)&&d(t)&&n.startsWith(t)}function A(n,t){throw Error(i(t,n))}function R(n){function t(t,u){var i,o,s=r();return t=An({},s||{},null!==(i=null==n?void 0: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;return null!==(t=e.ctx)&&void 0!==t?t:A(i(n,"Context was used after it was closed"))}}}function I(){return null}function q(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=$n.run({value:e,set:!0,meta:{key:r}},(function(){return s(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return o(!0)}function B(n){for(var t in nt){var e=nt[t];r(e)&&n(t,e)}}function D(){return"function"==typeof Proxy}function G(n,r,e){for(var i=[],s=3;s<arguments.length;s++)i[s-3]=arguments[s];return O(n)||n&&O(n.pass)||A("Incorrect return value for rule: "+JSON.stringify(n)),O(n)?o(n):o(n.pass,u.apply(void 0,t([n.message,r,e],i,!1)))}function X(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=G.apply(void 0,t([$n.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!T(o.message))throw o.message;A("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!D())return B((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=nt[t])return r(u,n,t)}});return u}function K(n){var r,s=[];return function n(a){return function(){for(var f=[],c=0;c<arguments.length;c++)f[c]=arguments[c];var l=nt[a];s.push((function(n){return G.apply(void 0,t([l.apply(void 0,t([n],f,!1)),a,n],f,!1))}));var p={run:function(n){return i(e(s,(function(t,e){var i,s=$n.run({value:n},(function(){return t(n)}));s.pass||e(o(!!s.pass,null!==(i=u(r,n,s.message))&&void 0!==i?i:s.message))})),o(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return D()?p=new Proxy(p,{get:function(t,r){return nt[r]?n(r):t[r]}}):(B((function(t){p[t]=n(t)})),p)}}(n)}function _(n){var t,r={};for(t in n)r[t]=tt.optional(n[t]);return r}function L(n,t){return!(!t||n.fieldName!==t)}function M(n){void 0===n&&(n=10);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),t.length>n&&(t.length=n),u)};return r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function U(){return et.useX().stateRef}function J(){return U().testObjects()}function z(n){var t=U().testObjectsCursor()[0],r=J();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function V(){(0,U().testObjectsCursor()[1])((function(n){return n+1}))}function Y(n){return!!U().optionalFields()[0][n]}function H(){return J()[0].filter((function(n){return n.isPending()}))}function Q(n){var t=H();return!T(t)&&(n?t.some((function(t){return L(t,n)})):Un(t))}function Z(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 $(n,t,r){var e;void 0===r&&(r={});var u=(r=r||{}).group,i=r.fieldName;return t.reduce((function(t,r){return u&&r.groupName!==u||i&&!L(r,i)||"warnings"===n!=!!r.warns||!r.hasFailures()||(t[r.fieldName]=(t[r.fieldName]||[]).concat(r.message||[])),t}),Wn({},i&&((e={})[i]=[],e)))}function nn(n){return rn("errors",n)}function tn(n){return rn("warnings",n)}function rn(n,t){return n=$(n,J()[0],{fieldName:t}),t?n[t]:n}function en(n,t){return n=on("errors",n,t),t?n[t]:n}function un(n,t){return n=on("warnings",n,t),t?n[t]:n}function on(n,t,r){return t||A("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),$(n,J()[0],{group:t,fieldName:r})}function sn(n,t,r){return!(!n.hasFailures()||r&&!L(n,r)||"warnings"===t!=!!n.warns)}function an(n){return cn("errors",n)}function fn(n){return cn("warnings",n)}function cn(n,t){return J()[0].some((function(r){return sn(r,n,t)}))}function ln(n,t){return dn("errors",n,t)}function pn(n,t){return dn("warnings",n,t)}function dn(n,t,r){return J()[0].some((function(e){return t===e.groupName&&sn(e,n,r)}))}function gn(n,t){return!n.hasErrors(t)&&(!(T(J()[0])||t&&T(n.tests[t])||Un(H().filter((function(n){return!(t&&!L(n,t))&&!Y(n.fieldName)}))))&&function(n){return J()[0].every((function(t){return!!(n&&!L(t,n)||Y(t.fieldName))||t.isTested()}))}(t))}function vn(){var n=J()[0],t={stateRef:U()};return ut([n],et.bind(t,(function(){return An(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return J()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Z(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Z(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:et.bind(t,nn),getErrorsByGroup:et.bind(t,en),getWarnings:et.bind(t,tn),getWarningsByGroup:et.bind(t,un),hasErrors:et.bind(t,an),hasErrorsByGroup:et.bind(t,ln),hasWarnings:et.bind(t,fn),hasWarningsByGroup:et.bind(t,pn),isValid:et.bind(t,(function(n){return gn(vn(),n)}))})})))}function hn(){var n=J()[0],t={stateRef:U()};return it([n],et.bind(t,(function(){return An({},vn(),{done:et.bind(t,ot)})})))}function yn(n,t,e){return!(r(n)&&(!t||e.tests[t]&&0!==e.tests[t].testCount))}function mn(n){return!(Q()&&(!n||Q(n)))}function bn(n,t){var r=et.bind({},n);(0,U().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Nn(n){return n.forEach((function(n){return n()}))}function En(){var n=et.useX();return n.bus||A(),n.bus}function Cn(n){return wn("only","tests",n)}function On(n){return wn("skip","tests",n)}function wn(n,t,r){var e=et.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){d(r)&&(e.exclusion[t][r]="only"===n)}))}function Tn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Sn(n){A("Wrong arguments passed to group. Group "+n+".")}function kn(n){var t=n.asyncTest,e=n.message;if(t&&r(t.then)){var u=En().emit,i=U(),o=et.bind({stateRef:i},(function(){u(jn.TEST_COMPLETED,n)}));i=et.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=d(t)?t:e,n.fail(),(0,J()[1])((function(n){return n.slice(0)})),o())}));try{t.then(o,i)}catch(n){i()}}}function xn(n){var t=U().testObjectsCursor()[0],e=U().prevTestObjects()[0];if(z(t=i(e[t],n)),function(n){var t=n.fieldName;n=n.groupName;var r=et.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=et.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||!Tn(e)&&!1!==e[t])}return!u&&Tn(e)}(n))return n.skip(),V(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),z(n),V(),n.isUntested()){t=En().emit,e=function(n){return et.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,p(n.message)&&d(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{e&&r(e.then)?(n.asyncTest=e,n.setPending(),kn(n)):t(jn.TEST_COMPLETED,n)}catch(t){A("Your test function "+n.fieldName+" returned "+JSON.stringify(e)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&r(t.then)&&(n.setPending(),kn(n));return n}function Pn(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=et.useX();return xn(t=new st(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var jn,Fn,Wn=function(){return Wn=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},Wn.apply(this,arguments)},An=Object.assign,Rn=a(f),In=a(l),qn=a(p),Bn=a(g),Dn=a(v),Gn=a(h),Xn=a(b),Kn=a(N),_n=a(C),Ln=a(O),Mn=a(w),Un=a(T),Jn=a(S),zn=a(k),Vn=a(d),Yn=a(x),Hn=a(j),Qn=a(F),Zn=a(W),$n=R((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?An(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:An(r,{parent:I})})),nt=An({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Bn,doesNotStartWith:Zn,endsWith:g,equals:v,greaterThan:y,greaterThanOrEquals:m,gt:y,gte:m,inside:b,isArray:N,isBetween:C,isBoolean:O,isEmpty:T,isEven:function(n){return!!h(n)&&0==n%2},isFalsy:Yn,isNaN:S,isNegative:k,isNotArray:Kn,isNotBetween:_n,isNotBoolean:Ln,isNotEmpty:Un,isNotNaN:Jn,isNotNull:In,isNotNumber:Mn,isNotNumeric:Gn,isNotString:Vn,isNotUndefined:qn,isNull:l,isNumber:w,isNumeric:h,isOdd:function(n){return!!h(n)&&0!=n%2},isPositive:zn,isString:d,isTruthy:x,isUndefined:p,lengthEquals:f,lengthNotEquals:Rn,lessThan:P,lessThanOrEquals:E,longerThan:c,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:P,lte:E,matches:j,notEquals:Dn,notInside:Xn,notMatches:Hn,numberEquals:F,numberNotEquals:Qn,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:W},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass||r(t)})),o(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass&&r(t)})),o(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){s(t,n).pass&&r(o(!1))})),o(!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(c(e,1))return!1;(t=s(t,n)).pass&&e.push(t)})),o(f(e,1))},optional:function(n,t){return p(n)||null===n?o(!0):s(t,n)}},{shape:function(n,t){var r=q(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return o(!1);return o(!0)},loose:q,isArrayOf:function(n,t){return i(e(n,(function(n,r,e){(e=$n.run({value:n,set:!0,meta:{index:e}},(function(){return s(t,n)}))).pass||r(e)})),o(!0))}}),tt=(Fn=Wn({context:function(){return $n.useX()},extend:function(n){An(nt,n)}},{partial:_}),D()?new Proxy(An(X,Fn),{get:function(n,t){return t in n?n[t]:nt[t]?K(t):void 0}}):(B((function(n){Fn[n]=K(n)})),Fn)),rt=function(n){return function(){return""+n++}}(0),et=R((function(n,t){return t?null:An({},{exclusion:{tests:{},groups:{}}},n)})),ut=M(20),it=M(20),ot=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=hn(),yn(r,n,t))return t;var e=function(){return r(vn())};return mn(n)?(e(),t):(bn(e,n),t)};(jn||(jn={})).TEST_COMPLETED="test_completed",Cn.group=function(n){return wn("only","groups",n)},On.group=function(n){return wn("skip","groups",n)};var st=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=rt(),this.warns=!1,this.status=at,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,p(this.message)&&d(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(dt)},n.prototype.fail=function(){this.setStatus(this.warns?lt:ct)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(pt)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(ft)},n.prototype.cancel=function(){this.setStatus(gt),function(n){(0,J()[1])((function(t){var r=t.indexOf(n);return-1!==r&&t.splice(r,1),[].concat(t)}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===dt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isUntested=function(){return this.status===at},n.prototype.isFailing=function(){return this.status===ct},n.prototype.isCanceled=function(){return this.status===gt},n.prototype.isSkipped=function(){return this.status===ft},n.prototype.isPassing=function(){return this.status===pt},n.prototype.isWarning=function(){return this.status===lt},n}(),at="UNTESTED",ft="SKIPPED",ct="FAILED",lt="WARNING",pt="PASSING",dt="PENDING",gt="CANCELED",vt=An(Pn,{each:function(n){return function(r){return Array.isArray(r)||A("test.each: Expected table to be an array."),function(e){for(var i=[],o=1;o<arguments.length;o++)i[o-1]=arguments[o];var s=(i=i.reverse())[0],a=i[1];return r.map((function(r){return r=[].concat(r),n(u.apply(void 0,t([e],r,!1)),u.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(Pn),memo:function(n){var t=M(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=U().suiteId()[0];var i=U().testObjectsCursor()[0],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)})):xn(u[1])}}(Pn)});n.VERSION="4.0.0-dev-392d56",n.create=function(n){r(n)||A("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(jn.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=U().testCallbacks()[0].fieldCallbacks;n&&!Q(n)&&Array.isArray(t[n])&&Nn(t[n]),n=U().testCallbacks()[0].doneCallbacks,Q()||Nn(n)}})),n}(),e=function(n){function t(n,t){return i.references.push(),e(n,u(t)),function(){return[i.references[n],function(t){return e(n,u(t,i.references[n]))}]}}function e(t,e){var u=i.references[t];i.references[t]=e,r(t=o[t][1])&&t(e,u),r(n)&&n()}var i={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){i.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),i=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(e,{suiteId:rt()});return An(et.bind({stateRef:i,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var u=J()[0];return r=U().prevTestObjects()[1],e.reset(),r((function(){return u})),n.apply(void 0,t),hn()})),{get:et.bind({stateRef:i},vn),remove:et.bind({stateRef:i},(function(n){var t=J()[0];[].concat(t).forEach((function(t){L(t,n)&&t.cancel()}))})),reset:e.reset})},n.enforce=tt,n.group=function(n,t){d(n)||Sn("name must be a string"),r(t)||Sn("callback must be a function"),et.run({groupName:n},t)},n.only=Cn,n.optional=function(n){(0,U().optionalFields()[1])((function(t){return[].concat(n).forEach((function(n){t[n]=!0})),t}))},n.skip=On,n.skipWhen=function(n,t){et.run({skipped:u(n)},(function(){return t()}))},n.test=vt,n.warn=function(){var n=et.useX("warn hook called outside of a running suite.");n.currentTest||A("warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
1
+ "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){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)}function r(n){return"function"==typeof n}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){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return r(n)?n.apply(void 0,t):n}function i(n,t){var r;return null!==(r=u(n))&&void 0!==r?r:t}function o(n,t){return n={pass:n},t&&(n.message=t),n}function s(n,t){try{return n.run(t)}catch(n){return o(!1)}}function a(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function c(n,t){return n.length===Number(t)}function f(n,t){return n.length>Number(t)}function l(n){return null===n}function p(n){return void 0===n}function d(n){return String(n)===n}function g(n,t){return d(n)&&d(t)&&n.endsWith(t)}function v(n,t){return n===t}function h(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function y(n,t){return h(n)&&h(t)&&Number(n)>Number(t)}function m(n,t){return h(n)&&h(t)&&Number(n)>=Number(t)}function b(n,t){return!!(Array.isArray(t)||d(t)&&d(n))&&-1!==t.indexOf(n)}function N(n){return!!Array.isArray(n)}function E(n,t){return h(n)&&h(t)&&Number(n)<=Number(t)}function C(n,t,r){return m(n,t)&&E(n,r)}function O(n){return!!n===n}function w(n){return"number"==typeof n}function T(n){if(n){if(w(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return c(n,0);if("object"==typeof n)return c(Object.keys(n),0)}return!0}function S(n){return Number.isNaN(n)}function x(n){return!!h(n)&&0>Number(n)}function k(n){return!!n}function P(n,t){return h(n)&&h(t)&&Number(n)<Number(t)}function j(n,t){return t instanceof RegExp?t.test(n):!!d(t)&&new RegExp(t).test(n)}function F(n,t){return h(n)&&h(t)&&Number(n)===Number(t)}function W(n,t){return d(n)&&d(t)&&n.startsWith(t)}function A(n,t){throw Error(i(t,n))}function I(n){function t(t,u){var i,o,s=r();return t=An({},s||{},null!==(i=null==n?void 0: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;return null!==(t=e.ctx)&&void 0!==t?t:A(i(n,"Context was used after it was closed"))}}}function R(){return null}function q(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=$n.run({value:e,set:!0,meta:{key:r}},(function(){return s(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return o(!0)}function B(n){for(var t in nt){var e=nt[t];r(e)&&n(t,e)}}function D(){return"function"==typeof Proxy}function G(n,r,e){for(var i=[],s=3;s<arguments.length;s++)i[s-3]=arguments[s];return O(n)||n&&O(n.pass)||A("Incorrect return value for rule: "+JSON.stringify(n)),O(n)?o(n):o(n.pass,u.apply(void 0,t([n.message,r,e],i,!1)))}function X(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=G.apply(void 0,t([$n.run({value:n},(function(){return e.apply(void 0,t([n],i,!1))})),u,n],i,!1))).pass){if(!T(o.message))throw o.message;A("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!D())return B((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=nt[t])return r(u,n,t)}});return u}function K(n){var r,s=[];return function n(a){return function(){for(var c=[],f=0;f<arguments.length;f++)c[f]=arguments[f];var l=nt[a];s.push((function(n){return G.apply(void 0,t([l.apply(void 0,t([n],c,!1)),a,n],c,!1))}));var p={run:function(n){return i(e(s,(function(t,e){var i,s=$n.run({value:n},(function(){return t(n)}));s.pass||e(o(!!s.pass,null!==(i=u(r,n,s.message))&&void 0!==i?i:s.message))})),o(!0))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return D()?p=new Proxy(p,{get:function(t,r){return nt[r]?n(r):t[r]}}):(B((function(t){p[t]=n(t)})),p)}}(n)}function _(n){var t,r={};for(t in n)r[t]=tt.optional(n[t]);return r}function L(n,t){return!(!t||n.fieldName!==t)}function M(n){void 0===n&&(n=10);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),t.length>n&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return c(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return c(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function U(){return et.useX().stateRef}function J(){return U().testObjects()}function z(n){var t=U().testObjectsCursor()[0],r=J();n!==r[0][t]&&(0,r[1])((function(r){return(r=r.slice(0))[t]=n,r}))}function V(){(0,U().testObjectsCursor()[1])((function(n){return n+1}))}function Y(n){return!!U().optionalFields()[0][n]}function H(){return J()[0].filter((function(n){return n.isPending()}))}function Q(n){var t=H();return!T(t)&&(n?t.some((function(t){return L(t,n)})):Un(t))}function Z(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 $(n,t,r){var e;void 0===r&&(r={});var u=(r=r||{}).group,i=r.fieldName;return t.reduce((function(t,r){return u&&r.groupName!==u||i&&!L(r,i)||"warnings"===n!=!!r.warns||!r.hasFailures()||(t[r.fieldName]=(t[r.fieldName]||[]).concat(r.message||[])),t}),Wn({},i&&((e={})[i]=[],e)))}function nn(n){return rn("errors",n)}function tn(n){return rn("warnings",n)}function rn(n,t){return n=$(n,J()[0],{fieldName:t}),t?n[t]:n}function en(n,t){return n=on("errors",n,t),t?n[t]:n}function un(n,t){return n=on("warnings",n,t),t?n[t]:n}function on(n,t,r){return t||A("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),$(n,J()[0],{group:t,fieldName:r})}function sn(n,t,r){return!(!n.hasFailures()||r&&!L(n,r)||"warnings"===t!=!!n.warns)}function an(n){return fn("errors",n)}function cn(n){return fn("warnings",n)}function fn(n,t){return J()[0].some((function(r){return sn(r,n,t)}))}function ln(n,t){return dn("errors",n,t)}function pn(n,t){return dn("warnings",n,t)}function dn(n,t,r){return J()[0].some((function(e){return t===e.groupName&&sn(e,n,r)}))}function gn(n,t){return!n.hasErrors(t)&&(!(T(J()[0])||t&&T(n.tests[t])||Un(H().filter((function(n){return!(t&&!L(n,t))&&!Y(n.fieldName)}))))&&function(n){return J()[0].every((function(t){return!!(n&&!L(t,n)||Y(t.fieldName))||t.isTested()}))}(t))}function vn(){var n=J()[0],t={stateRef:U()};return ut([n],et.bind(t,(function(){return An(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return J()[0].forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=Z(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=Z(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:et.bind(t,nn),getErrorsByGroup:et.bind(t,en),getWarnings:et.bind(t,tn),getWarningsByGroup:et.bind(t,un),hasErrors:et.bind(t,an),hasErrorsByGroup:et.bind(t,ln),hasWarnings:et.bind(t,cn),hasWarningsByGroup:et.bind(t,pn),isValid:et.bind(t,(function(n){return gn(vn(),n)}))})})))}function hn(){var n=J()[0],t={stateRef:U()};return it([n],et.bind(t,(function(){return An({},vn(),{done:et.bind(t,ot)})})))}function yn(n,t,e){return!(r(n)&&(!t||e.tests[t]&&0!==e.tests[t].testCount))}function mn(n){return!(Q()&&(!n||Q(n)))}function bn(n,t){var r=et.bind({},n);(0,U().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Nn(n){return n.forEach((function(n){return n()}))}function En(){var n=et.useX();return n.bus||A(),n.bus}function Cn(n){return wn("only","tests",n)}function On(n){return wn("skip","tests",n)}function wn(n,t,r){var e=et.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){d(r)&&(e.exclusion[t][r]="only"===n)}))}function Tn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Sn(n){A("Wrong arguments passed to group. Group "+n+".")}function xn(n){var t=n.asyncTest,e=n.message;if(t&&r(t.then)){var u=En().emit,i=U(),o=et.bind({stateRef:i},(function(){u(jn.TEST_COMPLETED,n)}));i=et.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=d(t)?t:e,n.fail(),(0,J()[1])((function(n){return n.slice(0)})),o())}));try{t.then(o,i)}catch(n){i()}}}function kn(n){var t=U().testObjectsCursor()[0],e=U().prevTestObjects()[0];if(z(t=i(e[t],n)),function(n){var t=n.fieldName;n=n.groupName;var r=et.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=et.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||!Tn(e)&&!1!==e[t])}return!u&&Tn(e)}(n))return n.skip(),V(),t;if(n!==t&&t.fieldName===n.fieldName&&t.groupName===n.groupName&&t.isPending()&&t.cancel(),z(n),V(),n.isUntested()){t=En().emit,e=function(n){return et.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){t=r,p(n.message)&&d(t)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{e&&r(e.then)?(n.asyncTest=e,n.setPending(),xn(n)):t(jn.TEST_COMPLETED,n)}catch(t){A("Your test function "+n.fieldName+" returned "+JSON.stringify(e)+'. Only "false" or a Promise are supported. Return values may cause unexpected behavior.')}}else(t=n.asyncTest)&&r(t.then)&&(n.setPending(),xn(n));return n}function Pn(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=et.useX();return kn(t=new st(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var jn,Fn,Wn=function(){return Wn=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},Wn.apply(this,arguments)},An=Object.assign,In=a(c),Rn=a(l),qn=a(p),Bn=a(g),Dn=a(v),Gn=a(h),Xn=a(b),Kn=a(N),_n=a(C),Ln=a(O),Mn=a(w),Un=a(T),Jn=a(S),zn=a(x),Vn=a(d),Yn=a(k),Hn=a(j),Qn=a(F),Zn=a(W),$n=I((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?An(r,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:An(r,{parent:R})})),nt=An({condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Bn,doesNotStartWith:Zn,endsWith:g,equals:v,greaterThan:y,greaterThanOrEquals:m,gt:y,gte:m,inside:b,isArray:N,isBetween:C,isBoolean:O,isEmpty:T,isEven:function(n){return!!h(n)&&0==n%2},isFalsy:Yn,isNaN:S,isNegative:x,isNotArray:Kn,isNotBetween:_n,isNotBoolean:Ln,isNotEmpty:Un,isNotNaN:Jn,isNotNull:Rn,isNotNumber:Mn,isNotNumeric:Gn,isNotString:Vn,isNotUndefined:qn,isNull:l,isNumber:w,isNumeric:h,isOdd:function(n){return!!h(n)&&0!=n%2},isPositive:zn,isString:d,isTruthy:k,isUndefined:p,lengthEquals:c,lengthNotEquals:In,lessThan:P,lessThanOrEquals:E,longerThan:f,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:P,lte:E,matches:j,notEquals:Dn,notInside:Xn,notMatches:Hn,numberEquals:F,numberNotEquals:Qn,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:W},{allOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass||r(t)})),o(!0))},anyOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){(t=s(t,n)).pass&&r(t)})),o(!1))},noneOf:function(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(e(t,(function(t,r){s(t,n).pass&&r(o(!1))})),o(!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(f(e,1))return!1;(t=s(t,n)).pass&&e.push(t)})),o(c(e,1))},optional:function(n,t){return p(n)||null===n?o(!0):s(t,n)}},{shape:function(n,t){var r=q(n,t);if(!r.pass)return r;for(var e in n)if(!Object.prototype.hasOwnProperty.call(t,e))return o(!1);return o(!0)},loose:q,isArrayOf:function(n,t){return i(e(n,(function(n,r,e){(e=$n.run({value:n,set:!0,meta:{index:e}},(function(){return s(t,n)}))).pass||r(e)})),o(!0))}}),tt=(Fn=Wn({context:function(){return $n.useX()},extend:function(n){An(nt,n)}},{partial:_}),D()?new Proxy(An(X,Fn),{get:function(n,t){return t in n?n[t]:nt[t]?K(t):void 0}}):(B((function(n){Fn[n]=K(n)})),Fn)),rt=function(n){return function(){return""+n++}}(0),et=I((function(n,t){return t?null:An({},{exclusion:{tests:{},groups:{}}},n)})),ut=M(20),it=M(20),ot=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=hn(),yn(r,n,t))return t;var e=function(){return r(vn())};return mn(n)?(e(),t):(bn(e,n),t)};(jn||(jn={})).TEST_COMPLETED="test_completed",Cn.group=function(n){return wn("only","groups",n)},On.group=function(n){return wn("skip","groups",n)};var st=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=rt(),this.warns=!1,this.status=at,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,p(this.message)&&d(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isCanceled()||(this.status=n)},n.prototype.setPending=function(){this.setStatus(dt)},n.prototype.fail=function(){this.setStatus(this.warns?lt:ft)},n.prototype.done=function(){this.isWarning()||this.isCanceled()||this.isFailing()||this.setStatus(pt)},n.prototype.warn=function(){this.warns=!0},n.prototype.skip=function(){this.setStatus(ct)},n.prototype.cancel=function(){this.setStatus(gt),function(n){(0,J()[1])((function(t){var r=t.indexOf(n);return-1!==r&&t.splice(r,1),[].concat(t)}))}(this)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===dt},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isUntested=function(){return this.status===at},n.prototype.isFailing=function(){return this.status===ft},n.prototype.isCanceled=function(){return this.status===gt},n.prototype.isSkipped=function(){return this.status===ct},n.prototype.isPassing=function(){return this.status===pt},n.prototype.isWarning=function(){return this.status===lt},n}(),at="UNTESTED",ct="SKIPPED",ft="FAILED",lt="WARNING",pt="PASSING",dt="PENDING",gt="CANCELED",vt=An(Pn,{each:function(n){return function(r){return Array.isArray(r)||A("test.each: Expected table to be an array."),function(e){for(var i=[],o=1;o<arguments.length;o++)i[o-1]=arguments[o];var s=(i=i.reverse())[0],a=i[1];return r.map((function(r){return r=[].concat(r),n(u.apply(void 0,t([e],r,!1)),u.apply(void 0,t([a],r,!1)),(function(){return s.apply(void 0,r)}))}))}}}(Pn),memo:function(n){var t=M(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=U().suiteId()[0];var i=U().testObjectsCursor()[0],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)}))):kn(u[1])}}(Pn)});n.VERSION="4.0.0-dev-deabb8",n.create=function(n){r(n)||A("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(jn.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=U().testCallbacks()[0].fieldCallbacks;n&&!Q(n)&&Array.isArray(t[n])&&Nn(t[n]),n=U().testCallbacks()[0].doneCallbacks,Q()||Nn(n)}})),n}(),e=function(n){function t(n,t){return i.references.push(),e(n,u(t)),function(){return[i.references[n],function(t){return e(n,u(t,i.references[n]))}]}}function e(t,e){var u=i.references[t];i.references[t]=e,r(t=o[t][1])&&t(e,u),r(n)&&n()}var i={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){i.references=[],o.forEach((function(n,r){return t(r,n[0])}))}}}(),i=function(n,t){var r=t.suiteId;return{optionalFields:n.registerStateKey((function(){return{}})),prevTestObjects:n.registerStateKey((function(){return[]})),suiteId:n.registerStateKey((function(){return r})),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(){return[]})),testObjectsCursor:n.registerStateKey((function(){return 0}))}}(e,{suiteId:rt()});return An(et.bind({stateRef:i,bus:t},(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var u=J()[0];return r=U().prevTestObjects()[1],e.reset(),r((function(){return u})),n.apply(void 0,t),hn()})),{get:et.bind({stateRef:i},vn),remove:et.bind({stateRef:i},(function(n){var t=J()[0];[].concat(t).forEach((function(t){L(t,n)&&t.cancel()}))})),reset:e.reset})},n.enforce=tt,n.group=function(n,t){d(n)||Sn("name must be a string"),r(t)||Sn("callback must be a function"),et.run({groupName:n},t)},n.only=Cn,n.optional=function(n){(0,U().optionalFields()[1])((function(t){return[].concat(n).forEach((function(n){t[n]=!0})),t}))},n.skip=On,n.skipWhen=function(n,t){et.run({skipped:u(n)},(function(){return t()}))},n.test=vt,n.warn=function(){var n=et.useX("warn hook called outside of a running suite.");n.currentTest||A("warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.0.0-dev-392d56",
2
+ "version": "4.0.0-dev-deabb8",
3
3
  "license": "MIT",
4
4
  "name": "vest",
5
5
  "author": "ealush",
package/types/vest.d.ts CHANGED
@@ -290,7 +290,7 @@ declare function skipWhen(conditional: boolean | ((...args: any[]) => boolean),
290
290
  /**
291
291
  * Runs a group callback.
292
292
  */
293
- declare function group(groupName: string, tests: () => any): void;
293
+ declare function group(groupName: string, tests: () => void): void;
294
294
  declare function optional$0(optionals: string | string[]): void;
295
295
  declare function testBase(fieldName: string, ...args: [
296
296
  message: string,
@@ -310,5 +310,5 @@ declare const _default: typeof testBase & {
310
310
  };
311
311
  };
312
312
  declare const test: typeof _default;
313
- declare const VERSION = "4.0.0-dev-392d56";
313
+ declare const VERSION = "4.0.0-dev-deabb8";
314
314
  export { test, create, only, skip, warn, group, optional$0 as optional, skipWhen, enforce, VERSION };