vest 4.3.3 → 4.4.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 d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function N(n,t){return l(n,t)||h(n,t)}function g(n,t,e){return d(n,t)&&N(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function R(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(Object.keys(n),0))}function O(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function _(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function I(n,t){return f(n.length,t)}function A(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function k(n,t){return o(n)&&o(t)&&n.startsWith(t)}function L(n){for(var e in Ot){var r=Ot[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 W(n,t){var e;return null!==(e=w(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?w(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=tt({},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){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function U(){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 X(){try{return t(Proxy)}catch(n){return!1}}function G(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?G(n):G(n.pass,w.apply(void 0,x([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=D.apply(void 0,x([St.run({value:n},(function(){return e.apply(void 0,x([n],u,!1))})),r,n],u,!1))).pass,R(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!X())return L((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Ot[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 K(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=Ot[r];e.push((function(n){return D.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=St.run({value:n},(function(){return e(n)}));i.pass||r(G(!!i.pass,null!==(u=w(t,n,i.message))&&void 0!==u?u:i.message))})),G(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return X()?s=new Proxy(s,{get:function(t,e){return Ot[e]?n(e):t[e]}}):(L((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(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 H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(M(u,t)):(u=t(u),et(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(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 Y(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return H(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,H(t)},removeLevel:function(){t.pop()},reset:n}}function z(){return It.useX().stateRef}function Q(n){return z().optionalFields()[0][n]}function Z(n,t){(0,z().optionalFields()[1])((function(e){var r;return tt(e,((r={})[n]=w(t,e[n]),r))}))}function $(n){var t;return null===(t=Q(n))||void 0===t?void 0:t[0]}function nn(){tn((function(n){return n}))}function tn(n){(0,z().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function en(){return rn().filter((function(n){return n.isPending()}))}function rn(){var n=z().testObjects()[0].current;return At([n],(function(){return V(n)}))}function un(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 on(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 sn(n){setTimeout((function(){throw Error(n)}),0)}function an(){return It.useX().testCursor.getCursor()}function cn(){return It.useX().testCursor.next()}function fn(n,e){n=void 0===(n=n.type)?Zn.DEFAULT:n,F(t(e));var r={current:{},prev:{}},u=an();return It.run({isolate:{type:n,keys:r}},(function(){It.useX().testCursor.addLevel(),r.prev=function(){var n=z().testObjects()[0].prev;return[].concat(J(n,an())).reduce((function(n,t){return t instanceof wt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),tn((function(n){return J(n,u)[H(u)]=[],n}));var n=e();return It.useX().testCursor.removeLevel(),cn(),n}))}function ln(n,t){return!(!t||n.fieldName!==t)}function dn(n,t){return rn().some((function(e){return e.hasFailures()?t&&!ln(e,t)?e=!1:(e=e.warns(),e=n===kt.WARNINGS==!!e):e=!1,e}))}function pn(n){if(n)var t,e=!0===(null===(t=Q(n))||void 0===t?void 0:t[1]);else e=!1;return!!e||!dn(kt.ERRORS,n)&&(!R(e=rn())&&!function(n){return Nt(en().filter((function(t){return!(n&&!ln(t,n))&&!0!==$(t.fieldName)})))}(n)&&function(n){return rn().every((function(t){return!(!n||ln(t,n))||(!0===$(t.fieldName)||t.isTested()||t.isOmitted())}))}(n))}function vn(){var n=It.useX().summary;return F(n),n}function hn(n,t){function e(n){i[n===kt.ERRORS?Lt.ERROR_COUNT:Lt.WARN_COUNT]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||tt({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(kt.ERRORS):t.isWarning()&&e(kt.WARNINGS)),i}function Nn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function gn(n,t){var e,r={};for(e in n)r[e]=n[e][t]||[];return r}function En(n){return yn(kt.ERRORS,n)}function mn(n){return yn(kt.WARNINGS,n)}function yn(n,t){var e=vn().tests;return t?Nn(e,n,t):gn(e,n)}function bn(n,t){return On(n,kt.ERRORS,t)}function Rn(n,t){return On(n,kt.WARNINGS,t)}function On(n,t,e){return n=vn().groups[n],e?Nn(n,t,e):gn(n,t)}function Sn(n){return Cn(Lt.ERROR_COUNT,n)}function Tn(n){return Cn(Lt.WARN_COUNT,n)}function Cn(n,t){var e,r=vn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function _n(n,t){return An(kt.ERRORS,n,t)}function In(n,t){return An(kt.WARNINGS,n,t)}function An(n,t,e){var r,u,i=vn();if(n=n===kt.ERRORS?Lt.ERROR_COUNT:Lt.WARN_COUNT,!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function kn(n){var t,e=vn();return n?!(null===(t=e.tests[n])||void 0===t||!t.valid):e.valid}function Ln(){var n=rn(),t={stateRef:z()};return jt([n],It.bind(t,(function(){var n=function(){var n=rn(),t=tt({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=hn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&pn(t.fieldName),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=hn(e[r],t)),n}),t),t.valid=pn(),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)}(),t=z().suiteName()[0],e={summary:n};return tt(n,{getErrors:It.bind(e,En),getErrorsByGroup:It.bind(e,bn),getWarnings:It.bind(e,mn),getWarningsByGroup:It.bind(e,Rn),hasErrors:It.bind(e,Sn),hasErrorsByGroup:It.bind(e,_n),hasWarnings:It.bind(e,Tn),hasWarningsByGroup:It.bind(e,In),isValid:It.bind(e,kn),suiteName:t})})))}function wn(n){var t=en();return!R(t)&&(n?t.some((function(t){return ln(t,n)})):Nt(t))}function Wn(){var n=rn(),t={stateRef:z()};return Kt([n],It.bind(t,(function(){return tt({},Ln(),{done:It.bind(t,Bt)})})))}function Fn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!R(r.tests[e].testCount)))}function Pn(n){return!(wn()&&(!n||wn(n)))}function Un(n,t){(0,z().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function xn(n){return n.forEach((function(n){return n()}))}function Xn(){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(qt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=z().testCallbacks()[0].fieldCallbacks;t&&!wn(t)&&p(e[t])&&xn(e[t]),wn()||n.emit(qt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(qt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),Z(n.fieldName,(function(n){return[n[0],!0]})))}if(!R(z().optionalFields()[0])){var e={};tn((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=$(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(qt.ALL_RUNNING_TESTS_FINISHED,(function(){xn(z().testCallbacks()[0].doneCallbacks)})),n.on(qt.REMOVE_FIELD,(function(n){rn().forEach((function(t){ln(t,n)&&(t.cancel(),function(n){tn((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(qt.RESET_FIELD,(function(n){rn().forEach((function(t){ln(t,n)&&t.reset()}))})),n}function Gn(){var n=It.useX();return F(n.bus),n.bus}function Dn(n){return jn(0,"tests",n)}function qn(n){return jn(1,"tests",n)}function jn(n,t,e){var r=It.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Kn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Bn(){var n,t=It.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function Hn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Mn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Gn().emit,i=z(),s=It.bind({stateRef:i},(function(){nn(),u(qt.TEST_COMPLETED,n)}));i=It.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 Vn(n){var t=z().testObjects()[0].prev;if(R(t))return Jn(n),n;var e=an();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=It.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=It.useX().isolate.keys.current;return i(r[t])?r[t]=e:sn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Jn(n),n}return!Nt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(It.useX().isolate.type===Zn.EACH||sn("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.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=z().testObjects(),t=n[1],e=n[0].prev;n=J(e,an());var r=It.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),Jn(n=W(t,n)),n}function Jn(n){var t=an();tn((function(e){return J(e,t)[H(t)]=n,e}))}function Yn(n){var e=nt.EAGER;if(e=!(It.useX().mode[0]!==e||!dn(kt.ERRORS,n.fieldName)))return n.skip(),Vn(n),cn(),n;if(e=Vn(n),It.useX().omitted)return e.omit(),cn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,It.useX().skipped)return!0;var e=It.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=It.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Bn())return!0;if(!0===r.groups[n])return!(i||!Kn(u)&&!1!==u[t])}return!!(n=!!Bn()&&!n)||!i&&!!Kn(u)&&!w(e[t])}(n))return e.skip(!!It.useX().skipped),cn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Jn(n),cn(),n.isUntested()){e=Gn();var r=function(n){return It.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Mn(n)):e.emit(qt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),Mn(n));return n}function zn(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],F(o(n),Qn("fieldName","string")),F(t(r),Qn("Test callback","function"));var i=It.useX();return Yn(e=new wt(n,r,{message:e,groupName:i.groupName,key:u}))}function Qn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var Zn,$n,nt,tt=Object.assign,et=e(r),rt=e(u),ut=e(i),it=e(s),ot=e(a),st=e(c),at=e(l),ct=e(p),ft=e(v),lt=e(g),dt=e(E),pt=e(m),vt=e(y),ht=e(b),Nt=e(R),gt=e(O),Et=e(S),mt=e(o),yt=e(C),bt=e(_),Rt=e(A),Ot={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:it,doesNotStartWith:e(k),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:g,isBlank:E,isBoolean:m,isEmpty:R,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:yt,isKeyOf:O,isNaN:S,isNegative:function(n){return h(n,0)},isNotArray:ct,isNotBetween:lt,isNotBlank:dt,isNotBoolean:pt,isNotEmpty:Nt,isNotKeyOf:gt,isNotNaN:Et,isNotNull:et,isNotNullish:ut,isNotNumber:vt,isNotNumeric:st,isNotString:mt,isNotUndefined:rt,isNotValueOf:bt,isNull:r,isNullish:i,isNumber:y,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:_,lengthEquals:b,lengthNotEquals:ht,lessThan:h,lessThanOrEquals:N,longerThan:I,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:N,matches:A,notEquals:ot,notInside:ft,notMatches:Rt,numberEquals:l,numberNotEquals:at,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return N(n.length,t)},startsWith:k},St=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?tt(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:tt(e,{parent:U})})),Tt=function(){function n(){if(!X())return L((function(n){t[n]=K(n)})),tt(q,t)}var t={context:function(){return St.useX()},extend:function(t){tt(Ot,t),n()}};return n(),new Proxy(tt(q,t),{get:function(n,t){return t in n?n[t]:Ot[t]?K(t):void 0}})}(),Ct=($n=0,function(){return"".concat($n++)});!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"}(Zn||(Zn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(nt||(nt={}));var _t,It=P((function(n,t){return t?null:tt({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Zn.DEFAULT,keys:{current:{},prev:{}}},mode:[nt.ALL],testCursor:Y()},n)})),At=B();!function(n){n.Error="error",n.Warning="warning"}(_t||(_t={}));var kt,Lt,wt=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=Ct(),this.severity=_t.Error,this.status=Wt,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!==Dt||(this.status=n)},n.prototype.warns=function(){return this.severity===_t.Warning},n.prototype.setPending=function(){this.setStatus(Xt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ut:Pt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(xt)},n.prototype.warn=function(){this.severity=_t.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(Ft)},n.prototype.cancel=function(){this.setStatus(Gt),nn()},n.prototype.reset=function(){this.status=Wt,nn()},n.prototype.omit=function(){this.setStatus(Dt)},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(Xt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Dt)},n.prototype.isUntested=function(){return this.statusEquals(Wt)},n.prototype.isFailing=function(){return this.statusEquals(Pt)},n.prototype.isCanceled=function(){return this.statusEquals(Gt)},n.prototype.isSkipped=function(){return this.statusEquals(Ft)},n.prototype.isPassing=function(){return this.statusEquals(xt)},n.prototype.isWarning=function(){return this.statusEquals(Ut)},n.prototype.statusEquals=function(n){return this.status===n},n}(),Wt="UNTESTED",Ft="SKIPPED",Pt="FAILED",Ut="WARNING",xt="PASSING",Xt="PENDING",Gt="CANCELED",Dt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(kt||(kt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Lt||(Lt={}));var qt,jt=B(1),Kt=B(20),Bt=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(),Fn(e,n,t))return t;var r=function(){return e(Ln())};return Pn(n)?(r(),t):(Un(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"}(qt||(qt={})),Dn.group=function(n){return jn(0,"groups",n)},qn.group=function(n){return jn(1,"groups",n)};var Ht=tt(zn,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=It.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[z().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)}))):Yn(r[1])}}(zn)});n.VERSION="4.3.3",n.context=It,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],F(t(r),"vest.create: Expected callback to be a function.");var u=Xn(),i=un();return n={stateRef:on(i,{suiteId:Ct(),suiteName:n}),bus:u},tt(It.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),fn({type:Zn.SUITE},(function(){r.apply(void 0,n)})),u.emit(qt.SUITE_CALLBACK_DONE_RUNNING),Wn()})),{get:It.bind(n,Ln),remove:It.bind(n,(function(n){u.emit(qt.REMOVE_FIELD,n)})),reset:i.reset,resetField:It.bind(n,(function(n){u.emit(qt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),fn({type:Zn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=nt.EAGER;It.useX().mode[0]=n},n.enforce=Tt,n.group=function(n,e){F(o(n),Hn("name must be a string")),F(t(e),Hn("callback must be a function")),fn({type:Zn.GROUP},(function(){It.run({groupName:n},e)}))},n.include=function(n){var t=It.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=It.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]:w(t,w(Ln))}}}},n.omitWhen=function(n,t){fn({type:Zn.OMIT_WHEN},(function(){It.run({omitted:!!It.useX().omitted||w(n,w(Ln))},(function(){return t()}))}))},n.only=Dn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){Z(n,[!0,!1])}));else for(var t in n)Z(t,[n[t],!1])},n.skip=qn,n.skipWhen=function(n,t){fn({type:Zn.SKIP_WHEN},(function(){It.run({skipped:!!It.useX().skipped||w(n,w(Ln))},(function(){return t()}))}))},n.test=Ht,n.warn=function(){var n=It.useX("warn hook called outside of a running suite.");F(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 d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function N(n,t){return l(n,t)||h(n,t)}function g(n,t,e){return d(n,t)&&N(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function R(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(Object.keys(n),0))}function O(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(n,t){return f(n.length,t)}function k(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function A(n,t){return o(n)&&o(t)&&n.startsWith(t)}function w(n){for(var e in wt){var r=wt[e];t(r)&&n(e,r)}}function x(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=x(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?x(t):t)}function L(n){function t(t,u){var i,o,s=e();return t=ct({},s||{},null!==(i=x(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){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function P(){return null}function U(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 G(){try{return t(Proxy)}catch(n){return!1}}function X(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?X(n):X(n.pass,x.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=D.apply(void 0,U([xt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,R(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!G())return w((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=wt[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 K(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=wt[r];e.push((function(n){return D.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(j(e,(function(e,r){var u,i=xt.run({value:n},(function(){return e(n)}));i.pass||r(X(!!i.pass,null!==(u=x(t,n,i.message))&&void 0!==u?u:i.message))})),X(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return G()?s=new Proxy(s,{get:function(t,e){return wt[e]?n(e):t[e]}}):(w((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(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]),_(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 H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(M(u,t)):(u=t(u),ft(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(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 Y(){var n=0;return{current:function(){return n},next:function(){n++}}}function z(n){setTimeout((function(){throw Error(n)}),0)}function Q(n,e){n=void 0===(n=n.type)?ot.DEFAULT:n,F(t(e));var r=$(n,Z());return n=Pt.run({isolate:r},(function(){return r.keys.prev=function(){var n=nn().testObjects()[0].prev;return[].concat(J(n,Z())).reduce((function(n,t){return t instanceof Dt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),on((function(n){var t=r.path;return J(n,t)[H(t)]=[],n})),e()})),Pt.useX().isolate.cursor.next(),n}function Z(){var n=Pt.useX().isolate;return n.path.concat(n.cursor.current())}function $(n,t){return void 0===t&&(t=[]),{cursor:Y(),keys:{current:{},prev:{}},path:t,type:n}}function nn(){return Pt.useX().stateRef}function tn(n){return nn().optionalFields()[0][n]}function en(n,t){(0,nn().optionalFields()[1])((function(e){var r;return ct(e,((r={})[n]=x(t,e[n]),r))}))}function rn(n){var t;return null===(t=tn(n))||void 0===t?void 0:t[0]}function un(){on((function(n){return n}))}function on(n){(0,nn().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function sn(){return an().filter((function(n){return n.isPending()}))}function an(){var n=nn().testObjects()[0].current;return Ut([n],(function(){return V(n)}))}function cn(n){function e(n,t,e){return u.references.push(),r(n,x(t,e)),function(){return[u.references[n],function(t){return r(n,x(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 fn(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 ln(n){return n===Gt.ERRORS?Xt.ERROR_COUNT:Xt.WARN_COUNT}function dn(n,t){return!(!t||n.fieldName!==t)}function pn(n,t){return an().some((function(e){return vn(e,n,t)}))}function vn(n,t,e){return(e=!n.hasFailures()||e&&!dn(n,e))||(n=n.warns(),e=t===Gt.WARNINGS!=!!n),!e}function hn(n){return!!Nn(n)||!pn(Gt.ERRORS,n)&&(!R(an())&&!function(n){return St(sn().filter((function(t){return gn(t,n)})))}(n)&&function(n){return an().every((function(t){return!(!n||dn(t,n))||En(t,n)}))}(n))}function Nn(n){return!!n&&!0===(null===(t=tn(n))||void 0===t?void 0:t[1]);var t}function gn(n,t){return!(t&&!dn(n,t))&&!0!==rn(n.fieldName)}function En(n,t){return!(!t||dn(n,t))||(!0===rn(n.fieldName)||n.isTested()||n.isOmitted())}function mn(){var n=Pt.useX().summary;return F(n),n}function yn(){var n=an(),t=ct({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=bn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&hn(t.fieldName);var r=n.groups,u=t.groupName;return u&&(r[u]=r[u]||{},r[u][t.fieldName]=bn(r[u],t),e=r[u][t.fieldName],!1===r[u][t.fieldName].valid?t=!1:t=!!Nn(t=t.fieldName)||!function(n,t,e){return an().some((function(r){return!zt(r,t)&&vn(r,n,e)}))}(Gt.ERRORS,u,t)&&!function(n,t){return St(sn().filter((function(e){return!zt(e,n)&&gn(e,t)})))}(u,t)&&function(n,t){return an().every((function(e){return!!zt(e,n)||En(e,t)}))}(u,t),e.valid=t),n}),t),t.valid=hn(),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)}function bn(n,t){function e(n){var t=ln(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||ct({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Gt.ERRORS):t.isWarning()&&e(Gt.WARNINGS)),i}function Rn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function On(n,t){var e,r={},u=ln(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function Sn(n){return Cn(Gt.ERRORS,n)}function Tn(n){return Cn(Gt.WARNINGS,n)}function Cn(n,t){var e=mn().tests;return t?Rn(e,n,t):On(e,n)}function In(n,t){return kn(n,Gt.ERRORS,t)}function _n(n,t){return kn(n,Gt.WARNINGS,t)}function kn(n,t,e){return n=mn().groups[n],e?Rn(n,t,e):On(n,t)}function An(n){return xn(Xt.ERROR_COUNT,n)}function wn(n){return xn(Xt.WARN_COUNT,n)}function xn(n,t){var e,r=mn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Wn(n,t){return Ln(Gt.ERRORS,n,t)}function Fn(n,t){return Ln(Gt.WARNINGS,n,t)}function Ln(n,t,e){var r,u,i=mn();if(n=ln(n),!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Pn(n){var t=mn();return n?!!Gn(t.tests,n):t.valid}function Un(n,t){if(!(n=mn().groups[n]))return!1;if(t)return Gn(n,t);for(var e in n)if(!Gn(n,e))return!1;return!0}function Gn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function Xn(){var n=an(),t={stateRef:nn()};return Qt([n],Pt.bind(t,(function(){var n=yn(),t=nn().suiteName()[0],e={summary:n};return ct(n,{getErrors:Pt.bind(e,Sn),getErrorsByGroup:Pt.bind(e,In),getWarnings:Pt.bind(e,Tn),getWarningsByGroup:Pt.bind(e,_n),hasErrors:Pt.bind(e,An),hasErrorsByGroup:Pt.bind(e,Wn),hasWarnings:Pt.bind(e,wn),hasWarningsByGroup:Pt.bind(e,Fn),isValid:Pt.bind(e,Pn),isValidByGroup:Pt.bind(e,Un),suiteName:t})})))}function Dn(n){var t=sn();return!R(t)&&(n?t.some((function(t){return dn(t,n)})):St(t))}function qn(){var n=an(),t={stateRef:nn()};return Zt([n],Pt.bind(t,(function(){return ct({},Xn(),{done:Pt.bind(t,$t)})})))}function jn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!R(r.tests[e].testCount)))}function Kn(n){return!(Dn()&&(!n||Dn(n)))}function Bn(n,t){(0,nn().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Hn(n){return n.forEach((function(n){return n()}))}function Mn(){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(Yt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=nn().testCallbacks()[0].fieldCallbacks;t&&!Dn(t)&&p(e[t])&&Hn(e[t]),Dn()||n.emit(Yt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Yt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),en(n.fieldName,(function(n){return[n[0],!0]})))}if(!R(nn().optionalFields()[0])){var e={};on((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=rn(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(Yt.ALL_RUNNING_TESTS_FINISHED,(function(){Hn(nn().testCallbacks()[0].doneCallbacks)})),n.on(Yt.REMOVE_FIELD,(function(n){an().forEach((function(t){dn(t,n)&&(t.cancel(),function(n){on((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Yt.RESET_FIELD,(function(n){an().forEach((function(t){dn(t,n)&&t.reset()}))})),n}function Vn(){var n=Pt.useX();return F(n.bus),n.bus}function Jn(n){return zn(0,"tests",n)}function Yn(n){return zn(1,"tests",n)}function zn(n,t,e){var r=Pt.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Qn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Zn(){var n,t=Pt.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function $n(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function nt(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Vn().emit,i=nn(),s=Pt.bind({stateRef:i},(function(){un(),u(Yt.TEST_COMPLETED,n)}));i=Pt.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 tt(n){var t=nn().testObjects()[0].prev;if(R(t))return et(n),n;var e=Z();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=Pt.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=Pt.useX().isolate.keys.current;return i(r[t])?r[t]=e:z('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),et(n),n}return!St(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(Pt.useX().isolate.type===ot.EACH||z("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.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().testObjects(),t=n[1],e=n[0].prev;n=J(e,Z());var r=Pt.useX().isolate.cursor.current();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),et(n=W(t,n)),n}function et(n){var t=Z();on((function(e){return J(e,t)[H(t)]=n,e}))}function rt(n){var e=Pt.useX().isolate.cursor,r=at.EAGER;if(r=!(Pt.useX().mode[0]!==r||!pn(Gt.ERRORS,n.fieldName)))return n.skip(),tt(n),e.next(),n;if(r=tt(n),Pt.useX().omitted)return r.omit(),e.next(),r;if(function(n){var t=n.fieldName;if(n=n.groupName,Pt.useX().skipped)return!0;var e=Pt.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=Pt.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Zn())return!0;if(!0===r.groups[n])return!(i||!Qn(u)&&!1!==u[t])}return!!(n=!!Zn()&&!n)||!i&&!!Qn(u)&&!x(e[t])}(n))return r.skip(!!Pt.useX().skipped),e.next(),r;if(n!==r&&r.fieldName===n.fieldName&&r.groupName===n.groupName&&r.isPending()&&r.cancel(),et(n),n.isUntested()){r=Vn();var u=function(n){return Pt.run({currentTest:n},(function(){return n.run()}))}(n);try{u&&t(u.then)?(n.asyncTest=u,n.setPending(),nt(n)):r.emit(Yt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(r=n.asyncTest)&&t(r.then)&&(n.setPending(),nt(n));return e.next(),n}function ut(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),it("fieldName","string")),F(t(r),it("Test callback","function"));var i=Pt.useX();return rt(e=new Dt(n,r,{message:e,groupName:i.groupName,key:u}))}function it(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var ot,st,at,ct=Object.assign,ft=e(r),lt=e(u),dt=e(i),pt=e(s),vt=e(a),ht=e(c),Nt=e(l),gt=e(p),Et=e(v),mt=e(g),yt=e(E),bt=e(m),Rt=e(y),Ot=e(b),St=e(R),Tt=e(O),Ct=e(S),It=e(o),_t=e(C),kt=e(I),At=e(k),wt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:pt,doesNotStartWith:e(A),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:g,isBlank:E,isBoolean:m,isEmpty:R,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:_t,isKeyOf:O,isNaN:S,isNegative:function(n){return h(n,0)},isNotArray:gt,isNotBetween:mt,isNotBlank:yt,isNotBoolean:bt,isNotEmpty:St,isNotKeyOf:Tt,isNotNaN:Ct,isNotNull:ft,isNotNullish:dt,isNotNumber:Rt,isNotNumeric:ht,isNotString:It,isNotUndefined:lt,isNotValueOf:kt,isNull:r,isNullish:i,isNumber:y,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:b,lengthNotEquals:Ot,lessThan:h,lessThanOrEquals:N,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:N,matches:k,notEquals:vt,notInside:Et,notMatches:At,numberEquals:l,numberNotEquals:Nt,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return N(n.length,t)},startsWith:A},xt=L((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?ct(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:ct(e,{parent:P})})),Wt=function(){function n(){if(!G())return w((function(n){t[n]=K(n)})),ct(q,t)}var t={context:function(){return xt.useX()},extend:function(t){ct(wt,t),n()}};return n(),new Proxy(ct(q,t),{get:function(n,t){return t in n?n[t]:wt[t]?K(t):void 0}})}(),Ft=(st=0,function(){return"".concat(st++)});!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"}(ot||(ot={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(at||(at={}));var Lt,Pt=L((function(n,t){return t?null:ct({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:$(ot.DEFAULT),mode:[at.ALL]},n)})),Ut=B();!function(n){n.Error="error",n.Warning="warning"}(Lt||(Lt={}));var Gt,Xt,Dt=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=Ft(),this.severity=Lt.Error,this.status=qt,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!==Jt||(this.status=n)},n.prototype.warns=function(){return this.severity===Lt.Warning},n.prototype.setPending=function(){this.setStatus(Mt)},n.prototype.fail=function(){this.setStatus(this.warns()?Bt:Kt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Ht)},n.prototype.warn=function(){this.severity=Lt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(jt)},n.prototype.cancel=function(){this.setStatus(Vt),un()},n.prototype.reset=function(){this.status=qt,un()},n.prototype.omit=function(){this.setStatus(Jt)},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(Mt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Jt)},n.prototype.isUntested=function(){return this.statusEquals(qt)},n.prototype.isFailing=function(){return this.statusEquals(Kt)},n.prototype.isCanceled=function(){return this.statusEquals(Vt)},n.prototype.isSkipped=function(){return this.statusEquals(jt)},n.prototype.isPassing=function(){return this.statusEquals(Ht)},n.prototype.isWarning=function(){return this.statusEquals(Bt)},n.prototype.statusEquals=function(n){return this.status===n},n}(),qt="UNTESTED",jt="SKIPPED",Kt="FAILED",Bt="WARNING",Ht="PASSING",Mt="PENDING",Vt="CANCELED",Jt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Gt||(Gt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Xt||(Xt={}));var Yt,zt=e((function(n,t){return n.groupName===t})),Qt=B(1),Zt=B(20),$t=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=qn(),jn(e,n,t))return t;var r=function(){return e(Xn())};return Kn(n)?(r(),t):(Bn(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"}(Yt||(Yt={})),Jn.group=function(n){return zn(0,"groups",n)},Yn.group=function(n){return zn(1,"groups",n)};var ne=ct(ut,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=Pt.useX().isolate.cursor.current();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[nn().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)}))):rt(r[1])}}(ut)});n.VERSION="4.4.0",n.context=Pt,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],F(t(r),"vest.create: Expected callback to be a function.");var u=Mn(),i=cn();return n={stateRef:fn(i,{suiteId:Ft(),suiteName:n}),bus:u},ct(Pt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),Q({type:ot.SUITE},(function(){r.apply(void 0,n)})),u.emit(Yt.SUITE_CALLBACK_DONE_RUNNING),qn()})),{get:Pt.bind(n,Xn),remove:Pt.bind(n,(function(n){u.emit(Yt.REMOVE_FIELD,n)})),reset:i.reset,resetField:Pt.bind(n,(function(n){u.emit(Yt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),Q({type:ot.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=at.EAGER;Pt.useX().mode[0]=n},n.enforce=Wt,n.group=function(n,e){F(o(n),$n("name must be a string")),F(t(e),$n("callback must be a function")),Q({type:ot.GROUP},(function(){Pt.run({groupName:n},e)}))},n.include=function(n){var t=Pt.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=Pt.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]:x(t,x(Xn))}}}},n.omitWhen=function(n,t){Q({type:ot.OMIT_WHEN},(function(){Pt.run({omitted:!!Pt.useX().omitted||x(n,x(Xn))},(function(){return t()}))}))},n.only=Jn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){en(n,[!0,!1])}));else for(var t in n)en(t,[n[t],!1])},n.skip=Yn,n.skipWhen=function(n,t){Q({type:ot.SKIP_WHEN},(function(){Pt.run({skipped:!!Pt.useX().skipped||x(n,x(Xn))},(function(){return t()}))}))},n.test=ne,n.warn=function(){var n=Pt.useX("warn hook called outside of a running suite.");F(n.currentTest,"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.3.3",
2
+ "version": "4.4.0",
3
3
  "license": "MIT",
4
4
  "name": "vest",
5
5
  "author": "ealush",
@@ -20,8 +20,8 @@
20
20
  "url": "https://github.com/ealush/vest.git/issues"
21
21
  },
22
22
  "dependencies": {
23
- "context": "^2.0.5",
24
- "n4s": "^4.1.6"
23
+ "context": "^2.0.6",
24
+ "n4s": "^4.1.7"
25
25
  },
26
26
  "homepage": "https://vestjs.dev/",
27
27
  "exports": {
@@ -3,16 +3,14 @@ type SuiteSummary = {
3
3
  tests: Tests;
4
4
  valid: boolean;
5
5
  } & SummaryBase;
6
- type GroupTestSummary = BaseTestSummary;
6
+ type GroupTestSummary = SingleTestSummary;
7
7
  type Groups = Record<string, Group>;
8
8
  type Group = Record<string, GroupTestSummary>;
9
9
  type Tests = Record<string, SingleTestSummary>;
10
- type SingleTestSummary = BaseTestSummary & {
11
- valid: boolean;
12
- };
13
- type BaseTestSummary = SummaryBase & {
10
+ type SingleTestSummary = SummaryBase & {
14
11
  errors: string[];
15
12
  warnings: string[];
13
+ valid: boolean;
16
14
  };
17
15
  type SummaryBase = {
18
16
  errorCount: number;
package/types/parser.d.ts CHANGED
@@ -3,16 +3,14 @@ type SuiteSummary = {
3
3
  tests: Tests;
4
4
  valid: boolean;
5
5
  } & SummaryBase;
6
- type GroupTestSummary = BaseTestSummary;
6
+ type GroupTestSummary = SingleTestSummary;
7
7
  type Groups = Record<string, Group>;
8
8
  type Group = Record<string, GroupTestSummary>;
9
9
  type Tests = Record<string, SingleTestSummary>;
10
- type SingleTestSummary = BaseTestSummary & {
11
- valid: boolean;
12
- };
13
- type BaseTestSummary = SummaryBase & {
10
+ type SingleTestSummary = SummaryBase & {
14
11
  errors: string[];
15
12
  warnings: string[];
13
+ valid: boolean;
16
14
  };
17
15
  type SummaryBase = {
18
16
  errorCount: number;
@@ -7,16 +7,14 @@ type SuiteSummary = {
7
7
  tests: Tests;
8
8
  valid: boolean;
9
9
  } & SummaryBase;
10
- type GroupTestSummary = BaseTestSummary;
10
+ type GroupTestSummary = SingleTestSummary;
11
11
  type Groups = Record<string, Group>;
12
12
  type Group = Record<string, GroupTestSummary>;
13
13
  type Tests = Record<string, SingleTestSummary>;
14
- type SingleTestSummary = BaseTestSummary & {
15
- valid: boolean;
16
- };
17
- type BaseTestSummary = SummaryBase & {
14
+ type SingleTestSummary = SummaryBase & {
18
15
  errors: string[];
19
16
  warnings: string[];
17
+ valid: boolean;
20
18
  };
21
19
  type SummaryBase = {
22
20
  errorCount: number;
@@ -36,13 +34,16 @@ declare function hasErrors(fieldName?: string): boolean;
36
34
  declare function hasWarnings(fieldName?: string): boolean;
37
35
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
38
36
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
37
+ declare function isValid(fieldName?: string): boolean;
38
+ declare function isValidByGroup(groupName: string, fieldName?: string): boolean;
39
39
  type SuiteResult = ReturnType<typeof genTestsSummary> & {
40
40
  /**
41
41
  * Returns whether the suite as a whole is valid.
42
42
  * Determined if there are no errors, and if no
43
43
  * required fields are skipped.
44
44
  */
45
- isValid: (fieldName?: string) => boolean;
45
+ isValid: typeof isValid;
46
+ isValidByGroup: typeof isValidByGroup;
46
47
  hasErrors: typeof hasErrors;
47
48
  hasWarnings: typeof hasWarnings;
48
49
  getErrors: typeof getErrors;
package/types/vest.d.ts CHANGED
@@ -58,16 +58,14 @@ type SuiteSummary = {
58
58
  tests: Tests;
59
59
  valid: boolean;
60
60
  } & SummaryBase;
61
- type GroupTestSummary = BaseTestSummary;
61
+ type GroupTestSummary = SingleTestSummary;
62
62
  type Groups = Record<string, Group>;
63
63
  type Group = Record<string, GroupTestSummary>;
64
64
  type Tests = Record<string, SingleTestSummary>;
65
- type SingleTestSummary = BaseTestSummary & {
66
- valid: boolean;
67
- };
68
- type BaseTestSummary = SummaryBase & {
65
+ type SingleTestSummary = SummaryBase & {
69
66
  errors: string[];
70
67
  warnings: string[];
68
+ valid: boolean;
71
69
  };
72
70
  type SummaryBase = {
73
71
  errorCount: number;
@@ -87,13 +85,16 @@ declare function hasErrors(fieldName?: string): boolean;
87
85
  declare function hasWarnings(fieldName?: string): boolean;
88
86
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
89
87
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
88
+ declare function isValid(fieldName?: string): boolean;
89
+ declare function isValidByGroup(groupName: string, fieldName?: string): boolean;
90
90
  type SuiteResult = ReturnType<typeof genTestsSummary> & {
91
91
  /**
92
92
  * Returns whether the suite as a whole is valid.
93
93
  * Determined if there are no errors, and if no
94
94
  * required fields are skipped.
95
95
  */
96
- isValid: (fieldName?: string) => boolean;
96
+ isValid: typeof isValid;
97
+ isValidByGroup: typeof isValidByGroup;
97
98
  hasErrors: typeof hasErrors;
98
99
  hasWarnings: typeof hasWarnings;
99
100
  getErrors: typeof getErrors;
@@ -137,13 +138,9 @@ type Suite<T extends CB> = {
137
138
  */
138
139
  declare function create<T extends CB>(suiteName: string, suiteCallback: T): Suite<T>;
139
140
  declare function create<T extends CB>(suiteCallback: T): Suite<T>;
140
- declare function createCursor(): {
141
- addLevel: () => void;
142
- cursorAt: () => number;
143
- getCursor: () => number[];
144
- next: () => number;
145
- removeLevel: () => void;
146
- reset: () => void;
141
+ type IsolateCursor = {
142
+ current: () => number;
143
+ next: () => void;
147
144
  };
148
145
  declare enum IsolateTypes {
149
146
  DEFAULT = 0,
@@ -157,44 +154,43 @@ type IsolateKeys = {
157
154
  current: Record<string, VestTest>;
158
155
  prev: Record<string, VestTest>;
159
156
  };
157
+ type Isolate = {
158
+ type: IsolateTypes;
159
+ keys: IsolateKeys;
160
+ path: number[];
161
+ cursor: IsolateCursor;
162
+ };
160
163
  declare enum Modes {
161
164
  ALL = 0,
162
165
  EAGER = 1
163
166
  }
164
167
  type NestedArray<T> = Array<NestedArray<T> | T>;
165
- // eslint-disable-next-line max-lines-per-function
166
- declare function createState(onStateChange?: (...args: unknown[]) => unknown): CreateStateReturn;
167
- type StateInput<S> = S | ((prevState?: S) => S);
168
168
  type SetStateInput<S> = S | ((prevState: S) => S);
169
- type State = ReturnType<typeof createState>;
170
169
  type StateHandlerReturn<S> = [
171
170
  S,
172
171
  (nextState: SetStateInput<S>) => void
173
172
  ];
174
- type CreateStateReturn = {
175
- reset: () => void;
176
- registerStateKey: <S>(initialState?: StateInput<S> | undefined, onUpdate?: (() => void) | undefined) => () => StateHandlerReturn<S>;
173
+ type UseState<S> = () => StateHandlerReturn<S>;
174
+ type StateRef = {
175
+ optionalFields: UseState<OptionalFields>;
176
+ suiteId: UseState<string>;
177
+ suiteName: UseState<SuiteName>;
178
+ testCallbacks: UseState<TestCallbacks>;
179
+ testObjects: UseState<TestObjects>;
177
180
  };
178
- declare function createStateRef(state: State, { suiteId, suiteName }: {
179
- suiteId: string;
180
- suiteName?: void | string;
181
- }): {
182
- optionalFields: () => StateHandlerReturn<Record<string, [
183
- rule: boolean | (() => boolean),
184
- isApplied: boolean
185
- ]>>;
186
- suiteId: () => StateHandlerReturn<string>;
187
- suiteName: () => StateHandlerReturn<string | void>;
188
- testCallbacks: () => StateHandlerReturn<{
189
- fieldCallbacks: Record<string, ((res: SuiteResult) => void)[]>;
190
- doneCallbacks: ((res: SuiteResult) => void)[];
191
- }>;
192
- testObjects: () => StateHandlerReturn<{
193
- prev: NestedArray<VestTest>;
194
- current: NestedArray<VestTest>;
195
- }>;
181
+ type OptionalFields = Record<string, [
182
+ rule: (() => boolean) | boolean,
183
+ isApplied: boolean
184
+ ]>;
185
+ type SuiteName = string | void;
186
+ type TestCallbacks = {
187
+ fieldCallbacks: Record<string, Array<(res: SuiteResult) => void>>;
188
+ doneCallbacks: Array<(res: SuiteResult) => void>;
189
+ };
190
+ type TestObjects = {
191
+ prev: NestedArray<VestTest>;
192
+ current: NestedArray<VestTest>;
196
193
  };
197
- type StateRef = ReturnType<typeof createStateRef>;
198
194
  declare const _default: {
199
195
  run: <R>(ctxRef: Partial<CTXType>, fn: (context: CTXType) => R) => R;
200
196
  bind: <Fn extends (...args: any[]) => any>(ctxRef: Partial<CTXType>, fn: Fn) => Fn;
@@ -202,11 +198,7 @@ declare const _default: {
202
198
  useX: (errorMessage?: string | undefined) => CTXType;
203
199
  };
204
200
  type CTXType = {
205
- isolate: {
206
- type: IsolateTypes;
207
- keys: IsolateKeys;
208
- };
209
- testCursor: ReturnType<typeof createCursor>;
201
+ isolate: Isolate;
210
202
  stateRef?: StateRef;
211
203
  exclusion: {
212
204
  tests: Record<string, boolean>;
@@ -356,6 +348,6 @@ declare const test: typeof testBase & {
356
348
  * Sets a running test to warn only mode.
357
349
  */
358
350
  declare function warn(): void;
359
- declare const VERSION = "4.3.3";
351
+ declare const VERSION = "4.4.0";
360
352
  export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
361
353
  export type { SuiteResult, SuiteRunResult, SuiteSummary, VestTest, Suite };