vest 4.2.1-dev-ee64be → 4.2.3-dev-87ebfa

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/cjs/classnames.development.js +21 -8
  2. package/dist/cjs/classnames.production.js +1 -1
  3. package/dist/cjs/enforce/compose.development.js +27 -59
  4. package/dist/cjs/enforce/compose.production.js +1 -1
  5. package/dist/cjs/promisify.development.js +21 -8
  6. package/dist/cjs/promisify.production.js +1 -1
  7. package/dist/cjs/vest.development.js +322 -313
  8. package/dist/cjs/vest.production.js +1 -1
  9. package/dist/es/classnames.development.js +21 -8
  10. package/dist/es/classnames.production.js +1 -1
  11. package/dist/es/enforce/compose.development.js +27 -59
  12. package/dist/es/enforce/compose.production.js +1 -1
  13. package/dist/es/promisify.development.js +21 -8
  14. package/dist/es/promisify.production.js +1 -1
  15. package/dist/es/vest.development.js +322 -313
  16. package/dist/es/vest.production.js +1 -1
  17. package/dist/umd/classnames.development.js +21 -8
  18. package/dist/umd/classnames.production.js +1 -1
  19. package/dist/umd/enforce/compose.development.js +73 -83
  20. package/dist/umd/enforce/compose.production.js +1 -1
  21. package/dist/umd/enforce/compounds.development.js +18 -20
  22. package/dist/umd/enforce/compounds.production.js +1 -1
  23. package/dist/umd/enforce/schema.development.js +18 -20
  24. package/dist/umd/enforce/schema.production.js +1 -1
  25. package/dist/umd/promisify.development.js +21 -8
  26. package/dist/umd/promisify.production.js +1 -1
  27. package/dist/umd/vest.development.js +279 -277
  28. package/dist/umd/vest.production.js +1 -1
  29. package/package.json +1 -1
  30. package/testUtils/mockThrowError.ts +3 -6
  31. package/testUtils/suiteDummy.ts +5 -5
  32. package/types/classnames.d.ts +9 -8
  33. package/types/parser.d.ts +9 -8
  34. package/types/promisify.d.ts +9 -8
  35. package/types/vest.d.ts +69 -68
@@ -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 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 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 M(n){return(n=[].concat(n))[n.length-1]}function V(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(V(u,t)):(u=t(u),Jn(u)&&e.push(u))}return e}function J(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(J(t)):[].concat(n).concat(t)}),[])}function Y(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(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return M(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,M(t)},removeLevel:function(){t.pop()},reset:n}}function Q(){return St.useX().stateRef}function Z(){return Q().testObjects()}function $(){(0,Z()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function nn(n){(0,Z()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function tn(){return J(V(Z()[0].current,(function(n){return n.isPending()?n:null})))}function en(){var n=Z()[0].current;return Tt([n],(function(){return J(n)}))}function rn(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 un(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 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=Z()[0].prev;return[].concat(Y(n,on())).reduce((function(n,t){return t instanceof Ot&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),nn((function(n){return Y(n,u)[M(u)]=[],n}));var n=e();return St.useX().testCursor.removeLevel(),sn(),n}))}}function cn(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 fn(n,t){return!(!t||n.fieldName!==t)}function ln(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&&!fn(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 pn(n){return vn(Ct.ERRORS,n)}function dn(n){return vn(Ct.WARNINGS,n)}function vn(n,t){return n=ln(n,en(),{fieldName:t}),t?n[t]:n}function hn(n,t){return n=Nn(Ct.ERRORS,n,t),t?n[t]:n}function gn(n,t){return n=Nn(Ct.WARNINGS,n,t),t?n[t]:n}function Nn(n,t,e){return t||P("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),ln(n,en(),{group:t,fieldName:e})}function mn(n,t,e){return(e=!n.hasFailures()||e&&!fn(n,e))||(n=n.warns(),e=t===Ct.WARNINGS!=!!n),!e}function yn(n){return bn(Ct.ERRORS,n)}function En(n){return bn(Ct.WARNINGS,n)}function bn(n,t){return en().some((function(e){return mn(e,n,t)}))}function Sn(n,t){return Cn(Ct.ERRORS,n,t)}function Tn(n,t){return Cn(Ct.WARNINGS,n,t)}function Cn(n,t,e){return en().some((function(r){return t===r.groupName&&mn(r,n,e)}))}function On(){var n=en(),t={stateRef:Q()};return Wt([n],St.bind(t,(function(){var n=Q().suiteName()[0];return Vn(function(){var n=en(),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]=cn(t.tests,n),r&&(t.groups[r]=t.groups[r]||{},t.groups[r][e]=cn(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,pn),getErrorsByGroup:St.bind(t,hn),getWarnings:St.bind(t,dn),getWarningsByGroup:St.bind(t,gn),hasErrors:St.bind(t,yn),hasErrorsByGroup:St.bind(t,Sn),hasWarnings:St.bind(t,En),hasWarningsByGroup:St.bind(t,Tn),isValid:St.bind(t,(function(n){var t=On(),e=en().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=en())||n&&E(t.tests[n])||function(n){var t=Q().optionalFields()[0];return st(tn().filter((function(e){return!(n&&!fn(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=en(),e=Q().optionalFields()[0];return t.every((function(t){return!(!n||fn(t,n))||!0===e[t.fieldName]||t.isTested()||t.isOmitted()}))}(n),n})),suiteName:n})})))}function Rn(n){var t=tn();return!E(t)&&(n?t.some((function(t){return fn(t,n)})):st(t))}function In(){var n=en(),t={stateRef:Q()};return xt([n],St.bind(t,(function(){return Vn({},On(),{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!(Rn()&&(!n||Rn(n)))}function _n(n,t){var e=St.bind({},n);(0,Q().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=Q().testCallbacks()[0].fieldCallbacks;t&&!Rn(t)&&p(e[t])&&Fn(e[t]),Rn()||n.emit(Pt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Pt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=Q().optionalFields()[0];if(!E(n)){var e={};nn((function(r){return V(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(Q().testCallbacks()[0].doneCallbacks)})),n.on(Pt.REMOVE_FIELD,(function(n){en().forEach((function(t){fn(t,n)&&(t.cancel(),function(n){nn((function(t){return V(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Pt.RESET_FIELD,(function(n){en().forEach((function(t){fn(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=Q(),s=St.bind({stateRef:i},(function(){$(),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();nn((function(e){return Y(e,t)[M(t)]=n,e}))}function qn(n){var e=Z()[0].prev;if(E(e))Dn(n),e=n;else{var r=on();if(e=Y(e,r)[M(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=Z(),t=n[1],e=n[0].prev;n=Y(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||!yn(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(JSON.stringify(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:z()},n)})),Tt=H();!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),$()},n.prototype.reset=function(){this.status=Rt,$()},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=H(20),xt=H(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(On())};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=H(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=[Q().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.1-dev-ee64be",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=rn();return n={stateRef:un(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,On),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(On))}}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(On))},(function(){return t()}))}))},n.only=Pn,n.optional=function(n){(0,Q().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(On))},(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
+ "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 N(n){return i(n)||o(n)&&!n.trim()}function g(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 O(n){return!!c(n)&&0>Number(n)}function R(n){return!!n}function T(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function C(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 w(n){for(var e in mt){var r=mt[e];t(r)&&n(e,r)}}function F(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 L(n,t){var e;return null!==(e=F(n))&&void 0!==e?e:t}function W(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?F(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=Yn({},s||{},null!==(i=F(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 W(r.ctx,L(n,"Context was used after it was closed")),r.ctx}}}function x(){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 W(g(n)||n&&g(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),g(n)?X(n):X(n.pass,F.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 W((i=D.apply(void 0,U([yt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,E(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=mt[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 j(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=mt[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 L(K(e,(function(e,r){var u,i=yt.run({value:n},(function(){return e(n)}));i.pass||r(X(!!i.pass,null!==(u=F(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 mt[e]?n(e):t[e]}}):(w((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function e(n,t,e){return u.references.push(),r(n,F(t,e)),function(){return[u.references[n],function(t){return r(n,F(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 M(n){return(n=[].concat(n))[n.length-1]}function V(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return M(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,M(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),zn(u)&&e.push(u))}return e}function Y(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(Y(t)):[].concat(n).concat(t)}),[])}function z(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=L(n[r],[]),n=n[r]}return n}function Q(n){setTimeout((function(){throw Error(n)}),0)}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 Rt.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 Y(J(nn()[0].current,(function(n){return n.isPending()?n:null})))}function un(){var n=nn()[0].current;return Tt([n],(function(){return Y(n)}))}function on(){return Rt.useX().testCursor.getCursor()}function sn(){return Rt.useX().testCursor.next()}function an(n,e){if(n=void 0===(n=n.type)?Mn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=on();return Rt.run({isolate:{type:n,keys:r}},(function(){Rt.useX().testCursor.addLevel(),r.prev=function(){var n=nn()[0].prev;return[].concat(z(n,on())).reduce((function(n,t){return t instanceof kt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),en((function(n){return z(n,u)[M(u)]=[],n}));var n=e();return Rt.useX().testCursor.removeLevel(),sn(),n}))}}function cn(n,t){function e(n){i[n===Ct.ERRORS?It.ERROR_COUNT:It.WARN_COUNT]++,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 fn(n,t){return!(!t||n.fieldName!==t)}function ln(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&&!fn(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}),Et({},i&&((r={})[i]=[],r)))}function pn(n){return vn(Ct.ERRORS,n)}function dn(n){return vn(Ct.WARNINGS,n)}function vn(n,t){return n=ln(n,un(),{fieldName:t}),t?n[t]:n}function hn(n,t){return n=gn(Ct.ERRORS,n,t),t?n[t]:n}function Nn(n,t){return n=gn(Ct.WARNINGS,n,t),t?n[t]:n}function gn(n,t,e){return W(t,"get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),ln(n,un(),{group:t,fieldName:e})}function mn(n,t,e){return(e=!n.hasFailures()||e&&!fn(n,e))||(n=n.warns(),e=t===Ct.WARNINGS!=!!n),!e}function yn(n){return bn(Ct.ERRORS,n)}function En(n){return bn(Ct.WARNINGS,n)}function bn(n,t){return un().some((function(e){return mn(e,n,t)}))}function Sn(n,t){return Rn(Ct.ERRORS,n,t)}function On(n,t){return Rn(Ct.WARNINGS,n,t)}function Rn(n,t,e){return un().some((function(r){return t===r.groupName&&mn(r,n,e)}))}function Tn(n){var t=un().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(t=!!n&&!!t[n])||!yn(n)&&(!(E(t=un())||function(n){var t=un();return!!n&&!t.find((function(t){return t.fieldName===n}))}(n)||function(n){var t=$().optionalFields()[0];return ct(rn().filter((function(e){return!(n&&!fn(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=un(),e=$().optionalFields()[0];return t.every((function(t){return!(!n||fn(t,n))||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(n))}function Cn(){var n=un(),t={stateRef:$()};return Gt([n],Rt.bind(t,(function(){var n=$().suiteName()[0];return Yn(function(){var n=un(),t=Yn({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=cn(e,t),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=cn(e[r],t)),n}),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}(t)}(),{getErrors:Rt.bind(t,pn),getErrorsByGroup:Rt.bind(t,hn),getWarnings:Rt.bind(t,dn),getWarningsByGroup:Rt.bind(t,Nn),hasErrors:Rt.bind(t,yn),hasErrorsByGroup:Rt.bind(t,Sn),hasWarnings:Rt.bind(t,En),hasWarningsByGroup:Rt.bind(t,On),isValid:Rt.bind(t,Tn),suiteName:n})})))}function In(n){var t=rn();return!E(t)&&(n?t.some((function(t){return fn(t,n)})):ct(t))}function kn(){var n=un(),t={stateRef:$()};return Xt([n],Rt.bind(t,(function(){return Yn({},Cn(),{done:Rt.bind(t,Dt)})})))}function An(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!E(r.tests[e].testCount)))}function _n(n){return!(In()&&(!n||In(n)))}function wn(n,t){var e=Rt.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(Ut.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=$().testCallbacks()[0].fieldCallbacks;t&&!In(t)&&p(e[t])&&Fn(e[t]),In()||n.emit(Ut.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Ut.SUITE_CALLBACK_DONE_RUNNING,(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(Ut.ALL_RUNNING_TESTS_FINISHED,(function(){Fn($().testCallbacks()[0].doneCallbacks)})),n.on(Ut.REMOVE_FIELD,(function(n){un().forEach((function(t){fn(t,n)&&(t.cancel(),function(n){en((function(t){return J(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Ut.RESET_FIELD,(function(n){un().forEach((function(t){fn(t,n)&&t.reset()}))})),n}function Wn(){var n=Rt.useX();return W(n.bus),n.bus}function Pn(n){return Un(0,"tests",n)}function xn(n){return Un(1,"tests",n)}function Un(n,t,e){var r=Rt.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){return"Wrong arguments passed to group. Group ".concat(n,".")}function Dn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Wn().emit,i=$(),s=Rt.bind({stateRef:i},(function(){tn(),u(Ut.TEST_COMPLETED,n)}));i=Rt.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 qn(n){var t=nn()[0].prev;if(E(t))return Kn(n),n;var e=on();if(t=z(t,e)[M(e)],!i(n.key)){t=n.key,(e=Rt.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=Rt.useX().isolate.keys.current;return i(r[t])?r[t]=e:Q('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Kn(n),n}return!ct(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(Rt.useX().isolate.type===Mn.EACH||Q("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(),t=n[1],e=n[0].prev;n=z(e,on());var r=Rt.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),Kn(n=L(t,n)),n}function Kn(n){var t=on();en((function(e){return z(e,t)[M(t)]=n,e}))}function jn(n){var e=Jn.EAGER;if(e=!(Rt.useX().mode[0]!==e||!yn(n.fieldName)))return n.skip(),qn(n),sn(),n;if(e=qn(n),Rt.useX().omitted)return e.omit(),sn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,Rt.useX().skipped)return!0;var e=Rt.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=Rt.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=Rt.useX().exclusion;n:{for(a in(s=Rt.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)&&!F(e[t])}(n))return e.skip(!!Rt.useX().skipped),sn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Kn(n),sn(),n.isUntested()){e=Wn();var r=function(n){return Rt.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(),Dn(n)):e.emit(Ut.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(),Dn(n));return n}function Bn(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],W(o(n),Hn("fieldName","string")),W(t(r),Hn("Test callback","function"));var i=Rt.useX();return jn(e=new kt(n,r,{message:e,groupName:i.groupName,key:u}))}function Hn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var Mn,Vn,Jn,Yn=Object.assign,zn=e(r),Qn=e(u),Zn=e(i),$n=e(s),nt=e(a),tt=e(c),et=e(p),rt=e(d),ut=e(h),it=e(N),ot=e(g),st=e(m),at=e(y),ct=e(E),ft=e(b),lt=e(S),pt=e(O),dt=e(o),vt=e(R),ht=e(T),Nt=e(k),gt=e(A),mt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:$n,doesNotStartWith:e(_),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:l,gt:f,gte:l,inside:d,isArray:p,isBetween:h,isBlank:N,isBoolean:g,isEmpty:E,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:vt,isKeyOf:b,isNaN:S,isNegative:O,isNotArray:et,isNotBetween:ut,isNotBlank:it,isNotBoolean:ot,isNotEmpty:ct,isNotKeyOf:ft,isNotNaN:lt,isNotNull:zn,isNotNullish:Zn,isNotNumber:st,isNotNumeric:tt,isNotString:dt,isNotUndefined:Qn,isNotValueOf:ht,isNull:r,isNullish:i,isNumber:m,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:pt,isString:o,isTruthy:R,isUndefined:u,isValueOf:T,lengthEquals:y,lengthNotEquals:at,lessThan:C,lessThanOrEquals:v,longerThan:I,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:C,lte:v,matches:k,notEquals:nt,notInside:rt,notMatches:Nt,numberEquals:A,numberNotEquals:gt,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:_},yt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?Yn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Yn(e,{parent:x})})),Et=function(){return(Et=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)},bt=(Vn={context:function(){return yt.useX()},extend:function(n){Yn(mt,n)}},G()?new Proxy(Yn(q,Vn),{get:function(n,t){return t in n?n[t]:mt[t]?j(t):void 0}}):(w((function(n){Vn[n]=j(n)})),Yn(q,Vn))),St=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"}(Mn||(Mn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Jn||(Jn={}));var Ot,Rt=P((function(n,t){return t?null:Yn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Mn.DEFAULT,keys:{current:{},prev:{}}},mode:[Jn.ALL],testCursor:V()},n)})),Tt=Z();!function(n){n.Error="error",n.Warning="warning"}(Ot||(Ot={}));var Ct,It,kt=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=St(),this.severity=Ot.Error,this.status=At,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!==xt||(this.status=n)},n.prototype.warns=function(){return this.severity===Ot.Warning},n.prototype.setPending=function(){this.setStatus(Wt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ft:wt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Lt)},n.prototype.warn=function(){this.severity=Ot.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(_t)},n.prototype.cancel=function(){this.setStatus(Pt),tn()},n.prototype.reset=function(){this.status=At,tn()},n.prototype.omit=function(){this.setStatus(xt)},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(Wt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(xt)},n.prototype.isUntested=function(){return this.statusEquals(At)},n.prototype.isFailing=function(){return this.statusEquals(wt)},n.prototype.isCanceled=function(){return this.statusEquals(Pt)},n.prototype.isSkipped=function(){return this.statusEquals(_t)},n.prototype.isPassing=function(){return this.statusEquals(Lt)},n.prototype.isWarning=function(){return this.statusEquals(Ft)},n.prototype.statusEquals=function(n){return this.status===n},n}(),At="UNTESTED",_t="SKIPPED",wt="FAILED",Ft="WARNING",Lt="PASSING",Wt="PENDING",Pt="CANCELED",xt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Ct||(Ct={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(It||(It={}));var Ut,Gt=Z(20),Xt=Z(20),Dt=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=kn(),An(e,n,t))return t;var r=function(){return e(Cn())};return _n(n)?(r(),t):(wn(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"}(Ut||(Ut={})),Pn.group=function(n){return Un(0,"groups",n)},xn.group=function(n){return Un(1,"groups",n)};var qt=Yn(Bn,{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=Rt.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])}}(Bn)});n.VERSION="4.2.3-dev-87ebfa",n.context=Rt,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],W(t(r),"vest.create: Expected callback to be a function.");var u=Ln(),i=B();return n={stateRef:H(i,{suiteId:St(),suiteName:n}),bus:u},Yn(Rt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:Mn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Ut.SUITE_CALLBACK_DONE_RUNNING),kn()})),{get:Rt.bind(n,Cn),remove:Rt.bind(n,(function(n){u.emit(Ut.REMOVE_FIELD,n)})),reset:i.reset,resetField:Rt.bind(n,(function(n){u.emit(Ut.RESET_FIELD,n)}))})},n.each=function(n,e){W(t(e),"each callback must be a function"),an({type:Mn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Jn.EAGER;Rt.useX().mode[0]=n},n.enforce=bt,n.group=function(n,e){W(o(n),Xn("name must be a string")),W(t(e),Xn("callback must be a function")),an({type:Mn.GROUP},(function(){Rt.run({groupName:n},e)}))},n.include=function(n){function t(t){var e=Rt.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?L(r.tests[n],!0):o(t)?!!r.tests[t]:F(t,F(Cn))}}var e=Rt.useX();return n?(e.inclusion[n]=L(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){an({type:Mn.OMIT_WHEN},(function(){Rt.run({omitted:!!Rt.useX().omitted||F(n,F(Cn))},(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=xn,n.skipWhen=function(n,t){an({type:Mn.SKIP_WHEN},(function(){Rt.run({skipped:!!Rt.useX().skipped||F(n,F(Cn))},(function(){return t()}))}))},n.test=qt,n.warn=function(){var n=Rt.useX("warn hook called outside of a running suite.");W(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.2.1-dev-ee64be",
2
+ "version": "4.2.3-dev-87ebfa",
3
3
  "license": "MIT",
4
4
  "name": "vest",
5
5
  "author": "ealush",
@@ -1,16 +1,13 @@
1
1
  export default function mockThrowError() {
2
- const throwErrorDeferred = jest.fn();
3
- const throwError = jest.fn();
2
+ const deferThrow = jest.fn();
4
3
  jest.resetModules();
5
4
  jest.mock('throwError', () => ({
6
- throwErrorDeferred,
7
- default: throwError,
5
+ deferThrow,
8
6
  }));
9
7
  const vest = require('vest');
10
8
 
11
9
  return {
12
- throwErrorDeferred,
13
- throwError,
10
+ deferThrow,
14
11
  vest,
15
12
  };
16
13
  }
@@ -5,25 +5,25 @@ import { dummyTest } from './testDummy';
5
5
  import { optional, create, skip } from 'vest';
6
6
 
7
7
  export function failing(failingFields?: string | string[]) {
8
- return createSuiteResult(failingFields, fieldName => {
8
+ return createSuiteRunResult(failingFields, fieldName => {
9
9
  dummyTest.failing(fieldName);
10
10
  });
11
11
  }
12
12
 
13
13
  export function warning(failingFields?: string | string[]) {
14
- return createSuiteResult(failingFields, fieldName => {
14
+ return createSuiteRunResult(failingFields, fieldName => {
15
15
  dummyTest.failingWarning(fieldName);
16
16
  });
17
17
  }
18
18
 
19
19
  export function failingAsync(failingFields?: string | string[]) {
20
- return createSuiteResult(failingFields, fieldName => {
20
+ return createSuiteRunResult(failingFields, fieldName => {
21
21
  dummyTest.failingAsync(fieldName);
22
22
  });
23
23
  }
24
24
 
25
25
  export function passing(fields?: string | string[]) {
26
- return createSuiteResult(fields, fieldName => {
26
+ return createSuiteRunResult(fields, fieldName => {
27
27
  dummyTest.passing(fieldName);
28
28
  });
29
29
  }
@@ -87,7 +87,7 @@ export function untested(fields?: string | string[]) {
87
87
  return suite.get();
88
88
  }
89
89
 
90
- function createSuiteResult(
90
+ function createSuiteRunResult(
91
91
  fieldNames: string[] | string | undefined,
92
92
  callback: (fieldName?: string) => void // eslint-disable-line no-unused-vars
93
93
  ) {
@@ -2,8 +2,9 @@
2
2
  * Reads the testObjects list and gets full validation result from it.
3
3
  */
4
4
  declare function genTestsSummary(): TTestSummary;
5
+ type TGroups = Record<string, TTestGroup>;
5
6
  type TTestSummary = {
6
- groups: Record<string, TTestGroup>;
7
+ groups: TGroups;
7
8
  tests: TTestGroup;
8
9
  } & TTestSummaryBase;
9
10
  type TTestGroup = Record<string, TSingleTestSummary>;
@@ -28,7 +29,7 @@ declare function hasErrors(fieldName?: string): boolean;
28
29
  declare function hasWarnings(fieldName?: string): boolean;
29
30
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
30
31
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
31
- type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
32
+ type SuiteResult = ReturnType<typeof genTestsSummary> & {
32
33
  /**
33
34
  * Returns whether the suite as a whole is valid.
34
35
  * Determined if there are no errors, and if no
@@ -44,22 +45,22 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
44
45
  getErrorsByGroup: typeof getErrorsByGroup;
45
46
  getWarningsByGroup: typeof getWarningsByGroup;
46
47
  };
47
- type SuiteResult = ReadOnlySuiteResult & {
48
+ type SuiteRunResult = SuiteResult & {
48
49
  done: IDone;
49
50
  };
50
51
  interface IDone {
51
52
  (...args: [
52
- cb: (res: ReadOnlySuiteResult) => void
53
- ]): SuiteResult;
53
+ cb: (res: SuiteResult) => void
54
+ ]): SuiteRunResult;
54
55
  (...args: [
55
56
  fieldName: string,
56
- cb: (res: ReadOnlySuiteResult) => void
57
- ]): SuiteResult;
57
+ cb: (res: SuiteResult) => void
58
+ ]): SuiteRunResult;
58
59
  }
59
60
  /**
60
61
  * Creates a function that returns class names that match the validation result
61
62
  */
62
- declare function classnames(res: SuiteResult | ReadOnlySuiteResult, classes?: TSupportedClasses): (fieldName: string) => string;
63
+ declare function classnames(res: SuiteRunResult | SuiteResult, classes?: TSupportedClasses): (fieldName: string) => string;
63
64
  type TSupportedClasses = {
64
65
  valid?: string;
65
66
  tested?: string;
package/types/parser.d.ts CHANGED
@@ -2,8 +2,9 @@
2
2
  * Reads the testObjects list and gets full validation result from it.
3
3
  */
4
4
  declare function genTestsSummary(): TTestSummary;
5
+ type TGroups = Record<string, TTestGroup>;
5
6
  type TTestSummary = {
6
- groups: Record<string, TTestGroup>;
7
+ groups: TGroups;
7
8
  tests: TTestGroup;
8
9
  } & TTestSummaryBase;
9
10
  type TTestGroup = Record<string, TSingleTestSummary>;
@@ -28,7 +29,7 @@ declare function hasErrors(fieldName?: string): boolean;
28
29
  declare function hasWarnings(fieldName?: string): boolean;
29
30
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
30
31
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
31
- type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
32
+ type SuiteResult = ReturnType<typeof genTestsSummary> & {
32
33
  /**
33
34
  * Returns whether the suite as a whole is valid.
34
35
  * Determined if there are no errors, and if no
@@ -44,19 +45,19 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
44
45
  getErrorsByGroup: typeof getErrorsByGroup;
45
46
  getWarningsByGroup: typeof getWarningsByGroup;
46
47
  };
47
- type SuiteResult = ReadOnlySuiteResult & {
48
+ type SuiteRunResult = SuiteResult & {
48
49
  done: IDone;
49
50
  };
50
51
  interface IDone {
51
52
  (...args: [
52
- cb: (res: ReadOnlySuiteResult) => void
53
- ]): SuiteResult;
53
+ cb: (res: SuiteResult) => void
54
+ ]): SuiteRunResult;
54
55
  (...args: [
55
56
  fieldName: string,
56
- cb: (res: ReadOnlySuiteResult) => void
57
- ]): SuiteResult;
57
+ cb: (res: SuiteResult) => void
58
+ ]): SuiteRunResult;
58
59
  }
59
- declare function parse(res: SuiteResult | ReadOnlySuiteResult): {
60
+ declare function parse(res: SuiteRunResult | SuiteResult): {
60
61
  valid: (fieldName?: string) => boolean;
61
62
  tested: (fieldName?: string) => boolean;
62
63
  invalid: (fieldName?: string) => boolean;
@@ -2,8 +2,9 @@
2
2
  * Reads the testObjects list and gets full validation result from it.
3
3
  */
4
4
  declare function genTestsSummary(): TTestSummary;
5
+ type TGroups = Record<string, TTestGroup>;
5
6
  type TTestSummary = {
6
- groups: Record<string, TTestGroup>;
7
+ groups: TGroups;
7
8
  tests: TTestGroup;
8
9
  } & TTestSummaryBase;
9
10
  type TTestGroup = Record<string, TSingleTestSummary>;
@@ -28,7 +29,7 @@ declare function hasErrors(fieldName?: string): boolean;
28
29
  declare function hasWarnings(fieldName?: string): boolean;
29
30
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
30
31
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
31
- type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
32
+ type SuiteResult = ReturnType<typeof genTestsSummary> & {
32
33
  /**
33
34
  * Returns whether the suite as a whole is valid.
34
35
  * Determined if there are no errors, and if no
@@ -44,17 +45,17 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
44
45
  getErrorsByGroup: typeof getErrorsByGroup;
45
46
  getWarningsByGroup: typeof getWarningsByGroup;
46
47
  };
47
- type SuiteResult = ReadOnlySuiteResult & {
48
+ type SuiteRunResult = SuiteResult & {
48
49
  done: IDone;
49
50
  };
50
51
  interface IDone {
51
52
  (...args: [
52
- cb: (res: ReadOnlySuiteResult) => void
53
- ]): SuiteResult;
53
+ cb: (res: SuiteResult) => void
54
+ ]): SuiteRunResult;
54
55
  (...args: [
55
56
  fieldName: string,
56
- cb: (res: ReadOnlySuiteResult) => void
57
- ]): SuiteResult;
57
+ cb: (res: SuiteResult) => void
58
+ ]): SuiteRunResult;
58
59
  }
59
- declare const promisify: (validatorFn: (...args: any[]) => SuiteResult) => (...args: any[]) => Promise<ReadOnlySuiteResult>;
60
+ declare const promisify: (validatorFn: (...args: any[]) => SuiteRunResult) => (...args: any[]) => Promise<SuiteResult>;
60
61
  export { promisify as default };
package/types/vest.d.ts CHANGED
@@ -1,59 +1,11 @@
1
1
  import { enforce } from 'n4s';
2
- declare enum TestSeverity {
3
- Error = "error",
4
- Warning = "warning"
5
- }
6
- declare class VestTest {
7
- fieldName: string;
8
- testFn: TTestFn;
9
- asyncTest?: TAsyncTest;
10
- groupName?: string;
11
- message?: string;
12
- key?: null | string;
13
- id: string;
14
- severity: TestSeverity;
15
- status: KStatus;
16
- constructor(fieldName: string, testFn: TTestFn, { message, groupName, key }?: {
17
- message?: string;
18
- groupName?: string;
19
- key?: string;
20
- });
21
- run(): TTestResult;
22
- setStatus(status: KStatus): void;
23
- warns(): boolean;
24
- setPending(): void;
25
- fail(): void;
26
- done(): void;
27
- warn(): void;
28
- isFinalStatus(): boolean;
29
- skip(force?: boolean): void;
30
- cancel(): void;
31
- reset(): void;
32
- omit(): void;
33
- valueOf(): boolean;
34
- hasFailures(): boolean;
35
- isNonActionable(): boolean;
36
- isPending(): boolean;
37
- isTested(): boolean;
38
- isOmitted(): boolean;
39
- isUntested(): boolean;
40
- isFailing(): boolean;
41
- isCanceled(): boolean;
42
- isSkipped(): boolean;
43
- isPassing(): boolean;
44
- isWarning(): boolean;
45
- statusEquals(status: KStatus): boolean;
46
- }
47
- type TAsyncTest = Promise<string | void>;
48
- type TTestResult = TAsyncTest | boolean | void;
49
- type TTestFn = () => TTestResult;
50
- type KStatus = "UNTESTED" | "SKIPPED" | "FAILED" | "WARNING" | "PASSING" | "PENDING" | "CANCELED" | "OMITTED";
51
2
  /**
52
3
  * Reads the testObjects list and gets full validation result from it.
53
4
  */
54
5
  declare function genTestsSummary(): TTestSummary;
6
+ type TGroups = Record<string, TTestGroup>;
55
7
  type TTestSummary = {
56
- groups: Record<string, TTestGroup>;
8
+ groups: TGroups;
57
9
  tests: TTestGroup;
58
10
  } & TTestSummaryBase;
59
11
  type TTestGroup = Record<string, TSingleTestSummary>;
@@ -78,7 +30,7 @@ declare function hasErrors(fieldName?: string): boolean;
78
30
  declare function hasWarnings(fieldName?: string): boolean;
79
31
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
80
32
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
81
- type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
33
+ type SuiteResult = ReturnType<typeof genTestsSummary> & {
82
34
  /**
83
35
  * Returns whether the suite as a whole is valid.
84
36
  * Determined if there are no errors, and if no
@@ -94,27 +46,27 @@ type ReadOnlySuiteResult = ReturnType<typeof genTestsSummary> & {
94
46
  getErrorsByGroup: typeof getErrorsByGroup;
95
47
  getWarningsByGroup: typeof getWarningsByGroup;
96
48
  };
97
- type SuiteResult = ReadOnlySuiteResult & {
49
+ type SuiteRunResult = SuiteResult & {
98
50
  done: IDone;
99
51
  };
100
52
  interface IDone {
101
53
  (...args: [
102
- cb: (res: ReadOnlySuiteResult) => void
103
- ]): SuiteResult;
54
+ cb: (res: SuiteResult) => void
55
+ ]): SuiteRunResult;
104
56
  (...args: [
105
57
  fieldName: string,
106
- cb: (res: ReadOnlySuiteResult) => void
107
- ]): SuiteResult;
58
+ cb: (res: SuiteResult) => void
59
+ ]): SuiteRunResult;
108
60
  }
109
61
  type CreateProperties = {
110
- get: () => ReadOnlySuiteResult;
62
+ get: () => SuiteResult;
111
63
  reset: () => void;
112
64
  resetField: (fieldName: string) => void;
113
65
  remove: (fieldName: string) => void;
114
66
  };
115
67
  type CB = (...args: any[]) => void;
116
- type SuiteReturnType<T extends CB> = {
117
- (...args: Parameters<T>): SuiteResult;
68
+ type Suite<T extends CB> = {
69
+ (...args: Parameters<T>): SuiteRunResult;
118
70
  } & CreateProperties;
119
71
  /**
120
72
  * Creates a new validation suite
@@ -127,8 +79,57 @@ type SuiteReturnType<T extends CB> = {
127
79
  * });
128
80
  * });
129
81
  */
130
- declare function create<T extends CB>(suiteName: string, suiteCallback: T): SuiteReturnType<T>;
131
- declare function create<T extends CB>(suiteCallback: T): SuiteReturnType<T>;
82
+ declare function create<T extends CB>(suiteName: string, suiteCallback: T): Suite<T>;
83
+ declare function create<T extends CB>(suiteCallback: T): Suite<T>;
84
+ declare enum TestSeverity {
85
+ Error = "error",
86
+ Warning = "warning"
87
+ }
88
+ declare class VestTest {
89
+ fieldName: string;
90
+ testFn: TTestFn;
91
+ asyncTest?: TAsyncTest;
92
+ groupName?: string;
93
+ message?: string;
94
+ key?: null | string;
95
+ id: string;
96
+ severity: TestSeverity;
97
+ status: KStatus;
98
+ constructor(fieldName: string, testFn: TTestFn, { message, groupName, key }?: {
99
+ message?: string;
100
+ groupName?: string;
101
+ key?: string;
102
+ });
103
+ run(): TTestResult;
104
+ setStatus(status: KStatus): void;
105
+ warns(): boolean;
106
+ setPending(): void;
107
+ fail(): void;
108
+ done(): void;
109
+ warn(): void;
110
+ isFinalStatus(): boolean;
111
+ skip(force?: boolean): void;
112
+ cancel(): void;
113
+ reset(): void;
114
+ omit(): void;
115
+ valueOf(): boolean;
116
+ hasFailures(): boolean;
117
+ isNonActionable(): boolean;
118
+ isPending(): boolean;
119
+ isTested(): boolean;
120
+ isOmitted(): boolean;
121
+ isUntested(): boolean;
122
+ isFailing(): boolean;
123
+ isCanceled(): boolean;
124
+ isSkipped(): boolean;
125
+ isPassing(): boolean;
126
+ isWarning(): boolean;
127
+ statusEquals(status: KStatus): boolean;
128
+ }
129
+ type TAsyncTest = Promise<string | void>;
130
+ type TTestResult = TAsyncTest | boolean | void;
131
+ type TTestFn = () => TTestResult;
132
+ type KStatus = "UNTESTED" | "SKIPPED" | "FAILED" | "WARNING" | "PASSING" | "PENDING" | "CANCELED" | "OMITTED";
132
133
  declare function createCursor(): {
133
134
  addLevel: () => void;
134
135
  cursorAt: () => number;
@@ -175,8 +176,8 @@ declare function createStateRef(state: TState, { suiteId, suiteName }: {
175
176
  suiteId: () => TStateHandlerReturn<string>;
176
177
  suiteName: () => TStateHandlerReturn<string | void>;
177
178
  testCallbacks: () => TStateHandlerReturn<{
178
- fieldCallbacks: Record<string, ((res: ReadOnlySuiteResult) => void)[]>;
179
- doneCallbacks: ((res: ReadOnlySuiteResult) => void)[];
179
+ fieldCallbacks: Record<string, ((res: SuiteResult) => void)[]>;
180
+ doneCallbacks: ((res: SuiteResult) => void)[];
180
181
  }>;
181
182
  testObjects: () => TStateHandlerReturn<{
182
183
  prev: NestedArray<VestTest>;
@@ -265,7 +266,7 @@ declare namespace skip {
265
266
  */
266
267
  declare function group(groupName: string, tests: () => void): void;
267
268
  declare function include(fieldName: string): {
268
- when: (condition: string | boolean | ((draft: ReadOnlySuiteResult) => boolean)) => void;
269
+ when: (condition: string | boolean | ((draft: SuiteResult) => boolean)) => void;
269
270
  };
270
271
  /**
271
272
  * Sets the suite to "eager" (fail fast) mode.
@@ -296,7 +297,7 @@ declare function eager(): void;
296
297
  * test('username', 'User already taken', async () => await doesUserExist(username)
297
298
  * });
298
299
  */
299
- declare function omitWhen(conditional: boolean | ((draft: ReadOnlySuiteResult) => boolean), callback: (...args: any[]) => void): void;
300
+ declare function omitWhen(conditional: boolean | ((draft: SuiteResult) => boolean), callback: (...args: any[]) => void): void;
300
301
  /**
301
302
  * Marks a field as optional, either just by name, or by a given condition.
302
303
  *
@@ -320,7 +321,7 @@ type TOptionalsObject = Record<string, () => boolean>;
320
321
  * test('username', 'User already taken', async () => await doesUserExist(username)
321
322
  * });
322
323
  */
323
- declare function skipWhen(conditional: boolean | ((draft: ReadOnlySuiteResult) => boolean), callback: (...args: any[]) => void): void;
324
+ declare function skipWhen(conditional: boolean | ((draft: SuiteResult) => boolean), callback: (...args: any[]) => void): void;
324
325
  declare function testBase(fieldName: string, message: string, cb: TTestFn): VestTest;
325
326
  declare function testBase(fieldName: string, cb: TTestFn): VestTest;
326
327
  declare function testBase(fieldName: string, message: string, cb: TTestFn, key: string): VestTest;
@@ -344,6 +345,6 @@ declare const test: typeof testBase & {
344
345
  * Sets a running test to warn only mode.
345
346
  */
346
347
  declare function warn(): void;
347
- declare const VERSION = "4.2.1-dev-ee64be";
348
+ declare const VERSION = "4.2.3-dev-87ebfa";
348
349
  export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
349
- export type { ReadOnlySuiteResult, SuiteResult, VestTest };
350
+ export type { SuiteResult, SuiteRunResult, VestTest, Suite };