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.
@@ -176,40 +176,6 @@ function getCurrent(array, path) {
176
176
  return current;
177
177
  }
178
178
 
179
- function createCursor() {
180
- var storage = {
181
- cursor: []
182
- };
183
- function addLevel() {
184
- storage.cursor.push(0);
185
- }
186
- function removeLevel() {
187
- storage.cursor.pop();
188
- }
189
- function cursorAt() {
190
- return last(storage.cursor);
191
- }
192
- function getCursor() {
193
- return asArray(storage.cursor);
194
- }
195
- function next() {
196
- storage.cursor[storage.cursor.length - 1]++;
197
- return last(storage.cursor);
198
- }
199
- function reset() {
200
- storage.cursor = [0];
201
- }
202
- reset();
203
- return {
204
- addLevel: addLevel,
205
- cursorAt: cursorAt,
206
- getCursor: getCursor,
207
- next: next,
208
- removeLevel: removeLevel,
209
- reset: reset
210
- };
211
- }
212
-
213
179
  var IsolateTypes;
214
180
  (function (IsolateTypes) {
215
181
  IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
@@ -226,6 +192,41 @@ var Modes;
226
192
  Modes[Modes["EAGER"] = 1] = "EAGER";
227
193
  })(Modes || (Modes = {}));
228
194
 
195
+ function createIsolateCursor() {
196
+ var cursor = {
197
+ value: 0
198
+ };
199
+ return {
200
+ current: current,
201
+ next: next
202
+ };
203
+ /**
204
+ * @returns {number} The current value of the cursor
205
+ */
206
+ function current() {
207
+ return cursor.value;
208
+ }
209
+ /**
210
+ * Moves the isolate cursor forward by 1
211
+ */
212
+ function next() {
213
+ cursor.value++;
214
+ }
215
+ }
216
+
217
+ function generateIsolate(type, path) {
218
+ if (path === void 0) { path = []; }
219
+ return {
220
+ cursor: createIsolateCursor(),
221
+ keys: {
222
+ current: {},
223
+ prev: {}
224
+ },
225
+ path: path,
226
+ type: type
227
+ };
228
+ }
229
+
229
230
  var context = createContext(function (ctxRef, parentContext) {
230
231
  return parentContext
231
232
  ? null
@@ -235,15 +236,8 @@ var context = createContext(function (ctxRef, parentContext) {
235
236
  groups: {}
236
237
  },
237
238
  inclusion: {},
238
- isolate: {
239
- type: IsolateTypes.DEFAULT,
240
- keys: {
241
- current: {},
242
- prev: {}
243
- }
244
- },
245
- mode: [Modes.ALL],
246
- testCursor: createCursor()
239
+ isolate: generateIsolate(IsolateTypes.DEFAULT),
240
+ mode: [Modes.ALL]
247
241
  }, ctxRef);
248
242
  });
249
243
 
@@ -569,30 +563,9 @@ function deferThrow(message) {
569
563
  }, 0);
570
564
  }
571
565
 
