vest 4.3.4 → 4.4.1

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.
@@ -180,40 +180,6 @@ function getCurrent(array, path) {
180
180
  return current;
181
181
  }
182
182
 
183
- function createCursor() {
184
- var storage = {
185
- cursor: []
186
- };
187
- function addLevel() {
188
- storage.cursor.push(0);
189
- }
190
- function removeLevel() {
191
- storage.cursor.pop();
192
- }
193
- function cursorAt() {
194
- return last(storage.cursor);
195
- }
196
- function getCursor() {
197
- return asArray(storage.cursor);
198
- }
199
- function next() {
200
- storage.cursor[storage.cursor.length - 1]++;
201
- return last(storage.cursor);
202
- }
203
- function reset() {
204
- storage.cursor = [0];
205
- }
206
- reset();
207
- return {
208
- addLevel: addLevel,
209
- cursorAt: cursorAt,
210
- getCursor: getCursor,
211
- next: next,
212
- removeLevel: removeLevel,
213
- reset: reset
214
- };
215
- }
216
-
217
183
  var IsolateTypes;
218
184
  (function (IsolateTypes) {
219
185
  IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
@@ -230,6 +196,41 @@ var Modes;
230
196
  Modes[Modes["EAGER"] = 1] = "EAGER";
231
197
  })(Modes || (Modes = {}));
232
198
 
199
+ function createIsolateCursor() {
200
+ var cursor = {
201
+ value: 0
202
+ };
203
+ return {
204
+ current: current,
205
+ next: next
206
+ };
207
+ /**
208
+ * @returns {number} The current value of the cursor
209
+ */
210
+ function current() {
211
+ return cursor.value;
212
+ }
213
+ /**
214
+ * Moves the isolate cursor forward by 1
215
+ */
216
+ function next() {
217
+ cursor.value++;
218
+ }
219
+ }
220
+
221
+ function generateIsolate(type, path) {
222
+ if (path === void 0) { path = []; }
223
+ return {
224
+ cursor: createIsolateCursor(),
225
+ keys: {
226
+ current: {},
227
+ prev: {}
228
+ },
229
+ path: path,
230
+ type: type
231
+ };
232
+ }
233
+
233
234
  var context = context$1.createContext(function (ctxRef, parentContext) {
234
235
  return parentContext
235
236
  ? null
@@ -239,15 +240,8 @@ var context = context$1.createContext(function (ctxRef, parentContext) {
239
240
  groups: {}
240
241
  },
241
242
  inclusion: {},
242
- isolate: {
243
- type: IsolateTypes.DEFAULT,
244
- keys: {
245
- current: {},
246
- prev: {}
247
- }
248
- },
249
- mode: [Modes.ALL],
250
- testCursor: createCursor()
243
+ isolate: generateIsolate(IsolateTypes.DEFAULT),
244
+ mode: [Modes.ALL]
251
245
  }, ctxRef);
252
246
  });
253
247
 
@@ -573,30 +567,9 @@ function deferThrow(message) {
573
567
  }, 0);
574
568
  }
575
569
 
