vest 4.3.4 → 4.4.0-dev-08ec91

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.
@@ -695,6 +695,11 @@ function matchingFieldName(testObject, fieldName) {
695
695
  return !!(fieldName && testObject.fieldName === fieldName);
696
696
  }
697
697
 
698
+ var nonMatchingGroupName = bindNot(matchingGroupName);
699
+ function matchingGroupName(testObject, groupName) {
700
+ return testObject.groupName === groupName;
701
+ }
702
+
698
703
  function either(a, b) {
699
704
  return !!a !== !!b;
700
705
  }
@@ -719,6 +724,15 @@ function hasFailuresByTestObjects(severityKey, fieldName) {
719
724
  return hasFailuresByTestObject(testObject, severityKey, fieldName);
720
725
  });
721
726
  }
727
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
728
+ var testObjects = useTestsFlat();
729
+ return testObjects.some(function (testObject) {
730
+ if (nonMatchingGroupName(testObject, groupName)) {
731
+ return false;
732
+ }
733
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
734
+ });
735
+ }
722
736
  /**
723
737
  * Determines whether a certain test profile has failures.
724
738
  */
@@ -736,7 +750,7 @@ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
736
750
  }
737
751
 
738
752
  // eslint-disable-next-line max-statements, complexity
739
- function shouldAddValidProp(fieldName) {
753
+ function shouldAddValidProperty(fieldName) {
740
754
  if (fieldIsOmitted(fieldName)) {
741
755
  return true;
742
756
  }
@@ -747,36 +761,78 @@ function shouldAddValidProp(fieldName) {
747
761
  if (isEmpty(testObjects)) {
748
762
  return false;
749
763
  }
764
+ // Does the given field have any pending tests that are not optional?
750
765
  if (hasNonOptionalIncomplete(fieldName)) {
751
766
  return false;
752
767
  }
753
768
  return noMissingTests(fieldName);
754
769
  }
770
+ function shouldAddValidPropertyInGroup(groupName, fieldName) {
771
+ if (fieldIsOmitted(fieldName)) {
772
+ return true;
773
+ }
774
+ if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
775
+ return false;
776
+ }
777
+ // Do the given group/field have any pending tests that are not optional?
778
+ if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
779
+ return false;
780
+ }
781
+ return noMissingTestsByGroup(groupName, fieldName);
782
+ }
755
783
  function fieldIsOmitted(fieldName) {
756
784
  if (!fieldName) {
757
785
  return false;
758
786
  }
759
787
  return useOptionalFieldApplied(fieldName) === true;
760
788
  }
789
+ // Does the given field have any pending tests that are not optional?
761
790
  function hasNonOptionalIncomplete(fieldName) {
762
791
  return isNotEmpty(useAllIncomplete().filter(function (testObject) {
763
- if (nonMatchingFieldName(testObject, fieldName)) {
792
+ return isOptionalFieldIncomplete(testObject, fieldName);
793
+ }));
794
+ }
795
+ // Do the given group/field have any pending tests that are not optional?
796
+ function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
797
+ return isNotEmpty(useAllIncomplete().filter(function (testObject) {
798
+ if (nonMatchingGroupName(testObject, groupName)) {
764
799
  return false;
765
800
  }
766
- return useOptionalFieldConfig(testObject.fieldName) !== true;
801
+ return isOptionalFieldIncomplete(testObject, fieldName);
767
802
  }));
768
803
  }
804
+ function isOptionalFieldIncomplete(testObject, fieldName) {
805
+ if (nonMatchingFieldName(testObject, fieldName)) {
806
+ return false;
807
+ }
808
+ return useOptionalFieldConfig(testObject.fieldName) !== true;
809
+ }
769
810
  function noMissingTests(fieldName) {
770
811
  var testObjects = useTestsFlat();
771
812
  return testObjects.every(function (testObject) {
772
813
  if (nonMatchingFieldName(testObject, fieldName)) {
773
814
  return true;
774
815
  }
775
- return (useOptionalFieldConfig(testObject.fieldName) === true ||
776
- testObject.isTested() ||
777
- testObject.isOmitted());
816
+ return missingTestsLogic(testObject, fieldName);
817
+ });
818
+ }
819
+ function noMissingTestsByGroup(groupName, fieldName) {
820
+ var testObjects = useTestsFlat();
821
+ return testObjects.every(function (testObject) {
822
+ if (nonMatchingGroupName(testObject, groupName)) {
823
+ return true;
824
+ }
825
+ return missingTestsLogic(testObject, fieldName);
778
826
  });
779
827
  }
828
+ function missingTestsLogic(testObject, fieldName) {
829
+ if (nonMatchingFieldName(testObject, fieldName)) {
830
+ return true;
831
+ }
832
+ return (useOptionalFieldConfig(testObject.fieldName) === true ||
833
+ testObject.isTested() ||
834
+ testObject.isOmitted());
835
+ }
780
836
 
781
837
  function useSummary() {
782
838
  var summary = context.useX().summary;
@@ -798,7 +854,7 @@ function genTestsSummary() {
798
854
  appendToGroup(summary.groups, testObject);
799
855
  return summary;
800
856
  }, summary);
801
- summary.valid = shouldAddValidProp();
857
+ summary.valid = shouldAddValidProperty();
802
858
  return countFailures(summary);
803
859
  }