572
- function usePath() {
573
- var context$1 = context.useX();
574
- return context$1.testCursor.getCursor();
575
- }
576
- function useCursorAt() {
577
- var context$1 = context.useX();
578
- return context$1.testCursor.cursorAt();
579
- }
580
- function moveForward() {
581
- var context$1 = context.useX();
582
- return context$1.testCursor.next();
583
- }
584
- function addLevel() {
585
- var context$1 = context.useX();
586
- context$1.testCursor.addLevel();
587
- }
588
- function removeLevel() {
589
- var context$1 = context.useX();
590
- context$1.testCursor.removeLevel();
591
- }
592
-
593
566
  function usePrevKeys() {
594
567
  var prev = useTestObjects()[0].prev;
595
- return asArray(getCurrent(prev, usePath())).reduce(function (prevKeys, testObject) {
568
+ return asArray(getCurrent(prev, useCurrentPath())).reduce(function (prevKeys, testObject) {
596
569
  if (!(testObject instanceof VestTest)) {
597
570
  return prevKeys;
598
571
  }
@@ -604,12 +577,11 @@ function usePrevKeys() {
604
577
  }, {});
605
578
  }
606
579
  function usePrevTestByKey(key) {
607
- var prev = context.useX().isolate.keys.prev;
580
+ var prev = useIsolate().keys.prev;
608
581
  return prev[key];
609
582
  }
610
583
  function useRetainTestKey(key, testObject) {
611
- var context$1 = context.useX();
612
- var current = context$1.isolate.keys.current;
584
+ var current = useIsolate().keys.current;
613
585
  if (isNullish(current[key])) {
614
586
  current[key] = testObject;
615
587
  }
@@ -621,23 +593,42 @@ function useRetainTestKey(key, testObject) {
621
593
  function isolate(_a, callback) {
622
594
  var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
623
595
  invariant(isFunction(callback));
624
- var keys = {
625
- current: {},
626
- prev: {}
627
- };
628
- var path = usePath();
629
- return context.run({ isolate: { type: type, keys: keys } }, function () {
630
- addLevel();
631
- keys.prev = usePrevKeys();
632
- useSetTests(function (tests) { return setValueAtPath(tests, path, []); });
596
+ // Generate a new Isolate layer, with its own cursor
597
+ var isolate = generateIsolate(type, useCurrentPath());
598
+ var output = context.run({ isolate: isolate }, function () {
599
+ isolate.keys.prev = usePrevKeys();
600
+ useSetTests(function (tests) { return setValueAtPath(tests, isolate.path, []); });
633
601
  var res = callback();
634
- removeLevel();
635
- moveForward();
636
602
  return res;
637
603
  });
604
+ // Move the parent cursor forward once we're done
605
+ useCursor().next();
606
+ return output;
607
+ }
608
+ /**
609
+ * @returns {Isolate} The current isolate layer
610
+ */
611
+ function useIsolate() {
612
+ return context.useX().isolate;
638
613
  }
614
+ /**
615
+ * @returns {boolean} Whether or not the current isolate allows tests to be reordered
616
+ */
639
617
  function shouldAllowReorder() {
640
- return context.useX().isolate.type === IsolateTypes.EACH;
618
+ return useIsolate().type === IsolateTypes.EACH;
619
+ }
620
+ /**
621
+ * @returns {number[]} The current cursor path of the isolate tree
622
+ */
623
+ function useCurrentPath() {
624
+ var isolate = useIsolate();
625
+ return isolate.path.concat(isolate.cursor.current());
626
+ }
627
+ /**
628
+ * @returns {IsolateCursor} The cursor object for the current isolate
629
+ */
630
+ function useCursor() {
631
+ return useIsolate().cursor;
641
632
  }
642
633
 
643
634
  var Severity;
@@ -691,6 +682,11 @@ function matchingFieldName(testObject, fieldName) {
691
682
  return !!(fieldName && testObject.fieldName === fieldName);
692
683
  }
693
684
 
685
+ var nonMatchingGroupName = bindNot(matchingGroupName);
686
+ function matchingGroupName(testObject, groupName) {
687
+ return testObject.groupName === groupName;
688
+ }
689
+
694
690
  function either(a, b) {
695
691
  return !!a !== !!b;
696
692
  }
@@ -715,6 +711,15 @@ function hasFailuresByTestObjects(severityKey, fieldName) {
715
711
  return hasFailuresByTestObject(testObject, severityKey, fieldName);
716
712
  });
717
713
  }
714
+ function hasGroupFailuresByTestObjects(severityKey, groupName, fieldName) {
715
+ var testObjects = useTestsFlat();
716
+ return testObjects.some(function (testObject) {
717
+ if (nonMatchingGroupName(testObject, groupName)) {
718
+ return false;
719
+ }
720
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
721
+ });
722
+ }
718
723
  /**
719
724
  * Determines whether a certain test profile has failures.
720
725
  */
@@ -732,7 +737,7 @@ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
732
737
  }
733
738
 
734
739
  // eslint-disable-next-line max-statements, complexity
735
- function shouldAddValidProp(fieldName) {
740
+ function shouldAddValidProperty(fieldName) {
736
741
  if (fieldIsOmitted(fieldName)) {
737
742
  return true;
738
743
  }
@@ -743,36 +748,78 @@ function shouldAddValidProp(fieldName) {
743
748
  if (isEmpty(testObjects)) {
744
749
  return false;
745
750
  }
751
+ // Does the given field have any pending tests that are not optional?
746
752
  if (hasNonOptionalIncomplete(fieldName)) {
747
753
  return false;
748
754
  }
749
755
  return noMissingTests(fieldName);
750
756
  }
757
+ function shouldAddValidPropertyInGroup(groupName, fieldName) {
758
+ if (fieldIsOmitted(fieldName)) {
759
+ return true;
760
+ }
761
+ if (hasGroupFailuresByTestObjects(Severity.ERRORS, groupName, fieldName)) {
762
+ return false;
763
+ }
764
+ // Do the given group/field have any pending tests that are not optional?
765
+ if (hasNonOptionalIncompleteByGroup(groupName, fieldName)) {
766
+ return false;
767
+ }
768
+ return noMissingTestsByGroup(groupName, fieldName);
769
+ }
751
770
  function fieldIsOmitted(fieldName) {
752
771
  if (!fieldName) {
753
772
  return false;
754
773
  }
755
774
  return useOptionalFieldApplied(fieldName) === true;
756
775
  }
776
+ // Does the given field have any pending tests that are not optional?
757
777
  function hasNonOptionalIncomplete(fieldName) {
758
778
  return isNotEmpty(useAllIncomplete().filter(function (testObject) {
759
- if (nonMatchingFieldName(testObject, fieldName)) {
779
+ return isOptionalFieldIncomplete(testObject, fieldName);
780
+ }));
781
+ }
782
+ // Do the given group/field have any pending tests that are not optional?
783
+ function hasNonOptionalIncompleteByGroup(groupName, fieldName) {
784
+ return isNotEmpty(useAllIncomplete().filter(function (testObject) {
785
+ if (nonMatchingGroupName(testObject, groupName)) {
760
786
  return false;
761
787
  }
762
- return useOptionalFieldConfig(testObject.fieldName) !== true;
788
+ return isOptionalFieldIncomplete(testObject, fieldName);
763
789
  }));
764
790
  }
791
+ function isOptionalFieldIncomplete(testObject, fieldName) {
792
+ if (nonMatchingFieldName(testObject, fieldName)) {
793
+ return false;
794
+ }
795
+ return useOptionalFieldConfig(testObject.fieldName) !== true;
796
+ }
765
797
  function noMissingTests(fieldName) {
766
798
  var testObjects = useTestsFlat();
767
799
  return testObjects.every(function (testObject) {
768
800
  if (nonMatchingFieldName(testObject, fieldName)) {
769
801
  return true;
770
802
  }
771
- return (useOptionalFieldConfig(testObject.fieldName) === true ||
772
- testObject.isTested() ||
773
- testObject.isOmitted());
803
+ return missingTestsLogic(testObject, fieldName);
774
804
  });
775
805
  }
806
+ function noMissingTestsByGroup(groupName, fieldName) {
807
+ var testObjects = useTestsFlat();
808
+ return testObjects.every(function (testObject) {
809
+ if (nonMatchingGroupName(testObject, groupName)) {
810
+ return true;
811
+ }
812
+ return missingTestsLogic(testObject, fieldName);
813
+ });
814
+ }
815
+ function missingTestsLogic(testObject, fieldName) {
816
+ if (nonMatchingFieldName(testObject, fieldName)) {
817
+ return true;
818
+ }
819
+ return (useOptionalFieldConfig(testObject.fieldName) === true ||
820
+ testObject.isTested() ||
821
+ testObject.isOmitted());
822
+ }
776
823
 
777
824
  function useSummary() {
778
825
  var summary = context.useX().summary;
@@ -794,7 +841,7 @@ function genTestsSummary() {
794
841
  appendToGroup(summary.groups, testObject);
795
842
  return summary;
796
843
  }, summary);
797
- summary.valid = shouldAddValidProp();
844
+ summary.valid = shouldAddValidProperty();
798
845
  return countFailures(summary);
799
846
  }
800
847
  function appendToTest(tests, testObject) {
@@ -803,7 +850,7 @@ function appendToTest(tests, testObject) {
803
850
  tests[testObject.fieldName].valid =
804
851
  tests[testObject.fieldName].valid === false
805
852
  ? false
806
- : shouldAddValidProp(testObject.fieldName);
853
+ : shouldAddValidProperty(testObject.fieldName);
807
854
  }
808
855
  /**
809
856
  * Appends to a group object if within a group
@@ -815,6 +862,10 @@ function appendToGroup(groups, testObject) {
815
862
  }
816
863
  groups[groupName] = groups[groupName] || {};
817
864
  groups[groupName][testObject.fieldName] = appendTestObject(groups[groupName], testObject);
865
+ groups[groupName][testObject.fieldName].valid =
866
+ groups[groupName][testObject.fieldName].valid === false
867
+ ? false
868
+ : shouldAddValidPropertyInGroup(groupName, testObject.fieldName);
818
869
  }
819
870
  /**
820
871
  * Counts the failed tests and adds global counters
@@ -957,9 +1008,30 @@ function hasFailuresByGroup(severityKey, groupName, fieldName) {
957
1008
  }
958
1009
 
959
1010
  function isValid(fieldName) {
960
- var _a;
961
1011
  var summary = useSummary();
962
- return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1012
+ return fieldName
1013
+ ? Boolean(isFieldValid(summary.tests, fieldName))
1014
+ : summary.valid;
1015
+ }
1016
+ function isValidByGroup(groupName, fieldName) {
1017
+ var summary = useSummary();
1018
+ var group = summary.groups[groupName];
1019
+ if (!group) {
1020
+ return false;
1021
+ }
1022
+ if (fieldName) {
1023
+ return isFieldValid(group, fieldName);
1024
+ }
1025
+ for (var fieldName_1 in group) {
1026
+ if (!isFieldValid(group, fieldName_1)) {
1027
+ return false;
1028
+ }
1029
+ }
1030
+ return true;
1031
+ }
1032
+ function isFieldValid(testContainer, fieldName) {
1033
+ var _a;
1034
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
963
1035
  }
964
1036
 
965
1037
  var cache$1 = createCache(1);
@@ -980,6 +1052,7 @@ function produceSuiteResult() {
980
1052
  hasWarnings: context.bind(ref, hasWarnings),
981
1053
  hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
982
1054
  isValid: context.bind(ref, isValid),
1055
+ isValidByGroup: context.bind(ref, isValidByGroup),
983
1056
  suiteName: suiteName
984
1057
  });
985
1058
  }));
@@ -1577,7 +1650,7 @@ function optional(optionals) {
1577
1650
  }
1578
1651
  }
1579
1652
 
1580
- /*! *****************************************************************************
1653
+ /******************************************************************************
1581
1654
  Copyright (c) Microsoft Corporation.
1582
1655
 
1583
1656
  Permission to use, copy, modify, and/or distribute this software for any
@@ -1720,30 +1793,23 @@ function useTestAtCursor(newTestObject) {
1720
1793
  return nextTest;
1721
1794
  }
1722
1795
  function removeAllNextTestsInIsolate() {
1723
- var _a = useTestObjects(), testObjects = _a[0], setTestObjects = _a[1];
1724
- var prevTests = testObjects.prev;
1725
- var current = getCurrent(prevTests, usePath());
1726
- var cursorAt = useCursorAt();
1727
- current.splice(cursorAt);
1796
+ var cursorAt = useCursor().current();
1728
1797
  // We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
1729
1798
  // since we're only touching the "prev" state. The reason we still use the setter function is
1730
1799
  // to prevent future headaches if we ever do need to rely on prev-state immutability.
1731
- setTestObjects(function (_a) {
1732
- var current = _a.current;
1733
- return ({
1734
- prev: prevTests,
1735
- current: current
1736
- });
1800
+ useSetTests(function (current) {
1801
+ current.splice(cursorAt);
1802
+ return current;
1737
1803
  });
1738
1804
  }
1739
1805
  function useSetTestAtCursor(testObject) {
1740
- var cursorPath = usePath();
1806
+ var cursorPath = useCurrentPath();
1741
1807
  useSetTests(function (tests) {
1742
1808
  return setValueAtPath(tests, cursorPath, testObject);
1743
1809
  });
1744
1810
  }
1745
1811
  function useGetTestAtCursor(tests) {
1746
- var cursorPath = usePath();
1812
+ var cursorPath = useCurrentPath();
1747
1813
  return valueAtPath(tests, cursorPath);
1748
1814
  }
1749
1815
  function testReorderDetected(prevTest, newTest) {
@@ -1767,16 +1833,17 @@ function handleKeyTest(key, newTestObject) {
1767
1833
 
1768
1834
  // eslint-disable-next-line max-statements
1769
1835
  function registerPrevRunTest(testObject) {
1836
+ var cursor = useCursor();
1770
1837
  if (shouldSkipBasedOnMode(testObject)) {
1771
1838
  testObject.skip();
1772
1839
  useTestAtCursor(testObject);
1773
- moveForward();
1840
+ cursor.next();
1774
1841
  return testObject;
1775
1842
  }
1776
1843
  var prevRunTest = useTestAtCursor(testObject);
1777
1844
  if (isOmitted()) {
1778
1845
  prevRunTest.omit();
1779
- moveForward();
1846
+ cursor.next();
1780
1847
  return prevRunTest;
1781
1848
  }
1782
1849
  if (isExcluded(testObject)) {
@@ -1785,13 +1852,13 @@ function registerPrevRunTest(testObject) {
1785
1852
  // This mostly means that we're probably giving
1786
1853
  // up on this async test intentionally.
1787
1854
  prevRunTest.skip(isExcludedIndividually());
1788
- moveForward();
1855
+ cursor.next();
1789
1856
  return prevRunTest;
1790
1857
  }
1791
1858
  cancelOverriddenPendingTest(prevRunTest, testObject);
1792
1859
  useSetTestAtCursor(testObject);
1793
- moveForward();
1794
1860
  registerTestObjectByTier(testObject);
1861
+ cursor.next();
1795
1862
  return testObject;
1796
1863
  }
1797
1864
  function registerTestObjectByTier(testObject) {
@@ -1814,7 +1881,7 @@ function bindTestMemo(test) {
1814
1881
  for (var _i = 1; _i < arguments.length; _i++) {
1815
1882
  args[_i - 1] = arguments[_i];
1816
1883
  }
1817
- var cursorAt = useCursorAt();
1884
+ var cursorAt = useCursor().current();
1818
1885
  var _a = args.reverse(), deps = _a[0], testFn = _a[1], msg = _a[2];
1819
1886
  // Implicit dependency for more specificity
1820
1887
  var dependencies = [useSuiteId(), fieldName, cursorAt].concat(deps);
@@ -1876,6 +1943,6 @@ function warn() {
1876
1943
  ctx.currentTest.warn();
1877
1944
  }
1878
1945
 
1879
- var VERSION = "4.3.4";
1946
+ var VERSION = "4.4.1";
1880
1947
 
1881
1948
  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,r=(n=0,function(){return"".concat(n++)});function e(t){return String(t)===t}function u(t){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];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(r,u){var i=n.get(r);return i?i[1]:(u=u(),e.unshift([r.concat(),u]),a(e.length,t)&&(e.length=t),u)}function r(t){return e.findIndex((function(n){var r=n[0];return s(t.length,r.length)&&t.every((function(t,n){return t===r[n]}))}))}void 0===t&&(t=1);var e=[];return n.invalidate=function(t){-1<(t=r(t))&&e.splice(t,1)},n.get=function(t){return e[r(t)]||null},n}var f=u((function(t){return null===t}));function l(t){return"function"==typeof t}function d(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return l(t)?t.apply(void 0,n):t}function p(t,n){var r;return null!==(r=d(t))&&void 0!==r?r:n}function v(t){return(t=[].concat(t))[t.length-1]}function h(t,n){for(var r=[],e=0;e<t.length;e++){var u=t[e];Array.isArray(u)?r.push(h(u,n)):(u=n(u),f(u)&&r.push(u))}return r}function E(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(E(n)):[].concat(t).concat(n)}),[])}function g(t,n){var r=0;for(n=n.slice(0,-1);r<n.length;r++){var e=n[r];t[e]=p(t[e],[]),t=t[e]}return t}var N,m=N||(N={});m[m.DEFAULT=0]="DEFAULT",m[m.SUITE=1]="SUITE",m[m.EACH=2]="EACH",m[m.SKIP_WHEN=3]="SKIP_WHEN",m[m.OMIT_WHEN=4]="OMIT_WHEN",m[m.GROUP=5]="GROUP";var y,R=y||(y={});function b(){var t=0;return{current:function(){return t},next:function(){t++}}}function S(t,n){return void 0===n&&(n=[]),{cursor:b(),keys:{current:{},prev:{}},path:n,type:t}}R[R.ALL=0]="ALL",R[R.EAGER=1]="EAGER";var T=t((function(t,n){return n?null:i({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:S(N.DEFAULT),mode:[y.ALL]},t)}));function O(){return T.useX().stateRef}function C(t){return O().optionalFields()[0][t]}function A(t,n){(0,O().optionalFields()[1])((function(r){var e;return i(r,((e={})[t]=d(n,r[t]),e))}))}function I(t){var n;return null===(n=C(t))||void 0===n?void 0:n[0]}function _(){k((function(t){return t}))}function k(t){(0,O().testObjects()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function F(){return U().filter((function(t){return t.isPending()}))}var L=c();function U(){var t=O().testObjects()[0].current;return L([t],(function(){return E(t)}))}var G,P=G||(G={});P.Error="error",P.Warning="warning";var W=function(){function t(t,n,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=G.Error,this.status=w,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),e&&(this.message=e),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&e(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==M||(this.status=t)},t.prototype.warns=function(){return this.severity===G.Warning},t.prototype.setPending=function(){this.setStatus(H)},t.prototype.fail=function(){this.setStatus(this.warns()?X:x)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(j)},t.prototype.warn=function(){this.severity=G.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(D)},t.prototype.cancel=function(){this.setStatus(K),_()},t.prototype.reset=function(){this.status=w,_()},t.prototype.omit=function(){this.setStatus(M)},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(H)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(M)},t.prototype.isUntested=function(){return this.statusEquals(w)},t.prototype.isFailing=function(){return this.statusEquals(x)},t.prototype.isCanceled=function(){return this.statusEquals(K)},t.prototype.isSkipped=function(){return this.statusEquals(D)},t.prototype.isPassing=function(){return this.statusEquals(j)},t.prototype.isWarning=function(){return this.statusEquals(X)},t.prototype.statusEquals=function(t){return this.status===t},t}(),w="UNTESTED",D="SKIPPED",x="FAILED",X="WARNING",j="PASSING",H="PENDING",K="CANCELED",M="OMITTED";function q(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?d(n):n)}function B(t){function n(t,n,u){return e.references.push(),r(t,d(n,u)),function(){return[e.references[t],function(n){return r(t,d(n,e.references[t]))}]}}function r(n,r){var i=e.references[n];e.references[n]=r,l(n=u[n][1])&&n(r,i),l(t)&&t()}var e={references:[]},u=[];return{registerStateKey:function(t,r){var e=u.length;return u.push([t,r]),n(e,t)},reset:function(){var t=e.references;e.references=[],u.forEach((function(r,e){return n(e,r[0],t[e])}))}}}function V(t,n){var r=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(r),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function Y(t){return null==t}function J(t){setTimeout((function(){throw Error(t)}),0)}function z(t,n){t=void 0===(t=t.type)?N.DEFAULT:t,q(l(n));var r=S(t,Z());return t=T.run({isolate:r},(function(){return r.keys.prev=function(){var t=O().testObjects()[0].prev;return[].concat(g(t,Z())).reduce((function(t,n){return n instanceof W&&!Y(n.key)?(t[n.key]=n,t):t}),{})}(),k((function(t){var n=r.path;return g(t,n)[v(n)]=[],t})),n()})),Q().cursor.next(),t}function Q(){return T.useX().isolate}function Z(){var t=Q();return t.path.concat(t.cursor.current())}var $,tt=$||($={});tt.WARNINGS="warnings",tt.ERRORS="errors";var nt,rt=nt||(nt={});function et(t){return t===$.ERRORS?nt.ERROR_COUNT:nt.WARN_COUNT}function ut(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))}rt.ERROR_COUNT="errorCount",rt.WARN_COUNT="warnCount";var it=u(ut);function ot(t,n){return!(!n||t.fieldName!==n)}var st=u((function(t,n){return t.groupName===n}));function at(t,n){return U().some((function(r){return ct(r,t,n)}))}function ct(t,n,r){return(r=!t.hasFailures()||r&&!ot(t,r))||(t=t.warns(),r=n===$.WARNINGS!=!!t),!r}function ft(t){return!!lt(t)||!at($.ERRORS,t)&&(!ut(U())&&!function(t){return it(F().filter((function(n){return dt(n,t)})))}(t)&&function(t){return U().every((function(n){return!(!t||ot(n,t))||pt(n,t)}))}(t))}function lt(t){return!!t&&!0===(null===(n=C(t))||void 0===n?void 0:n[1]);var n}function dt(t,n){return!(n&&!ot(t,n))&&!0!==I(t.fieldName)}function pt(t,n){return!(!n||ot(t,n))||(!0===I(t.fieldName)||t.isTested()||t.isOmitted())}function vt(){var t=T.useX().summary;return q(t),t}function ht(){var t=U(),n=i({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var r=t.tests;r[n.fieldName]=Et(r,n),r[n.fieldName].valid=!1!==r[n.fieldName].valid&&ft(n.fieldName);var e=t.groups,u=n.groupName;return u&&(e[u]=e[u]||{},e[u][n.fieldName]=Et(e[u],n),r=e[u][n.fieldName],!1===e[u][n.fieldName].valid?n=!1:n=!!lt(n=n.fieldName)||!function(t,n,r){return U().some((function(e){return!st(e,n)&&ct(e,t,r)}))}($.ERRORS,u,n)&&!function(t,n){return it(F().filter((function(r){return!st(r,t)&&dt(r,n)})))}(u,n)&&function(t,n){return U().every((function(r){return!!st(r,t)||pt(r,n)}))}(u,n),r.valid=n),t}),n),n.valid=ft(),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 Et(t,n){function r(t){var n=et(t);o[n]++,u&&(o[t]=(o[t]||[]).concat(u))}var e=n.fieldName,u=n.message;t[e]=t[e]||i({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var o=t[e];return n.isNonActionable()||(t[e].testCount++,n.isFailing()?r($.ERRORS):n.isWarning()&&r($.WARNINGS)),o}function gt(t,n,r){var e;return(null===(e=null==t?void 0:t[r])||void 0===e?void 0:e[n])||[]}function Nt(t,n){var r,e={},u=et(n);for(r in t)a(t[r][u],0)&&(e[r]=t[r][n]||[]);return e}function mt(t){return Rt($.ERRORS,t)}function yt(t){return Rt($.WARNINGS,t)}function Rt(t,n){var r=vt().tests;return n?gt(r,t,n):Nt(r,t)}function bt(t,n){return Tt(t,$.ERRORS,n)}function St(t,n){return Tt(t,$.WARNINGS,n)}function Tt(t,n,r){return t=vt().groups[t],r?gt(t,n,r):Nt(t,n)}function Ot(t){return At(nt.ERROR_COUNT,t)}function Ct(t){return At(nt.WARN_COUNT,t)}function At(t,n){var r,e=vt();return a(n?null===(r=e.tests[n])||void 0===r?void 0:r[t]:e[t],0)}function It(t,n){return kt($.ERRORS,t,n)}function _t(t,n){return kt($.WARNINGS,t,n)}function kt(t,n,r){var e,u,i=vt();if(t=et(t),!(n=i.groups[n]))return!1;if(r)return a(null===(e=n[r])||void 0===e?void 0:e[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 Ft(t){var n=vt();return t?!!Ut(n.tests,t):n.valid}function Lt(t,n){if(!(t=vt().groups[t]))return!1;if(n)return Ut(t,n);for(var r in t)if(!Ut(t,r))return!1;return!0}function Ut(t,n){var r;return!(null===(r=t[n])||void 0===r||!r.valid)}var Gt=c(1);function Pt(){var t=U(),n={stateRef:O()};return Gt([t],T.bind(n,(function(){var t=ht(),n=O().suiteName()[0],r={summary:t};return i(t,{getErrors:T.bind(r,mt),getErrorsByGroup:T.bind(r,bt),getWarnings:T.bind(r,yt),getWarningsByGroup:T.bind(r,St),hasErrors:T.bind(r,Ot),hasErrorsByGroup:T.bind(r,It),hasWarnings:T.bind(r,Ct),hasWarningsByGroup:T.bind(r,_t),isValid:T.bind(r,Ft),isValidByGroup:T.bind(r,Lt),suiteName:n})})))}function Wt(t){var n=F();return!ut(n)&&(t?n.some((function(n){return ot(n,t)})):it(n))}var wt=c(20);function Dt(){var t=U(),n={stateRef:O()};return wt([t],T.bind(n,(function(){return i({},Pt(),{done:T.bind(n,jt)})})))}function xt(t,n,r){return!(l(t)&&(!n||r.tests[n]&&!ut(r.tests[n].testCount)))}function Xt(t){return!(Wt()&&(!t||Wt(t)))}function jt(){function t(){return e(Pt())}for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];var e=(n=n.reverse())[0];return n=n[1],r=Dt(),xt(e,n,r)?r:Xt(n)?(t(),r):(Ht(t,n),r)}function Ht(t,n){(0,O().testCallbacks()[1])((function(r){return n?r.fieldCallbacks[n]=(r.fieldCallbacks[n]||[]).concat(t):r.doneCallbacks.push(t),r}))}function Kt(t){return t.forEach((function(t){return t()}))}function Mt(){var t=function(){var t={};return{emit:function(n,r){(t[n]||[]).forEach((function(t){t(r)}))},on:function(n,r){return t[n]=(t[n]||[]).concat(r),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==r}))}}}}}();return t.on(Bt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var r=O().testCallbacks()[0].fieldCallbacks;n&&!Wt(n)&&Array.isArray(r[n])&&Kt(r[n]),Wt()||t.emit(Bt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(Bt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function t(t){n[t.fieldName]&&(t.omit(),A(t.fieldName,(function(t){return[t[0],!0]})))}if(!ut(O().optionalFields()[0])){var n={};k((function(r){return h(r,(function(r){if(Object.prototype.hasOwnProperty.call(n,r.fieldName))t(r);else{var e=I(r.fieldName);l(e)&&(n[r.fieldName]=e(),t(r))}return r}))}))}}()})),t.on(Bt.ALL_RUNNING_TESTS_FINISHED,(function(){Kt(O().testCallbacks()[0].doneCallbacks)})),t.on(Bt.REMOVE_FIELD,(function(t){U().forEach((function(n){ot(n,t)&&(n.cancel(),function(t){k((function(n){return h(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(Bt.RESET_FIELD,(function(t){U().forEach((function(n){ot(n,t)&&n.reset()}))})),t}function qt(){var t=T.useX();return q(t.bus),t.bus}var Bt,Vt=Bt||(Bt={});function Yt(t){return zt(0,"tests",t)}function Jt(t){return zt(1,"tests",t)}function zt(t,n,r){var u=T.useX("hook called outside of a running suite.");r&&[].concat(r).forEach((function(r){e(r)&&(u.exclusion[n][r]=0===t)}))}function Qt(t){for(var n in t)if(!0===t[n])return!0;return!1}function Zt(){var t,n=T.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function $t(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function tn(t,n,r){if(r||2===arguments.length)for(var e,u=0,i=n.length;u<i;u++)!e&&u in n||(e||(e=Array.prototype.slice.call(n,0,u)),e[u]=n[u]);return t.concat(e||Array.prototype.slice.call(n))}function nn(t){var n=t.asyncTest,r=t.message;if(n&&l(n.then)){var u=qt().emit,i=O(),o=T.bind({stateRef:i},(function(){_(),u(Bt.TEST_COMPLETED,t)}));i=T.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=e(n)?n:r,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function rn(t){var n=O().testObjects()[0].prev;if(ut(n))return en(t),t;var r=Z();if(n=g(n,r)[v(r)],!Y(t.key)){n=t.key,(r=Q().keys.prev[n])&&(t=r),r=t;var e=Q().keys.current;return Y(e[n])?e[n]=r:J('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!it(r=n)||r.fieldName===t.fieldName&&r.groupName===t.groupName||(Q().type===N.EACH||J("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=Q().cursor.current();k((function(n){return n.splice(t),n}))}(),n=null),en(t=p(n,t)),t}function en(t){var n=Z();k((function(r){return g(r,n)[v(n)]=t,r}))}function un(t){var n=Q().cursor,r=y.EAGER;if(r=!(T.useX().mode[0]!==r||!at($.ERRORS,t.fieldName)))return t.skip(),rn(t),n.next(),t;if(r=rn(t),T.useX().omitted)return r.omit(),n.next(),r;if(function(t){var n=t.fieldName;if(t=t.groupName,T.useX().skipped)return!0;var r=T.useX(),e=r.exclusion;r=r.inclusion;var u=e.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){var o=T.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,t)?!1===o[t]:Zt())return!0;if(!0===e.groups[t])return!(i||!Qt(u)&&!1!==u[n])}return!!(t=!!Zt()&&!t)||!i&&!!Qt(u)&&!d(r[n])}(t))return r.skip(!!T.useX().skipped),n.next(),r;if(t!==r&&r.fieldName===t.fieldName&&r.groupName===t.groupName&&r.isPending()&&r.cancel(),en(t),t.isUntested()){r=qt();var e=function(t){return T.run({currentTest:t},(function(){return t.run()}))}(t);try{e&&l(e.then)?(t.asyncTest=e,t.setPending(),nn(t)):r.emit(Bt.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(r=t.asyncTest)&&l(r.then)&&(t.setPending(),nn(t));return n.next(),t}function on(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var u=l(n[1])?n:tn([void 0],n,!0);n=u[0],r=u[1],u=u[2],q(e(t),an("fieldName","string")),q(l(r),an("Test callback","function"));var i=T.useX();return un(n=new W(t,r,{message:n,groupName:i.groupName,key:u}))}Vt.TEST_COMPLETED="test_completed",Vt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",Vt.REMOVE_FIELD="remove_field",Vt.RESET_FIELD="reset_field",Vt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Yt.group=function(t){return zt(0,"groups",t)},Jt.group=function(t){return zt(1,"groups",t)};var sn=i(on,{memo:function(t){var n=c(10);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=Q().cursor.current();var i=(e=e.reverse())[0],o=e[1],s=e[2];return u=[O().suiteId()[0],r,u].concat(i),null===(e=n.get(u))?n(u,(function(){return t(r,s,o)})):e[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(r,s,o)}))):un(e[1])}}(on)});function an(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var cn="4.4.1";function fn(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=(t=t.reverse())[0];t=t[1],q(l(e),"vest.create: Expected callback to be a function.");var u=Mt(),o=B();return t={stateRef:V(o,{suiteId:r(),suiteName:t}),bus:u},i(T.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return o.reset(),z({type:N.SUITE},(function(){e.apply(void 0,t)})),u.emit(Bt.SUITE_CALLBACK_DONE_RUNNING),Dt()})),{get:T.bind(t,Pt),remove:T.bind(t,(function(t){u.emit(Bt.REMOVE_FIELD,t)})),reset:o.reset,resetField:T.bind(t,(function(t){u.emit(Bt.RESET_FIELD,t)}))})}function ln(t,n){q(l(n),"each callback must be a function"),z({type:N.EACH},(function(){t.forEach((function(t,r){n(t,r)}))}))}function dn(){var t=y.EAGER;T.useX().mode[0]=t}function pn(t,n){q(e(t),$t("name must be a string")),q(l(n),$t("callback must be a function")),z({type:N.GROUP},(function(){T.run({groupName:t},n)}))}function vn(t){var n=T.useX(),r=n.inclusion;return n=n.exclusion,q(e(t)),r[t]=p(n.tests[t],!0),{when:function(n){var r=T.useX(),u=r.exclusion;r.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?p(u.tests[t],!0):e(n)?!!u.tests[n]:d(n,d(Pt))}}}}function hn(t,n){z({type:N.OMIT_WHEN},(function(){T.run({omitted:!!T.useX().omitted||d(t,d(Pt))},(function(){return n()}))}))}function En(t){if(Array.isArray(t)||e(t))[].concat(t).forEach((function(t){A(t,[!0,!1])}));else for(var n in t)A(n,[t[n],!1])}function gn(t,n){z({type:N.SKIP_WHEN},(function(){T.run({skipped:!!T.useX().skipped||d(t,d(Pt))},(function(){return n()}))}))}function Nn(){var t=T.useX("warn hook called outside of a running suite.");q(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{cn as VERSION,T as context,fn as create,ln as each,dn as eager,pn as group,vn as include,hn as omitWhen,Yt as only,En as optional,Jt as skip,gn as skipWhen,sn as test,Nn as warn};
@@ -453,7 +453,7 @@
453
453
  return null;
454
454
  }
455
455
 
456
- /*! *****************************************************************************
456
+ /******************************************************************************
457
457
  Copyright (c) Microsoft Corporation.
458
458
 
459
459
  Permission to use, copy, modify, and/or distribute this software for any
@@ -507,7 +507,7 @@
507
507
  return null;
508
508
  }
509
509
 
510
- /*! *****************************************************************************
510
+ /******************************************************************************
511
511
  Copyright (c) Microsoft Corporation.
512
512
 
513
513
  Permission to use, copy, modify, and/or distribute this software for any
@@ -453,7 +453,7 @@
453
453
  return null;
454
454
  }
455
455
 
456
- /*! *****************************************************************************
456
+ /******************************************************************************
457
457
  Copyright (c) Microsoft Corporation.
458
458
 
459
459
  Permission to use, copy, modify, and/or distribute this software for any