576
- function usePath() {
577
- var context$1 = context.useX();
578
- return context$1.testCursor.getCursor();
579
- }
580
- function useCursorAt() {
581
- var context$1 = context.useX();
582
- return context$1.testCursor.cursorAt();
583
- }
584
- function moveForward() {
585
- var context$1 = context.useX();
586
- return context$1.testCursor.next();
587
- }
588
- function addLevel() {
589
- var context$1 = context.useX();
590
- context$1.testCursor.addLevel();
591
- }
592
- function removeLevel() {
593
- var context$1 = context.useX();
594
- context$1.testCursor.removeLevel();
595
- }
596
-
597
570
  function usePrevKeys() {
598
571
  var prev = useTestObjects()[0].prev;
599
- return asArray(getCurrent(prev, usePath())).reduce(function (prevKeys, testObject) {
572
+ return asArray(getCurrent(prev, useCurrentPath())).reduce(function (prevKeys, testObject) {
600
573
  if (!(testObject instanceof VestTest)) {
601
574
  return prevKeys;
602
575
  }
@@ -608,12 +581,11 @@ function usePrevKeys() {
608
581
  }, {});
609
582
  }
610
583
  function usePrevTestByKey(key) {
611
- var prev = context.useX().isolate.keys.prev;
584
+ var prev = useIsolate().keys.prev;
612
585
  return prev[key];
613
586
  }
614
587
  function useRetainTestKey(key, testObject) {
615
- var context$1 = context.useX();
616
- var current = context$1.isolate.keys.current;
588
+ var current = useIsolate().keys.current;
617
589
  if (isNullish(current[key])) {
618
590
  current[key] = testObject;
619
591
  }
@@ -625,23 +597,42 @@ function useRetainTestKey(key, testObject) {
625
597
  function isolate(_a, callback) {
626
598
  var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
627
599
  invariant(isFunction(callback));
628
- var keys = {
629
- current: {},
630
- prev: {}
631
- };
632
- var path = usePath();
633
- return context.run({ isolate: { type: type, keys: keys } }, function () {
634
- addLevel();
635
- keys.prev = usePrevKeys();
636
- useSetTests(function (tests) { return setValueAtPath(tests, path, []); });
600
+ // Generate a new Isolate layer, with its own cursor
601
+ var isolate = generateIsolate(type, useCurrentPath());
602
+ var output = context.run({ isolate: isolate }, function () {
603
+ isolate.keys.prev = usePrevKeys();
604
+ useSetTests(function (tests) { return setValueAtPath(tests, isolate.path, []); });
637
605
  var res = callback();
638
- removeLevel();
639
- moveForward();
640
606
  return res;
641
607
  });
608
+ // Move the parent cursor forward once we're done
609
+ useCursor().next();
610
+ return output;
611
+ }
612
+ /**
613
+ * @returns {Isolate} The current isolate layer
614
+ */
615
+ function useIsolate() {
616
+ return context.useX().isolate;
642
617
  }
618
+ /**
619
+ * @returns {boolean} Whether or not the current isolate allows tests to be reordered
620
+ */
643
621
  function shouldAllowReorder() {
644
- return context.useX().isolate.type === IsolateTypes.EACH;
622
+ return useIsolate().type === IsolateTypes.EACH;
623
+ }
624
+ /**
625
+ * @returns {number[]} The current cursor path of the isolate tree
626
+ */
627
+ function useCurrentPath() {
628
+ var isolate = useIsolate();
629
+ return isolate.path.concat(isolate.cursor.current());
630
+ }
631
+ /**
632
+ * @returns {IsolateCursor} The cursor object for the current isolate
633
+ */
634
+ function useCursor() {
635
+ return useIsolate().cursor;
645
636
  }
646
637
 
647
638
  var Severity;
@@ -695,6 +686,11 @@ function matchingFieldName(testObject, fieldName) {
695
686
  return !!(fieldName && testObject.fieldName === fieldName);
696
687
  }
697
688
 
689
+ var nonMatchingGroupName = bindNot(matchingGroupName);
690
+ function matchingGroupName(testObject, groupName) {
691
+ return testObject.groupName === groupName;
692
+ }
693
+
698
694
  function either(a, b) {
699
695
  return !!a !== !!b;
700
696
  }
@@ -719,6 +715,15 @@ function hasFailuresByTestObjects(severityKey, fieldName) {
719
715
  return hasFailuresByTestObject(testObject, severityKey, fieldName);
720
716
  });
721
717
  }
718
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
719
+ var testObjects = useTestsFlat();
720
+ return testObjects.some(function (testObject) {
721
+ if (nonMatchingGroupName(testObject, groupName)) {
722
+ return false;
723
+ }
724
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
725
+ });
726
+ }
722
727
  /**
723
728
  * Determines whether a certain test profile has failures.
724
729
  */
@@ -736,7 +741,7 @@ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
736
741
  }
737
742
 
738
743
  // eslint-disable-next-line max-statements, complexity
739
- function shouldAddValidProp(fieldName) {
744
+ function shouldAddValidProperty(fieldName) {
740
745
  if (fieldIsOmitted(fieldName)) {
741
746
  return true;
742
747
  }
@@ -747,36 +752,78 @@ function shouldAddValidProp(fieldName) {
747
752
  if (isEmpty(testObjects)) {
748
753
  return false;
749
754
  }
755
+ // Does the given field have any pending tests that are not optional?
750
756
  if (hasNonOptionalIncomplete(fieldName)) {
751
757
  return false;
752
758
  }
753
759
  return noMissingTests(fieldName);
754
760
  }
761
+ function shouldAddValidPropertyInGroup(groupName, fieldName) {
762
+ if (fieldIsOmitted(fieldName)) {
763
+ return true;
764
+ }
765
+ if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
766
+ return false;
767
+ }
768
+ // Do the given group/field have any pending tests that are not optional?
769
+ if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
770
+ return false;
771
+ }
772
+ return noMissingTestsByGroup(groupName, fieldName);
773
+ }
755
774
  function fieldIsOmitted(fieldName) {
756
775
  if (!fieldName) {
757
776
  return false;
758
777
  }
759
778
  return useOptionalFieldApplied(fieldName) === true;
760
779
  }
780
+ // Does the given field have any pending tests that are not optional?
761
781
  function hasNonOptionalIncomplete(fieldName) {
762
782
  return isNotEmpty(useAllIncomplete().filter(function (testObject) {
763
- if (nonMatchingFieldName(testObject, fieldName)) {
783
+ return isOptionalFieldIncomplete(testObject, fieldName);
784
+ }));
785
+ }
786
+ // Do the given group/field have any pending tests that are not optional?
787
+ function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
788
+ return isNotEmpty(useAllIncomplete().filter(function (testObject) {
789
+ if (nonMatchingGroupName(testObject, groupName)) {
764
790
  return false;
765
791
  }
766
- return useOptionalFieldConfig(testObject.fieldName) !== true;
792
+ return isOptionalFieldIncomplete(testObject, fieldName);
767
793
  }));
768
794
  }
795
+ function isOptionalFieldIncomplete(testObject, fieldName) {
796
+ if (nonMatchingFieldName(testObject, fieldName)) {
797
+ return false;
798
+ }
799
+ return useOptionalFieldConfig(testObject.fieldName) !== true;
800
+ }
769
801
  function noMissingTests(fieldName) {
770
802
  var testObjects = useTestsFlat();
771
803
  return testObjects.every(function (testObject) {
772
804
  if (nonMatchingFieldName(testObject, fieldName)) {
773
805
  return true;
774
806
  }
775
- return (useOptionalFieldConfig(testObject.fieldName) === true ||
776
- testObject.isTested() ||
777
- testObject.isOmitted());
807
+ return missingTestsLogic(testObject, fieldName);
778
808
  });
779
809
  }
810
+ function noMissingTestsByGroup(groupName, fieldName) {
811
+ var testObjects = useTestsFlat();
812
+ return testObjects.every(function (testObject) {
813
+ if (nonMatchingGroupName(testObject, groupName)) {
814
+ return true;
815
+ }
816
+ return missingTestsLogic(testObject, fieldName);
817
+ });
818
+ }
819
+ function missingTestsLogic(testObject, fieldName) {
820
+ if (nonMatchingFieldName(testObject, fieldName)) {
821
+ return true;
822
+ }
823
+ return (useOptionalFieldConfig(testObject.fieldName) === true ||
824
+ testObject.isTested() ||
825
+ testObject.isOmitted());
826
+ }
780
827
 
781
828
  function useSummary() {
782
829
  var summary = context.useX().summary;
@@ -798,7 +845,7 @@ function genTestsSummary() {
798
845
  appendToGroup(summary.groups, testObject);
799
846
  return summary;
800
847
  }, summary);
801
- summary.valid = shouldAddValidProp();
848
+ summary.valid = shouldAddValidProperty();
802
849
  return countFailures(summary);
803
850
  }
804
851
  function appendToTest(tests, testObject) {
@@ -807,7 +854,7 @@ function appendToTest(tests, testObject) {
807
854
  tests[testObject.fieldName].valid =
808
855
  tests[testObject.fieldName].valid === false
809
856
  ? false
810
- : shouldAddValidProp(testObject.fieldName);
857
+ : shouldAddValidProperty(testObject.fieldName);
811
858
  }
812
859
  /**
813
860
  * Appends to a group object if within a group
@@ -819,6 +866,10 @@ function appendToGroup(groups, testObject) {
819
866
  }
820
867
  groups[groupName] = groups[groupName] || {};
821
868
  groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
869
+ groups[groupName][testObject.fieldName].valid =
870
+ groups[groupName][testObject.fieldName].valid === false
871
+ ? false
872
+ : shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
822
873
  }
823
874
  /**
824
875
  * Counts the failed tests and adds global counters
@@ -961,9 +1012,30 @@ function hasFailuresByGroup(severityKey, groupName, fieldName) {
961
1012
  }
962
1013
 
963
1014
  function isValid(fieldName) {
964
- var _a;
965
1015
  var summary = useSummary();
966
- return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1016
+ return fieldName
1017
+ ? Boolean(isFieldValid(summary.tests, fieldName))
1018
+ : summary.valid;
1019
+ }
1020
+ function isValidByGroup(groupName, fieldName) {
1021
+ var summary = useSummary();
1022
+ var group = summary.groups[groupName];
1023
+ if (!group) {
1024
+ return false;
1025
+ }
1026
+ if (fieldName) {
1027
+ return isFieldValid(group, fieldName);
1028
+ }
1029
+ for (var fieldName_1 in group) {
1030
+ if (!isFieldValid(group, fieldName_1)) {
1031
+ return false;
1032
+ }
1033
+ }
1034
+ return true;
1035
+ }
1036
+ function isFieldValid(testContainer, fieldName) {
1037
+ var _a;
1038
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
967
1039
  }
968
1040
 
969
1041
  var cache$1 = createCache(1);
@@ -984,6 +1056,7 @@ function produceSuiteResult() {
984
1056
  hasWarnings: context.bind(ref, hasWarnings),
985
1057
  hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
986
1058
  isValid: context.bind(ref, isValid),
1059
+ isValidByGroup: context.bind(ref, isValidByGroup),
987
1060
  suiteName: suiteName
988
1061
  });
989
1062
  }));
@@ -1581,7 +1654,7 @@ function optional(optionals) {
1581
1654
  }
1582
1655
  }
1583
1656
 
1584
- /*! *****************************************************************************
1657
+ /******************************************************************************
1585
1658
  Copyright (c) Microsoft Corporation.
1586
1659
 
1587
1660
  Permission to use, copy, modify, and/or distribute this software for any
@@ -1724,30 +1797,23 @@ function useTestAtCursor(newTestObject) {
1724
1797
  return nextTest;
1725
1798
  }
1726
1799
  function removeAllNextTestsInIsolate() {
1727
- var _a = useTestObjects(), testObjects = _a[0], setTestObjects = _a[1];
1728
- var prevTests = testObjects.prev;
1729
- var current = getCurrent(prevTests, usePath());
1730
- var cursorAt = useCursorAt();
1731
- current.splice(cursorAt);
1800
+ var cursorAt = useCursor().current();
1732
1801
  // We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
1733
1802
  // since we're only touching the "prev" state. The reason we still use the setter function is
1734
1803
  // to prevent future headaches if we ever do need to rely on prev-state immutability.
1735
- setTestObjects(function (_a) {
1736
- var current = _a.current;
1737
- return ({
1738
- prev: prevTests,
1739
- current: current
1740
- });
1804
+ useSetTests(function (current) {
1805
+ current.splice(cursorAt);
1806
+ return current;
1741
1807
  });
1742
1808
  }
1743
1809
  function useSetTestAtCursor(testObject) {
1744
- var cursorPath = usePath();
1810
+ var cursorPath = useCurrentPath();
1745
1811
  useSetTests(function (tests) {
1746
1812
  return setValueAtPath(tests, cursorPath, testObject);
1747
1813
  });
1748
1814
  }
1749
1815
  function useGetTestAtCursor(tests) {
1750
- var cursorPath = usePath();
1816
+ var cursorPath = useCurrentPath();
1751
1817
  return valueAtPath(tests, cursorPath);
1752
1818
  }
1753
1819
  function testReorderDetected(prevTest, newTest) {
@@ -1771,16 +1837,17 @@ function handleKeyTest(key, newTestObject) {
1771
1837
 
1772
1838
  // eslint-disable-next-line max-statements
1773
1839
  function registerPrevRunTest(testObject) {
1840
+ var cursor = useCursor();
1774
1841
  if (shouldSkipBasedOnMode(testObject)) {
1775
1842
  testObject.skip();
1776
1843
  useTestAtCursor(testObject);
1777
- moveForward();
1844
+ cursor.next();
1778
1845
  return testObject;
1779
1846
  }
1780
1847
  var prevRunTest = useTestAtCursor(testObject);
1781
1848
  if (isOmitted()) {
1782
1849
  prevRunTest.omit();
1783
- moveForward();
1850
+ cursor.next();
1784
1851
  return prevRunTest;
1785
1852
  }
1786
1853
  if (isExcluded(testObject)) {
@@ -1789,13 +1856,13 @@ function registerPrevRunTest(testObject) {
1789
1856
  // This mostly means that we're probably giving
1790
1857
  // up on this async test intentionally.
1791
1858
  prevRunTest.skip(isExcludedIndividually());
1792
- moveForward();
1859
+ cursor.next();
1793
1860
  return prevRunTest;
1794
1861
  }
1795
1862
  cancelOverriddenPendingTest(prevRunTest, testObject);
1796
1863
  useSetTestAtCursor(testObject);
1797
- moveForward();
1798
1864
  registerTestObjectByTier(testObject);
1865
+ cursor.next();
1799
1866
  return testObject;
1800
1867
  }
1801
1868
  function registerTestObjectByTier(testObject) {
@@ -1818,7 +1885,7 @@ function bindTestMemo(test) {
1818
1885
  for (var _i = 1; _i < arguments.length; _i++) {
1819
1886
  args[_i - 1] = arguments[_i];
1820
1887
  }
1821
- var cursorAt = useCursorAt();
1888
+ var cursorAt = useCursor().current();
1822
1889
  var _a = args.reverse(), deps = _a[0], testFn = _a[1], msg = _a[2];
1823
1890
  // Implicit dependency for more specificity
1824
1891
  var dependencies = [useSuiteId(), fieldName, cursorAt].concat(deps);
@@ -1880,7 +1947,7 @@ function warn() {
1880
1947
  ctx.currentTest.warn();
1881
1948
  }
1882
1949
 
1883
- var VERSION = "4.3.4";
1950
+ var VERSION = "4.4.1";
1884
1951
 
1885
1952
  Object.defineProperty(exports, 'enforce', {
1886
1953
  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 h,E,g=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),g(u)&&r.push(u))}return r}function b(n,t,r){return C(n,t)[R(t)]=r,n}function T(n){return s(n).reduce((function(n,t){return d(t)?n.concat(T(t)):s(n).concat(t)}),[])}function C(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 _(){var n=0;return{current:function(){return n},next:function(){n++}}}function I(n,t){return void 0===t&&(t=[]),{cursor:_(),keys:{current:{},prev:{}},path:t,type: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"}(E||(E={}));var O=r.createContext((function(n,t){return t?null:c({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:I(h.DEFAULT),mode:[E.ALL]},n)}));function A(){return O.useX().stateRef}function k(){return A().suiteId()[0]}function x(){return A().testCallbacks()}function L(n){return F()[0][n]}function F(){return A().optionalFields()}function U(n,t){(0,F()[1])((function(r){var e;return c(r,((e={})[n]=m(t,r[n]),e))}))}function W(n){var t;return null===(t=L(n))||void 0===t?void 0:t[0]}function G(){return A().testObjects()}function P(){D((function(n){return n}))}function D(n){(0,G()[1])((function(t){return{prev:t.prev,current:s(n(t.current))}}))}function w(){return K().filter((function(n){return n.isPending()}))}var X,H=p();function K(){var n=G()[0].current;return H([n],(function(){return T(n)}))}function M(n){K().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(X||(X={}));var q,j,B=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=X.Error,this.status=V,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!==nn||(this.status=n)},n.prototype.warns=function(){return this.severity===X.Warning},n.prototype.setPending=function(){this.setStatus(Z)},n.prototype.fail=function(){this.setStatus(this.warns()?z:J)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Q)},n.prototype.warn=function(){this.severity=X.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(Y)},n.prototype.cancel=function(){this.setStatus($),P()},n.prototype.reset=function(){this.status=V,P()},n.prototype.omit=function(){this.setStatus(nn)},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(Z)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(nn)},n.prototype.isUntested=function(){return this.statusEquals(V)},n.prototype.isFailing=function(){return this.statusEquals(J)},n.prototype.isCanceled=function(){return this.statusEquals($)},n.prototype.isSkipped=function(){return this.statusEquals(Y)},n.prototype.isPassing=function(){return this.statusEquals(Q)},n.prototype.isWarning=function(){return this.statusEquals(z)},n.prototype.statusEquals=function(n){return this.status===n},n}(),V="UNTESTED",Y="SKIPPED",J="FAILED",z="WARNING",Q="PASSING",Z="PENDING",$="CANCELED",nn="OMITTED";function tn(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?m(t):t)}function rn(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 en(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 un(n){return v(n)||o(n)}function on(n){setTimeout((function(){throw Error(n)}),0)}function sn(n,t){n=void 0===(n=n.type)?h.DEFAULT:n,tn(N(t));var r=I(n,an());return n=O.run({isolate:r},(function(){return r.keys.prev=s(C(G()[0].prev,an())).reduce((function(n,t){return t instanceof B&&!un(t.key)?(n[t.key]=t,n):n}),{}),D((function(n){return b(n,r.path,[])})),t()})),fn().next(),n}function cn(){return O.useX().isolate}function an(){var n=cn();return n.path.concat(n.cursor.current())}function fn(){return cn().cursor}function ln(n){return n===q.ERRORS?j.ERROR_COUNT:j.WARN_COUNT}function pn(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function dn(n){return!n||(function(n){return"number"==typeof n}(n)?0===n:pn(n,"length")?f(n,0):"object"==typeof n&&f(Object.keys(n),0))}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(q||(q={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(j||(j={}));var vn=i(dn);function hn(n,t){return!!t&&!En(n,t)}function En(n,t){return!(!t||n.fieldName!==t)}var gn=i((function(n,t){return n.groupName===t}));function Nn(n){return function(n,t){return K().some((function(r){return mn(r,n,t)}))}(q.ERRORS,n)}function mn(n,t,r){return!(!n.hasFailures()||hn(n,r)||function(n,t){return function(n,t){return!!n!=!!t}(n===q.WARNINGS,t.warns())}(t,n))}function yn(n){return!!Sn(n)||!Nn(n)&&(!dn(K())&&!function(n){return vn(w().filter((function(t){return bn(t,n)})))}(n)&&function(n){return K().every((function(t){return!!hn(t,n)||Tn(t,n)}))}(n))}function Rn(n,t){return!!Sn(t)||!function(n,t,r){return K().some((function(e){return!gn(e,t)&&mn(e,n,r)}))}(q.ERRORS,n,t)&&!function(n,t){return vn(w().filter((function(r){return!gn(r,n)&&bn(r,t)})))}(n,t)&&function(n,t){return K().every((function(r){return!!gn(r,n)||Tn(r,t)}))}(n,t)}function Sn(n){return!!n&&!0===function(n){var t;return null===(t=L(n))||void 0===t?void 0:t[1]}(n)}function bn(n,t){return!hn(n,t)&&!0!==W(n.fieldName)}function Tn(n,t){return!!hn(n,t)||(!0===W(n.fieldName)||n.isTested()||n.isOmitted())}function Cn(){var n=O.useX().summary;return tn(n),n}function _n(){var n=K(),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]=In(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&yn(t.fieldName)}(n.tests,t),function(n,t){var r=t.groupName;r&&(n[r]=n[r]||{},n[r][t.fieldName]=In(n[r],t),n[r][t.fieldName].valid=!1!==n[r][t.fieldName].valid&&Rn(r,t.fieldName))}(n.groups,t),n}),t),t.valid=yn(),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 In(n,t){function r(n){var t=ln(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(q.ERRORS):t.isWarning()&&r(q.WARNINGS)),i}function On(n){return l(n,0)}function An(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=ln(t);for(r in n)On(n[r][u])&&(e[r]=n[r][t]||[]);return e}(n,t)}function kn(n){return Ln(q.ERRORS,n)}function xn(n){return Ln(q.WARNINGS,n)}function Ln(n,t){return An(Cn().tests,n,t)}function Fn(n,t){return Wn(n,q.ERRORS,t)}function Un(n,t){return Wn(n,q.WARNINGS,t)}function Wn(n,t,r){return An(Cn().groups[n],t,r)}function Gn(n){return Dn(j.ERROR_COUNT,n)}function Pn(n){return Dn(j.WARN_COUNT,n)}function Dn(n,t){var r,e=Cn();return On(t?null===(r=e.tests[t])||void 0===r?void 0:r[n]:e[n])}function wn(n,t){return Hn(q.ERRORS,n,t)}function Xn(n,t){return Hn(q.WARNINGS,n,t)}function Hn(n,t,r){var e,u,i=Cn();if(n=ln(n),!(t=i.groups[t]))return!1;if(r)return On(null===(e=t[r])||void 0===e?void 0:e[n]);for(var o in t)if(On(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Kn(n){var t=Cn();return n?!!qn(t.tests,n):t.valid}function Mn(n,t){if(!(n=Cn().groups[n]))return!1;if(t)return qn(n,t);for(var r in n)if(!qn(n,r))return!1;return!0}function qn(n,t){var r;return!(null===(r=n[t])||void 0===r||!r.valid)}var jn=p(1);function Bn(){var n=K(),t={stateRef:A()};return jn([n],O.bind(t,(function(){var n=_n(),t=A().suiteName()[0],r={summary:n};return c(n,{getErrors:O.bind(r,kn),getErrorsByGroup:O.bind(r,Fn),getWarnings:O.bind(r,xn),getWarningsByGroup:O.bind(r,Un),hasErrors:O.bind(r,Gn),hasErrorsByGroup:O.bind(r,wn),hasWarnings:O.bind(r,Pn),hasWarningsByGroup:O.bind(r,Xn),isValid:O.bind(r,Kn),isValidByGroup:O.bind(r,Mn),suiteName:t})})))}function Vn(n){var t=w();return!dn(t)&&(n?t.some((function(t){return En(t,n)})):vn(t))}var Yn=p(20);function Jn(){var n=K(),t={stateRef:A()};return Yn([n],O.bind(t,(function(){return c({},Bn(),{done:O.bind(t,$n)})})))}function zn(n,t,r){return!(N(n)&&(!t||r.tests[t]&&!dn(r.tests[t].testCount)))}function Qn(n){return!(Vn()&&(!n||Vn(n)))}var Zn,$n=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=Jn(),zn(r,n,t))return t;var e=function(){return r(Bn())};return Qn(n)?(e(),t):(nt(e,n),t)};function nt(n,t){(0,x()[1])((function(r){return t?r.fieldCallbacks[t]=(r.fieldCallbacks[t]||[]).concat(n):r.doneCallbacks.push(n),r}))}function tt(n){return n.forEach((function(n){return n()}))}function rt(){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(Zn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=x()[0].fieldCallbacks;n&&!Vn(n)&&d(t[n])&&tt(t[n])}(t.fieldName),Vn()||n.emit(Zn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Zn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),U(n.fieldName,(function(n){return[n[0],!0]})))}if(!dn(F()[0])){var t={};D((function(r){return S(r,(function(r){if(pn(t,r.fieldName))n(r);else{var e=W(r.fieldName);N(e)&&(t[r.fieldName]=e(),n(r))}return r}))}))}}()})),n.on(Zn.ALL_RUNNING_TESTS_FINISHED,(function(){tt(x()[0].doneCallbacks)})),n.on(Zn.REMOVE_FIELD,(function(n){M((function(t){En(t,n)&&(t.cancel(),function(n){D((function(t){return S(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Zn.RESET_FIELD,(function(n){M((function(t){En(t,n)&&t.reset()}))})),n}function et(){var n=O.useX();return tn(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"}(Zn||(Zn={}));function ut(){return!!O.useX().skipped}function it(n){return ct(0,"tests",n)}function ot(n){return ct(1,"tests",n)}function st(n){var t=n.fieldName;if(n=n.groupName,ut())return!0;var r=O.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=O.useX().exclusion.groups;return pn(t,n)?!1===t[n]:ft()}(n))return!0;if(!0===e.groups[n])return!i&&(!!at(u)||!1===u[t])}return!!function(n){return!!ft()&&!n}(n)||!i&&(!!at(u)&&!m(r[t]))}function ct(n,t,r){var e=O.useX("hook called outside of a running suite.");r&&s(r).forEach((function(r){u(r)&&(e.exclusion[t][r]=0===n)}))}function at(n){for(var t in n)if(!0===n[t])return!0;return!1}function ft(){var n,t=O.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function lt(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function pt(n){return!(!function(n){return O.useX().mode[0]===n}(E.EAGER)||!Nn(n.fieldName))}function dt(){return!!O.useX().omitted}function vt(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 ht(n){return n&&N(n.then)}function Et(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function gt(n){var t=n.asyncTest,r=n.message;if(ht(t)){var e=et().emit,i=A(),o=O.bind({stateRef:i},(function(){P(),e(Zn.TEST_COMPLETED,n)}));i=O.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 Nt(n){var t=et(),r=function(n){return O.run({currentTest:n},(function(){return n.run()}))}(n);try{ht(r)?(n.asyncTest=r,n.setPending(),gt(n)):t.emit(Zn.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 mt(n){var t=G()[0].prev;return dn(t)?(yt(n),n):(t=function(n){var t=an();return function(n,t){return C(n,t)[R(t)]}(n,t)}(t),un(n.key)?(function(n,t){return vn(n)&&!Et(n,t)}(t,n)&&(function(n,t){cn().type===h.EACH||on("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=fn().current();D((function(t){return t.splice(n),t}))}(),t=null),yt(n=y(t,n)),n):(yt(n=function(n,t){var r=function(n){return cn().keys.prev[n]}(n);return r&&(t=r),function(n,t){var r=cn().keys.current;un(r[n])?r[n]=t:on('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 yt(n){var t=an();D((function(r){return b(r,t,n)}))}function Rt(n){var t=fn();if(pt(n))return n.skip(),mt(n),t.next(),n;var r=mt(n);return dt()?(r.omit(),t.next(),r):st(n)?(r.skip(ut()),t.next(),r):(function(n,t){t!==n&&Et(n,t)&&n.isPending()&&n.cancel()}(r,n),yt(n),function(n){n.isUntested()?Nt(n):ht(n.asyncTest)&&(n.setPending(),gt(n))}(n),t.next(),n)}function St(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=N(t[1])?t:vt([void 0],t,!0);t=e[0],r=e[1],e=e[2],tn(u(n),Tt("fieldName","string")),tn(N(r),Tt("Test callback","function"));var i=O.useX();return Rt(t=new B(n,r,{message:t,groupName:i.groupName,key:e}))}it.group=function(n){return ct(0,"groups",n)},ot.group=function(n){return ct(1,"groups",n)};var bt=c(St,{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=fn().current();var i=(e=e.reverse())[0],o=e[1],s=e[2];return u=[k(),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)}))):Rt(e[1])}}(St)});function Tt(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.1",exports.context=O,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],tn(N(r),"vest.create: Expected callback to be a function.");var u=rt(),i=rn();return n={stateRef:en(i,{suiteId:e(),suiteName:n}),bus:u},c(O.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),sn({type:h.SUITE},(function(){r.apply(void 0,n)})),u.emit(Zn.SUITE_CALLBACK_DONE_RUNNING),Jn()})),{get:O.bind(n,Bn),remove:O.bind(n,(function(n){u.emit(Zn.REMOVE_FIELD,n)})),reset:i.reset,resetField:O.bind(n,(function(n){u.emit(Zn.RESET_FIELD,n)}))})},exports.each=function(n,t){tn(N(t),"each callback must be a function"),sn({type:h.EACH},(function(){n.forEach((function(n,r){t(n,r)}))}))},exports.eager=function(){!function(n){O.useX().mode[0]=n}(E.EAGER)},exports.group=function(n,t){tn(u(n),lt("name must be a string")),tn(N(t),lt("callback must be a function")),sn({type:h.GROUP},(function(){O.run({groupName:n},t)}))},exports.include=function(n){var t=O.useX(),r=t.inclusion;return t=t.exclusion,tn(u(n)),r[n]=y(t.tests[n],!0),{when:function(t){var r=O.useX(),e=r.exclusion;r.inclusion[n]=function(){return pn(e.tests,n)?y(e.tests[n],!0):u(t)?!!e.tests[t]:m(t,m(Bn))}}}},exports.omitWhen=function(n,t){sn({type:h.OMIT_WHEN},(function(){O.run({omitted:dt()||m(n,m(Bn))},(function(){return t()}))}))},exports.only=it,exports.optional=function(n){if(d(n)||u(n))s(n).forEach((function(n){U(n,[!0,!1])}));else for(var t in n)U(t,[n[t],!1])},exports.skip=ot,exports.skipWhen=function(n,t){sn({type:h.SKIP_WHEN},(function(){O.run({skipped:ut()||m(n,m(Bn))},(function(){return t()}))}))},exports.test=bt,exports.warn=function(){var n=O.useX("warn hook called outside of a running suite.");tn(n.currentTest,"warn called outside of a test."),n.currentTest.warn()};