804
860
  function appendToTest(tests, testObject) {
@@ -807,7 +863,7 @@ function appendToTest(tests, testObject) {
807
863
  tests[testObject.fieldName].valid =
808
864
  tests[testObject.fieldName].valid === false
809
865
  ? false
810
- : shouldAddValidProp(testObject.fieldName);
866
+ : shouldAddValidProperty(testObject.fieldName);
811
867
  }
812
868
  /**
813
869
  * Appends to a group object if within a group
@@ -819,6 +875,10 @@ function appendToGroup(groups, testObject) {
819
875
  }
820
876
  groups[groupName] = groups[groupName] || {};
821
877
  groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
878
+ groups[groupName][testObject.fieldName].valid =
879
+ groups[groupName][testObject.fieldName].valid === false
880
+ ? false
881
+ : shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
822
882
  }
823
883
  /**
824
884
  * Counts the failed tests and adds global counters
@@ -961,9 +1021,30 @@ function hasFailuresByGroup(severityKey, groupName, fieldName) {
961
1021
  }
962
1022
 
963
1023
  function isValid(fieldName) {
964
- var _a;
965
1024
  var summary = useSummary();
966
- return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1025
+ return fieldName
1026
+ ? Boolean(isFieldValid(summary.tests, fieldName))
1027
+ : summary.valid;
1028
+ }
1029
+ function isValidByGroup(groupName, fieldName) {
1030
+ var summary = useSummary();
1031
+ var group = summary.groups[groupName];
1032
+ if (!group) {
1033
+ return false;
1034
+ }
1035
+ if (fieldName) {
1036
+ return isFieldValid(group, fieldName);
1037
+ }
1038
+ for (var fieldName_1 in group) {
1039
+ if (!isFieldValid(group, fieldName_1)) {
1040
+ return false;
1041
+ }
1042
+ }
1043
+ return true;
1044
+ }
1045
+ function isFieldValid(testContainer, fieldName) {
1046
+ var _a;
1047
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
967
1048
  }
968
1049
 
969
1050
  var cache$1 = createCache(1);
@@ -984,6 +1065,7 @@ function produceSuiteResult() {
984
1065
  hasWarnings: context.bind(ref, hasWarnings),
985
1066
  hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
986
1067
  isValid: context.bind(ref, isValid),
1068
+ isValidByGroup: context.bind(ref, isValidByGroup),
987
1069
  suiteName: suiteName
988
1070
  });
989
1071
  }));
@@ -1880,7 +1962,7 @@ function warn() {
1880
1962
  ctx.currentTest.warn();
1881
1963
  }
1882
1964
 
1883
- var VERSION = "4.3.4";
1965
+ var VERSION = "4.4.0-dev-08ec91";
1884
1966
 
1885
1967
  Object.defineProperty(exports, 'enforce', {
1886
1968
  enumerable: true,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t=require("n4s"),e=require("context"),r=(n=0,function(){return"".concat(n++)});function u(n){return String(n)===n}function i(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function o(n){return void 0===n}function s(n){return[].concat(n)}var c=Object.assign;function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return function(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}(n.length,t)}function l(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function p(n){function t(n){return e.findIndex((function(t){var e=t[0];return f(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]),function(n,t){return l(n.length,t)}(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 d(n){return!!Array.isArray(n)}function v(n){return null===n}var h,g,E=i(v);function N(n){return"function"==typeof n}function m(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return N(n)?n.apply(void 0,t):n}function y(n,t){var e;return null!==(e=m(n))&&void 0!==e?e:t}function R(n){return(n=s(n))[n.length-1]}function S(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];d(u)?e.push(S(u,t)):(u=t(u),E(u)&&e.push(u))}return e}function C(n,t,e){return T(n,t)[R(t)]=e,n}function b(n){return s(n).reduce((function(n,t){return d(t)?n.concat(b(t)):s(n).concat(t)}),[])}function T(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=y(n[r],[]),n=n[r]}return n}function _(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return R(t)},getCursor:function(){return s(t)},next:function(){return t[t.length-1]++,R(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(h||(h={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(g||(g={}));var I=e.createContext((function(n,t){return t?null:c({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:h.DEFAULT,keys:{current:{},prev:{}}},mode:[g.ALL],testCursor:_()},n)}));function O(){return I.useX().stateRef}function A(){return O().suiteId()[0]}function k(){return O().testCallbacks()}function L(n){return x()[0][n]}function x(){return O().optionalFields()}function F(n,t){(0,x()[1])((function(e){var r;return c(e,((r={})[n]=m(t,e[n]),r))}))}function U(n){var t;return null===(t=L(n))||void 0===t?void 0:t[0]}function W(){return O().testObjects()}function G(){P((function(n){return n}))}function P(n){(0,W()[1])((function(t){return{prev:t.prev,current:s(n(t.current))}}))}function D(){return H().filter((function(n){return n.isPending()}))}var w,X=p();function H(){var n=W()[0].current;return X([n],(function(){return b(n)}))}function K(n){H().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(w||(w={}));var M,q,j=function(){function n(n,t,e){var u=void 0===e?{}:e;e=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=r(),this.severity=w.Error,this.status=B,this.fieldName=n,this.testFn=t,i&&(this.groupName=i),e&&(this.message=e),u&&(this.key=u)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){(function(n,t){return o(n)&&u(t)})(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==$||(this.status=n)},n.prototype.warns=function(){return this.severity===w.Warning},n.prototype.setPending=function(){this.setStatus(Q)},n.prototype.fail=function(){this.setStatus(this.warns()?J:Y)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(z)},n.prototype.warn=function(){this.severity=w.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(V)},n.prototype.cancel=function(){this.setStatus(Z),G()},n.prototype.reset=function(){this.status=B,G()},n.prototype.omit=function(){this.setStatus($)},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(Q)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals($)},n.prototype.isUntested=function(){return this.statusEquals(B)},n.prototype.isFailing=function(){return this.statusEquals(Y)},n.prototype.isCanceled=function(){return this.statusEquals(Z)},n.prototype.isSkipped=function(){return this.statusEquals(V)},n.prototype.isPassing=function(){return this.statusEquals(z)},n.prototype.isWarning=function(){return this.statusEquals(J)},n.prototype.statusEquals=function(n){return this.status===n},n}(),B="UNTESTED",V="SKIPPED",Y="FAILED",J="WARNING",z="PASSING",Q="PENDING",Z="CANCELED",$="OMITTED";function nn(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?m(t):t)}function tn(n){function t(n,t,u){return r.references.push(),e(n,m(t,u)),function(){return[r.references[n],function(t){return e(n,m(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,N(t=u[t][1])&&t(e,i),N(n)&&n()}var r={references:[]},u=[];return{registerStateKey:function(n,e){var r=u.length;return u.push([n,e]),t(r,n)},reset:function(){var n=r.references;r.references=[],u.forEach((function(e,r){return t(r,e[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){return v(n)||o(n)}function un(n){setTimeout((function(){throw Error(n)}),0)}function on(){return I.useX().testCursor.getCursor()}function sn(){return I.useX().testCursor.cursorAt()}function cn(){return I.useX().testCursor.next()}function an(n,t){n=void 0===(n=n.type)?h.DEFAULT:n,nn(N(t));var e={current:{},prev:{}},r=on();return I.run({isolate:{type:n,keys:e}},(function(){I.useX().testCursor.addLevel(),e.prev=s(T(W()[0].prev,on())).reduce((function(n,t){return t instanceof j&&!rn(t.key)?(n[t.key]=t,n):n}),{}),P((function(n){return C(n,r,[])}));var n=t();return I.useX().testCursor.removeLevel(),cn(),n}))}function fn(n){return n===M.ERRORS?q.ERROR_COUNT:q.WARN_COUNT}function ln(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function pn(n){return!n||(function(n){return"number"==typeof n}(n)?0===n:ln(n,"length")?f(n,0):"object"==typeof n&&f(Object.keys(n),0))}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(M||(M={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(q||(q={}));var dn=i(pn);function vn(n,t){return!!t&&!hn(n,t)}function hn(n,t){return!(!t||n.fieldName!==t)}function gn(n){return function(n,t){return H().some((function(e){return function(n,t,e){return!(!n.hasFailures()||vn(n,e)||function(n,t){return function(n,t){return!!n!=!!t}(n===M.WARNINGS,t.warns())}(t,n))}(e,n,t)}))}(M.ERRORS,n)}function En(n){return!!function(n){return!!n&&!0===function(n){var t;return null===(t=L(n))||void 0===t?void 0:t[1]}(n)}(n)||!gn(n)&&(!pn(H())&&!function(n){return dn(D().filter((function(t){return!vn(t,n)&&!0!==U(t.fieldName)})))}(n)&&function(n){return H().every((function(t){return!!vn(t,n)||(!0===U(t.fieldName)||t.isTested()||t.isOmitted())}))}(n))}function Nn(){var n=I.useX().summary;return nn(n),n}function mn(){var n=H(),t=c({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){return function(n,t){n[t.fieldName]=yn(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&En(t.fieldName)}(n.tests,t),function(n,t){var e=t.groupName;e&&(n[e]=n[e]||{},n[e][t.fieldName]=yn(n[e],t))}(n.groups,t),n}),t),t.valid=En(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}function yn(n,t){function e(n){var t=fn(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||c({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(M.ERRORS):t.isWarning()&&e(M.WARNINGS)),i}function Rn(n){return l(n,0)}function Sn(n,t,e){return e?function(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}(n,t,e):function(n,t){var e,r={},u=fn(t);for(e in n)Rn(n[e][u])&&(r[e]=n[e][t]||[]);return r}(n,t)}function Cn(n){return Tn(M.ERRORS,n)}function bn(n){return Tn(M.WARNINGS,n)}function Tn(n,t){return Sn(Nn().tests,n,t)}function _n(n,t){return On(n,M.ERRORS,t)}function In(n,t){return On(n,M.WARNINGS,t)}function On(n,t,e){return Sn(Nn().groups[n],t,e)}function An(n){return Ln(q.ERROR_COUNT,n)}function kn(n){return Ln(q.WARN_COUNT,n)}function Ln(n,t){var e,r=Nn();return Rn(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function xn(n,t){return Un(M.ERRORS,n,t)}function Fn(n,t){return Un(M.WARNINGS,n,t)}function Un(n,t,e){var r,u,i=Nn();if(n=fn(n),!(t=i.groups[t]))return!1;if(e)return Rn(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(Rn(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Wn(n){var t,e=Nn();return n?!(null===(t=e.tests[n])||void 0===t||!t.valid):e.valid}var Gn=p(1);function Pn(){var n=H(),t={stateRef:O()};return Gn([n],I.bind(t,(function(){var n=mn(),t=O().suiteName()[0],e={summary:n};return c(n,{getErrors:I.bind(e,Cn),getErrorsByGroup:I.bind(e,_n),getWarnings:I.bind(e,bn),getWarningsByGroup:I.bind(e,In),hasErrors:I.bind(e,An),hasErrorsByGroup:I.bind(e,xn),hasWarnings:I.bind(e,kn),hasWarningsByGroup:I.bind(e,Fn),isValid:I.bind(e,Wn),suiteName:t})})))}function Dn(n){var t=D();return!pn(t)&&(n?t.some((function(t){return hn(t,n)})):dn(t))}var wn=p(20);function Xn(){var n=H(),t={stateRef:O()};return wn([n],I.bind(t,(function(){return c({},Pn(),{done:I.bind(t,qn)})})))}function Hn(n,t,e){return!(N(n)&&(!t||e.tests[t]&&!pn(e.tests[t].testCount)))}function Kn(n){return!(Dn()&&(!n||Dn(n)))}var Mn,qn=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=Xn(),Hn(e,n,t))return t;var r=function(){return e(Pn())};return Kn(n)?(r(),t):(jn(r,n),t)};function jn(n,t){(0,k()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Bn(n){return n.forEach((function(n){return n()}))}function Vn(){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(Mn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=k()[0].fieldCallbacks;n&&!Dn(n)&&d(t[n])&&Bn(t[n])}(t.fieldName),Dn()||n.emit(Mn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Mn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),F(n.fieldName,(function(n){return[n[0],!0]})))}if(!pn(x()[0])){var t={};P((function(e){return S(e,(function(e){if(ln(t,e.fieldName))n(e);else{var r=U(e.fieldName);N(r)&&(t[e.fieldName]=r(),n(e))}return e}))}))}}()})),n.on(Mn.ALL_RUNNING_TESTS_FINISHED,(function(){Bn(k()[0].doneCallbacks)})),n.on(Mn.REMOVE_FIELD,(function(n){K((function(t){hn(t,n)&&(t.cancel(),function(n){P((function(t){return S(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Mn.RESET_FIELD,(function(n){K((function(t){hn(t,n)&&t.reset()}))})),n}function Yn(){var n=I.useX();return nn(n.bus),n.bus}!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"}(Mn||(Mn={}));function Jn(){return!!I.useX().skipped}function zn(n){return $n(0,"tests",n)}function Qn(n){return $n(1,"tests",n)}function Zn(n){var t=n.fieldName;if(n=n.groupName,Jn())return!0;var e=I.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){if(function(n){var t=I.useX().exclusion.groups;return ln(t,n)?!1===t[n]:tt()}(n))return!0;if(!0===r.groups[n])return!i&&(!!nt(u)||!1===u[t])}return!!function(n){return!!tt()&&!n}(n)||!i&&(!!nt(u)&&!m(e[t]))}function $n(n,t,e){var r=I.useX("hook called outside of a running suite.");e&&s(e).forEach((function(e){u(e)&&(r.exclusion[t][e]=0===n)}))}function nt(n){for(var t in n)if(!0===n[t])return!0;return!1}function tt(){var n,t=I.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function et(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function rt(n){return!(!function(n){return I.useX().mode[0]===n}(g.EAGER)||!gn(n.fieldName))}function ut(){return!!I.useX().omitted}function it(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 ot(n){return n&&N(n.then)}function st(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function ct(n){var t=n.asyncTest,e=n.message;if(ot(t)){var r=Yn().emit,i=O(),o=I.bind({stateRef:i},(function(){G(),r(Mn.TEST_COMPLETED,n)}));i=I.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=u(t)?t:e,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function at(n){var t=Yn(),e=function(n){return I.run({currentTest:n},(function(){return n.run()}))}(n);try{ot(e)?(n.asyncTest=e,n.setPending(),ct(n)):t.emit(Mn.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}function ft(n){var t=W()[0].prev;return pn(t)?(lt(n),n):(t=function(n){var t=on();return function(n,t){return T(n,t)[R(t)]}(n,t)}(t),rn(n.key)?(function(n,t){return dn(n)&&!st(n,t)}(t,n)&&(function(n,t){I.useX().isolate.type===h.EACH||un("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.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.'))}(t,n),function(){var n=W(),t=n[1],e=n[0].prev;n=T(e,on());var r=sn();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),lt(n=y(t,n)),n):(lt(n=function(n,t){var e=function(n){return I.useX().isolate.keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=I.useX().isolate.keys.current;rn(e[n])?e[n]=t:un('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."))}(n,t),t}(n.key,n)),n))}function lt(n){var t=on();P((function(e){return C(e,t,n)}))}function pt(n){if(rt(n))return n.skip(),ft(n),cn(),n;var t=ft(n);return ut()?(t.omit(),cn(),t):Zn(n)?(t.skip(Jn()),cn(),t):(function(n,t){t!==n&&st(n,t)&&n.isPending()&&n.cancel()}(t,n),lt(n),cn(),function(n){n.isUntested()?at(n):ot(n.asyncTest)&&(n.setPending(),ct(n))}(n),n)}function dt(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=N(t[1])?t:it([void 0],t,!0);t=r[0],e=r[1],r=r[2],nn(u(n),ht("fieldName","string")),nn(N(e),ht("Test callback","function"));var i=I.useX();return pt(t=new j(n,e,{message:t,groupName:i.groupName,key:r}))}zn.group=function(n){return $n(0,"groups",n)},Qn.group=function(n){return $n(1,"groups",n)};var vt=c(dt,{memo:function(n){var t=p(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=sn();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[A(),e,u].concat(i),v(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)}))):pt(r[1])}}(dt)});function ht(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return t.enforce}}),exports.VERSION="4.3.4",exports.context=I,exports.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];n=n[1],nn(N(e),"vest.create: Expected callback to be a function.");var u=Vn(),i=tn();return n={stateRef:en(i,{suiteId:r(),suiteName:n}),bus:u},c(I.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:h.SUITE},(function(){e.apply(void 0,n)})),u.emit(Mn.SUITE_CALLBACK_DONE_RUNNING),Xn()})),{get:I.bind(n,Pn),remove:I.bind(n,(function(n){u.emit(Mn.REMOVE_FIELD,n)})),reset:i.reset,resetField:I.bind(n,(function(n){u.emit(Mn.RESET_FIELD,n)}))})},exports.each=function(n,t){nn(N(t),"each callback must be a function"),an({type:h.EACH},(function(){n.forEach((function(n,e){t(n,e)}))}))},exports.eager=function(){!function(n){I.useX().mode[0]=n}(g.EAGER)},exports.group=function(n,t){nn(u(n),et("name must be a string")),nn(N(t),et("callback must be a function")),an({type:h.GROUP},(function(){I.run({groupName:n},t)}))},exports.include=function(n){var t=I.useX(),e=t.inclusion;return t=t.exclusion,nn(u(n)),e[n]=y(t.tests[n],!0),{when:function(t){var e=I.useX(),r=e.exclusion;e.inclusion[n]=function(){return ln(r.tests,n)?y(r.tests[n],!0):u(t)?!!r.tests[t]:m(t,m(Pn))}}}},exports.omitWhen=function(n,t){an({type:h.OMIT_WHEN},(function(){I.run({omitted:ut()||m(n,m(Pn))},(function(){return t()}))}))},exports.only=zn,exports.optional=function(n){if(d(n)||u(n))s(n).forEach((function(n){F(n,[!0,!1])}));else for(var t in n)F(t,[n[t],!1])},exports.skip=Qn,exports.skipWhen=function(n,t){an({type:h.SKIP_WHEN},(function(){I.run({skipped:Jn()||m(n,m(Pn))},(function(){return t()}))}))},exports.test=vt,exports.warn=function(){var n=I.useX("warn hook called outside of a running suite.");nn(n.currentTest,"warn called outside of a test."),n.currentTest.warn()};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t=require("n4s"),r=require("context"),e=(n=0,function(){return"".concat(n++)});function u(n){return String(n)===n}function i(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function o(n){return void 0===n}function s(n){return[].concat(n)}var c=Object.assign;function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return function(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}(n.length,t)}function l(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function p(n){function t(n){return r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))}void 0===n&&(n=1);var r=[],e=function(t,u){var i=e.get(t);return i?i[1]:(u=u(),r.unshift([t.concat(),u]),function(n,t){return l(n.length,t)}(r,n)&&(r.length=n),u)};return e.invalidate=function(n){-1<(n=t(n))&&r.splice(n,1)},e.get=function(n){return r[t(n)]||null},e}function d(n){return!!Array.isArray(n)}function v(n){return null===n}var g,h,E=i(v);function N(n){return"function"==typeof n}function m(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return N(n)?n.apply(void 0,t):n}function y(n,t){var r;return null!==(r=m(n))&&void 0!==r?r:t}function R(n){return(n=s(n))[n.length-1]}function S(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];d(u)?r.push(S(u,t)):(u=t(u),E(u)&&r.push(u))}return r}function C(n,t,r){return T(n,t)[R(t)]=r,n}function b(n){return s(n).reduce((function(n,t){return d(t)?n.concat(b(t)):s(n).concat(t)}),[])}function T(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=y(n[e],[]),n=n[e]}return n}function _(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return R(t)},getCursor:function(){return s(t)},next:function(){return t[t.length-1]++,R(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(g||(g={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(h||(h={}));var I=r.createContext((function(n,t){return t?null:c({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:g.DEFAULT,keys:{current:{},prev:{}}},mode:[h.ALL],testCursor:_()},n)}));function O(){return I.useX().stateRef}function A(){return O().suiteId()[0]}function k(){return O().testCallbacks()}function L(n){return x()[0][n]}function x(){return O().optionalFields()}function F(n,t){(0,x()[1])((function(r){var e;return c(r,((e={})[n]=m(t,r[n]),e))}))}function U(n){var t;return null===(t=L(n))||void 0===t?void 0:t[0]}function W(){return O().testObjects()}function G(){P((function(n){return n}))}function P(n){(0,W()[1])((function(t){return{prev:t.prev,current:s(n(t.current))}}))}function D(){return H().filter((function(n){return n.isPending()}))}var w,X=p();function H(){var n=W()[0].current;return X([n],(function(){return b(n)}))}function K(n){H().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(w||(w={}));var M,q,j=function(){function n(n,t,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=w.Error,this.status=B,this.fieldName=n,this.testFn=t,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){(function(n,t){return o(n)&&u(t)})(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==$||(this.status=n)},n.prototype.warns=function(){return this.severity===w.Warning},n.prototype.setPending=function(){this.setStatus(Q)},n.prototype.fail=function(){this.setStatus(this.warns()?J:Y)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(z)},n.prototype.warn=function(){this.severity=w.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(V)},n.prototype.cancel=function(){this.setStatus(Z),G()},n.prototype.reset=function(){this.status=B,G()},n.prototype.omit=function(){this.setStatus($)},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(Q)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals($)},n.prototype.isUntested=function(){return this.statusEquals(B)},n.prototype.isFailing=function(){return this.statusEquals(Y)},n.prototype.isCanceled=function(){return this.statusEquals(Z)},n.prototype.isSkipped=function(){return this.statusEquals(V)},n.prototype.isPassing=function(){return this.statusEquals(z)},n.prototype.isWarning=function(){return this.statusEquals(J)},n.prototype.statusEquals=function(n){return this.status===n},n}(),B="UNTESTED",V="SKIPPED",Y="FAILED",J="WARNING",z="PASSING",Q="PENDING",Z="CANCELED",$="OMITTED";function nn(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?m(t):t)}function tn(n){function t(n,t,u){return e.references.push(),r(n,m(t,u)),function(){return[e.references[n],function(t){return r(n,m(t,e.references[n]))}]}}function r(t,r){var i=e.references[t];e.references[t]=r,N(t=u[t][1])&&t(r,i),N(n)&&n()}var e={references:[]},u=[];return{registerStateKey:function(n,r){var e=u.length;return u.push([n,r]),t(e,n)},reset:function(){var n=e.references;e.references=[],u.forEach((function(r,e){return t(e,r[0],n[e])}))}}}function rn(n,t){var r=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(r),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function en(n){return v(n)||o(n)}function un(n){setTimeout((function(){throw Error(n)}),0)}function on(){return I.useX().testCursor.getCursor()}function sn(){return I.useX().testCursor.cursorAt()}function cn(){return I.useX().testCursor.next()}function an(n,t){n=void 0===(n=n.type)?g.DEFAULT:n,nn(N(t));var r={current:{},prev:{}},e=on();return I.run({isolate:{type:n,keys:r}},(function(){I.useX().testCursor.addLevel(),r.prev=s(T(W()[0].prev,on())).reduce((function(n,t){return t instanceof j&&!en(t.key)?(n[t.key]=t,n):n}),{}),P((function(n){return C(n,e,[])}));var n=t();return I.useX().testCursor.removeLevel(),cn(),n}))}function fn(n){return n===M.ERRORS?q.ERROR_COUNT:q.WARN_COUNT}function ln(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function pn(n){return!n||(function(n){return"number"==typeof n}(n)?0===n:ln(n,"length")?f(n,0):"object"==typeof n&&f(Object.keys(n),0))}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(M||(M={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(q||(q={}));var dn=i(pn);function vn(n,t){return!!t&&!gn(n,t)}function gn(n,t){return!(!t||n.fieldName!==t)}var hn=i((function(n,t){return n.groupName===t}));function En(n){return function(n,t){return H().some((function(r){return Nn(r,n,t)}))}(M.ERRORS,n)}function Nn(n,t,r){return!(!n.hasFailures()||vn(n,r)||function(n,t){return function(n,t){return!!n!=!!t}(n===M.WARNINGS,t.warns())}(t,n))}function mn(n){return!!Rn(n)||!En(n)&&(!pn(H())&&!function(n){return dn(D().filter((function(t){return Sn(t,n)})))}(n)&&function(n){return H().every((function(t){return!!vn(t,n)||Cn(t,n)}))}(n))}function yn(n,t){return!!Rn(t)||!function(n,t,r){return H().some((function(e){return!hn(e,t)&&Nn(e,n,r)}))}(M.ERRORS,n,t)&&!function(n,t){return dn(D().filter((function(r){return!hn(r,n)&&Sn(r,t)})))}(n,t)&&function(n,t){return H().every((function(r){return!!hn(r,n)||Cn(r,t)}))}(n,t)}function Rn(n){return!!n&&!0===function(n){var t;return null===(t=L(n))||void 0===t?void 0:t[1]}(n)}function Sn(n,t){return!vn(n,t)&&!0!==U(n.fieldName)}function Cn(n,t){return!!vn(n,t)||(!0===U(n.fieldName)||n.isTested()||n.isOmitted())}function bn(){var n=I.useX().summary;return nn(n),n}function Tn(){var n=H(),t=c({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){return function(n,t){n[t.fieldName]=_n(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&mn(t.fieldName)}(n.tests,t),function(n,t){var r=t.groupName;r&&(n[r]=n[r]||{},n[r][t.fieldName]=_n(n[r],t),n[r][t.fieldName].valid=!1!==n[r][t.fieldName].valid&&yn(r,t.fieldName))}(n.groups,t),n}),t),t.valid=mn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}function _n(n,t){function r(n){var t=fn(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||c({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[e];return t.isNonActionable()||(n[e].testCount++,t.isFailing()?r(M.ERRORS):t.isWarning()&&r(M.WARNINGS)),i}function In(n){return l(n,0)}function On(n,t,r){return r?function(n,t,r){var e;return(null===(e=null==n?void 0:n[r])||void 0===e?void 0:e[t])||[]}(n,t,r):function(n,t){var r,e={},u=fn(t);for(r in n)In(n[r][u])&&(e[r]=n[r][t]||[]);return e}(n,t)}function An(n){return Ln(M.ERRORS,n)}function kn(n){return Ln(M.WARNINGS,n)}function Ln(n,t){return On(bn().tests,n,t)}function xn(n,t){return Un(n,M.ERRORS,t)}function Fn(n,t){return Un(n,M.WARNINGS,t)}function Un(n,t,r){return On(bn().groups[n],t,r)}function Wn(n){return Pn(q.ERROR_COUNT,n)}function Gn(n){return Pn(q.WARN_COUNT,n)}function Pn(n,t){var r,e=bn();return In(t?null===(r=e.tests[t])||void 0===r?void 0:r[n]:e[n])}function Dn(n,t){return Xn(M.ERRORS,n,t)}function wn(n,t){return Xn(M.WARNINGS,n,t)}function Xn(n,t,r){var e,u,i=bn();if(n=fn(n),!(t=i.groups[t]))return!1;if(r)return In(null===(e=t[r])||void 0===e?void 0:e[n]);for(var o in t)if(In(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Hn(n){var t=bn();return n?!!Mn(t.tests,n):t.valid}function Kn(n,t){if(!(n=bn().groups[n]))return!1;if(t)return Mn(n,t);for(var r in n)if(!Mn(n,r))return!1;return!0}function Mn(n,t){var r;return!(null===(r=n[t])||void 0===r||!r.valid)}var qn=p(1);function jn(){var n=H(),t={stateRef:O()};return qn([n],I.bind(t,(function(){var n=Tn(),t=O().suiteName()[0],r={summary:n};return c(n,{getErrors:I.bind(r,An),getErrorsByGroup:I.bind(r,xn),getWarnings:I.bind(r,kn),getWarningsByGroup:I.bind(r,Fn),hasErrors:I.bind(r,Wn),hasErrorsByGroup:I.bind(r,Dn),hasWarnings:I.bind(r,Gn),hasWarningsByGroup:I.bind(r,wn),isValid:I.bind(r,Hn),isValidByGroup:I.bind(r,Kn),suiteName:t})})))}function Bn(n){var t=D();return!pn(t)&&(n?t.some((function(t){return gn(t,n)})):dn(t))}var Vn=p(20);function Yn(){var n=H(),t={stateRef:O()};return Vn([n],I.bind(t,(function(){return c({},jn(),{done:I.bind(t,Zn)})})))}function Jn(n,t,r){return!(N(n)&&(!t||r.tests[t]&&!pn(r.tests[t].testCount)))}function zn(n){return!(Bn()&&(!n||Bn(n)))}var Qn,Zn=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Yn(),Jn(r,n,t))return t;var e=function(){return r(jn())};return zn(n)?(e(),t):($n(e,n),t)};function $n(n,t){(0,k()[1])((function(r){return t?r.fieldCallbacks[t]=(r.fieldCallbacks[t]||[]).concat(n):r.doneCallbacks.push(n),r}))}function nt(n){return n.forEach((function(n){return n()}))}function tt(){var n=function(){var n={};return{emit:function(t,r){(n[t]||[]).forEach((function(n){n(r)}))},on:function(t,r){return n[t]=(n[t]||[]).concat(r),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==r}))}}}}}();return n.on(Qn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=k()[0].fieldCallbacks;n&&!Bn(n)&&d(t[n])&&nt(t[n])}(t.fieldName),Bn()||n.emit(Qn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Qn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),F(n.fieldName,(function(n){return[n[0],!0]})))}if(!pn(x()[0])){var t={};P((function(r){return S(r,(function(r){if(ln(t,r.fieldName))n(r);else{var e=U(r.fieldName);N(e)&&(t[r.fieldName]=e(),n(r))}return r}))}))}}()})),n.on(Qn.ALL_RUNNING_TESTS_FINISHED,(function(){nt(k()[0].doneCallbacks)})),n.on(Qn.REMOVE_FIELD,(function(n){K((function(t){gn(t,n)&&(t.cancel(),function(n){P((function(t){return S(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Qn.RESET_FIELD,(function(n){K((function(t){gn(t,n)&&t.reset()}))})),n}function rt(){var n=I.useX();return nn(n.bus),n.bus}!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"}(Qn||(Qn={}));function et(){return!!I.useX().skipped}function ut(n){return st(0,"tests",n)}function it(n){return st(1,"tests",n)}function ot(n){var t=n.fieldName;if(n=n.groupName,et())return!0;var r=I.useX(),e=r.exclusion;r=r.inclusion;var u=e.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){if(function(n){var t=I.useX().exclusion.groups;return ln(t,n)?!1===t[n]:at()}(n))return!0;if(!0===e.groups[n])return!i&&(!!ct(u)||!1===u[t])}return!!function(n){return!!at()&&!n}(n)||!i&&(!!ct(u)&&!m(r[t]))}function st(n,t,r){var e=I.useX("hook called outside of a running suite.");r&&s(r).forEach((function(r){u(r)&&(e.exclusion[t][r]=0===n)}))}function ct(n){for(var t in n)if(!0===n[t])return!0;return!1}function at(){var n,t=I.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function ft(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function lt(n){return!(!function(n){return I.useX().mode[0]===n}(h.EAGER)||!En(n.fieldName))}function pt(){return!!I.useX().omitted}function dt(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||Array.prototype.slice.call(t))}function vt(n){return n&&N(n.then)}function gt(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function ht(n){var t=n.asyncTest,r=n.message;if(vt(t)){var e=rt().emit,i=O(),o=I.bind({stateRef:i},(function(){G(),e(Qn.TEST_COMPLETED,n)}));i=I.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=u(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Et(n){var t=rt(),r=function(n){return I.run({currentTest:n},(function(){return n.run()}))}(n);try{vt(r)?(n.asyncTest=r,n.setPending(),ht(n)):t.emit(Qn.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}function Nt(n){var t=W()[0].prev;return pn(t)?(mt(n),n):(t=function(n){var t=on();return function(n,t){return T(n,t)[R(t)]}(n,t)}(t),en(n.key)?(function(n,t){return dn(n)&&!gt(n,t)}(t,n)&&(function(n,t){I.useX().isolate.type===g.EACH||un("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.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.'))}(t,n),function(){var n=W(),t=n[1],r=n[0].prev;n=T(r,on());var e=sn();n.splice(e),t((function(n){return{prev:r,current:n.current}}))}(),t=null),mt(n=y(t,n)),n):(mt(n=function(n,t){var r=function(n){return I.useX().isolate.keys.prev[n]}(n);return r&&(t=r),function(n,t){var r=I.useX().isolate.keys.current;en(r[n])?r[n]=t:un('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."))}(n,t),t}(n.key,n)),n))}function mt(n){var t=on();P((function(r){return C(r,t,n)}))}function yt(n){if(lt(n))return n.skip(),Nt(n),cn(),n;var t=Nt(n);return pt()?(t.omit(),cn(),t):ot(n)?(t.skip(et()),cn(),t):(function(n,t){t!==n&&gt(n,t)&&n.isPending()&&n.cancel()}(t,n),mt(n),cn(),function(n){n.isUntested()?Et(n):vt(n.asyncTest)&&(n.setPending(),ht(n))}(n),n)}function Rt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=N(t[1])?t:dt([void 0],t,!0);t=e[0],r=e[1],e=e[2],nn(u(n),Ct("fieldName","string")),nn(N(r),Ct("Test callback","function"));var i=I.useX();return yt(t=new j(n,r,{message:t,groupName:i.groupName,key:e}))}ut.group=function(n){return st(0,"groups",n)},it.group=function(n){return st(1,"groups",n)};var St=c(Rt,{memo:function(n){var t=p(10);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=sn();var i=(e=e.reverse())[0],o=e[1],s=e[2];return u=[A(),r,u].concat(i),v(e=t.get(u))?t(u,(function(){return n(r,s,o)})):e[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(r,s,o)}))):yt(e[1])}}(Rt)});function Ct(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return t.enforce}}),exports.VERSION="4.4.0-dev-08ec91",exports.context=I,exports.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];n=n[1],nn(N(r),"vest.create: Expected callback to be a function.");var u=tt(),i=tn();return n={stateRef:rn(i,{suiteId:e(),suiteName:n}),bus:u},c(I.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:g.SUITE},(function(){r.apply(void 0,n)})),u.emit(Qn.SUITE_CALLBACK_DONE_RUNNING),Yn()})),{get:I.bind(n,jn),remove:I.bind(n,(function(n){u.emit(Qn.REMOVE_FIELD,n)})),reset:i.reset,resetField:I.bind(n,(function(n){u.emit(Qn.RESET_FIELD,n)}))})},exports.each=function(n,t){nn(N(t),"each callback must be a function"),an({type:g.EACH},(function(){n.forEach((function(n,r){t(n,r)}))}))},exports.eager=function(){!function(n){I.useX().mode[0]=n}(h.EAGER)},exports.group=function(n,t){nn(u(n),ft("name must be a string")),nn(N(t),ft("callback must be a function")),an({type:g.GROUP},(function(){I.run({groupName:n},t)}))},exports.include=function(n){var t=I.useX(),r=t.inclusion;return t=t.exclusion,nn(u(n)),r[n]=y(t.tests[n],!0),{when:function(t){var r=I.useX(),e=r.exclusion;r.inclusion[n]=function(){return ln(e.tests,n)?y(e.tests[n],!0):u(t)?!!e.tests[t]:m(t,m(jn))}}}},exports.omitWhen=function(n,t){an({type:g.OMIT_WHEN},(function(){I.run({omitted:pt()||m(n,m(jn))},(function(){return t()}))}))},exports.only=ut,exports.optional=function(n){if(d(n)||u(n))s(n).forEach((function(n){F(n,[!0,!1])}));else for(var t in n)F(t,[n[t],!1])},exports.skip=it,exports.skipWhen=function(n,t){an({type:g.SKIP_WHEN},(function(){I.run({skipped:et()||m(n,m(jn))},(function(){return t()}))}))},exports.test=St,exports.warn=function(){var n=I.useX("warn hook called outside of a running suite.");nn(n.currentTest,"warn called outside of a test."),n.currentTest.warn()};
@@ -691,6 +691,11 @@ function matchingFieldName(testObject, fieldName) {
691
691
  return !!(fieldName && testObject.fieldName === fieldName);
692
692
  }
693
693
 
694
+ var nonMatchingGroupName = bindNot(matchingGroupName);
695
+ function matchingGroupName(testObject, groupName) {
696
+ return testObject.groupName === groupName;
697
+ }
698
+
694
699
  function either(a, b) {
695
700
  return !!a !== !!b;
696
701
  }
@@ -715,6 +720,15 @@ function hasFailuresByTestObjects(severityKey, fieldName) {
715
720
  return hasFailuresByTestObject(testObject, severityKey, fieldName);
716
721
  });
717
722
  }
723
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
724
+ var testObjects = useTestsFlat();
725
+ return testObjects.some(function (testObject) {
726
+ if (nonMatchingGroupName(testObject, groupName)) {
727
+ return false;
728
+ }
729
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
730
+ });
731
+ }
718
732
  /**
719
733
  * Determines whether a certain test profile has failures.
720
734
  */
@@ -732,7 +746,7 @@ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
732
746
  }
733
747
 
734
748
  // eslint-disable-next-line max-statements, complexity
735
- function shouldAddValidProp(fieldName) {
749
+ function shouldAddValidProperty(fieldName) {
736
750
  if (fieldIsOmitted(fieldName)) {
737
751
  return true;
738
752
  }
@@ -743,36 +757,78 @@ function shouldAddValidProp(fieldName) {
743
757
  if (isEmpty(testObjects)) {
744
758
  return false;
745
759
  }
760
+ // Does the given field have any pending tests that are not optional?
746
761
  if (hasNonOptionalIncomplete(fieldName)) {
747
762
  return false;
748
763
  }
749
764
  return noMissingTests(fieldName);
750
765
  }
766
+ function shouldAddValidPropertyInGroup(groupName, fieldName) {
767
+ if (fieldIsOmitted(fieldName)) {
768
+ return true;
769
+ }
770
+ if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
771
+ return false;
772
+ }
773
+ // Do the given group/field have any pending tests that are not optional?
774
+ if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
775
+ return false;
776
+ }
777
+ return noMissingTestsByGroup(groupName, fieldName);
778
+ }
751
779
  function fieldIsOmitted(fieldName) {
752
780
  if (!fieldName) {
753
781
  return false;
754
782
  }
755
783
  return useOptionalFieldApplied(fieldName) === true;
756
784
  }
785
+ // Does the given field have any pending tests that are not optional?
757
786
  function hasNonOptionalIncomplete(fieldName) {
758
787
  return isNotEmpty(useAllIncomplete().filter(function (testObject) {
759
- if (nonMatchingFieldName(testObject, fieldName)) {
788
+ return isOptionalFieldIncomplete(testObject, fieldName);
789
+ }));
790
+ }
791
+ // Do the given group/field have any pending tests that are not optional?
792
+ function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
793
+ return isNotEmpty(useAllIncomplete().filter(function (testObject) {
794
+ if (nonMatchingGroupName(testObject, groupName)) {
760
795
  return false;
761
796
  }
762
- return useOptionalFieldConfig(testObject.fieldName) !== true;
797
+ return isOptionalFieldIncomplete(testObject, fieldName);
763
798
  }));
764
799
  }
800
+ function isOptionalFieldIncomplete(testObject, fieldName) {
801
+ if (nonMatchingFieldName(testObject, fieldName)) {
802
+ return false;
803
+ }
804
+ return useOptionalFieldConfig(testObject.fieldName) !== true;
805
+ }
765
806
  function noMissingTests(fieldName) {
766
807
  var testObjects = useTestsFlat();
767
808
  return testObjects.every(function (testObject) {
768
809
  if (nonMatchingFieldName(testObject, fieldName)) {
769
810
  return true;
770
811
  }
771
- return (useOptionalFieldConfig(testObject.fieldName) === true ||
772
- testObject.isTested() ||
773
- testObject.isOmitted());
812
+ return missingTestsLogic(testObject, fieldName);
813
+ });
814
+ }
815
+ function noMissingTestsByGroup(groupName, fieldName) {
816
+ var testObjects = useTestsFlat();
817
+ return testObjects.every(function (testObject) {
818
+ if (nonMatchingGroupName(testObject, groupName)) {
819
+ return true;
820
+ }
821
+ return missingTestsLogic(testObject, fieldName);
774
822
  });
775
823
  }
824
+ function missingTestsLogic(testObject, fieldName) {
825
+ if (nonMatchingFieldName(testObject, fieldName)) {
826
+ return true;
827
+ }
828
+ return (useOptionalFieldConfig(testObject.fieldName) === true ||
829
+ testObject.isTested() ||
830
+ testObject.isOmitted());
831
+ }
776
832
 
777
833
  function useSummary() {
778
834
  var summary = context.useX().summary;
@@ -794,7 +850,7 @@ function genTestsSummary() {
794
850
  appendToGroup(summary.groups, testObject);
795
851
  return summary;
796
852
  }, summary);
797
- summary.valid = shouldAddValidProp();
853
+ summary.valid = shouldAddValidProperty();
798
854
  return countFailures(summary);
799
855
  }
