vest 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)>=Number(t)}function p(n){return!!Array.isArray(n)}function d(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function v(n,t){return c(n)&&c(t)&&Number(n)<=Number(t)}function h(n,t,e){return l(n,t)&&v(n,e)}function g(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function N(n,t){return n.length===Number(t)}function E(n){if(n){if(y(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return N(n,0);if("object"==typeof n)return N(Object.keys(n),0)}return!0}function b(n,t){return n in t}function T(n){return Number.isNaN(n)}function C(n){return!!c(n)&&0>Number(n)}function O(n){return!!n}function k(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function S(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function w(n,t){return n.length>Number(t)}function P(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function F(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function I(n,t){return o(n)&&o(t)&&n.startsWith(t)}function x(n){for(var e in ht){var r=ht[e];t(r)&&n(e,r)}}function W(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function X(n,t){var e;return null!==(e=W(n))&&void 0!==e?e:t}function _(n,t){throw Error(X(t,n))}function A(n,t){setTimeout((function(){_(n,t)}),0)}function D(n){function t(t,u){var i,o,s=e();return t=Hn({},s||{},null!==(i=W(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=r.ctx)&&void 0!==t?t:_(X(n,"Context was used after it was closed"))}}}function L(){return null}function R(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function U(){try{return t(Proxy)}catch(n){return!1}}function M(n,t){return n={pass:n},t&&(n.message=t),n}function j(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return m(n)||n&&m(n.pass)||_("Incorrect return value for rule: "+JSON.stringify(n)),m(n)?M(n):M(n.pass,W.apply(void 0,R([n.message,t,e],r)))}function G(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];if(!(i=j.apply(void 0,R([gt.run({value:n},(function(){return e.apply(void 0,R([n],u))})),r,n],u))).pass){if(!E(i.message))throw i.message;_("enforce/"+r+" failed with "+JSON.stringify(n))}return t}}var e={};if(!U())return x((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=ht[e])return t(r,n,e)}});return r}function K(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function q(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=ht[r];e.push((function(n){return j.apply(void 0,R([o.apply(void 0,R([n],u)),r,n],u))}));var s={run:function(n){return X(K(e,(function(e,r){var u,i=gt.run({value:n},(function(){return e(n)}));i.pass||r(M(!!i.pass,null!==(u=W(t,n,i.message))&&void 0!==u?u:i.message))})),M(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return U()?s=new Proxy(s,{get:function(t,e){return ht[e]?n(e):t[e]}}):(x((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function e(n,t,e){return u.references.push(),r(n,W(t,e)),function(){return[u.references[n],function(t){return r(n,W(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function H(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function V(n){return(n=[].concat(n))[n.length-1]}function Y(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return V(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,V(t)},removeLevel:function(){t.pop()},reset:n}}function J(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(J(u,t)):(u=t(u),Vn(u)&&e.push(u))}return e}function z(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(z(t)):[].concat(n).concat(t)}),[])}function Q(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=X(n[r],[]),n=n[r]}return n}function Z(n){void 0===n&&(n=1);var t=[],e=function(r,u){var i=e.get(r);return i?i[1]:(u=u(),t.unshift([r.concat(),u]),w(t,n)&&(t.length=n),u)};return e.invalidate=function(n){var e=t.findIndex((function(t){var e=t[0];return N(n,e.length)&&n.every((function(n,t){return n===e[t]}))}));-1<e&&t.splice(e,1)},e.get=function(n){return t[t.findIndex((function(t){var e=t[0];return N(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))]||null},e}function $(){return bt.useX().stateRef}function nn(){return $().testObjects()}function tn(){(0,nn()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function en(n){(0,nn()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function rn(){return z(J(nn()[0].current,(function(n){return n.isPending()?n:null})))}function un(){var n=nn()[0].current;return Tt([n],(function(){return z(n)}))}function on(){return bt.useX().testCursor.getCursor()}function sn(){return bt.useX().testCursor.next()}function an(n,e){if(n=void 0===(n=n.type)?qn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=on();return bt.run({isolate:{type:n,keys:r}},(function(){bt.useX().testCursor.addLevel(),r.prev=function(){var n=nn()[0].prev;return[].concat(Q(n,on())).reduce((function(n,t){return t instanceof Ot&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),en((function(n){return Q(n,u)[V(u)]=[],n}));var n=e();return bt.useX().testCursor.removeLevel(),sn(),n}))}}function cn(n,t){return!(!t||n.fieldName!==t)}function fn(n){var t=rn();return!E(t)&&(n?t.some((function(t){return cn(t,n)})):ot(t))}function ln(n,t){function e(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e("errorCount","errors"):t.isWarning()&&e("warnCount","warnings")),i}function pn(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){if(u&&e.groupName!==u)var r=!0;else i&&!cn(e,i)?r=!0:(r=e.warns(),r="warnings"===n!=!!r);return r||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),mt({},i&&((r={})[i]=[],r)))}function dn(n){return hn("errors",n)}function vn(n){return hn("warnings",n)}function hn(n,t){return n=pn(n,un(),{fieldName:t}),t?n[t]:n}function gn(n,t){return n=yn("errors",n,t),t?n[t]:n}function mn(n,t){return n=yn("warnings",n,t),t?n[t]:n}function yn(n,t,e){return t||_("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),pn(n,un(),{group:t,fieldName:e})}function Nn(n,t,e){return(e=!n.hasFailures()||e&&!cn(n,e))||(e="warnings"===t!=!!(n=n.warns())),!e}function En(n){return Tn("errors",n)}function bn(n){return Tn("warnings",n)}function Tn(n,t){return un().some((function(e){return Nn(e,n,t)}))}function Cn(n,t){return kn("errors",n,t)}function On(n,t){return kn("warnings",n,t)}function kn(n,t,e){return un().some((function(r){return t===r.groupName&&Nn(r,n,e)}))}function Sn(){var n=un(),t={stateRef:$()};return Xt([n],bt.bind(t,(function(){var n=$().suiteName()[0];return Hn(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return un().forEach((function(t){var e=t.fieldName,r=t.groupName;n.tests[e]=ln(n.tests,t),r&&(n.groups[r]=n.groups[r]||{},n.groups[r][e]=ln(n.groups[r],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:bt.bind(t,dn),getErrorsByGroup:bt.bind(t,gn),getWarnings:bt.bind(t,vn),getWarningsByGroup:bt.bind(t,mn),hasErrors:bt.bind(t,En),hasErrorsByGroup:bt.bind(t,Cn),hasWarnings:bt.bind(t,bn),hasWarningsByGroup:bt.bind(t,On),isValid:bt.bind(t,(function(n){var t=Sn(),e=un().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(e=!!n&&!!e[n])?n=!0:t.hasErrors(n)?n=!1:n=!(E(e=un())||n&&E(t.tests[n])||function(n){var t=$().optionalFields()[0];return ot(rn().filter((function(e){return!(n&&!cn(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=un(),e=$().optionalFields()[0];return t.every((function(t){return!(!n||cn(t,n))||!0===e[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n})),suiteName:n})})))}function wn(){var n=un(),t={stateRef:$()};return _t([n],bt.bind(t,(function(){return Hn({},Sn(),{done:bt.bind(t,At)})})))}function Pn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!E(r.tests[e].testCount)))}function Fn(n){return!(fn()&&(!n||fn(n)))}function In(n,t){var e=bt.bind({},n);(0,$().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function xn(n){return n.forEach((function(n){return n()}))}function Wn(){var n=function(){var n={};return{emit:function(t,e){n[t]&&n[t].forEach((function(n){n(e)}))},on:function(t,e){return n[t]||(n[t]=[]),n[t].push(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Ct.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var t=$().testCallbacks()[0].fieldCallbacks;n&&!fn(n)&&p(t[n])&&xn(t[n]),n=$().testCallbacks()[0].doneCallbacks,fn()||xn(n)}})),n.on(Ct.SUITE_COMPLETED,(function(){!function(){var n=$().optionalFields()[0];if(!E(n)){var e={};en((function(r){return J(r,(function(r){var u=r.fieldName;if(e.hasOwnProperty(u))e[r.fieldName]&&r.omit();else{var i=n[u];t(i)&&(e[u]=i(),e[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Ct.REMOVE_FIELD,(function(n){un().forEach((function(t){cn(t,n)&&(t.cancel(),function(n){en((function(t){return J(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Ct.RESET_FIELD,(function(n){un().forEach((function(t){cn(t,n)&&t.reset()}))})),n}function Xn(){var n=bt.useX();return n.bus||_(),n.bus}function _n(n){return Dn(0,"tests",n)}function An(n){return Dn(1,"tests",n)}function Dn(n,t,e){var r=bt.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Ln(n){for(var t in n)if(!0===n[t])return!0;return!1}function Rn(n){_("Wrong arguments passed to group. Group "+n+".")}function Un(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Xn().emit,i=$(),s=bt.bind({stateRef:i},(function(){tn(),u(Ct.TEST_COMPLETED,n)}));i=bt.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function Mn(n){var t=on();en((function(e){return Q(e,t)[V(t)]=n,e}))}function jn(n){var e=nn()[0].prev;if(E(e))Mn(n),e=n;else{var r=on();if(e=Q(e,r)[V(r)],i(n.key))!ot(r=e)||r.fieldName===n.fieldName&&r.groupName===n.groupName||(bt.useX().isolate.type!==qn.EACH&&A("Vest Critical Error: Tests called in different order than previous run.\n expected: "+e.fieldName+"\n received: "+n.fieldName+'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.'),function(){var n=nn(),t=n[1],e=n[0].prev;n=Q(e,on());var r=bt.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),Mn(e=X(e,n));else{e=n.key;var s=bt.useX().isolate.keys.prev[e];r=n,s&&(r=s),s=r;var a=bt.useX().isolate.keys.current;i(a[e])?a[e]=s:A('Encountered the same test key "'+e+"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."),Mn(e=r)}}if(bt.useX().omitted)return e.omit(),sn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,bt.useX().skipped)return!0;var e=bt.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){n:{var o=bt.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,n))var s=!1===o[n];else{for(s in o)if(!0===o[s]){s=!0;break n}s=!1}}if(s)return!0;if(!0===r.groups[n])return!(i||!Ln(u)&&!1!==u[t])}r=bt.useX().exclusion;n:{for(a in(s=bt.useX().exclusion).groups)if(s.groups[a]){var a=!0;break n}a=!1}return!(!a||n&&n in r.groups&&r.groups[n])||!i&&!!Ln(u)&&!W(e[t])}(n))return e.skip(!!bt.useX().skipped),sn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Mn(n),sn(),n.isUntested()){e=Xn(),r=function(n){return bt.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){t=e,u(n.message)&&o(t)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Un(n)):e.emit(Ct.TEST_COMPLETED,n)}catch(t){_("Your test function "+n.fieldName+' returned a value. Only "false" or Promise returns are supported.')}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),Un(n));return n}function Gn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:R([void 0],e);e=u[0],r=u[1],u=u[2],ft(n)&&Kn("fieldName","string"),t(r)||Kn("Test callback","function");var i=bt.useX();return jn(e=new Ot(n,r,{message:e,groupName:i.groupName,key:u}))}function Kn(n,t){_("Incompatible params passed to test function. "+n+" must be a "+t)}var qn,Bn,Hn=Object.assign,Vn=e(r),Yn=e(u),Jn=e(i),zn=e(s),Qn=e(a),Zn=e(c),$n=e(p),nt=e(d),tt=e(h),et=e(g),rt=e(m),ut=e(y),it=e(N),ot=e(E),st=e(b),at=e(T),ct=e(C),ft=e(o),lt=e(O),pt=e(k),dt=e(P),vt=e(F),ht={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:zn,doesNotStartWith:e(I),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:l,gt:f,gte:l,inside:d,isArray:p,isBetween:h,isBlank:g,isBoolean:m,isEmpty:E,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:lt,isKeyOf:b,isNaN:T,isNegative:C,isNotArray:$n,isNotBetween:tt,isNotBlank:et,isNotBoolean:rt,isNotEmpty:ot,isNotKeyOf:st,isNotNaN:at,isNotNull:Vn,isNotNullish:Jn,isNotNumber:ut,isNotNumeric:Zn,isNotString:ft,isNotUndefined:Yn,isNotValueOf:pt,isNull:r,isNullish:i,isNumber:y,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:ct,isString:o,isTruthy:O,isUndefined:u,isValueOf:k,lengthEquals:N,lengthNotEquals:it,lessThan:S,lessThanOrEquals:v,longerThan:w,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:S,lte:v,matches:P,notEquals:Qn,notInside:nt,notMatches:dt,numberEquals:F,numberNotEquals:vt,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:I},gt=D((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?Hn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Hn(e,{parent:L})})),mt=function(){return(mt=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)},yt=(Bn={context:function(){return gt.useX()},extend:function(n){Hn(ht,n)}},U()?new Proxy(Hn(G,Bn),{get:function(n,t){return t in n?n[t]:ht[t]?q(t):void 0}}):(x((function(n){Bn[n]=q(n)})),Hn(G,Bn))),Nt=function(n){return function(){return""+n++}}(0);!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(qn||(qn={}));var Et,bt=D((function(n,t){return t?null:Hn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:qn.DEFAULT,keys:{current:{},prev:{}}},testCursor:Y()},n)})),Tt=Z();!function(n){n.Error="error",n.Warning="warning"}(Et||(Et={}));var Ct,Ot=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=Nt(),this.severity=Et.Error,this.status=kt,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Wt||(this.status=n)},n.prototype.warns=function(){return this.severity===Et.Warning},n.prototype.setPending=function(){this.setStatus(It)},n.prototype.fail=function(){this.setStatus(this.warns()?Pt:wt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Ft)},n.prototype.warn=function(){this.severity=Et.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(St)},n.prototype.cancel=function(){this.setStatus(xt),tn()},n.prototype.reset=function(){this.status=kt,tn()},n.prototype.omit=function(){this.setStatus(Wt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.status===It},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===Wt},n.prototype.isUntested=function(){return this.status===kt},n.prototype.isFailing=function(){return this.status===wt},n.prototype.isCanceled=function(){return this.status===xt},n.prototype.isSkipped=function(){return this.status===St},n.prototype.isPassing=function(){return this.status===Ft},n.prototype.isWarning=function(){return this.status===Pt},n}(),kt="UNTESTED",St="SKIPPED",wt="FAILED",Pt="WARNING",Ft="PASSING",It="PENDING",xt="CANCELED",Wt="OMITTED",Xt=Z(20),_t=Z(20),At=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=wn(),Pn(e,n,t))return t;var r=function(){return e(Sn())};return Fn(n)?(r(),t):(In(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_COMPLETED="suite_completed"}(Ct||(Ct={})),_n.group=function(n){return Dn(0,"groups",n)},An.group=function(n){return Dn(1,"groups",n)};var Dt=Hn(Gn,{memo:function(n){var t=Z(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=bt.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[$().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):jn(r[1])}}(Gn)});n.VERSION="4.0.3",n.context=bt,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],t(r)||_("vest.create: Expected callback to be a function.");var u=Wn(),i=B();return n={stateRef:H(i,{suiteId:Nt(),suiteName:n}),bus:u},Hn(bt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:qn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Ct.SUITE_COMPLETED),wn()})),{get:bt.bind(n,Sn),remove:bt.bind(n,(function(n){u.emit(Ct.REMOVE_FIELD,n)})),reset:i.reset,resetField:bt.bind(n,(function(n){u.emit(Ct.RESET_FIELD,n)}))})},n.each=function(n,e){t(e)||_("callback must be a function"),an({type:qn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.enforce=yt,n.group=function(n,e){o(n)||Rn("name must be a string"),t(e)||Rn("callback must be a function"),an({type:qn.GROUP},(function(){bt.run({groupName:n},e)}))},n.include=function(n){function t(t){var e=bt.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?X(r.tests[n],!0):o(t)?!!r.tests[t]:W(t,W(Sn))}}var e=bt.useX();return n?(e.inclusion[n]=X(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){an({type:qn.OMIT_WHEN},(function(){bt.run({omitted:W(n,W(Sn))},(function(){return t()}))}))},n.only=_n,n.optional=function(n){(0,$().optionalFields()[1])((function(t){if(p(n)||o(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},n.skip=An,n.skipWhen=function(n,t){an({type:qn.SKIP_WHEN},(function(){bt.run({skipped:W(n,W(Sn))},(function(){return t()}))}))},n.test=Dt,n.warn=function(){var n=bt.useX("warn hook called outside of a running suite.");n.currentTest||_("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){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)>=Number(t)}function p(n){return!!Array.isArray(n)}function d(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function v(n,t){return c(n)&&c(t)&&Number(n)<=Number(t)}function h(n,t,e){return l(n,t)&&v(n,e)}function g(n){return i(n)||o(n)&&!n.trim()}function N(n){return!!n===n}function m(n){return"number"==typeof n}function y(n,t){return n.length===Number(t)}function E(n){if(n){if(m(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return y(n,0);if("object"==typeof n)return y(Object.keys(n),0)}return!0}function b(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return!!c(n)&&0>Number(n)}function C(n){return!!n}function O(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function R(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function I(n,t){return n.length>Number(t)}function k(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function A(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function _(n,t){return o(n)&&o(t)&&n.startsWith(t)}function F(n){for(var e in gt){var r=gt[e];t(r)&&n(e,r)}}function L(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function w(n,t){var e;return null!==(e=L(n))&&void 0!==e?e:t}function P(n,t){throw Error(w(t,n))}function W(n,t){setTimeout((function(){P(n,t)}),0)}function x(n){function t(t,u){var i,o,s=e();return t=Vn({},s||{},null!==(i=L(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=r.ctx)&&void 0!==t?t:P(w(n,"Context was used after it was closed"))}}}function G(){return null}function X(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function U(){try{return t(Proxy)}catch(n){return!1}}function D(n,t){return n={pass:n},t&&(n.message=t),n}function q(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return N(n)||n&&N(n.pass)||P("Incorrect return value for rule: "+JSON.stringify(n)),N(n)?D(n):D(n.pass,L.apply(void 0,X([n.message,t,e],r,!1)))}function K(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];if(!(i=q.apply(void 0,X([Nt.run({value:n},(function(){return e.apply(void 0,X([n],u,!1))})),r,n],u,!1))).pass){if(!E(i.message))throw i.message;P("enforce/".concat(r," failed with ").concat(JSON.stringify(n)))}return t}}var e={};if(!U())return F((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=gt[e])return t(r,n,e)}});return r}function j(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function B(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=gt[r];e.push((function(n){return q.apply(void 0,X([o.apply(void 0,X([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return w(j(e,(function(e,r){var u,i=Nt.run({value:n},(function(){return e(n)}));i.pass||r(D(!!i.pass,null!==(u=L(t,n,i.message))&&void 0!==u?u:i.message))})),D(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return U()?s=new Proxy(s,{get:function(t,e){return gt[e]?n(e):t[e]}}):(F((function(t){s[t]=n(t)})),s)}}(n)}function H(n){function e(n,t,e){return u.references.push(),r(n,L(t,e)),function(){return[u.references[n],function(t){return r(n,L(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function M(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function V(n){return(n=[].concat(n))[n.length-1]}function J(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return V(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,V(t)},removeLevel:function(){t.pop()},reset:n}}function Y(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(Y(u,t)):(u=t(u),Jn(u)&&e.push(u))}return e}function z(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(z(t)):[].concat(n).concat(t)}),[])}function Q(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=w(n[r],[]),n=n[r]}return n}function Z(n){function t(n){return e.findIndex((function(t){var e=t[0];return y(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),I(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function $(){return St.useX().stateRef}function nn(){return $().testObjects()}function tn(){(0,nn()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function en(n){(0,nn()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function rn(){return z(Y(nn()[0].current,(function(n){return n.isPending()?n:null})))}function un(){var n=nn()[0].current;return Tt([n],(function(){return z(n)}))}function on(){return St.useX().testCursor.getCursor()}function sn(){return St.useX().testCursor.next()}function an(n,e){if(n=void 0===(n=n.type)?Bn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=on();return St.run({isolate:{type:n,keys:r}},(function(){St.useX().testCursor.addLevel(),r.prev=function(){var n=nn()[0].prev;return[].concat(Q(n,on())).reduce((function(n,t){return t instanceof Ot&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),en((function(n){return Q(n,u)[V(u)]=[],n}));var n=e();return St.useX().testCursor.removeLevel(),sn(),n}))}}function cn(n,t){return!(!t||n.fieldName!==t)}function fn(n){var t=rn();return!E(t)&&(n?t.some((function(t){return cn(t,n)})):st(t))}function ln(n,t){function e(n){i[n===Ct.ERRORS?"errorCount":"warnCount"]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Ct.ERRORS):t.isWarning()&&e(Ct.WARNINGS)),i}function pn(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){if(u&&e.groupName!==u)var r=!0;else i&&!cn(e,i)?r=!0:(r=e.warns(),r=n===Ct.WARNINGS!=!!r);return r||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),mt({},i&&((r={})[i]=[],r)))}function dn(n){return hn(Ct.ERRORS,n)}function vn(n){return hn(Ct.WARNINGS,n)}function hn(n,t){return n=pn(n,un(),{fieldName:t}),t?n[t]:n}function gn(n,t){return n=mn(Ct.ERRORS,n,t),t?n[t]:n}function Nn(n,t){return n=mn(Ct.WARNINGS,n,t),t?n[t]:n}function mn(n,t,e){return t||P("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),pn(n,un(),{group:t,fieldName:e})}function yn(n,t,e){return(e=!n.hasFailures()||e&&!cn(n,e))||(n=n.warns(),e=t===Ct.WARNINGS!=!!n),!e}function En(n){return Sn(Ct.ERRORS,n)}function bn(n){return Sn(Ct.WARNINGS,n)}function Sn(n,t){return un().some((function(e){return yn(e,n,t)}))}function Tn(n,t){return On(Ct.ERRORS,n,t)}function Cn(n,t){return On(Ct.WARNINGS,n,t)}function On(n,t,e){return un().some((function(r){return t===r.groupName&&yn(r,n,e)}))}function Rn(){var n=un(),t={stateRef:$()};return Wt([n],St.bind(t,(function(){var n=$().suiteName()[0];return Vn(function(){var n=un(),t=Vn({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return n.forEach((function(n){var e=n.fieldName,r=n.groupName;t.tests[e]=ln(t.tests,n),r&&(t.groups[r]=t.groups[r]||{},t.groups[r][e]=ln(t.groups[r],n))})),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}(t)}(),{getErrors:St.bind(t,dn),getErrorsByGroup:St.bind(t,gn),getWarnings:St.bind(t,vn),getWarningsByGroup:St.bind(t,Nn),hasErrors:St.bind(t,En),hasErrorsByGroup:St.bind(t,Tn),hasWarnings:St.bind(t,bn),hasWarningsByGroup:St.bind(t,Cn),isValid:St.bind(t,(function(n){var t=Rn(),e=un().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(e=!!n&&!!e[n])?n=!0:t.hasErrors(n)?n=!1:n=!(E(e=un())||n&&E(t.tests[n])||function(n){var t=$().optionalFields()[0];return st(rn().filter((function(e){return!(n&&!cn(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=un(),e=$().optionalFields()[0];return t.every((function(t){return!(!n||cn(t,n))||!0===e[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n})),suiteName:n})})))}function In(){var n=un(),t={stateRef:$()};return xt([n],St.bind(t,(function(){return Vn({},Rn(),{done:St.bind(t,Gt)})})))}function kn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!E(r.tests[e].testCount)))}function An(n){return!(fn()&&(!n||fn(n)))}function _n(n,t){var e=St.bind({},n);(0,$().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Fn(n){return n.forEach((function(n){return n()}))}function Ln(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Pt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=$().testCallbacks()[0].fieldCallbacks;t&&!fn(t)&&p(e[t])&&Fn(e[t]),fn()||n.emit(Pt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Pt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=$().optionalFields()[0];if(!E(n)){var e={};en((function(r){return Y(r,(function(r){var u=r.fieldName;if(e.hasOwnProperty(u))e[r.fieldName]&&r.omit();else{var i=n[u];t(i)&&(e[u]=i(),e[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Pt.ALL_RUNNING_TESTS_FINISHED,(function(){Fn($().testCallbacks()[0].doneCallbacks)})),n.on(Pt.REMOVE_FIELD,(function(n){un().forEach((function(t){cn(t,n)&&(t.cancel(),function(n){en((function(t){return Y(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Pt.RESET_FIELD,(function(n){un().forEach((function(t){cn(t,n)&&t.reset()}))})),n}function wn(){var n=St.useX();return n.bus||P(),n.bus}function Pn(n){return xn(0,"tests",n)}function Wn(n){return xn(1,"tests",n)}function xn(n,t,e){var r=St.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Gn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Xn(n){P("Wrong arguments passed to group. Group ".concat(n,"."))}function Un(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=wn().emit,i=$(),s=St.bind({stateRef:i},(function(){tn(),u(Pt.TEST_COMPLETED,n)}));i=St.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function Dn(n){var t=on();en((function(e){return Q(e,t)[V(t)]=n,e}))}function qn(n){var e=nn()[0].prev;if(E(e))Dn(n),e=n;else{var r=on();if(e=Q(e,r)[V(r)],i(n.key))!st(r=e)||r.fieldName===n.fieldName&&r.groupName===n.groupName||(St.useX().isolate.type!==Bn.EACH&&W("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(e.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=nn(),t=n[1],e=n[0].prev;n=Q(e,on());var r=St.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),Dn(e=w(e,n));else{e=n.key;var s=St.useX().isolate.keys.prev[e];r=n,s&&(r=s),s=r;var a=St.useX().isolate.keys.current;i(a[e])?a[e]=s:W('Encountered the same test key "'.concat(e,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Dn(e=r)}}if(r=Mn.EAGER,r=!(St.useX().mode[0]!==r||!En(n.fieldName)))return sn(),n.skip(),n;if(St.useX().omitted)return e.omit(),sn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,St.useX().skipped)return!0;var e=St.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){n:{var o=St.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,n))var s=!1===o[n];else{for(s in o)if(!0===o[s]){s=!0;break n}s=!1}}if(s)return!0;if(!0===r.groups[n])return!(i||!Gn(u)&&!1!==u[t])}r=St.useX().exclusion;n:{for(a in(s=St.useX().exclusion).groups)if(s.groups[a]){var a=!0;break n}a=!1}return!(!a||n&&n in r.groups&&r.groups[n])||!i&&!!Gn(u)&&!L(e[t])}(n))return e.skip(!!St.useX().skipped),sn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Dn(n),sn(),n.isUntested()){e=wn(),r=function(n){return St.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){t=e,u(n.message)&&o(t)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Un(n)):e.emit(Pt.TEST_COMPLETED,n)}catch(t){P("Unexpected error encountered during test registration.\n Test Object: ".concat(n,".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),Un(n));return n}function Kn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:X([void 0],e,!0);e=u[0],r=u[1],u=u[2],lt(n)&&jn("fieldName","string"),t(r)||jn("Test callback","function");var i=St.useX();return qn(e=new Ot(n,r,{message:e,groupName:i.groupName,key:u}))}function jn(n,t){P("Incompatible params passed to test function. ".concat(n," must be a ").concat(t))}var Bn,Hn,Mn,Vn=Object.assign,Jn=e(r),Yn=e(u),zn=e(i),Qn=e(s),Zn=e(a),$n=e(c),nt=e(p),tt=e(d),et=e(h),rt=e(g),ut=e(N),it=e(m),ot=e(y),st=e(E),at=e(b),ct=e(S),ft=e(T),lt=e(o),pt=e(C),dt=e(O),vt=e(k),ht=e(A),gt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Qn,doesNotStartWith:e(_),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:l,gt:f,gte:l,inside:d,isArray:p,isBetween:h,isBlank:g,isBoolean:N,isEmpty:E,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:pt,isKeyOf:b,isNaN:S,isNegative:T,isNotArray:nt,isNotBetween:et,isNotBlank:rt,isNotBoolean:ut,isNotEmpty:st,isNotKeyOf:at,isNotNaN:ct,isNotNull:Jn,isNotNullish:zn,isNotNumber:it,isNotNumeric:$n,isNotString:lt,isNotUndefined:Yn,isNotValueOf:dt,isNull:r,isNullish:i,isNumber:m,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:ft,isString:o,isTruthy:C,isUndefined:u,isValueOf:O,lengthEquals:y,lengthNotEquals:ot,lessThan:R,lessThanOrEquals:v,longerThan:I,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:R,lte:v,matches:k,notEquals:Zn,notInside:tt,notMatches:vt,numberEquals:A,numberNotEquals:ht,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:_},Nt=x((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?Vn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Vn(e,{parent:G})})),mt=function(){return(mt=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)},yt=(Hn={context:function(){return Nt.useX()},extend:function(n){Vn(gt,n)}},U()?new Proxy(Vn(K,Hn),{get:function(n,t){return t in n?n[t]:gt[t]?B(t):void 0}}):(F((function(n){Hn[n]=B(n)})),Vn(K,Hn))),Et=function(n){return function(){return"".concat(n++)}}(0);!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(Bn||(Bn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Mn||(Mn={}));var bt,St=x((function(n,t){return t?null:Vn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Bn.DEFAULT,keys:{current:{},prev:{}}},mode:[Mn.ALL],testCursor:J()},n)})),Tt=Z();!function(n){n.Error="error",n.Warning="warning"}(bt||(bt={}));var Ct,Ot=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=Et(),this.severity=bt.Error,this.status=Rt,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==wt||(this.status=n)},n.prototype.warns=function(){return this.severity===bt.Warning},n.prototype.setPending=function(){this.setStatus(Ft)},n.prototype.fail=function(){this.setStatus(this.warns()?At:kt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(_t)},n.prototype.warn=function(){this.severity=bt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(It)},n.prototype.cancel=function(){this.setStatus(Lt),tn()},n.prototype.reset=function(){this.status=Rt,tn()},n.prototype.omit=function(){this.setStatus(wt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Ft)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(wt)},n.prototype.isUntested=function(){return this.statusEquals(Rt)},n.prototype.isFailing=function(){return this.statusEquals(kt)},n.prototype.isCanceled=function(){return this.statusEquals(Lt)},n.prototype.isSkipped=function(){return this.statusEquals(It)},n.prototype.isPassing=function(){return this.statusEquals(_t)},n.prototype.isWarning=function(){return this.statusEquals(At)},n.prototype.statusEquals=function(n){return this.status===n},n}(),Rt="UNTESTED",It="SKIPPED",kt="FAILED",At="WARNING",_t="PASSING",Ft="PENDING",Lt="CANCELED",wt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Ct||(Ct={}));var Pt,Wt=Z(20),xt=Z(20),Gt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=In(),kn(e,n,t))return t;var r=function(){return e(Rn())};return An(n)?(r(),t):(_n(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Pt||(Pt={})),Pn.group=function(n){return xn(0,"groups",n)},Wn.group=function(n){return xn(1,"groups",n)};var Xt=Vn(Kn,{memo:function(n){var t=Z(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=St.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[$().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):qn(r[1])}}(Kn)});n.VERSION="4.2.0",n.context=St,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],t(r)||P("vest.create: Expected callback to be a function.");var u=Ln(),i=H();return n={stateRef:M(i,{suiteId:Et(),suiteName:n}),bus:u},Vn(St.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:Bn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Pt.SUITE_CALLBACK_DONE_RUNNING),In()})),{get:St.bind(n,Rn),remove:St.bind(n,(function(n){u.emit(Pt.REMOVE_FIELD,n)})),reset:i.reset,resetField:St.bind(n,(function(n){u.emit(Pt.RESET_FIELD,n)}))})},n.each=function(n,e){t(e)||P("each callback must be a function"),an({type:Bn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Mn.EAGER;St.useX().mode[0]=n},n.enforce=yt,n.group=function(n,e){o(n)||Xn("name must be a string"),t(e)||Xn("callback must be a function"),an({type:Bn.GROUP},(function(){St.run({groupName:n},e)}))},n.include=function(n){function t(t){var e=St.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?w(r.tests[n],!0):o(t)?!!r.tests[t]:L(t,L(Rn))}}var e=St.useX();return n?(e.inclusion[n]=w(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){an({type:Bn.OMIT_WHEN},(function(){St.run({omitted:!!St.useX().omitted||L(n,L(Rn))},(function(){return t()}))}))},n.only=Pn,n.optional=function(n){(0,$().optionalFields()[1])((function(t){if(p(n)||o(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},n.skip=Wn,n.skipWhen=function(n,t){an({type:Bn.SKIP_WHEN},(function(){St.run({skipped:!!St.useX().skipped||L(n,L(Rn))},(function(){return t()}))}))},n.test=Xt,n.warn=function(){var n=St.useX("warn hook called outside of a running suite.");n.currentTest||P("warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "main": "../../dist/cjs/enforce/compose.js",
3
3
  "module": "../../dist/es/enforce/compose.production.js",
4
+ "unpkg": "../../dist/umd/enforce/compose.production.js",
5
+ "jsdelivr": "../../dist/umd/enforce/compose.production.js",
4
6
  "name": "compose",
5
7
  "types": "../../types/enforce/compose.d.ts",
6
8
  "private": true
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "main": "../../dist/cjs/enforce/compounds.js",
3
3
  "module": "../../dist/es/enforce/compounds.production.js",
4
+ "unpkg": "../../dist/umd/enforce/compounds.production.js",
5
+ "jsdelivr": "../../dist/umd/enforce/compounds.production.js",
4
6
  "name": "compounds",
5
7
  "types": "../../types/enforce/compounds.d.ts",
6
8
  "private": true
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "main": "../../dist/cjs/enforce/schema.js",
3
3
  "module": "../../dist/es/enforce/schema.production.js",
4
+ "unpkg": "../../dist/umd/enforce/schema.production.js",
5
+ "jsdelivr": "../../dist/umd/enforce/schema.production.js",
4
6
  "name": "schema",
5
7
  "types": "../../types/enforce/schema.d.ts",
6
8
  "private": true
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.1.0",
2
+ "version": "4.2.0",
3
3
  "license": "MIT",
4
4
  "name": "vest",
5
5
  "author": "ealush",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "context": "^2.0.1",
24
- "n4s": "^4.1.1"
24
+ "n4s": "^4.1.2"
25
25
  },
26
26
  "homepage": "https://vestjs.dev/",
27
27
  "exports": {
@@ -227,5 +227,7 @@
227
227
  },
228
228
  "./package.json": "./package.json",
229
229
  "./": "./"
230
- }
230
+ },
231
+ "unpkg": "./dist/umd/vest.production.js",
232
+ "jsdelivr": "./dist/umd/vest.production.js"
231
233
  }
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "main": "../dist/cjs/parser.js",
3
3
  "module": "../dist/es/parser.production.js",
4
+ "unpkg": "../dist/umd/parser.production.js",
5
+ "jsdelivr": "../dist/umd/parser.production.js",
4
6
  "name": "parser",
5
7
  "types": "../types/parser.d.ts",
6
8
  "private": true
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "main": "../dist/cjs/promisify.js",
3
3
  "module": "../dist/es/promisify.production.js",
4
+ "unpkg": "../dist/umd/promisify.production.js",
5
+ "jsdelivr": "../dist/umd/promisify.production.js",
4
6
  "name": "promisify",
5
7
  "types": "../types/promisify.d.ts",
6
8
  "private": true
package/types/vest.d.ts CHANGED
@@ -131,6 +131,7 @@ declare class VestTest {
131
131
  isSkipped(): boolean;
132
132
  isPassing(): boolean;
133
133
  isWarning(): boolean;
134
+ statusEquals(status: KStatus): boolean;
134
135
  }
135
136
  type TAsyncTest = Promise<string | void>;
136
137
  type TTestResult = TAsyncTest | boolean | void;
@@ -148,6 +149,10 @@ type IsolateKeys = {
148
149
  current: Record<string, VestTest>;
149
150
  prev: Record<string, VestTest>;
150
151
  };
152
+ declare enum Modes {
153
+ ALL = 0,
154
+ EAGER = 1
155
+ }
151
156
  type NestedArray<T> = Array<NestedArray<T> | T>;
152
157
  // eslint-disable-next-line max-lines-per-function
153
158
  declare function createState(onStateChange?: (...args: unknown[]) => unknown): TCreateStateReturn;
@@ -201,6 +206,9 @@ type CTXType = {
201
206
  groupName?: string;
202
207
  skipped?: boolean;
203
208
  omitted?: boolean;
209
+ mode: [
210
+ Modes
211
+ ];
204
212
  bus?: {
205
213
  on: (event: string, handler: (...args: any[]) => void) => {
206
214
  off: () => void;
@@ -259,6 +267,26 @@ declare function group(groupName: string, tests: () => void): void;
259
267
  declare function include(fieldName: string): {
260
268
  when: (condition: string | boolean | ((draft: TDraftResult) => boolean)) => void;
261
269
  };
270
+ /**
271
+ * Sets the suite to "eager" (fail fast) mode.
272
+ * Eager mode will skip running subsequent tests of a failing fields.
273
+ *
274
+ * @example
275
+ * // in the following example, the second test of username will not run
276
+ * // if the first test of username failed.
277
+ * const suite = create((data) => {
278
+ * eager();
279
+ *
280
+ * test('username', 'username is required', () => {
281
+ * enforce(data.username).isNotBlank();
282
+ * });
283
+ *
284
+ * test('username', 'username is too short', () => {
285
+ * enforce(data.username).longerThan(2);
286
+ * });
287
+ * });
288
+ */
289
+ declare function eager(): void;
262
290
  /**
263
291
  * Conditionally omits tests from the suite.
264
292
  *
@@ -316,5 +344,5 @@ declare const test: typeof testBase & {
316
344
  * Sets a running test to warn only mode.
317
345
  */
318
346
  declare function warn(): void;
319
- declare const VERSION = "4.0.3";
320
- export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include };
347
+ declare const VERSION = "4.2.0";
348
+ export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };