vest 4.2.1 → 4.3.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.
Files changed (44) hide show
  1. package/dist/cjs/classnames.development.js +76 -28
  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/parser.development.js +84 -22
  6. package/dist/cjs/parser.production.js +1 -1
  7. package/dist/cjs/promisify.development.js +21 -8
  8. package/dist/cjs/promisify.production.js +1 -1
  9. package/dist/cjs/vest.development.js +219 -203
  10. package/dist/cjs/vest.production.js +1 -1
  11. package/dist/es/classnames.development.js +76 -28
  12. package/dist/es/classnames.production.js +1 -1
  13. package/dist/es/enforce/compose.development.js +27 -59
  14. package/dist/es/enforce/compose.production.js +1 -1
  15. package/dist/es/parser.development.js +84 -22
  16. package/dist/es/parser.production.js +1 -1
  17. package/dist/es/promisify.development.js +21 -8
  18. package/dist/es/promisify.production.js +1 -1
  19. package/dist/es/vest.development.js +219 -203
  20. package/dist/es/vest.production.js +1 -1
  21. package/dist/umd/classnames.development.js +76 -28
  22. package/dist/umd/classnames.production.js +1 -1
  23. package/dist/umd/enforce/compose.development.js +89 -99
  24. package/dist/umd/enforce/compose.production.js +1 -1
  25. package/dist/umd/enforce/compounds.development.js +34 -36
  26. package/dist/umd/enforce/compounds.production.js +1 -1
  27. package/dist/umd/enforce/schema.development.js +34 -36
  28. package/dist/umd/enforce/schema.production.js +1 -1
  29. package/dist/umd/parser.development.js +84 -22
  30. package/dist/umd/parser.production.js +1 -1
  31. package/dist/umd/promisify.development.js +21 -8
  32. package/dist/umd/promisify.production.js +1 -1
  33. package/dist/umd/vest.development.js +213 -204
  34. package/dist/umd/vest.production.js +1 -1
  35. package/package.json +3 -3
  36. package/testUtils/mockThrowError.ts +3 -6
  37. package/testUtils/suiteDummy.ts +5 -1
  38. package/types/classnames.d.ts +13 -54
  39. package/types/enforce/compose.d.ts +2 -1
  40. package/types/enforce/compounds.d.ts +2 -1
  41. package/types/enforce/schema.d.ts +2 -1
  42. package/types/parser.d.ts +12 -53
  43. package/types/promisify.d.ts +12 -9
  44. package/types/vest.d.ts +17 -14
@@ -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",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,t){return l(n,t)||f(n,t)}function d(n){return!!Array.isArray(n)}function v(n,t){return!!(d(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 p(n,t)&&N(n,e)}function m(n){return i(n)||o(n)&&!n.trim()}function y(n){return!!n===n}function E(n){return"number"==typeof n}function b(n,t){return n.length===Number(t)}function S(n){if(n){if(E(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return b(n,0);if("object"==typeof n)return b(Object.keys(n),0)}return!0}function O(n,t){return n in t}function R(n){return Number.isNaN(n)}function T(n){return!!n}function C(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 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 o(n)&&o(t)&&n.startsWith(t)}function _(n){for(var e in Nt){var r=Nt[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 F(n,t){var e;return null!==(e=w(n))&&void 0!==e?e:t}function L(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?w(t):t)}function W(n){function t(t,u){var i,o,s=e();return t=Jn({},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 L(r.ctx,F(n,"Context was used after it was closed")),r.ctx}}}function P(){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 G(n,t){return n={pass:n},t&&(n.message=t),n}function X(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return L(y(n)||n&&y(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),y(n)?G(n):G(n.pass,w.apply(void 0,x([n.message,t,e],r,!1)))}function D(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return L((i=X.apply(void 0,x([gt.run({value:n},(function(){return e.apply(void 0,x([n],u,!1))})),r,n],u,!1))).pass,S(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!U())return _((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Nt[e])return t(r,n,e)}});return r}function q(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=Nt[r];e.push((function(n){return X.apply(void 0,x([o.apply(void 0,x([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return F(q(e,(function(e,r){var u,i=gt.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 U()?s=new Proxy(s,{get:function(t,e){return Nt[e]?n(e):t[e]}}):(_((function(t){s[t]=n(t)})),s)}}(n)}function j(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 B(n){return(n=[].concat(n))[n.length-1]}function H(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];d(u)?e.push(H(u,t)):(u=t(u),Yn(u)&&e.push(u))}return e}function M(n){return[].concat(n).reduce((function(n,t){return d(t)?n.concat(M(t)):[].concat(n).concat(t)}),[])}function V(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=F(n[r],[]),n=n[r]}return n}function J(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return B(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,B(t)},removeLevel:function(){t.pop()},reset:n}}function Y(){return St.useX().stateRef}function z(){return Y().testObjects()}function Q(){(0,z()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function Z(n){(0,z()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function $(){return M(H(z()[0].current,(function(n){return n.isPending()?n:null})))}function nn(){var n=z()[0].current;return Ot([n],(function(){return M(n)}))}function tn(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 en(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 rn(n){setTimeout((function(){throw Error(n)}),0)}function un(){return St.useX().testCursor.getCursor()}function on(){return St.useX().testCursor.next()}function sn(n,e){if(n=void 0===(n=n.type)?Hn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=un();return St.run({isolate:{type:n,keys:r}},(function(){St.useX().testCursor.addLevel(),r.prev=function(){var n=z()[0].prev;return[].concat(V(n,un())).reduce((function(n,t){return t instanceof Ct&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),Z((function(n){return V(n,u)[B(u)]=[],n}));var n=e();return St.useX().testCursor.removeLevel(),on(),n}))}}function an(n,t){return!(!t||n.fieldName!==t)}function cn(n,t,e){return(e=!n.hasFailures()||e&&!an(n,e))||(n=n.warns(),e=t===Rt.WARNINGS!=!!n),!e}function fn(n){return pn(Rt.ERRORS,n)}function ln(n){return pn(Rt.WARNINGS,n)}function pn(n,t){return nn().some((function(e){return cn(e,n,t)}))}function dn(n){var t=nn().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(t=!!n&&!!t[n])||!fn(n)&&(!(S(t=nn())||function(n){var t=nn();return!!n&&!t.find((function(t){return t.fieldName===n}))}(n)||function(n){var t=Y().optionalFields()[0];return ct($().filter((function(e){return!(n&&!an(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=nn(),e=Y().optionalFields()[0];return t.every((function(t){return!(!n||an(t,n))||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(n))}function vn(n,t){function e(n){i[n===Rt.ERRORS?Tt.ERROR_COUNT:Tt.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(Rt.ERRORS):t.isWarning()&&e(Rt.WARNINGS)),i}function hn(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&&!an(e,i)?r=!0:(r=e.warns(),r=n===Rt.WARNINGS!=!!r);return r||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),mt({},i&&((r={})[i]=[],r)))}function Nn(n){return mn(Rt.ERRORS,n)}function gn(n){return mn(Rt.WARNINGS,n)}function mn(n,t){return n=hn(n,nn(),{fieldName:t}),t?n[t]:n}function yn(n,t){return n=bn(Rt.ERRORS,n,t),t?n[t]:n}function En(n,t){return n=bn(Rt.WARNINGS,n,t),t?n[t]:n}function bn(n,t,e){return L(t,"get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),hn(n,nn(),{group:t,fieldName:e})}function Sn(n,t){return Rn(Rt.ERRORS,n,t)}function On(n,t){return Rn(Rt.WARNINGS,n,t)}function Rn(n,t,e){return nn().some((function(r){return t===r.groupName&&cn(r,n,e)}))}function Tn(){var n=nn(),t={stateRef:Y()};return xt([n],St.bind(t,(function(){var n=Y().suiteName()[0];return Jn(function(){var n=nn(),t=Jn({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=vn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&dn(t.fieldName),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=vn(e[r],t)),n}),t),t.valid=dn(),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,Nn),getErrorsByGroup:St.bind(t,yn),getWarnings:St.bind(t,gn),getWarningsByGroup:St.bind(t,En),hasErrors:St.bind(t,fn),hasErrorsByGroup:St.bind(t,Sn),hasWarnings:St.bind(t,ln),hasWarningsByGroup:St.bind(t,On),isValid:St.bind(t,dn),suiteName:n})})))}function Cn(n){var t=$();return!S(t)&&(n?t.some((function(t){return an(t,n)})):ct(t))}function In(){var n=nn(),t={stateRef:Y()};return Ut([n],St.bind(t,(function(){return Jn({},Tn(),{done:St.bind(t,Gt)})})))}function kn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!S(r.tests[e].testCount)))}function An(n){return!(Cn()&&(!n||Cn(n)))}function _n(n,t){var e=St.bind({},n);(0,Y().testCallbacks()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function wn(n){return n.forEach((function(n){return n()}))}function Fn(){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=Y().testCallbacks()[0].fieldCallbacks;t&&!Cn(t)&&d(e[t])&&wn(e[t]),Cn()||n.emit(Pt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Pt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=Y().optionalFields()[0];if(!S(n)){var e={};Z((function(r){return H(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(){wn(Y().testCallbacks()[0].doneCallbacks)})),n.on(Pt.REMOVE_FIELD,(function(n){nn().forEach((function(t){an(t,n)&&(t.cancel(),function(n){Z((function(t){return H(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Pt.RESET_FIELD,(function(n){nn().forEach((function(t){an(t,n)&&t.reset()}))})),n}function Ln(){var n=St.useX();return L(n.bus),n.bus}function Wn(n){return xn(0,"tests",n)}function Pn(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 Un(n){for(var t in n)if(!0===n[t])return!0;return!1}function Gn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Xn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Ln().emit,i=Y(),s=St.bind({stateRef:i},(function(){Q(),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=z()[0].prev;if(S(t))return qn(n),n;var e=un();if(t=V(t,e)[B(e)],!i(n.key)){t=n.key,(e=St.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=St.useX().isolate.keys.current;return i(r[t])?r[t]=e:rn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),qn(n),n}return!ct(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(St.useX().isolate.type===Hn.EACH||rn("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(),t=n[1],e=n[0].prev;n=V(e,un());var r=St.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),qn(n=F(t,n)),n}function qn(n){var t=un();Z((function(e){return V(e,t)[B(t)]=n,e}))}function Kn(n){var e=Vn.EAGER;if(e=!(St.useX().mode[0]!==e||!fn(n.fieldName)))return n.skip(),Dn(n),on(),n;if(e=Dn(n),St.useX().omitted)return e.omit(),on(),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||!Un(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&&!!Un(u)&&!w(e[t])}(n))return e.skip(!!St.useX().skipped),on(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),qn(n),on(),n.isUntested()){e=Ln();var 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(),Xn(n)):e.emit(Pt.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(),Xn(n));return n}function jn(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],L(o(n),Bn("fieldName","string")),L(t(r),Bn("Test callback","function"));var i=St.useX();return Kn(e=new Ct(n,r,{message:e,groupName:i.groupName,key:u}))}function Bn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var Hn,Mn,Vn,Jn=Object.assign,Yn=e(r),zn=e(u),Qn=e(i),Zn=e(s),$n=e(a),nt=e(c),tt=e(l),et=e(d),rt=e(v),ut=e(g),it=e(m),ot=e(y),st=e(E),at=e(b),ct=e(S),ft=e(O),lt=e(R),pt=e(o),dt=e(T),vt=e(C),ht=e(k),Nt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:Zn,doesNotStartWith:e(A),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:p,gt:f,gte:p,inside:v,isArray:d,isBetween:g,isBlank:m,isBoolean:y,isEmpty:S,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:dt,isKeyOf:O,isNaN:R,isNegative:function(n){return h(n,0)},isNotArray:et,isNotBetween:ut,isNotBlank:it,isNotBoolean:ot,isNotEmpty:ct,isNotKeyOf:ft,isNotNaN:lt,isNotNull:Yn,isNotNullish:Qn,isNotNumber:st,isNotNumeric:nt,isNotString:pt,isNotUndefined:zn,isNotValueOf:vt,isNull:r,isNullish:i,isNumber:E,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:function(n){return f(n,0)},isString:o,isTruthy:T,isUndefined:u,isValueOf:C,lengthEquals:b,lengthNotEquals:at,lessThan:h,lessThanOrEquals:N,longerThan:I,longerThanOrEquals:function(n,t){return n.length>=Number(t)},lt:h,lte:N,matches:k,notEquals:$n,notInside:rt,notMatches:ht,numberEquals:l,numberNotEquals:tt,shorterThan:function(n,t){return n.length<Number(t)},shorterThanOrEquals:function(n,t){return n.length<=Number(t)},startsWith:A},gt=W((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?Jn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:Jn(e,{parent:P})})),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=(Mn={context:function(){return gt.useX()},extend:function(n){Jn(Nt,n)}},U()?new Proxy(Jn(D,Mn),{get:function(n,t){return t in n?n[t]:Nt[t]?K(t):void 0}}):(_((function(n){Mn[n]=K(n)})),Jn(D,Mn))),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"}(Hn||(Hn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Vn||(Vn={}));var bt,St=W((function(n,t){return t?null:Jn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Hn.DEFAULT,keys:{current:{},prev:{}}},mode:[Vn.ALL],testCursor:J()},n)})),Ot=j();!function(n){n.Error="error",n.Warning="warning"}(bt||(bt={}));var Rt,Tt,Ct=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=It,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()?_t:At)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(wt)},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(kt)},n.prototype.cancel=function(){this.setStatus(Lt),Q()},n.prototype.reset=function(){this.status=It,Q()},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(It)},n.prototype.isFailing=function(){return this.statusEquals(At)},n.prototype.isCanceled=function(){return this.statusEquals(Lt)},n.prototype.isSkipped=function(){return this.statusEquals(kt)},n.prototype.isPassing=function(){return this.statusEquals(wt)},n.prototype.isWarning=function(){return this.statusEquals(_t)},n.prototype.statusEquals=function(n){return this.status===n},n}(),It="UNTESTED",kt="SKIPPED",At="FAILED",_t="WARNING",wt="PASSING",Ft="PENDING",Lt="CANCELED",Wt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Rt||(Rt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Tt||(Tt={}));var Pt,xt=j(20),Ut=j(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(Tn())};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={})),Wn.group=function(n){return xn(0,"groups",n)},Pn.group=function(n){return xn(1,"groups",n)};var Xt=Jn(jn,{memo:function(n){var t=j(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=[Y().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)}))):Kn(r[1])}}(jn)});n.VERSION="4.3.0",n.context=St,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],L(t(r),"vest.create: Expected callback to be a function.");var u=Fn(),i=tn();return n={stateRef:en(i,{suiteId:Et(),suiteName:n}),bus:u},Jn(St.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),sn({type:Hn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Pt.SUITE_CALLBACK_DONE_RUNNING),In()})),{get:St.bind(n,Tn),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){L(t(e),"each callback must be a function"),sn({type:Hn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Vn.EAGER;St.useX().mode[0]=n},n.enforce=yt,n.group=function(n,e){L(o(n),Gn("name must be a string")),L(t(e),Gn("callback must be a function")),sn({type:Hn.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)?F(r.tests[n],!0):o(t)?!!r.tests[t]:w(t,w(Tn))}}var e=St.useX();return n?(e.inclusion[n]=F(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){sn({type:Hn.OMIT_WHEN},(function(){St.run({omitted:!!St.useX().omitted||w(n,w(Tn))},(function(){return t()}))}))},n.only=Wn,n.optional=function(n){(0,Y().optionalFields()[1])((function(t){if(d(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=Pn,n.skipWhen=function(n,t){sn({type:Hn.SKIP_WHEN},(function(){St.run({skipped:!!St.useX().skipped||w(n,w(Tn))},(function(){return t()}))}))},n.test=Xt,n.warn=function(){var n=St.useX("warn hook called outside of a running suite.");L(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",
2
+ "version": "4.3.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.1",
24
- "n4s": "^4.1.2"
23
+ "context": "^2.0.2",
24
+ "n4s": "^4.1.3"
25
25
  },
26
26
  "homepage": "https://vestjs.dev/",
27
27
  "exports": {
@@ -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
  }
@@ -2,7 +2,7 @@ import asArray from '../../shared/src/asArray';
2
2
 
3
3
  import { dummyTest } from './testDummy';
4
4
 
5
- import { optional, create, skip } from 'vest';
5
+ import { optional, create, skip, SuiteResult } from 'vest';
6
6
 
7
7
  export function failing(failingFields?: string | string[]) {
8
8
  return createSuiteRunResult(failingFields, fieldName => {
@@ -102,3 +102,7 @@ function createSuite(
102
102
  asArray(fieldNames).forEach(fieldName => callback(fieldName));
103
103
  });
104
104
  }
105
+
106
+ export function ser(res: SuiteResult) {
107
+ return JSON.parse(JSON.stringify(res));
108
+ }
@@ -1,66 +1,25 @@
1
- /**
2
- * Reads the testObjects list and gets full validation result from it.
3
- */
4
- declare function genTestsSummary(): TTestSummary;
5
- type TTestSummary = {
6
- groups: Record<string, TTestGroup>;
7
- tests: TTestGroup;
8
- } & TTestSummaryBase;
9
- type TTestGroup = Record<string, TSingleTestSummary>;
10
- type TSingleTestSummary = {
1
+ type Groups = Record<string, TestGroup>;
2
+ type SuiteSummary = {
3
+ groups: Groups;
4
+ tests: TestGroup;
5
+ valid: boolean;
6
+ } & SummaryBase;
7
+ type TestGroup = Record<string, SingleTestSummary>;
8
+ type SingleTestSummary = SummaryBase & {
11
9
  errors: string[];
12
10
  warnings: string[];
13
- } & TTestSummaryBase;
14
- type TTestSummaryBase = {
11
+ valid: boolean;
12
+ };
13
+ type SummaryBase = {
15
14
  errorCount: number;
16
15
  warnCount: number;
17
16
  testCount: number;
18
17
  };
19
- declare function getErrors(): Record<string, string[]>;
20
- declare function getErrors(fieldName?: string): string[];
21
- declare function getWarnings(): Record<string, string[]>;
22
- declare function getWarnings(fieldName?: string): string[];
23
- declare function getErrorsByGroup(groupName: string): Record<string, string[]>;
24
- declare function getErrorsByGroup(groupName: string, fieldName: string): string[];
25
- declare function getWarningsByGroup(groupName: string): Record<string, string[]>;
26
- declare function getWarningsByGroup(groupName: string, fieldName: string): string[];
27
- declare function hasErrors(fieldName?: string): boolean;
28
- declare function hasWarnings(fieldName?: string): boolean;
29
- declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
30
- declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
31
- type SuiteResult = ReturnType<typeof genTestsSummary> & {
32
- /**
33
- * Returns whether the suite as a whole is valid.
34
- * Determined if there are no errors, and if no
35
- * required fields are skipped.
36
- */
37
- isValid: (fieldName?: string) => boolean;
38
- hasErrors: typeof hasErrors;
39
- hasWarnings: typeof hasWarnings;
40
- getErrors: typeof getErrors;
41
- getWarnings: typeof getWarnings;
42
- hasErrorsByGroup: typeof hasErrorsByGroup;
43
- hasWarningsByGroup: typeof hasWarningsByGroup;
44
- getErrorsByGroup: typeof getErrorsByGroup;
45
- getWarningsByGroup: typeof getWarningsByGroup;
46
- };
47
- type SuiteRunResult = SuiteResult & {
48
- done: IDone;
49
- };
50
- interface IDone {
51
- (...args: [
52
- cb: (res: SuiteResult) => void
53
- ]): SuiteRunResult;
54
- (...args: [
55
- fieldName: string,
56
- cb: (res: SuiteResult) => void
57
- ]): SuiteRunResult;
58
- }
59
18
  /**
60
19
  * Creates a function that returns class names that match the validation result
61
20
  */
62
- declare function classnames(res: SuiteRunResult | SuiteResult, classes?: TSupportedClasses): (fieldName: string) => string;
63
- type TSupportedClasses = {
21
+ declare function classnames(res: SuiteSummary, classes?: SupportedClasses): (fieldName: string) => string;
22
+ type SupportedClasses = {
64
23
  valid?: string;
65
24
  tested?: string;
66
25
  invalid?: string;
@@ -35,6 +35,7 @@ declare function isNull(value: unknown): value is null;
35
35
  declare function isNullish(value: any): value is null | undefined;
36
36
  declare function isNumber(value: unknown): value is number;
37
37
  declare function isNumeric(value: string | number): boolean;
38
+ declare function isPositive(value: number | string): boolean;
38
39
  declare function isStringValue(v: unknown): v is string;
39
40
  declare function isTruthy(value: unknown): boolean;
40
41
  declare function isUndefined(value?: unknown): boolean;
@@ -89,7 +90,7 @@ declare const baseRules: {
89
90
  isNumber: typeof isNumber;
90
91
  isNumeric: typeof isNumeric;
91
92
  isOdd: (value: any) => boolean;
92
- isPositive: (value: string | number) => boolean;
93
+ isPositive: typeof isPositive;
93
94
  isString: typeof isStringValue;
94
95
  isTruthy: typeof isTruthy;
95
96
  isUndefined: typeof isUndefined;
@@ -35,6 +35,7 @@ declare function isNull(value: unknown): value is null;
35
35
  declare function isNullish(value: any): value is null | undefined;
36
36
  declare function isNumber(value: unknown): value is number;
37
37
  declare function isNumeric(value: string | number): boolean;
38
+ declare function isPositive(value: number | string): boolean;
38
39
  declare function isStringValue(v: unknown): v is string;
39
40
  declare function isTruthy(value: unknown): boolean;
40
41
  declare function isUndefined(value?: unknown): boolean;
@@ -89,7 +90,7 @@ declare const baseRules: {
89
90
  isNumber: typeof isNumber;
90
91
  isNumeric: typeof isNumeric;
91
92
  isOdd: (value: any) => boolean;
92
- isPositive: (value: string | number) => boolean;
93
+ isPositive: typeof isPositive;
93
94
  isString: typeof isStringValue;
94
95
  isTruthy: typeof isTruthy;
95
96
  isUndefined: typeof isUndefined;
@@ -35,6 +35,7 @@ declare function isNull(value: unknown): value is null;
35
35
  declare function isNullish(value: any): value is null | undefined;
36
36
  declare function isNumber(value: unknown): value is number;
37
37
  declare function isNumeric(value: string | number): boolean;
38
+ declare function isPositive(value: number | string): boolean;
38
39
  declare function isStringValue(v: unknown): v is string;
39
40
  declare function isTruthy(value: unknown): boolean;
40
41
  declare function isUndefined(value?: unknown): boolean;
@@ -89,7 +90,7 @@ declare const baseRules: {
89
90
  isNumber: typeof isNumber;
90
91
  isNumeric: typeof isNumeric;
91
92
  isOdd: (value: any) => boolean;
92
- isPositive: (value: string | number) => boolean;
93
+ isPositive: typeof isPositive;
93
94
  isString: typeof isStringValue;
94
95
  isTruthy: typeof isTruthy;
95
96
  isUndefined: typeof isUndefined;
package/types/parser.d.ts CHANGED
@@ -1,62 +1,21 @@
1
- /**
2
- * Reads the testObjects list and gets full validation result from it.
3
- */
4
- declare function genTestsSummary(): TTestSummary;
5
- type TTestSummary = {
6
- groups: Record<string, TTestGroup>;
7
- tests: TTestGroup;
8
- } & TTestSummaryBase;
9
- type TTestGroup = Record<string, TSingleTestSummary>;
10
- type TSingleTestSummary = {
1
+ type Groups = Record<string, TestGroup>;
2
+ type SuiteSummary = {
3
+ groups: Groups;
4
+ tests: TestGroup;
5
+ valid: boolean;
6
+ } & SummaryBase;
7
+ type TestGroup = Record<string, SingleTestSummary>;
8
+ type SingleTestSummary = SummaryBase & {
11
9
  errors: string[];
12
10
  warnings: string[];
13
- } & TTestSummaryBase;
14
- type TTestSummaryBase = {
11
+ valid: boolean;
12
+ };
13
+ type SummaryBase = {
15
14
  errorCount: number;
16
15
  warnCount: number;
17
16
  testCount: number;
18
17
  };
19
- declare function getErrors(): Record<string, string[]>;
20
- declare function getErrors(fieldName?: string): string[];
21
- declare function getWarnings(): Record<string, string[]>;
22
- declare function getWarnings(fieldName?: string): string[];
23
- declare function getErrorsByGroup(groupName: string): Record<string, string[]>;
24
- declare function getErrorsByGroup(groupName: string, fieldName: string): string[];
25
- declare function getWarningsByGroup(groupName: string): Record<string, string[]>;
26
- declare function getWarningsByGroup(groupName: string, fieldName: string): string[];
27
- declare function hasErrors(fieldName?: string): boolean;
28
- declare function hasWarnings(fieldName?: string): boolean;
29
- declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
30
- declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
31
- type SuiteResult = ReturnType<typeof genTestsSummary> & {
32
- /**
33
- * Returns whether the suite as a whole is valid.
34
- * Determined if there are no errors, and if no
35
- * required fields are skipped.
36
- */
37
- isValid: (fieldName?: string) => boolean;
38
- hasErrors: typeof hasErrors;
39
- hasWarnings: typeof hasWarnings;
40
- getErrors: typeof getErrors;
41
- getWarnings: typeof getWarnings;
42
- hasErrorsByGroup: typeof hasErrorsByGroup;
43
- hasWarningsByGroup: typeof hasWarningsByGroup;
44
- getErrorsByGroup: typeof getErrorsByGroup;
45
- getWarningsByGroup: typeof getWarningsByGroup;
46
- };
47
- type SuiteRunResult = SuiteResult & {
48
- done: IDone;
49
- };
50
- interface IDone {
51
- (...args: [
52
- cb: (res: SuiteResult) => void
53
- ]): SuiteRunResult;
54
- (...args: [
55
- fieldName: string,
56
- cb: (res: SuiteResult) => void
57
- ]): SuiteRunResult;
58
- }
59
- declare function parse(res: SuiteRunResult | SuiteResult): {
18
+ declare function parse(res: SuiteSummary): {
60
19
  valid: (fieldName?: string) => boolean;
61
20
  tested: (fieldName?: string) => boolean;
62
21
  invalid: (fieldName?: string) => boolean;
@@ -1,17 +1,20 @@
1
1
  /**
2
2
  * Reads the testObjects list and gets full validation result from it.
3
3
  */
4
- declare function genTestsSummary(): TTestSummary;
5
- type TTestSummary = {
6
- groups: Record<string, TTestGroup>;
7
- tests: TTestGroup;
8
- } & TTestSummaryBase;
9
- type TTestGroup = Record<string, TSingleTestSummary>;
10
- type TSingleTestSummary = {
4
+ declare function genTestsSummary(): SuiteSummary;
5
+ type Groups = Record<string, TestGroup>;
6
+ type SuiteSummary = {
7
+ groups: Groups;
8
+ tests: TestGroup;
9
+ valid: boolean;
10
+ } & SummaryBase;
11
+ type TestGroup = Record<string, SingleTestSummary>;
12
+ type SingleTestSummary = SummaryBase & {
11
13
  errors: string[];
12
14
  warnings: string[];
13
- } & TTestSummaryBase;
14
- type TTestSummaryBase = {
15
+ valid: boolean;
16
+ };
17
+ type SummaryBase = {
15
18
  errorCount: number;
16
19
  warnCount: number;
17
20
  testCount: number;
package/types/vest.d.ts CHANGED
@@ -51,17 +51,20 @@ type KStatus = "UNTESTED" | "SKIPPED" | "FAILED" | "WARNING" | "PASSING" | "PEND
51
51
  /**
52
52
  * Reads the testObjects list and gets full validation result from it.
53
53
  */
54
- declare function genTestsSummary(): TTestSummary;
55
- type TTestSummary = {
56
- groups: Record<string, TTestGroup>;
57
- tests: TTestGroup;
58
- } & TTestSummaryBase;
59
- type TTestGroup = Record<string, TSingleTestSummary>;
60
- type TSingleTestSummary = {
54
+ declare function genTestsSummary(): SuiteSummary;
55
+ type Groups = Record<string, TestGroup>;
56
+ type SuiteSummary = {
57
+ groups: Groups;
58
+ tests: TestGroup;
59
+ valid: boolean;
60
+ } & SummaryBase;
61
+ type TestGroup = Record<string, SingleTestSummary>;
62
+ type SingleTestSummary = SummaryBase & {
61
63
  errors: string[];
62
64
  warnings: string[];
63
- } & TTestSummaryBase;
64
- type TTestSummaryBase = {
65
+ valid: boolean;
66
+ };
67
+ type SummaryBase = {
65
68
  errorCount: number;
66
69
  warnCount: number;
67
70
  testCount: number;
@@ -113,7 +116,7 @@ type CreateProperties = {
113
116
  remove: (fieldName: string) => void;
114
117
  };
115
118
  type CB = (...args: any[]) => void;
116
- type SuiteReturnType<T extends CB> = {
119
+ type Suite<T extends CB> = {
117
120
  (...args: Parameters<T>): SuiteRunResult;
118
121
  } & CreateProperties;
119
122
  /**
@@ -127,8 +130,8 @@ type SuiteReturnType<T extends CB> = {
127
130
  * });
128
131
  * });
129
132
  */
130
- declare function create<T extends CB>(suiteName: string, suiteCallback: T): SuiteReturnType<T>;
131
- declare function create<T extends CB>(suiteCallback: T): SuiteReturnType<T>;
133
+ declare function create<T extends CB>(suiteName: string, suiteCallback: T): Suite<T>;
134
+ declare function create<T extends CB>(suiteCallback: T): Suite<T>;
132
135
  declare function createCursor(): {
133
136
  addLevel: () => void;
134
137
  cursorAt: () => number;
@@ -344,6 +347,6 @@ declare const test: typeof testBase & {
344
347
  * Sets a running test to warn only mode.
345
348
  */
346
349
  declare function warn(): void;
347
- declare const VERSION = "4.2.1";
350
+ declare const VERSION = "4.3.0";
348
351
  export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
349
- export type { SuiteResult, SuiteRunResult, VestTest };
352
+ export type { SuiteResult, SuiteRunResult, SuiteSummary, VestTest, Suite };