800
856
  function appendToTest(tests, testObject) {
@@ -803,7 +859,7 @@ function appendToTest(tests, testObject) {
803
859
  tests[testObject.fieldName].valid =
804
860
  tests[testObject.fieldName].valid === false
805
861
  ? false
806
- : shouldAddValidProp(testObject.fieldName);
862
+ : shouldAddValidProperty(testObject.fieldName);
807
863
  }
808
864
  /**
809
865
  * Appends to a group object if within a group
@@ -815,6 +871,10 @@ function appendToGroup(groups, testObject) {
815
871
  }
816
872
  groups[groupName] = groups[groupName] || {};
817
873
  groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
874
+ groups[groupName][testObject.fieldName].valid =
875
+ groups[groupName][testObject.fieldName].valid === false
876
+ ? false
877
+ : shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
818
878
  }
819
879
  /**
820
880
  * Counts the failed tests and adds global counters
@@ -957,9 +1017,30 @@ function hasFailuresByGroup(severityKey, groupName, fieldName) {
957
1017
  }
958
1018
 
959
1019
  function isValid(fieldName) {
960
- var _a;
961
1020
  var summary = useSummary();
962
- return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1021
+ return fieldName
1022
+ ? Boolean(isFieldValid(summary.tests, fieldName))
1023
+ : summary.valid;
1024
+ }
1025
+ function isValidByGroup(groupName, fieldName) {
1026
+ var summary = useSummary();
1027
+ var group = summary.groups[groupName];
1028
+ if (!group) {
1029
+ return false;
1030
+ }
1031
+ if (fieldName) {
1032
+ return isFieldValid(group, fieldName);
1033
+ }
1034
+ for (var fieldName_1 in group) {
1035
+ if (!isFieldValid(group, fieldName_1)) {
1036
+ return false;
1037
+ }
1038
+ }
1039
+ return true;
1040
+ }
1041
+ function isFieldValid(testContainer, fieldName) {
1042
+ var _a;
1043
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
963
1044
  }
964
1045
 
965
1046
  var cache$1 = createCache(1);
@@ -980,6 +1061,7 @@ function produceSuiteResult() {
980
1061
  hasWarnings: context.bind(ref, hasWarnings),
981
1062
  hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
982
1063
  isValid: context.bind(ref, isValid),
1064
+ isValidByGroup: context.bind(ref, isValidByGroup),
983
1065
  suiteName: suiteName
984
1066
  });
985
1067
  }));
@@ -1876,6 +1958,6 @@ function warn() {
1876
1958
  ctx.currentTest.warn();
1877
1959
  }
1878
1960
 
1879
- var VERSION = "4.3.4";
1961
+ var VERSION = "4.4.0-dev-08ec91";
1880
1962
 
1881
1963
  export { VERSION, context, create, each, eager, group, include, omitWhen, only, optional, skip, skipWhen, test, warn };
@@ -1 +1 @@
1
- import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}var i=Object.assign;function o(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function s(t,n){return o(t)&&o(n)&&Number(t)===Number(n)}function a(t,n){return o(t)&&o(n)&&Number(t)>Number(n)}function c(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),a(r.length,t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return s(t.length,e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var f=u((function(t){return null===t}));function l(t){return"function"==typeof t}function p(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return l(t)?t.apply(void 0,n):t}function d(t,n){var e;return null!==(e=p(t))&&void 0!==e?e:n}function v(t){return(t=[].concat(t))[t.length-1]}function h(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(h(u,n)):(u=n(u),f(u)&&e.push(u))}return e}function g(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(g(n)):[].concat(t).concat(n)}),[])}function E(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=d(t[r],[]),t=t[r]}return t}function N(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return v(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,v(n)},removeLevel:function(){n.pop()},reset:t}}var m,y=m||(m={});y[y.DEFAULT=0]="DEFAULT",y[y.SUITE=1]="SUITE",y[y.EACH=2]="EACH",y[y.SKIP_WHEN=3]="SKIP_WHEN",y[y.OMIT_WHEN=4]="OMIT_WHEN",y[y.GROUP=5]="GROUP";var R,b=R||(R={});b[b.ALL=0]="ALL",b[b.EAGER=1]="EAGER";var C=t((function(t,n){return n?null:i({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:m.DEFAULT,keys:{current:{},prev:{}}},mode:[R.ALL],testCursor:N()},t)}));function S(){return C.useX().stateRef}function T(t){return S().optionalFields()[0][t]}function O(t,n){(0,S().optionalFields()[1])((function(e){var r;return i(e,((r={})[t]=p(n,e[t]),r))}))}function A(t){var n;return null===(n=T(t))||void 0===n?void 0:n[0]}function I(){_((function(t){return t}))}function _(t){(0,S().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function k(){return F().filter((function(t){return t.isPending()}))}var L=c();function F(){var t=S().testObjects()[0].current;return L([t],(function(){return g(t)}))}var U,P=U||(U={});P.Error="error",P.Warning="warning";var W=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=U.Error,this.status=G,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==K||(this.status=t)},t.prototype.warns=function(){return this.severity===U.Warning},t.prototype.setPending=function(){this.setStatus(j)},t.prototype.fail=function(){this.setStatus(this.warns()?D:w)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(x)},t.prototype.warn=function(){this.severity=U.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(X)},t.prototype.cancel=function(){this.setStatus(H),I()},t.prototype.reset=function(){this.status=G,I()},t.prototype.omit=function(){this.setStatus(K)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(j)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(K)},t.prototype.isUntested=function(){return this.statusEquals(G)},t.prototype.isFailing=function(){return this.statusEquals(w)},t.prototype.isCanceled=function(){return this.statusEquals(H)},t.prototype.isSkipped=function(){return this.statusEquals(X)},t.prototype.isPassing=function(){return this.statusEquals(x)},t.prototype.isWarning=function(){return this.statusEquals(D)},t.prototype.statusEquals=function(t){return this.status===t},t}(),G="UNTESTED",X="SKIPPED",w="FAILED",D="WARNING",x="PASSING",j="PENDING",H="CANCELED",K="OMITTED";function M(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?p(n):n)}function q(t){function n(t,n,u){return r.references.push(),e(t,p(n,u)),function(){return[r.references[t],function(n){return e(t,p(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,l(n=u[n][1])&&n(e,i),l(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function B(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function V(t){return null==t}function Y(t){setTimeout((function(){throw Error(t)}),0)}function J(){return C.useX().testCursor.getCursor()}function z(){return C.useX().testCursor.next()}function Q(t,n){t=void 0===(t=t.type)?m.DEFAULT:t,M(l(n));var e={current:{},prev:{}},r=J();return C.run({isolate:{type:t,keys:e}},(function(){C.useX().testCursor.addLevel(),e.prev=function(){var t=S().testObjects()[0].prev;return[].concat(E(t,J())).reduce((function(t,n){return n instanceof W&&!V(n.key)?(t[n.key]=n,t):t}),{})}(),_((function(t){return E(t,r)[v(r)]=[],t}));var t=n();return C.useX().testCursor.removeLevel(),z(),t}))}var Z,$=Z||(Z={});$.WARNINGS="warnings",$.ERRORS="errors";var tt,nt=tt||(tt={});function et(t){return t===Z.ERRORS?tt.ERROR_COUNT:tt.WARN_COUNT}function rt(t){return!t||("number"==typeof t?0===t:Object.prototype.hasOwnProperty.call(t,"length")?s(t.length,0):"object"==typeof t&&s((t=Object.keys(t)).length,0))}nt.ERROR_COUNT="errorCount",nt.WARN_COUNT="warnCount";var ut=u(rt);function it(t,n){return!(!n||t.fieldName!==n)}function ot(t,n){return F().some((function(e){return e.hasFailures()?n&&!it(e,n)?e=!1:(e=e.warns(),e=t===Z.WARNINGS==!!e):e=!1,e}))}function st(t){if(t)var n,e=!0===(null===(n=T(t))||void 0===n?void 0:n[1]);else e=!1;return!!e||!ot(Z.ERRORS,t)&&(!rt(e=F())&&!function(t){return ut(k().filter((function(n){return!(t&&!it(n,t))&&!0!==A(n.fieldName)})))}(t)&&function(t){return F().every((function(n){return!(!t||it(n,t))||(!0===A(n.fieldName)||n.isTested()||n.isOmitted())}))}(t))}function at(){var t=C.useX().summary;return M(t),t}function ct(t,n){function e(t){var n=et(t);o[n]++,u&&(o[t]=(o[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||i({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var o=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(Z.ERRORS):n.isWarning()&&e(Z.WARNINGS)),o}function ft(t,n,e){var r;return(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r[n])||[]}function lt(t,n){var e,r={},u=et(n);for(e in t)a(t[e][u],0)&&(r[e]=t[e][n]||[]);return r}function pt(t){return vt(Z.ERRORS,t)}function dt(t){return vt(Z.WARNINGS,t)}function vt(t,n){var e=at().tests;return n?ft(e,t,n):lt(e,t)}function ht(t,n){return Et(t,Z.ERRORS,n)}function gt(t,n){return Et(t,Z.WARNINGS,n)}function Et(t,n,e){return t=at().groups[t],e?ft(t,n,e):lt(t,n)}function Nt(t){return yt(tt.ERROR_COUNT,t)}function mt(t){return yt(tt.WARN_COUNT,t)}function yt(t,n){var e,r=at();return a(n?null===(e=r.tests[n])||void 0===e?void 0:e[t]:r[t],0)}function Rt(t,n){return Ct(Z.ERRORS,t,n)}function bt(t,n){return Ct(Z.WARNINGS,t,n)}function Ct(t,n,e){var r,u,i=at();if(t=et(t),!(n=i.groups[n]))return!1;if(e)return a(null===(r=n[e])||void 0===r?void 0:r[t],0);for(var o in n)if(a(null===(u=n[o])||void 0===u?void 0:u[t],0))return!0;return!1}function St(t){var n,e=at();return t?!(null===(n=e.tests[t])||void 0===n||!n.valid):e.valid}var Tt=c(1);function Ot(){var t=F(),n={stateRef:S()};return Tt([t],C.bind(n,(function(){var t=function(){var t=F(),n=i({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var e=t.tests;e[n.fieldName]=ct(e,n),e[n.fieldName].valid=!1!==e[n.fieldName].valid&&st(n.fieldName),e=t.groups;var r=n.groupName;return r&&(e[r]=e[r]||{},e[r][n.fieldName]=ct(e[r],n)),t}),n),n.valid=st(),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}(),n=S().suiteName()[0],e={summary:t};return i(t,{getErrors:C.bind(e,pt),getErrorsByGroup:C.bind(e,ht),getWarnings:C.bind(e,dt),getWarningsByGroup:C.bind(e,gt),hasErrors:C.bind(e,Nt),hasErrorsByGroup:C.bind(e,Rt),hasWarnings:C.bind(e,mt),hasWarningsByGroup:C.bind(e,bt),isValid:C.bind(e,St),suiteName:n})})))}function At(t){var n=k();return!rt(n)&&(t?n.some((function(n){return it(n,t)})):ut(n))}var It=c(20);function _t(){var t=F(),n={stateRef:S()};return It([t],C.bind(n,(function(){return i({},Ot(),{done:C.bind(n,Ft)})})))}function kt(t,n,e){return!(l(t)&&(!n||e.tests[n]&&!rt(e.tests[n].testCount)))}function Lt(t){return!(At()&&(!t||At(t)))}function Ft(){function t(){return r(Ot())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=_t(),kt(r,n,e)?e:Lt(n)?(t(),e):(Ut(t,n),e)}function Ut(t,n){(0,S().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function Pt(t){return t.forEach((function(t){return t()}))}function Wt(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==e}))}}}}}();return t.on(Xt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=S().testCallbacks()[0].fieldCallbacks;n&&!At(n)&&Array.isArray(e[n])&&Pt(e[n]),At()||t.emit(Xt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(Xt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function t(t){n[t.fieldName]&&(t.omit(),O(t.fieldName,(function(t){return[t[0],!0]})))}if(!rt(S().optionalFields()[0])){var n={};_((function(e){return h(e,(function(e){if(Object.prototype.hasOwnProperty.call(n,e.fieldName))t(e);else{var r=A(e.fieldName);l(r)&&(n[e.fieldName]=r(),t(e))}return e}))}))}}()})),t.on(Xt.ALL_RUNNING_TESTS_FINISHED,(function(){Pt(S().testCallbacks()[0].doneCallbacks)})),t.on(Xt.REMOVE_FIELD,(function(t){F().forEach((function(n){it(n,t)&&(n.cancel(),function(t){_((function(n){return h(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(Xt.RESET_FIELD,(function(t){F().forEach((function(n){it(n,t)&&n.reset()}))})),t}function Gt(){var t=C.useX();return M(t.bus),t.bus}var Xt,wt=Xt||(Xt={});function Dt(t){return jt(0,"tests",t)}function xt(t){return jt(1,"tests",t)}function jt(t,n,e){var u=C.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function Ht(t){for(var n in t)if(!0===t[n])return!0;return!1}function Kt(){var t,n=C.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function Mt(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function qt(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function Bt(t){var n=t.asyncTest,e=t.message;if(n&&l(n.then)){var u=Gt().emit,i=S(),o=C.bind({stateRef:i},(function(){I(),u(Xt.TEST_COMPLETED,t)}));i=C.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function Vt(t){var n=S().testObjects()[0].prev;if(rt(n))return Yt(t),t;var e=J();if(n=E(n,e)[v(e)],!V(t.key)){n=t.key,(e=C.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=C.useX().isolate.keys.current;return V(r[n])?r[n]=e:Y('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Yt(t),t}return!ut(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(C.useX().isolate.type===m.EACH||Y("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.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 t=S().testObjects(),n=t[1],e=t[0].prev;t=E(e,J());var r=C.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),Yt(t=d(n,t)),t}function Yt(t){var n=J();_((function(e){return E(e,n)[v(n)]=t,e}))}function Jt(t){var n=R.EAGER;if(n=!(C.useX().mode[0]!==n||!ot(Z.ERRORS,t.fieldName)))return t.skip(),Vt(t),z(),t;if(n=Vt(t),C.useX().omitted)return n.omit(),z(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,C.useX().skipped)return!0;var e=C.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){var o=C.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,t)?!1===o[t]:Kt())return!0;if(!0===r.groups[t])return!(i||!Ht(u)&&!1!==u[n])}return!!(t=!!Kt()&&!t)||!i&&!!Ht(u)&&!p(e[n])}(t))return n.skip(!!C.useX().skipped),z(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),Yt(t),z(),t.isUntested()){n=Gt();var e=function(t){return C.run({currentTest:t},(function(){return t.run()}))}(t);try{e&&l(e.then)?(t.asyncTest=e,t.setPending(),Bt(t)):n.emit(Xt.TEST_COMPLETED,t)}catch(n){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&l(n.then)&&(t.setPending(),Bt(t));return t}function zt(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var u=l(n[1])?n:qt([void 0],n,!0);n=u[0],e=u[1],u=u[2],M(r(t),Zt("fieldName","string")),M(l(e),Zt("Test callback","function"));var i=C.useX();return Jt(n=new W(t,e,{message:n,groupName:i.groupName,key:u}))}wt.TEST_COMPLETED="test_completed",wt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",wt.REMOVE_FIELD="remove_field",wt.RESET_FIELD="reset_field",wt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Dt.group=function(t){return jt(0,"groups",t)},xt.group=function(t){return jt(1,"groups",t)};var Qt=i(zt,{memo:function(t){var n=c(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=C.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[S().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):Jt(r[1])}}(zt)});function Zt(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var $t="4.3.4";function tn(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],M(l(r),"vest.create: Expected callback to be a function.");var u=Wt(),o=q();return t={stateRef:B(o,{suiteId:e(),suiteName:t}),bus:u},i(C.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return o.reset(),Q({type:m.SUITE},(function(){r.apply(void 0,t)})),u.emit(Xt.SUITE_CALLBACK_DONE_RUNNING),_t()})),{get:C.bind(t,Ot),remove:C.bind(t,(function(t){u.emit(Xt.REMOVE_FIELD,t)})),reset:o.reset,resetField:C.bind(t,(function(t){u.emit(Xt.RESET_FIELD,t)}))})}function nn(t,n){M(l(n),"each callback must be a function"),Q({type:m.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function en(){var t=R.EAGER;C.useX().mode[0]=t}function rn(t,n){M(r(t),Mt("name must be a string")),M(l(n),Mt("callback must be a function")),Q({type:m.GROUP},(function(){C.run({groupName:t},n)}))}function un(t){var n=C.useX(),e=n.inclusion;return n=n.exclusion,M(r(t)),e[t]=d(n.tests[t],!0),{when:function(n){var e=C.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?d(u.tests[t],!0):r(n)?!!u.tests[n]:p(n,p(Ot))}}}}function on(t,n){Q({type:m.OMIT_WHEN},(function(){C.run({omitted:!!C.useX().omitted||p(t,p(Ot))},(function(){return n()}))}))}function sn(t){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){O(t,[!0,!1])}));else for(var n in t)O(n,[t[n],!1])}function an(t,n){Q({type:m.SKIP_WHEN},(function(){C.run({skipped:!!C.useX().skipped||p(t,p(Ot))},(function(){return n()}))}))}function cn(){var t=C.useX("warn hook called outside of a running suite.");M(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{$t as VERSION,C as context,tn as create,nn as each,en as eager,rn as group,un as include,on as omitWhen,Dt as only,sn as optional,xt as skip,an as skipWhen,Qt as test,cn as warn};
1
+ import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}var i=Object.assign;function o(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function s(t,n){return o(t)&&o(n)&&Number(t)===Number(n)}function a(t,n){return o(t)&&o(n)&&Number(t)>Number(n)}function c(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),a(r.length,t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return s(t.length,e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var f=u((function(t){return null===t}));function l(t){return"function"==typeof t}function d(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return l(t)?t.apply(void 0,n):t}function p(t,n){var e;return null!==(e=d(t))&&void 0!==e?e:n}function v(t){return(t=[].concat(t))[t.length-1]}function h(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(h(u,n)):(u=n(u),f(u)&&e.push(u))}return e}function g(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(g(n)):[].concat(t).concat(n)}),[])}function E(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=p(t[r],[]),t=t[r]}return t}function N(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return v(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,v(n)},removeLevel:function(){n.pop()},reset:t}}var m,y=m||(m={});y[y.DEFAULT=0]="DEFAULT",y[y.SUITE=1]="SUITE",y[y.EACH=2]="EACH",y[y.SKIP_WHEN=3]="SKIP_WHEN",y[y.OMIT_WHEN=4]="OMIT_WHEN",y[y.GROUP=5]="GROUP";var R,b=R||(R={});b[b.ALL=0]="ALL",b[b.EAGER=1]="EAGER";var S=t((function(t,n){return n?null:i({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:m.DEFAULT,keys:{current:{},prev:{}}},mode:[R.ALL],testCursor:N()},t)}));function C(){return S.useX().stateRef}function O(t){return C().optionalFields()[0][t]}function T(t,n){(0,C().optionalFields()[1])((function(e){var r;return i(e,((r={})[t]=d(n,e[t]),r))}))}function A(t){var n;return null===(n=O(t))||void 0===n?void 0:n[0]}function I(){_((function(t){return t}))}function _(t){(0,C().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function k(){return F().filter((function(t){return t.isPending()}))}var L=c();function F(){var t=C().testObjects()[0].current;return L([t],(function(){return g(t)}))}var U,G=U||(U={});G.Error="error",G.Warning="warning";var P=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=U.Error,this.status=W,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==K||(this.status=t)},t.prototype.warns=function(){return this.severity===U.Warning},t.prototype.setPending=function(){this.setStatus(j)},t.prototype.fail=function(){this.setStatus(this.warns()?D:w)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(x)},t.prototype.warn=function(){this.severity=U.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(X)},t.prototype.cancel=function(){this.setStatus(H),I()},t.prototype.reset=function(){this.status=W,I()},t.prototype.omit=function(){this.setStatus(K)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(j)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(K)},t.prototype.isUntested=function(){return this.statusEquals(W)},t.prototype.isFailing=function(){return this.statusEquals(w)},t.prototype.isCanceled=function(){return this.statusEquals(H)},t.prototype.isSkipped=function(){return this.statusEquals(X)},t.prototype.isPassing=function(){return this.statusEquals(x)},t.prototype.isWarning=function(){return this.statusEquals(D)},t.prototype.statusEquals=function(t){return this.status===t},t}(),W="UNTESTED",X="SKIPPED",w="FAILED",D="WARNING",x="PASSING",j="PENDING",H="CANCELED",K="OMITTED";function M(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?d(n):n)}function q(t){function n(t,n,u){return r.references.push(),e(t,d(n,u)),function(){return[r.references[t],function(n){return e(t,d(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,l(n=u[n][1])&&n(e,i),l(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function B(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function V(t){return null==t}function Y(t){setTimeout((function(){throw Error(t)}),0)}function J(){return S.useX().testCursor.getCursor()}function z(){return S.useX().testCursor.next()}function Q(t,n){t=void 0===(t=t.type)?m.DEFAULT:t,M(l(n));var e={current:{},prev:{}},r=J();return S.run({isolate:{type:t,keys:e}},(function(){S.useX().testCursor.addLevel(),e.prev=function(){var t=C().testObjects()[0].prev;return[].concat(E(t,J())).reduce((function(t,n){return n instanceof P&&!V(n.key)?(t[n.key]=n,t):t}),{})}(),_((function(t){return E(t,r)[v(r)]=[],t}));var t=n();return S.useX().testCursor.removeLevel(),z(),t}))}var Z,$=Z||(Z={});$.WARNINGS="warnings",$.ERRORS="errors";var tt,nt=tt||(tt={});function et(t){return t===Z.ERRORS?tt.ERROR_COUNT:tt.WARN_COUNT}function rt(t){return!t||("number"==typeof t?0===t:Object.prototype.hasOwnProperty.call(t,"length")?s(t.length,0):"object"==typeof t&&s((t=Object.keys(t)).length,0))}nt.ERROR_COUNT="errorCount",nt.WARN_COUNT="warnCount";var ut=u(rt);function it(t,n){return!(!n||t.fieldName!==n)}var ot=u((function(t,n){return t.groupName===n}));function st(t,n){return F().some((function(e){return at(e,t,n)}))}function at(t,n,e){return(e=!t.hasFailures()||e&&!it(t,e))||(t=t.warns(),e=n===Z.WARNINGS!=!!t),!e}function ct(t){return!!ft(t)||!st(Z.ERRORS,t)&&(!rt(F())&&!function(t){return ut(k().filter((function(n){return lt(n,t)})))}(t)&&function(t){return F().every((function(n){return!(!t||it(n,t))||dt(n,t)}))}(t))}function ft(t){return!!t&&!0===(null===(n=O(t))||void 0===n?void 0:n[1]);var n}function lt(t,n){return!(n&&!it(t,n))&&!0!==A(t.fieldName)}function dt(t,n){return!(!n||it(t,n))||(!0===A(t.fieldName)||t.isTested()||t.isOmitted())}function pt(){var t=S.useX().summary;return M(t),t}function vt(){var t=F(),n=i({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var e=t.tests;e[n.fieldName]=ht(e,n),e[n.fieldName].valid=!1!==e[n.fieldName].valid&&ct(n.fieldName);var r=t.groups,u=n.groupName;return u&&(r[u]=r[u]||{},r[u][n.fieldName]=ht(r[u],n),e=r[u][n.fieldName],!1===r[u][n.fieldName].valid?n=!1:n=!!ft(n=n.fieldName)||!function(t,n,e){return F().some((function(r){return!ot(r,n)&&at(r,t,e)}))}(Z.ERRORS,u,n)&&!function(t,n){return ut(k().filter((function(e){return!ot(e,t)&&lt(e,n)})))}(u,n)&&function(t,n){return F().every((function(e){return!!ot(e,t)||dt(e,n)}))}(u,n),e.valid=n),t}),n),n.valid=ct(),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}function ht(t,n){function e(t){var n=et(t);o[n]++,u&&(o[t]=(o[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||i({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var o=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(Z.ERRORS):n.isWarning()&&e(Z.WARNINGS)),o}function gt(t,n,e){var r;return(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r[n])||[]}function Et(t,n){var e,r={},u=et(n);for(e in t)a(t[e][u],0)&&(r[e]=t[e][n]||[]);return r}function Nt(t){return yt(Z.ERRORS,t)}function mt(t){return yt(Z.WARNINGS,t)}function yt(t,n){var e=pt().tests;return n?gt(e,t,n):Et(e,t)}function Rt(t,n){return St(t,Z.ERRORS,n)}function bt(t,n){return St(t,Z.WARNINGS,n)}function St(t,n,e){return t=pt().groups[t],e?gt(t,n,e):Et(t,n)}function Ct(t){return Tt(tt.ERROR_COUNT,t)}function Ot(t){return Tt(tt.WARN_COUNT,t)}function Tt(t,n){var e,r=pt();return a(n?null===(e=r.tests[n])||void 0===e?void 0:e[t]:r[t],0)}function At(t,n){return _t(Z.ERRORS,t,n)}function It(t,n){return _t(Z.WARNINGS,t,n)}function _t(t,n,e){var r,u,i=pt();if(t=et(t),!(n=i.groups[n]))return!1;if(e)return a(null===(r=n[e])||void 0===r?void 0:r[t],0);for(var o in n)if(a(null===(u=n[o])||void 0===u?void 0:u[t],0))return!0;return!1}function kt(t){var n=pt();return t?!!Ft(n.tests,t):n.valid}function Lt(t,n){if(!(t=pt().groups[t]))return!1;if(n)return Ft(t,n);for(var e in t)if(!Ft(t,e))return!1;return!0}function Ft(t,n){var e;return!(null===(e=t[n])||void 0===e||!e.valid)}var Ut=c(1);function Gt(){var t=F(),n={stateRef:C()};return Ut([t],S.bind(n,(function(){var t=vt(),n=C().suiteName()[0],e={summary:t};return i(t,{getErrors:S.bind(e,Nt),getErrorsByGroup:S.bind(e,Rt),getWarnings:S.bind(e,mt),getWarningsByGroup:S.bind(e,bt),hasErrors:S.bind(e,Ct),hasErrorsByGroup:S.bind(e,At),hasWarnings:S.bind(e,Ot),hasWarningsByGroup:S.bind(e,It),isValid:S.bind(e,kt),isValidByGroup:S.bind(e,Lt),suiteName:n})})))}function Pt(t){var n=k();return!rt(n)&&(t?n.some((function(n){return it(n,t)})):ut(n))}var Wt=c(20);function Xt(){var t=F(),n={stateRef:C()};return Wt([t],S.bind(n,(function(){return i({},Gt(),{done:S.bind(n,xt)})})))}function wt(t,n,e){return!(l(t)&&(!n||e.tests[n]&&!rt(e.tests[n].testCount)))}function Dt(t){return!(Pt()&&(!t||Pt(t)))}function xt(){function t(){return r(Gt())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=Xt(),wt(r,n,e)?e:Dt(n)?(t(),e):(jt(t,n),e)}function jt(t,n){(0,C().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function Ht(t){return t.forEach((function(t){return t()}))}function Kt(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==e}))}}}}}();return t.on(qt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=C().testCallbacks()[0].fieldCallbacks;n&&!Pt(n)&&Array.isArray(e[n])&&Ht(e[n]),Pt()||t.emit(qt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(qt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function t(t){n[t.fieldName]&&(t.omit(),T(t.fieldName,(function(t){return[t[0],!0]})))}if(!rt(C().optionalFields()[0])){var n={};_((function(e){return h(e,(function(e){if(Object.prototype.hasOwnProperty.call(n,e.fieldName))t(e);else{var r=A(e.fieldName);l(r)&&(n[e.fieldName]=r(),t(e))}return e}))}))}}()})),t.on(qt.ALL_RUNNING_TESTS_FINISHED,(function(){Ht(C().testCallbacks()[0].doneCallbacks)})),t.on(qt.REMOVE_FIELD,(function(t){F().forEach((function(n){it(n,t)&&(n.cancel(),function(t){_((function(n){return h(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(qt.RESET_FIELD,(function(t){F().forEach((function(n){it(n,t)&&n.reset()}))})),t}function Mt(){var t=S.useX();return M(t.bus),t.bus}var qt,Bt=qt||(qt={});function Vt(t){return Jt(0,"tests",t)}function Yt(t){return Jt(1,"tests",t)}function Jt(t,n,e){var u=S.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function zt(t){for(var n in t)if(!0===t[n])return!0;return!1}function Qt(){var t,n=S.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function Zt(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function $t(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function tn(t){var n=t.asyncTest,e=t.message;if(n&&l(n.then)){var u=Mt().emit,i=C(),o=S.bind({stateRef:i},(function(){I(),u(qt.TEST_COMPLETED,t)}));i=S.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function nn(t){var n=C().testObjects()[0].prev;if(rt(n))return en(t),t;var e=J();if(n=E(n,e)[v(e)],!V(t.key)){n=t.key,(e=S.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=S.useX().isolate.keys.current;return V(r[n])?r[n]=e:Y('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),en(t),t}return!ut(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(S.useX().isolate.type===m.EACH||Y("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.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 t=C().testObjects(),n=t[1],e=t[0].prev;t=E(e,J());var r=S.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),en(t=p(n,t)),t}function en(t){var n=J();_((function(e){return E(e,n)[v(n)]=t,e}))}function rn(t){var n=R.EAGER;if(n=!(S.useX().mode[0]!==n||!st(Z.ERRORS,t.fieldName)))return t.skip(),nn(t),z(),t;if(n=nn(t),S.useX().omitted)return n.omit(),z(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,S.useX().skipped)return!0;var e=S.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){var o=S.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,t)?!1===o[t]:Qt())return!0;if(!0===r.groups[t])return!(i||!zt(u)&&!1!==u[n])}return!!(t=!!Qt()&&!t)||!i&&!!zt(u)&&!d(e[n])}(t))return n.skip(!!S.useX().skipped),z(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),en(t),z(),t.isUntested()){n=Mt();var e=function(t){return S.run({currentTest:t},(function(){return t.run()}))}(t);try{e&&l(e.then)?(t.asyncTest=e,t.setPending(),tn(t)):n.emit(qt.TEST_COMPLETED,t)}catch(n){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&l(n.then)&&(t.setPending(),tn(t));return t}function un(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var u=l(n[1])?n:$t([void 0],n,!0);n=u[0],e=u[1],u=u[2],M(r(t),sn("fieldName","string")),M(l(e),sn("Test callback","function"));var i=S.useX();return rn(n=new P(t,e,{message:n,groupName:i.groupName,key:u}))}Bt.TEST_COMPLETED="test_completed",Bt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",Bt.REMOVE_FIELD="remove_field",Bt.RESET_FIELD="reset_field",Bt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Vt.group=function(t){return Jt(0,"groups",t)},Yt.group=function(t){return Jt(1,"groups",t)};var on=i(un,{memo:function(t){var n=c(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=S.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[C().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):rn(r[1])}}(un)});function sn(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var an="4.4.0-dev-08ec91";function cn(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],M(l(r),"vest.create: Expected callback to be a function.");var u=Kt(),o=q();return t={stateRef:B(o,{suiteId:e(),suiteName:t}),bus:u},i(S.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return o.reset(),Q({type:m.SUITE},(function(){r.apply(void 0,t)})),u.emit(qt.SUITE_CALLBACK_DONE_RUNNING),Xt()})),{get:S.bind(t,Gt),remove:S.bind(t,(function(t){u.emit(qt.REMOVE_FIELD,t)})),reset:o.reset,resetField:S.bind(t,(function(t){u.emit(qt.RESET_FIELD,t)}))})}function fn(t,n){M(l(n),"each callback must be a function"),Q({type:m.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function ln(){var t=R.EAGER;S.useX().mode[0]=t}function dn(t,n){M(r(t),Zt("name must be a string")),M(l(n),Zt("callback must be a function")),Q({type:m.GROUP},(function(){S.run({groupName:t},n)}))}function pn(t){var n=S.useX(),e=n.inclusion;return n=n.exclusion,M(r(t)),e[t]=p(n.tests[t],!0),{when:function(n){var e=S.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?p(u.tests[t],!0):r(n)?!!u.tests[n]:d(n,d(Gt))}}}}function vn(t,n){Q({type:m.OMIT_WHEN},(function(){S.run({omitted:!!S.useX().omitted||d(t,d(Gt))},(function(){return n()}))}))}function hn(t){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){T(t,[!0,!1])}));else for(var n in t)T(n,[t[n],!1])}function gn(t,n){Q({type:m.SKIP_WHEN},(function(){S.run({skipped:!!S.useX().skipped||d(t,d(Gt))},(function(){return n()}))}))}function En(){var t=S.useX("warn hook called outside of a running suite.");M(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{an as VERSION,S as context,cn as create,fn as each,ln as eager,dn as group,pn as include,vn as omitWhen,Vt as only,hn as optional,Yt as skip,gn as skipWhen,on as test,En as warn};
@@ -1244,6 +1244,11 @@
1244
1244
  return !!(fieldName && testObject.fieldName === fieldName);
1245
1245
  }
1246
1246
 
1247
+ var nonMatchingGroupName = bindNot(matchingGroupName);
1248
+ function matchingGroupName(testObject, groupName) {
1249
+ return testObject.groupName === groupName;
1250
+ }
1251
+
1247
1252
  function either(a, b) {
1248
1253
  return !!a !== !!b;
1249
1254
  }
@@ -1268,6 +1273,15 @@
1268
1273
  return hasFailuresByTestObject(testObject, severityKey, fieldName);
1269
1274
  });
1270
1275
  }
1276
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
1277
+ var testObjects = useTestsFlat();
1278
+ return testObjects.some(function (testObject) {
1279
+ if (nonMatchingGroupName(testObject, groupName)) {
1280
+ return false;
1281
+ }
1282
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
1283
+ });
1284
+ }
1271
1285
  /**
1272
1286
  * Determines whether a certain test profile has failures.
1273
1287
  */
@@ -1285,7 +1299,7 @@
1285
1299
  }
1286
1300
 
1287
1301
  // eslint-disable-next-line max-statements, complexity
1288
- function shouldAddValidProp(fieldName) {
1302
+ function shouldAddValidProperty(fieldName) {
1289
1303
  if (fieldIsOmitted(fieldName)) {
1290
1304
  return true;
1291
1305
  }
@@ -1296,36 +1310,78 @@
1296
1310
  if (isEmpty(testObjects)) {
1297
1311
  return false;
1298
1312
  }
1313
+ // Does the given field have any pending tests that are not optional?
1299
1314
  if (hasNonOptionalIncomplete(fieldName)) {
1300
1315
  return false;
1301
1316
  }
1302
1317
  return noMissingTests(fieldName);
1303
1318
  }
1319
+ function shouldAddValidPropertyInGroup(groupName, fieldName) {
1320
+ if (fieldIsOmitted(fieldName)) {
1321
+ return true;
1322
+ }
1323
+ if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
1324
+ return false;
1325
+ }
1326
+ // Do the given group/field have any pending tests that are not optional?
1327
+ if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
1328
+ return false;
1329
+ }
1330
+ return noMissingTestsByGroup(groupName, fieldName);
1331
+ }
1304
1332
  function fieldIsOmitted(fieldName) {
1305
1333
  if (!fieldName) {
1306
1334
  return false;
1307
1335
  }
1308
1336
  return useOptionalFieldApplied(fieldName) === true;
1309
1337
  }
1338
+ // Does the given field have any pending tests that are not optional?
1310
1339
  function hasNonOptionalIncomplete(fieldName) {
1311
1340
  return isNotEmpty(useAllIncomplete().filter(function (testObject) {
1312
- if (nonMatchingFieldName(testObject, fieldName)) {
1341
+ return isOptionalFieldIncomplete(testObject, fieldName);
1342
+ }));
1343
+ }
1344
+ // Do the given group/field have any pending tests that are not optional?
1345
+ function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
1346
+ return isNotEmpty(useAllIncomplete().filter(function (testObject) {
1347
+ if (nonMatchingGroupName(testObject, groupName)) {
1313
1348
  return false;
1314
1349
  }
1315
- return useOptionalFieldConfig(testObject.fieldName) !== true;
1350
+ return isOptionalFieldIncomplete(testObject, fieldName);
1316
1351
  }));
1317
1352
  }
1353
+ function isOptionalFieldIncomplete(testObject, fieldName) {
1354
+ if (nonMatchingFieldName(testObject, fieldName)) {
1355
+ return false;
1356
+ }
1357
+ return useOptionalFieldConfig(testObject.fieldName) !== true;
1358
+ }
1318
1359
  function noMissingTests(fieldName) {
1319
1360
  var testObjects = useTestsFlat();
1320
1361
  return testObjects.every(function (testObject) {
1321
1362
  if (nonMatchingFieldName(testObject, fieldName)) {
1322
1363
  return true;
1323
1364
  }
1324
- return (useOptionalFieldConfig(testObject.fieldName) === true ||
1325
- testObject.isTested() ||
1326
- testObject.isOmitted());
1365
+ return missingTestsLogic(testObject, fieldName);
1366
+ });
1367
+ }
1368
+ function noMissingTestsByGroup(groupName, fieldName) {
1369
+ var testObjects = useTestsFlat();
1370
+ return testObjects.every(function (testObject) {
1371
+ if (nonMatchingGroupName(testObject, groupName)) {
1372
+ return true;
1373
+ }
1374
+ return missingTestsLogic(testObject, fieldName);
1327
1375
  });
1328
1376
  }
1377
+ function missingTestsLogic(testObject, fieldName) {
1378
+ if (nonMatchingFieldName(testObject, fieldName)) {
1379
+ return true;
1380
+ }
1381
+ return (useOptionalFieldConfig(testObject.fieldName) === true ||
1382
+ testObject.isTested() ||
1383
+ testObject.isOmitted());
1384
+ }
1329
1385
 
1330
1386
  function useSummary() {
1331
1387
  var summary = context.useX().summary;
@@ -1347,7 +1403,7 @@
1347
1403
  appendToGroup(summary.groups, testObject);
1348
1404
  return summary;
1349
1405
  }, summary);
1350
- summary.valid = shouldAddValidProp();
1406
+ summary.valid = shouldAddValidProperty();
1351
1407
  return countFailures(summary);
1352
1408
  }
1353
1409
  function appendToTest(tests, testObject) {
@@ -1356,7 +1412,7 @@
1356
1412
  tests[testObject.fieldName].valid =
1357
1413
  tests[testObject.fieldName].valid === false
1358
1414
  ? false
1359
- : shouldAddValidProp(testObject.fieldName);
1415
+ : shouldAddValidProperty(testObject.fieldName);
1360
1416
  }
1361
1417
  /**
1362
1418
  * Appends to a group object if within a group
@@ -1368,6 +1424,10 @@
1368
1424
  }
1369
1425
  groups[groupName] = groups[groupName] || {};
1370
1426
  groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
1427
+ groups[groupName][testObject.fieldName].valid =
1428
+ groups[groupName][testObject.fieldName].valid === false
1429
+ ? false
1430
+ : shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
1371
1431
  }
1372
1432
  /**
1373
1433
  * Counts the failed tests and adds global counters
@@ -1506,9 +1566,30 @@
1506
1566
  }
1507
1567
 
1508
1568
  function isValid(fieldName) {
1509
- var _a;
1510
1569
  var summary = useSummary();
1511
- return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1570
+ return fieldName
1571
+ ? Boolean(isFieldValid(summary.tests, fieldName))
1572
+ : summary.valid;
1573
+ }
1574
+ function isValidByGroup(groupName, fieldName) {
1575
+ var summary = useSummary();
1576
+ var group = summary.groups[groupName];
1577
+ if (!group) {
1578
+ return false;
1579
+ }
1580
+ if (fieldName) {
1581
+ return isFieldValid(group, fieldName);
1582
+ }
1583
+ for (var fieldName_1 in group) {
1584
+ if (!isFieldValid(group, fieldName_1)) {
1585
+ return false;
1586
+ }
1587
+ }
1588
+ return true;
1589
+ }
1590
+ function isFieldValid(testContainer, fieldName) {
1591
+ var _a;
1592
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
1512
1593
  }
1513
1594
 
1514
1595
  var cache$1 = createCache(1);
@@ -1529,6 +1610,7 @@
1529
1610
  hasWarnings: context.bind(ref, hasWarnings),
1530
1611
  hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
1531
1612
  isValid: context.bind(ref, isValid),
1613
+ isValidByGroup: context.bind(ref, isValidByGroup),
1532
1614
  suiteName: suiteName
1533
1615
  });
1534
1616
  }));
@@ -2400,7 +2482,7 @@
2400
2482
  ctx.currentTest.warn();
2401
2483
  }
2402
2484
 
2403
- var VERSION = "4.3.4";
2485
+ var VERSION = "4.4.0-dev-08ec91";
2404
2486
 
2405
2487
  exports.VERSION = VERSION;
2406
2488
  exports.context = context;
@@ -1 +1 @@
1
- "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||h(n,t)}function N(n,t,e){return d(n,t)&&g(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function O(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(Object.keys(n),0))}function S(n,t){return n in t}function R(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(n,t){return f(n.length,t)}function A(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function k(n,t){return o(n)&&o(t)&&n.startsWith(t)}function L(n){for(var e in Rt){var r=Rt[e];t(r)&&n(e,r)}}function w(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function W(n,t){var e;return null!==(e=w(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?w(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=et({},s||{},null!==(i=w(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function 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 X(){try{return t(Proxy)}catch(n){return!1}}function G(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?G(n):G(n.pass,w.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=D.apply(void 0,U([Tt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,O(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!X())return L((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Rt[e])return t(r,n,e)}});return r}function j(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function K(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=Rt[r];e.push((function(n){return D.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(j(e,(function(e,r){var u,i=Tt.run({value:n},(function(){return e(n)}));i.pass||r(G(!!i.pass,null!==(u=w(t,n,i.message))&&void 0!==u?u:i.message))})),G(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return X()?s=new Proxy(s,{get:function(t,e){return Rt[e]?n(e):t[e]}}):(L((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),_(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(M(u,t)):(u=t(u),rt(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=W(n[r],[]),n=n[r]}return n}function Y(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return H(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,H(t)},removeLevel:function(){t.pop()},reset:n}}function z(){return At.useX().stateRef}function Q(n){return z().optionalFields()[0][n]}function Z(n,t){(0,z().optionalFields()[1])((function(e){var r;return et(e,((r={})[n]=w(t,e[n]),r))}))}function $(n){var t;return null===(t=Q(n))||void 0===t?void 0:t[0]}function nn(){tn((function(n){return n}))}function tn(n){(0,z().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function en(){return rn().filter((function(n){return n.isPending()}))}function rn(){var n=z().testObjects()[0].current;return kt([n],(function(){return V(n)}))}function un(n){function e(n,t,e){return u.references.push(),r(n,w(t,e)),function(){return[u.references[n],function(t){return r(n,w(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function on(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function sn(n){setTimeout((function(){throw Error(n)}),0)}function an(){return At.useX().testCursor.getCursor()}function cn(){return At.useX().testCursor.next()}function fn(n,e){n=void 0===(n=n.type)?$n.DEFAULT:n,F(t(e));var r={current:{},prev:{}},u=an();return At.run({isolate:{type:n,keys:r}},(function(){At.useX().testCursor.addLevel(),r.prev=function(){var n=z().testObjects()[0].prev;return[].concat(J(n,an())).reduce((function(n,t){return t instanceof Wt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),tn((function(n){return J(n,u)[H(u)]=[],n}));var n=e();return At.useX().testCursor.removeLevel(),cn(),n}))}function ln(n){return n===Lt.ERRORS?wt.ERROR_COUNT:wt.WARN_COUNT}function dn(n,t){return!(!t||n.fieldName!==t)}function pn(n,t){return rn().some((function(e){return e.hasFailures()?t&&!dn(e,t)?e=!1:(e=e.warns(),e=n===Lt.WARNINGS==!!e):e=!1,e}))}function vn(n){if(n)var t,e=!0===(null===(t=Q(n))||void 0===t?void 0:t[1]);else e=!1;return!!e||!pn(Lt.ERRORS,n)&&(!O(e=rn())&&!function(n){return Nt(en().filter((function(t){return!(n&&!dn(t,n))&&!0!==$(t.fieldName)})))}(n)&&function(n){return rn().every((function(t){return!(!n||dn(t,n))||(!0===$(t.fieldName)||t.isTested()||t.isOmitted())}))}(n))}function hn(){var n=At.useX().summary;return F(n),n}function gn(n,t){function e(n){var t=ln(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||et({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Lt.ERRORS):t.isWarning()&&e(Lt.WARNINGS)),i}function Nn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function En(n,t){var e,r={},u=ln(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function mn(n){return bn(Lt.ERRORS,n)}function yn(n){return bn(Lt.WARNINGS,n)}function bn(n,t){var e=hn().tests;return t?Nn(e,n,t):En(e,n)}function On(n,t){return Rn(n,Lt.ERRORS,t)}function Sn(n,t){return Rn(n,Lt.WARNINGS,t)}function Rn(n,t,e){return n=hn().groups[n],e?Nn(n,t,e):En(n,t)}function Tn(n){return In(wt.ERROR_COUNT,n)}function Cn(n){return In(wt.WARN_COUNT,n)}function In(n,t){var e,r=hn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function _n(n,t){return kn(Lt.ERRORS,n,t)}function An(n,t){return kn(Lt.WARNINGS,n,t)}function kn(n,t,e){var r,u,i=hn();if(n=ln(n),!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Ln(n){var t,e=hn();return n?!(null===(t=e.tests[n])||void 0===t||!t.valid):e.valid}function wn(){var n=rn(),t={stateRef:z()};return Kt([n],At.bind(t,(function(){var n=function(){var n=rn(),t=et({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=gn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&vn(t.fieldName),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=gn(e[r],t)),n}),t),t.valid=vn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}(),t=z().suiteName()[0],e={summary:n};return et(n,{getErrors:At.bind(e,mn),getErrorsByGroup:At.bind(e,On),getWarnings:At.bind(e,yn),getWarningsByGroup:At.bind(e,Sn),hasErrors:At.bind(e,Tn),hasErrorsByGroup:At.bind(e,_n),hasWarnings:At.bind(e,Cn),hasWarningsByGroup:At.bind(e,An),isValid:At.bind(e,Ln),suiteName:t})})))}function Wn(n){var t=en();return!O(t)&&(n?t.some((function(t){return dn(t,n)})):Nt(t))}function Fn(){var n=rn(),t={stateRef:z()};return Bt([n],At.bind(t,(function(){return et({},wn(),{done:At.bind(t,Ht)})})))}function Pn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!O(r.tests[e].testCount)))}function xn(n){return!(Wn()&&(!n||Wn(n)))}function Un(n,t){(0,z().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Xn(n){return n.forEach((function(n){return n()}))}function Gn(){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(jt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=z().testCallbacks()[0].fieldCallbacks;t&&!Wn(t)&&p(e[t])&&Xn(e[t]),Wn()||n.emit(jt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(jt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),Z(n.fieldName,(function(n){return[n[0],!0]})))}if(!O(z().optionalFields()[0])){var e={};tn((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=$(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(jt.ALL_RUNNING_TESTS_FINISHED,(function(){Xn(z().testCallbacks()[0].doneCallbacks)})),n.on(jt.REMOVE_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&(t.cancel(),function(n){tn((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(jt.RESET_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&t.reset()}))})),n}function Dn(){var n=At.useX();return F(n.bus),n.bus}function qn(n){return Kn(0,"tests",n)}function jn(n){return Kn(1,"tests",n)}function Kn(n,t,e){var r=At.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Bn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Hn(){var n,t=At.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function Mn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Vn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Dn().emit,i=z(),s=At.bind({stateRef:i},(function(){nn(),u(jt.TEST_COMPLETED,n)}));i=At.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 Jn(n){var t=z().testObjects()[0].prev;if(O(t))return Yn(n),n;var e=an();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=At.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=At.useX().isolate.keys.current;return i(r[t])?r[t]=e:sn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Yn(n),n}return!Nt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(At.useX().isolate.type===$n.EACH||sn("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=z().testObjects(),t=n[1],e=n[0].prev;n=J(e,an());var r=At.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),Yn(n=W(t,n)),n}function Yn(n){var t=an();tn((function(e){return J(e,t)[H(t)]=n,e}))}function zn(n){var e=tt.EAGER;if(e=!(At.useX().mode[0]!==e||!pn(Lt.ERRORS,n.fieldName)))return n.skip(),Jn(n),cn(),n;if(e=Jn(n),At.useX().omitted)return e.omit(),cn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,At.useX().skipped)return!0;var e=At.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=At.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Hn())return!0;if(!0===r.groups[n])return!(i||!Bn(u)&&!1!==u[t])}return!!(n=!!Hn()&&!n)||!i&&!!Bn(u)&&!w(e[t])}(n))return e.skip(!!At.useX().skipped),cn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Yn(n),cn(),n.isUntested()){e=Dn();var r=function(n){return At.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Vn(n)):e.emit(jt.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(),Vn(n));return n}function Qn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),Zn("fieldName","string")),F(t(r),Zn("Test callback","function"));var i=At.useX();return zn(e=new Wt(n,r,{message:e,groupName:i.groupName,key:u}))}function Zn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var $n,nt,tt,et=Object.assign,rt=e(r),ut=e(u),it=e(i),ot=e(s),st=e(a),at=e(c),ct=e(l),ft=e(p),lt=e(v),dt=e(N),pt=e(E),vt=e(m),ht=e(y),gt=e(b),Nt=e(O),Et=e(S),mt=e(R),yt=e(o),bt=e(C),Ot=e(I),St=e(A),Rt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:ot,doesNotStartWith:e(k),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:N,isBlank:E,isBoolean:m,isEmpty:O,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:bt,isKeyOf:S,isNaN:R,isNegative:function(n){return h(n,0)},isNotArray:ft,isNotBetween:dt,isNotBlank:pt,isNotBoolean:vt,isNotEmpty:Nt,isNotKeyOf:Et,isNotNaN:mt,isNotNull:rt,isNotNullish:it,isNotNumber:ht,isNotNumeric:at,isNotString:yt,isNotUndefined:ut,isNotValueOf:Ot,isNull:r,isNullish:i,isNumber:y,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:b,lengthNotEquals:gt,lessThan:h,lessThanOrEquals:g,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:g,matches:A,notEquals:st,notInside:lt,notMatches:St,numberEquals:l,numberNotEquals:ct,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:k},Tt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?et(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:et(e,{parent:x})})),Ct=function(){function n(){if(!X())return L((function(n){t[n]=K(n)})),et(q,t)}var t={context:function(){return Tt.useX()},extend:function(t){et(Rt,t),n()}};return n(),new Proxy(et(q,t),{get:function(n,t){return t in n?n[t]:Rt[t]?K(t):void 0}})}(),It=(nt=0,function(){return"".concat(nt++)});!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"}($n||($n={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(tt||(tt={}));var _t,At=P((function(n,t){return t?null:et({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:$n.DEFAULT,keys:{current:{},prev:{}}},mode:[tt.ALL],testCursor:Y()},n)})),kt=B();!function(n){n.Error="error",n.Warning="warning"}(_t||(_t={}));var Lt,wt,Wt=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=It(),this.severity=_t.Error,this.status=Ft,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!==qt||(this.status=n)},n.prototype.warns=function(){return this.severity===_t.Warning},n.prototype.setPending=function(){this.setStatus(Gt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ut:xt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Xt)},n.prototype.warn=function(){this.severity=_t.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(Pt)},n.prototype.cancel=function(){this.setStatus(Dt),nn()},n.prototype.reset=function(){this.status=Ft,nn()},n.prototype.omit=function(){this.setStatus(qt)},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(Gt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(qt)},n.prototype.isUntested=function(){return this.statusEquals(Ft)},n.prototype.isFailing=function(){return this.statusEquals(xt)},n.prototype.isCanceled=function(){return this.statusEquals(Dt)},n.prototype.isSkipped=function(){return this.statusEquals(Pt)},n.prototype.isPassing=function(){return this.statusEquals(Xt)},n.prototype.isWarning=function(){return this.statusEquals(Ut)},n.prototype.statusEquals=function(n){return this.status===n},n}(),Ft="UNTESTED",Pt="SKIPPED",xt="FAILED",Ut="WARNING",Xt="PASSING",Gt="PENDING",Dt="CANCELED",qt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Lt||(Lt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(wt||(wt={}));var jt,Kt=B(1),Bt=B(20),Ht=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=Fn(),Pn(e,n,t))return t;var r=function(){return e(wn())};return xn(n)?(r(),t):(Un(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(jt||(jt={})),qn.group=function(n){return Kn(0,"groups",n)},jn.group=function(n){return Kn(1,"groups",n)};var Mt=et(Qn,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=At.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[z().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):zn(r[1])}}(Qn)});n.VERSION="4.3.4",n.context=At,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],F(t(r),"vest.create: Expected callback to be a function.");var u=Gn(),i=un();return n={stateRef:on(i,{suiteId:It(),suiteName:n}),bus:u},et(At.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),fn({type:$n.SUITE},(function(){r.apply(void 0,n)})),u.emit(jt.SUITE_CALLBACK_DONE_RUNNING),Fn()})),{get:At.bind(n,wn),remove:At.bind(n,(function(n){u.emit(jt.REMOVE_FIELD,n)})),reset:i.reset,resetField:At.bind(n,(function(n){u.emit(jt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),fn({type:$n.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=tt.EAGER;At.useX().mode[0]=n},n.enforce=Ct,n.group=function(n,e){F(o(n),Mn("name must be a string")),F(t(e),Mn("callback must be a function")),fn({type:$n.GROUP},(function(){At.run({groupName:n},e)}))},n.include=function(n){var t=At.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=At.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?W(r.tests[n],!0):o(t)?!!r.tests[t]:w(t,w(wn))}}}},n.omitWhen=function(n,t){fn({type:$n.OMIT_WHEN},(function(){At.run({omitted:!!At.useX().omitted||w(n,w(wn))},(function(){return t()}))}))},n.only=qn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){Z(n,[!0,!1])}));else for(var t in n)Z(t,[n[t],!1])},n.skip=jn,n.skipWhen=function(n,t){fn({type:$n.SKIP_WHEN},(function(){At.run({skipped:!!At.useX().skipped||w(n,w(wn))},(function(){return t()}))}))},n.test=Mt,n.warn=function(){var n=At.useX("warn hook called outside of a running suite.");F(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
1
+ "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return"function"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function c(n,t){return n===t}function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function l(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}function d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return a(n)&&a(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||h(n,t)}function N(n,t,e){return d(n,t)&&g(n,e)}function m(n){return i(n)||o(n)&&!n.trim()}function E(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function R(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(Object.keys(n),0))}function O(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(n,t){return f(n.length,t)}function A(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function k(n,t){return o(n)&&o(t)&&n.startsWith(t)}function L(n){for(var e in Lt){var r=Lt[e];t(r)&&n(e,r)}}function w(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function W(n,t){var e;return null!==(e=w(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?w(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=at({},s||{},null!==(i=w(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function 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 X(){try{return t(Proxy)}catch(n){return!1}}function G(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(E(n)||n&&E(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),E(n)?G(n):G(n.pass,w.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=D.apply(void 0,U([wt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,R(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!X())return L((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Lt[e])return t(r,n,e)}});return r}function j(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function K(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=Lt[r];e.push((function(n){return D.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(j(e,(function(e,r){var u,i=wt.run({value:n},(function(){return e(n)}));i.pass||r(G(!!i.pass,null!==(u=w(t,n,i.message))&&void 0!==u?u:i.message))})),G(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return X()?s=new Proxy(s,{get:function(t,e){return Lt[e]?n(e):t[e]}}):(L((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),_(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];p(u)?e.push(M(u,t)):(u=t(u),ft(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=W(n[r],[]),n=n[r]}return n}function Y(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return H(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,H(t)},removeLevel:function(){t.pop()},reset:n}}function z(){return xt.useX().stateRef}function Q(n){return z().optionalFields()[0][n]}function Z(n,t){(0,z().optionalFields()[1])((function(e){var r;return at(e,((r={})[n]=w(t,e[n]),r))}))}function $(n){var t;return null===(t=Q(n))||void 0===t?void 0:t[0]}function nn(){tn((function(n){return n}))}function tn(n){(0,z().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function en(){return rn().filter((function(n){return n.isPending()}))}function rn(){var n=z().testObjects()[0].current;return Ut([n],(function(){return V(n)}))}function un(n){function e(n,t,e){return u.references.push(),r(n,w(t,e)),function(){return[u.references[n],function(t){return r(n,w(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function on(n,t){var e=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(e),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function sn(n){setTimeout((function(){throw Error(n)}),0)}function cn(){return xt.useX().testCursor.getCursor()}function an(){return xt.useX().testCursor.next()}function fn(n,e){n=void 0===(n=n.type)?ot.DEFAULT:n,F(t(e));var r={current:{},prev:{}},u=cn();return xt.run({isolate:{type:n,keys:r}},(function(){xt.useX().testCursor.addLevel(),r.prev=function(){var n=z().testObjects()[0].prev;return[].concat(J(n,cn())).reduce((function(n,t){return t instanceof Dt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),tn((function(n){return J(n,u)[H(u)]=[],n}));var n=e();return xt.useX().testCursor.removeLevel(),an(),n}))}function ln(n){return n===Xt.ERRORS?Gt.ERROR_COUNT:Gt.WARN_COUNT}function dn(n,t){return!(!t||n.fieldName!==t)}function pn(n,t){return rn().some((function(e){return vn(e,n,t)}))}function vn(n,t,e){return(e=!n.hasFailures()||e&&!dn(n,e))||(n=n.warns(),e=t===Xt.WARNINGS!=!!n),!e}function hn(n){return!!gn(n)||!pn(Xt.ERRORS,n)&&(!R(rn())&&!function(n){return St(en().filter((function(t){return Nn(t,n)})))}(n)&&function(n){return rn().every((function(t){return!(!n||dn(t,n))||mn(t,n)}))}(n))}function gn(n){return!!n&&!0===(null===(t=Q(n))||void 0===t?void 0:t[1]);var t}function Nn(n,t){return!(t&&!dn(n,t))&&!0!==$(n.fieldName)}function mn(n,t){return!(!t||dn(n,t))||(!0===$(n.fieldName)||n.isTested()||n.isOmitted())}function En(){var n=xt.useX().summary;return F(n),n}function yn(){var n=rn(),t=at({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=bn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&hn(t.fieldName);var r=n.groups,u=t.groupName;return u&&(r[u]=r[u]||{},r[u][t.fieldName]=bn(r[u],t),e=r[u][t.fieldName],!1===r[u][t.fieldName].valid?t=!1:t=!!gn(t=t.fieldName)||!function(n,t,e){return rn().some((function(r){return!zt(r,t)&&vn(r,n,e)}))}(Xt.ERRORS,u,t)&&!function(n,t){return St(en().filter((function(e){return!zt(e,n)&&Nn(e,t)})))}(u,t)&&function(n,t){return rn().every((function(e){return!!zt(e,n)||mn(e,t)}))}(u,t),e.valid=t),n}),t),t.valid=hn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}function bn(n,t){function e(n){var t=ln(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||at({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Xt.ERRORS):t.isWarning()&&e(Xt.WARNINGS)),i}function Rn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function On(n,t){var e,r={},u=ln(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function Sn(n){return Cn(Xt.ERRORS,n)}function Tn(n){return Cn(Xt.WARNINGS,n)}function Cn(n,t){var e=En().tests;return t?Rn(e,n,t):On(e,n)}function In(n,t){return An(n,Xt.ERRORS,t)}function _n(n,t){return An(n,Xt.WARNINGS,t)}function An(n,t,e){return n=En().groups[n],e?Rn(n,t,e):On(n,t)}function kn(n){return wn(Gt.ERROR_COUNT,n)}function Ln(n){return wn(Gt.WARN_COUNT,n)}function wn(n,t){var e,r=En();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Wn(n,t){return Pn(Xt.ERRORS,n,t)}function Fn(n,t){return Pn(Xt.WARNINGS,n,t)}function Pn(n,t,e){var r,u,i=En();if(n=ln(n),!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function xn(n){var t=En();return n?!!Xn(t.tests,n):t.valid}function Un(n,t){if(!(n=En().groups[n]))return!1;if(t)return Xn(n,t);for(var e in n)if(!Xn(n,e))return!1;return!0}function Xn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function Gn(){var n=rn(),t={stateRef:z()};return Qt([n],xt.bind(t,(function(){var n=yn(),t=z().suiteName()[0],e={summary:n};return at(n,{getErrors:xt.bind(e,Sn),getErrorsByGroup:xt.bind(e,In),getWarnings:xt.bind(e,Tn),getWarningsByGroup:xt.bind(e,_n),hasErrors:xt.bind(e,kn),hasErrorsByGroup:xt.bind(e,Wn),hasWarnings:xt.bind(e,Ln),hasWarningsByGroup:xt.bind(e,Fn),isValid:xt.bind(e,xn),isValidByGroup:xt.bind(e,Un),suiteName:t})})))}function Dn(n){var t=en();return!R(t)&&(n?t.some((function(t){return dn(t,n)})):St(t))}function qn(){var n=rn(),t={stateRef:z()};return Zt([n],xt.bind(t,(function(){return at({},Gn(),{done:xt.bind(t,$t)})})))}function jn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!R(r.tests[e].testCount)))}function Kn(n){return!(Dn()&&(!n||Dn(n)))}function Bn(n,t){(0,z().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Hn(n){return n.forEach((function(n){return n()}))}function Mn(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==e}))}}}}}();return n.on(Yt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=z().testCallbacks()[0].fieldCallbacks;t&&!Dn(t)&&p(e[t])&&Hn(e[t]),Dn()||n.emit(Yt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Yt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),Z(n.fieldName,(function(n){return[n[0],!0]})))}if(!R(z().optionalFields()[0])){var e={};tn((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=$(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(Yt.ALL_RUNNING_TESTS_FINISHED,(function(){Hn(z().testCallbacks()[0].doneCallbacks)})),n.on(Yt.REMOVE_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&(t.cancel(),function(n){tn((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Yt.RESET_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&t.reset()}))})),n}function Vn(){var n=xt.useX();return F(n.bus),n.bus}function Jn(n){return zn(0,"tests",n)}function Yn(n){return zn(1,"tests",n)}function zn(n,t,e){var r=xt.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function Qn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Zn(){var n,t=xt.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function $n(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function nt(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Vn().emit,i=z(),s=xt.bind({stateRef:i},(function(){nn(),u(Yt.TEST_COMPLETED,n)}));i=xt.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function tt(n){var t=z().testObjects()[0].prev;if(R(t))return et(n),n;var e=cn();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=xt.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=xt.useX().isolate.keys.current;return i(r[t])?r[t]=e:sn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),et(n),n}return!St(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(xt.useX().isolate.type===ot.EACH||sn("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=z().testObjects(),t=n[1],e=n[0].prev;n=J(e,cn());var r=xt.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),et(n=W(t,n)),n}function et(n){var t=cn();tn((function(e){return J(e,t)[H(t)]=n,e}))}function rt(n){var e=ct.EAGER;if(e=!(xt.useX().mode[0]!==e||!pn(Xt.ERRORS,n.fieldName)))return n.skip(),tt(n),an(),n;if(e=tt(n),xt.useX().omitted)return e.omit(),an(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,xt.useX().skipped)return!0;var e=xt.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=xt.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Zn())return!0;if(!0===r.groups[n])return!(i||!Qn(u)&&!1!==u[t])}return!!(n=!!Zn()&&!n)||!i&&!!Qn(u)&&!w(e[t])}(n))return e.skip(!!xt.useX().skipped),an(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),et(n),an(),n.isUntested()){e=Vn();var r=function(n){return xt.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),nt(n)):e.emit(Yt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&t(e.then)&&(n.setPending(),nt(n));return n}function ut(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),it("fieldName","string")),F(t(r),it("Test callback","function"));var i=xt.useX();return rt(e=new Dt(n,r,{message:e,groupName:i.groupName,key:u}))}function it(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var ot,st,ct,at=Object.assign,ft=e(r),lt=e(u),dt=e(i),pt=e(s),vt=e(c),ht=e(a),gt=e(l),Nt=e(p),mt=e(v),Et=e(N),yt=e(m),bt=e(E),Rt=e(y),Ot=e(b),St=e(R),Tt=e(O),Ct=e(S),It=e(o),_t=e(C),At=e(I),kt=e(A),Lt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:pt,doesNotStartWith:e(k),endsWith:s,equals:c,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:N,isBlank:m,isBoolean:E,isEmpty:R,isEven:function(n){return!!a(n)&&0==n%2},isFalsy:_t,isKeyOf:O,isNaN:S,isNegative:function(n){return h(n,0)},isNotArray:Nt,isNotBetween:Et,isNotBlank:yt,isNotBoolean:bt,isNotEmpty:St,isNotKeyOf:Tt,isNotNaN:Ct,isNotNull:ft,isNotNullish:dt,isNotNumber:Rt,isNotNumeric:ht,isNotString:It,isNotUndefined:lt,isNotValueOf:At,isNull:r,isNullish:i,isNumber:y,isNumeric:a,isOdd:function(n){return!!a(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:b,lengthNotEquals:Ot,lessThan:h,lessThanOrEquals:g,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:g,matches:A,notEquals:vt,notInside:mt,notMatches:kt,numberEquals:l,numberNotEquals:gt,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:k},wt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?at(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:at(e,{parent:x})})),Wt=function(){function n(){if(!X())return L((function(n){t[n]=K(n)})),at(q,t)}var t={context:function(){return wt.useX()},extend:function(t){at(Lt,t),n()}};return n(),new Proxy(at(q,t),{get:function(n,t){return t in n?n[t]:Lt[t]?K(t):void 0}})}(),Ft=(st=0,function(){return"".concat(st++)});!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(ot||(ot={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(ct||(ct={}));var Pt,xt=P((function(n,t){return t?null:at({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:ot.DEFAULT,keys:{current:{},prev:{}}},mode:[ct.ALL],testCursor:Y()},n)})),Ut=B();!function(n){n.Error="error",n.Warning="warning"}(Pt||(Pt={}));var Xt,Gt,Dt=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=Ft(),this.severity=Pt.Error,this.status=qt,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){n=t,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Jt||(this.status=n)},n.prototype.warns=function(){return this.severity===Pt.Warning},n.prototype.setPending=function(){this.setStatus(Mt)},n.prototype.fail=function(){this.setStatus(this.warns()?Bt:Kt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Ht)},n.prototype.warn=function(){this.severity=Pt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(jt)},n.prototype.cancel=function(){this.setStatus(Vt),nn()},n.prototype.reset=function(){this.status=qt,nn()},n.prototype.omit=function(){this.setStatus(Jt)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Mt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Jt)},n.prototype.isUntested=function(){return this.statusEquals(qt)},n.prototype.isFailing=function(){return this.statusEquals(Kt)},n.prototype.isCanceled=function(){return this.statusEquals(Vt)},n.prototype.isSkipped=function(){return this.statusEquals(jt)},n.prototype.isPassing=function(){return this.statusEquals(Ht)},n.prototype.isWarning=function(){return this.statusEquals(Bt)},n.prototype.statusEquals=function(n){return this.status===n},n}(),qt="UNTESTED",jt="SKIPPED",Kt="FAILED",Bt="WARNING",Ht="PASSING",Mt="PENDING",Vt="CANCELED",Jt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Xt||(Xt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Gt||(Gt={}));var Yt,zt=e((function(n,t){return n.groupName===t})),Qt=B(1),Zt=B(20),$t=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=qn(),jn(e,n,t))return t;var r=function(){return e(Gn())};return Kn(n)?(r(),t):(Bn(r,n),t)};!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Yt||(Yt={})),Jn.group=function(n){return zn(0,"groups",n)},Yn.group=function(n){return zn(1,"groups",n)};var ne=at(ut,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=xt.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[z().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):rt(r[1])}}(ut)});n.VERSION="4.4.0-dev-08ec91",n.context=xt,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],F(t(r),"vest.create: Expected callback to be a function.");var u=Mn(),i=un();return n={stateRef:on(i,{suiteId:Ft(),suiteName:n}),bus:u},at(xt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),fn({type:ot.SUITE},(function(){r.apply(void 0,n)})),u.emit(Yt.SUITE_CALLBACK_DONE_RUNNING),qn()})),{get:xt.bind(n,Gn),remove:xt.bind(n,(function(n){u.emit(Yt.REMOVE_FIELD,n)})),reset:i.reset,resetField:xt.bind(n,(function(n){u.emit(Yt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),fn({type:ot.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=ct.EAGER;xt.useX().mode[0]=n},n.enforce=Wt,n.group=function(n,e){F(o(n),$n("name must be a string")),F(t(e),$n("callback must be a function")),fn({type:ot.GROUP},(function(){xt.run({groupName:n},e)}))},n.include=function(n){var t=xt.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=xt.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?W(r.tests[n],!0):o(t)?!!r.tests[t]:w(t,w(Gn))}}}},n.omitWhen=function(n,t){fn({type:ot.OMIT_WHEN},(function(){xt.run({omitted:!!xt.useX().omitted||w(n,w(Gn))},(function(){return t()}))}))},n.only=Jn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){Z(n,[!0,!1])}));else for(var t in n)Z(t,[n[t],!1])},n.skip=Yn,n.skipWhen=function(n,t){fn({type:ot.SKIP_WHEN},(function(){xt.run({skipped:!!xt.useX().skipped||w(n,w(Gn))},(function(){return t()}))}))},n.test=ne,n.warn=function(){var n=xt.useX("warn hook called outside of a running suite.");F(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.3.4",
2
+ "version": "4.4.0-dev-08ec91",
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.6",
24
- "n4s": "^4.1.7"
23
+ "context": "dev",
24
+ "n4s": "dev"
25
25
  },
26
26
  "homepage": "https://vestjs.dev/",
27
27
  "exports": {
@@ -3,16 +3,14 @@ type SuiteSummary = {
3
3
  tests: Tests;
4
4
  valid: boolean;
5
5
  } & SummaryBase;
6
- type GroupTestSummary = BaseTestSummary;
6
+ type GroupTestSummary = SingleTestSummary;
7
7
  type Groups = Record<string, Group>;
8
8
  type Group = Record<string, GroupTestSummary>;
9
9
  type Tests = Record<string, SingleTestSummary>;
10
- type SingleTestSummary = BaseTestSummary & {
11
- valid: boolean;
12
- };
13
- type BaseTestSummary = SummaryBase & {
10
+ type SingleTestSummary = SummaryBase & {
14
11
  errors: string[];
15
12
  warnings: string[];
13
+ valid: boolean;
16
14
  };
17
15
  type SummaryBase = {
18
16
  errorCount: number;
package/types/parser.d.ts CHANGED
@@ -3,16 +3,14 @@ type SuiteSummary = {
3
3
  tests: Tests;
4
4
  valid: boolean;
5
5
  } & SummaryBase;
6
- type GroupTestSummary = BaseTestSummary;
6
+ type GroupTestSummary = SingleTestSummary;
7
7
  type Groups = Record<string, Group>;
8
8
  type Group = Record<string, GroupTestSummary>;
9
9
  type Tests = Record<string, SingleTestSummary>;
10
- type SingleTestSummary = BaseTestSummary & {
11
- valid: boolean;
12
- };
13
- type BaseTestSummary = SummaryBase & {
10
+ type SingleTestSummary = SummaryBase & {
14
11
  errors: string[];
15
12
  warnings: string[];
13
+ valid: boolean;
16
14
  };
17
15
  type SummaryBase = {
18
16
  errorCount: number;
@@ -7,16 +7,14 @@ type SuiteSummary = {
7
7
  tests: Tests;
8
8
  valid: boolean;
9
9
  } & SummaryBase;
10
- type GroupTestSummary = BaseTestSummary;
10
+ type GroupTestSummary = SingleTestSummary;
11
11
  type Groups = Record<string, Group>;
12
12
  type Group = Record<string, GroupTestSummary>;
13
13
  type Tests = Record<string, SingleTestSummary>;
14
- type SingleTestSummary = BaseTestSummary & {
15
- valid: boolean;
16
- };
17
- type BaseTestSummary = SummaryBase & {
14
+ type SingleTestSummary = SummaryBase & {
18
15
  errors: string[];
19
16
  warnings: string[];
17
+ valid: boolean;
20
18
  };
21
19
  type SummaryBase = {
22
20
  errorCount: number;
@@ -36,13 +34,16 @@ declare function hasErrors(fieldName?: string): boolean;
36
34
  declare function hasWarnings(fieldName?: string): boolean;
37
35
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
38
36
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
37
+ declare function isValid(fieldName?: string): boolean;
38
+ declare function isValidByGroup(groupName: string, fieldName?: string): boolean;
39
39
  type SuiteResult = ReturnType<typeof genTestsSummary> & {
40
40
  /**
41
41
  * Returns whether the suite as a whole is valid.
42
42
  * Determined if there are no errors, and if no
43
43
  * required fields are skipped.
44
44
  */
45
- isValid: (fieldName?: string) => boolean;
45
+ isValid: typeof isValid;
46
+ isValidByGroup: typeof isValidByGroup;
46
47
  hasErrors: typeof hasErrors;
47
48
  hasWarnings: typeof hasWarnings;
48
49
  getErrors: typeof getErrors;
package/types/vest.d.ts CHANGED
@@ -58,16 +58,14 @@ type SuiteSummary = {
58
58
  tests: Tests;
59
59
  valid: boolean;
60
60
  } & SummaryBase;
61
- type GroupTestSummary = BaseTestSummary;
61
+ type GroupTestSummary = SingleTestSummary;
62
62
  type Groups = Record<string, Group>;
63
63
  type Group = Record<string, GroupTestSummary>;
64
64
  type Tests = Record<string, SingleTestSummary>;
65
- type SingleTestSummary = BaseTestSummary & {
66
- valid: boolean;
67
- };
68
- type BaseTestSummary = SummaryBase & {
65
+ type SingleTestSummary = SummaryBase & {
69
66
  errors: string[];
70
67
  warnings: string[];
68
+ valid: boolean;
71
69
  };
72
70
  type SummaryBase = {
73
71
  errorCount: number;
@@ -87,13 +85,16 @@ declare function hasErrors(fieldName?: string): boolean;
87
85
  declare function hasWarnings(fieldName?: string): boolean;
88
86
  declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
89
87
  declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
88
+ declare function isValid(fieldName?: string): boolean;
89
+ declare function isValidByGroup(groupName: string, fieldName?: string): boolean;
90
90
  type SuiteResult = ReturnType<typeof genTestsSummary> & {
91
91
  /**
92
92
  * Returns whether the suite as a whole is valid.
93
93
  * Determined if there are no errors, and if no
94
94
  * required fields are skipped.
95
95
  */
96
- isValid: (fieldName?: string) => boolean;
96
+ isValid: typeof isValid;
97
+ isValidByGroup: typeof isValidByGroup;
97
98
  hasErrors: typeof hasErrors;
98
99
  hasWarnings: typeof hasWarnings;
99
100
  getErrors: typeof getErrors;
@@ -137,7 +138,7 @@ type Suite<T extends CB> = {
137
138
  */
138
139
  declare function create<T extends CB>(suiteName: string, suiteCallback: T): Suite<T>;
139
140
  declare function create<T extends CB>(suiteCallback: T): Suite<T>;
140
- declare function createCursor(): {
141
+ type Cursor = {
141
142
  addLevel: () => void;
142
143
  cursorAt: () => number;
143
144
  getCursor: () => number[];
@@ -162,39 +163,32 @@ declare enum Modes {
162
163
  EAGER = 1
163
164
  }
164
165
  type NestedArray<T> = Array<NestedArray<T> | T>;
165
- // eslint-disable-next-line max-lines-per-function
166
- declare function createState(onStateChange?: (...args: unknown[]) => unknown): CreateStateReturn;
167
- type StateInput<S> = S | ((prevState?: S) => S);
168
166
  type SetStateInput<S> = S | ((prevState: S) => S);
169
- type State = ReturnType<typeof createState>;
170
167
  type StateHandlerReturn<S> = [
171
168
  S,
172
169
  (nextState: SetStateInput<S>) => void
173
170
  ];
174
- type CreateStateReturn = {
175
- reset: () => void;
176
- registerStateKey: <S>(initialState?: StateInput<S> | undefined, onUpdate?: (() => void) | undefined) => () => StateHandlerReturn<S>;
171
+ type UseState<S> = () => StateHandlerReturn<S>;
172
+ type StateRef = {
173
+ optionalFields: UseState<OptionalFields>;
174
+ suiteId: UseState<string>;
175
+ suiteName: UseState<SuiteName>;
176
+ testCallbacks: UseState<TestCallbacks>;
177
+ testObjects: UseState<TestObjects>;
178
+ };
179
+ type OptionalFields = Record<string, [
180
+ rule: (() => boolean) | boolean,
181
+ isApplied: boolean
182
+ ]>;
183
+ type SuiteName = string | void;
184
+ type TestCallbacks = {
185
+ fieldCallbacks: Record<string, Array<(res: SuiteResult) => void>>;
186
+ doneCallbacks: Array<(res: SuiteResult) => void>;
177
187
  };
178
- declare function createStateRef(state: State, { suiteId, suiteName }: {
179
- suiteId: string;
180
- suiteName?: void | string;
181
- }): {
182
- optionalFields: () => StateHandlerReturn<Record<string, [
183
- rule: boolean | (() => boolean),
184
- isApplied: boolean
185
- ]>>;
186
- suiteId: () => StateHandlerReturn<string>;
187
- suiteName: () => StateHandlerReturn<string | void>;
188
- testCallbacks: () => StateHandlerReturn<{
189
- fieldCallbacks: Record<string, ((res: SuiteResult) => void)[]>;
190
- doneCallbacks: ((res: SuiteResult) => void)[];
191
- }>;
192
- testObjects: () => StateHandlerReturn<{
193
- prev: NestedArray<VestTest>;
194
- current: NestedArray<VestTest>;
195
- }>;
188
+ type TestObjects = {
189
+ prev: NestedArray<VestTest>;
190
+ current: NestedArray<VestTest>;
196
191
  };
197
- type StateRef = ReturnType<typeof createStateRef>;
198
192
  declare const _default: {
199
193
  run: <R>(ctxRef: Partial<CTXType>, fn: (context: CTXType) => R) => R;
200
194
  bind: <Fn extends (...args: any[]) => any>(ctxRef: Partial<CTXType>, fn: Fn) => Fn;
@@ -206,7 +200,7 @@ type CTXType = {
206
200
  type: IsolateTypes;
207
201
  keys: IsolateKeys;
208
202
  };
209
- testCursor: ReturnType<typeof createCursor>;
203
+ testCursor: Cursor;
210
204
  stateRef?: StateRef;
211
205
  exclusion: {
212
206
  tests: Record<string, boolean>;
@@ -356,6 +350,6 @@ declare const test: typeof testBase & {
356
350
  * Sets a running test to warn only mode.
357
351
  */
358
352
  declare function warn(): void;
359
- declare const VERSION = "4.3.4";
353
+ declare const VERSION = "4.4.0-dev-08ec91";
360
354
  export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
361
355
  export type { SuiteResult, SuiteRunResult, SuiteSummary, VestTest, Suite };