vest 4.1.3 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -179,6 +179,12 @@ function createCursor() {
179
179
  };
180
180
  }
181
181
 
182
+ var Modes;
183
+ (function (Modes) {
184
+ Modes[Modes["ALL"] = 0] = "ALL";
185
+ Modes[Modes["EAGER"] = 1] = "EAGER";
186
+ })(Modes || (Modes = {}));
187
+
182
188
  var context = context$1.createContext(function (ctxRef, parentContext) {
183
189
  return parentContext
184
190
  ? null
@@ -195,6 +201,7 @@ var context = context$1.createContext(function (ctxRef, parentContext) {
195
201
  prev: {}
196
202
  }
197
203
  },
204
+ mode: [Modes.ALL],
198
205
  testCursor: createCursor()
199
206
  }, ctxRef);
200
207
  });
@@ -221,9 +228,9 @@ function isNull(value) {
221
228
  }
222
229
  var isNotNull = bindNot(isNull);
223
230
 
224
- // This is sort of a map/filter in one function.
225
- // Normally, behaves like a nested-array map
226
- // Returning `null` will drop the element from the array
231
+ // This is kind of a map/filter in one function.
232
+ // Normally, behaves like a nested-array map,
233
+ // but returning `null` will drop the element from the array
227
234
  function transform(array, cb) {
228
235
  var res = [];
229
236
  for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
@@ -310,23 +317,22 @@ function createCache(maxSize) {
310
317
  };
311
318
  // invalidate an item in the cache by its dependencies
312
319
  cache.invalidate = function (deps) {
313
- var index = cacheStorage.findIndex(function (_a) {
314
- var cachedDeps = _a[0];
315
- return lengthEquals(deps, cachedDeps.length) &&
316
- deps.every(function (dep, i) { return dep === cachedDeps[i]; });
317
- });
320
+ var index = findIndex(deps);
318
321
  if (index > -1)
319
322
  cacheStorage.splice(index, 1);
320
323
  };
321
324
  // Retrieves an item from the cache.
322
325
  cache.get = function (deps) {
323
- return cacheStorage[cacheStorage.findIndex(function (_a) {
326
+ return cacheStorage[findIndex(deps)] || null;
327
+ };
328
+ return cache;
329
+ function findIndex(deps) {
330
+ return cacheStorage.findIndex(function (_a) {
324
331
  var cachedDeps = _a[0];
325
332
  return lengthEquals(deps, cachedDeps.length) &&
326
333
  deps.every(function (dep, i) { return dep === cachedDeps[i]; });
327
- })] || null;
328
- };
329
- return cache;
334
+ });
335
+ }
330
336
  }
331
337
 
332
338
  // STATE REF
@@ -668,18 +674,21 @@ function hasRemainingTests(fieldName) {
668
674
  return isNotEmpty(allIncomplete);
669
675
  }
670
676
 
677
+ var Severity;
678
+ (function (Severity) {
679
+ Severity["WARNINGS"] = "warnings";
680
+ Severity["ERRORS"] = "errors";
681
+ })(Severity || (Severity = {}));
682
+
671
683
  /**
672
684
  * Reads the testObjects list and gets full validation result from it.
673
685
  */
674
686
  function genTestsSummary() {
675
687
  var testObjects = useTestsFlat();
676
- var summary = {
677
- errorCount: 0,
688
+ var summary = assign(baseStats(), {
678
689
  groups: {},
679
- testCount: 0,
680
- tests: {},
681
- warnCount: 0
682
- };
690
+ tests: {}
691
+ });
683
692
  appendSummary(testObjects);
684
693
  return countFailures(summary);
685
694
  function appendSummary(testObjects) {
@@ -707,30 +716,34 @@ function countFailures(summary) {
707
716
  // eslint-disable-next-line max-statements
708
717
  function genTestObject(summaryKey, testObject) {
709
718
  var fieldName = testObject.fieldName, message = testObject.message;
710
- summaryKey[fieldName] = summaryKey[fieldName] || {
711
- errorCount: 0,
712
- warnCount: 0,
713
- testCount: 0
714
- };
719
+ summaryKey[fieldName] = summaryKey[fieldName] || baseStats();
715
720
  var testKey = summaryKey[fieldName];
716
721
  if (testObject.isNonActionable())
717
722
  return testKey;
718
723
  summaryKey[fieldName].testCount++;
719
724
  // Adds to severity group
720
- function addTo(countKey, group) {
725
+ function addTo(severity) {
726
+ var countKey = severity === Severity.ERRORS ? 'errorCount' : 'warnCount';
721
727
  testKey[countKey]++;
722
728
  if (message) {
723
- testKey[group] = (testKey[group] || []).concat(message);
729
+ testKey[severity] = (testKey[severity] || []).concat(message);
724
730
  }
725
731
  }
726
732
  if (testObject.isFailing()) {
727
- addTo('errorCount', 'errors');
733
+ addTo(Severity.ERRORS);
728
734
  }
729
735
  else if (testObject.isWarning()) {
730
- addTo('warnCount', 'warnings');
736
+ addTo(Severity.WARNINGS);
731
737
  }
732
738
  return testKey;
733
739
  }
740
+ function baseStats() {
741
+ return {
742
+ errorCount: 0,
743
+ warnCount: 0,
744
+ testCount: 0
745
+ };
746
+ }
734
747
 
735
748
  /*! *****************************************************************************
736
749
  Copyright (c) Microsoft Corporation.
@@ -776,7 +789,7 @@ function either(a, b) {
776
789
  * Checks that a given test object matches the currently specified severity level
777
790
  */
778
791
  function nonMatchingSeverityProfile(severity, testObject) {
779
- return either(severity === 'warnings', testObject.warns());
792
+ return either(severity === Severity.WARNINGS, testObject.warns());
780
793
  }
781
794
 
782
795
  function collectFailureMessages(severity, testObjects, options) {
@@ -818,10 +831,10 @@ function getFailuresArrayOrObject(group, fieldName) {
818
831
  }
819
832
 
820
833
  function getErrors(fieldName) {
821
- return getFailures('errors', fieldName);
834
+ return getFailures(Severity.ERRORS, fieldName);
822
835
  }
823
836
  function getWarnings(fieldName) {
824
- return getFailures('warnings', fieldName);
837
+ return getFailures(Severity.WARNINGS, fieldName);
825
838
  }
826
839
  /**
827
840
  * @returns suite or field's errors or warnings.
@@ -835,11 +848,11 @@ function getFailures(severityKey, fieldName) {
835
848
  }
836
849
 
837
850
  function getErrorsByGroup(groupName, fieldName) {
838
- var errors = getByGroup('errors', groupName, fieldName);
851
+ var errors = getByGroup(Severity.ERRORS, groupName, fieldName);
839
852
  return getFailuresArrayOrObject(errors, fieldName);
840
853
  }
841
854
  function getWarningsByGroup(groupName, fieldName) {
842
- var warnings = getByGroup('warnings', groupName, fieldName);
855
+ var warnings = getByGroup(Severity.WARNINGS, groupName, fieldName);
843
856
  return getFailuresArrayOrObject(warnings, fieldName);
844
857
  }
845
858
  /**
@@ -873,10 +886,10 @@ function hasFailuresLogic(testObject, severityKey, fieldName) {
873
886
  }
874
887
 
875
888
  function hasErrors(fieldName) {
876
- return has('errors', fieldName);
889
+ return has(Severity.ERRORS, fieldName);
877
890
  }
878
891
  function hasWarnings(fieldName) {
879
- return has('warnings', fieldName);
892
+ return has(Severity.WARNINGS, fieldName);
880
893
  }
881
894
  function has(severityKey, fieldName) {
882
895
  var testObjects = useTestsFlat();
@@ -886,10 +899,10 @@ function has(severityKey, fieldName) {
886
899
  }
887
900
 
888
901
  function hasErrorsByGroup(groupName, fieldName) {
889
- return hasByGroup('errors', groupName, fieldName);
902
+ return hasByGroup(Severity.ERRORS, groupName, fieldName);
890
903
  }
891
904
  function hasWarningsByGroup(groupName, fieldName) {
892
- return hasByGroup('warnings', groupName, fieldName);
905
+ return hasByGroup(Severity.WARNINGS, groupName, fieldName);
893
906
  }
894
907
  /**
895
908
  * Checks whether there are failures in a given group.
@@ -1042,18 +1055,12 @@ function createBus() {
1042
1055
  var listeners = {};
1043
1056
  return {
1044
1057
  emit: function (event, data) {
1045
- if (!listeners[event]) {
1046
- return;
1047
- }
1048
- listeners[event].forEach(function (listener) {
1049
- listener(data);
1058
+ (listeners[event] || []).forEach(function (handler) {
1059
+ handler(data);
1050
1060
  });
1051
1061
  },
1052
1062
  on: function (event, handler) {
1053
- if (!listeners[event]) {
1054
- listeners[event] = [];
1055
- }
1056
- listeners[event].push(handler);
1063
+ listeners[event] = (listeners[event] || []).concat(handler);
1057
1064
  return {
1058
1065
  off: function () {
1059
1066
  listeners[event] = listeners[event].filter(function (h) { return h !== handler; });
@@ -1121,9 +1128,7 @@ function runFieldCallbacks(fieldName) {
1121
1128
  */
1122
1129
  function runDoneCallbacks() {
1123
1130
  var doneCallbacks = useTestCallbacks()[0].doneCallbacks;
1124
- if (!hasRemainingTests()) {
1125
- callEach(doneCallbacks);
1126
- }
1131
+ callEach(doneCallbacks);
1127
1132
  }
1128
1133
 
1129
1134
  // eslint-disable-next-line max-lines-per-function
@@ -1137,14 +1142,21 @@ function initBus() {
1137
1142
  }
1138
1143
  testObject.done();
1139
1144
  runFieldCallbacks(testObject.fieldName);
1140
- runDoneCallbacks();
1145
+ if (!hasRemainingTests()) {
1146
+ // When no more tests are running, emit the done event
1147
+ bus.emit(Events.ALL_RUNNING_TESTS_FINISHED);
1148
+ }
1141
1149
  });
1142
1150
  // Report that the suite completed its synchronous test run.
1143
1151
  // Async operations may still be running.
1144
- bus.on(Events.SUITE_COMPLETED, function () {
1152
+ bus.on(Events.SUITE_CALLBACK_DONE_RUNNING, function () {
1145
1153
  // Remove tests that are optional and need to be omitted
1146
1154
  omitOptionalTests();
1147
1155
  });
1156
+ // Called when all the tests, including async, are done running
1157
+ bus.on(Events.ALL_RUNNING_TESTS_FINISHED, function () {
1158
+ runDoneCallbacks();
1159
+ });
1148
1160
  // Removes a certain field from the state.
1149
1161
  bus.on(Events.REMOVE_FIELD, function (fieldName) {
1150
1162
  useEachTestObject(function (testObject) {
@@ -1174,9 +1186,10 @@ function useBus() {
1174
1186
  var Events;
1175
1187
  (function (Events) {
1176
1188
  Events["TEST_COMPLETED"] = "test_completed";
1189
+ Events["ALL_RUNNING_TESTS_FINISHED"] = "all_running_tests_finished";
1177
1190
  Events["REMOVE_FIELD"] = "remove_field";
1178
1191
  Events["RESET_FIELD"] = "reset_field";
1179
- Events["SUITE_COMPLETED"] = "suite_completed";
1192
+ Events["SUITE_CALLBACK_DONE_RUNNING"] = "suite_callback_done_running";
1180
1193
  })(Events || (Events = {}));
1181
1194
 
1182
1195
  // eslint-disable-next-line max-lines-per-function
@@ -1213,7 +1226,7 @@ function create() {
1213
1226
  });
1214
1227
  // Report the suite is done registering tests
1215
1228
  // Async tests may still be running
1216
- bus.emit(Events.SUITE_COMPLETED);
1229
+ bus.emit(Events.SUITE_CALLBACK_DONE_RUNNING);
1217
1230
  // Return the result
1218
1231
  return produceFullResult();
1219
1232
  }), {
@@ -1244,7 +1257,7 @@ function create() {
1244
1257
  */
1245
1258
  function each(list, callback) {
1246
1259
  if (!isFunction(callback)) {
1247
- throwError('callback must be a function');
1260
+ throwError('each callback must be a function');
1248
1261
  }
1249
1262
  isolate({ type: IsolateTypes.EACH }, function () {
1250
1263
  list.forEach(function (arg, index) {
@@ -1480,6 +1493,45 @@ function include(fieldName) {
1480
1493
  }
1481
1494
  }
1482
1495
 
1496
+ /**
1497
+ * Sets the suite to "eager" (fail fast) mode.
1498
+ * Eager mode will skip running subsequent tests of a failing fields.
1499
+ *
1500
+ * @example
1501
+ * // in the following example, the second test of username will not run
1502
+ * // if the first test of username failed.
1503
+ * const suite = create((data) => {
1504
+ * eager();
1505
+ *
1506
+ * test('username', 'username is required', () => {
1507
+ * enforce(data.username).isNotBlank();
1508
+ * });
1509
+ *
1510
+ * test('username', 'username is too short', () => {
1511
+ * enforce(data.username).longerThan(2);
1512
+ * });
1513
+ * });
1514
+ */
1515
+ function eager() {
1516
+ setMode(Modes.EAGER);
1517
+ }
1518
+ function shouldSkipBasedOnMode(testObject) {
1519
+ if (isEager() && hasErrors(testObject.fieldName))
1520
+ return true;
1521
+ return false;
1522
+ }
1523
+ function isEager() {
1524
+ return isMode(Modes.EAGER);
1525
+ }
1526
+ function isMode(mode) {
1527
+ var currentMode = context.useX().mode;
1528
+ return currentMode[0] === mode;
1529
+ }
1530
+ function setMode(nextMode) {
1531
+ var mode = context.useX().mode;
1532
+ mode[0] = nextMode;
1533
+ }
1534
+
1483
1535
  /**
1484
1536
  * Conditionally omits tests from the suite.
1485
1537
  *
@@ -1712,6 +1764,11 @@ function handleKeyTest(key, newTestObject) {
1712
1764
  // eslint-disable-next-line max-statements
1713
1765
  function registerPrevRunTest(testObject) {
1714
1766
  var prevRunTest = useTestAtCursor(testObject);
1767
+ if (shouldSkipBasedOnMode(testObject)) {
1768
+ moveForward();
1769
+ testObject.skip();
1770
+ return testObject;
1771
+ }
1715
1772
  if (isOmitted()) {
1716
1773
  prevRunTest.omit();
1717
1774
  moveForward();
@@ -1820,7 +1877,7 @@ function warn() {
1820
1877
  ctx.currentTest.warn();
1821
1878
  }
1822
1879
 
1823
- var VERSION = "4.1.3";
1880
+ var VERSION = "4.2.0";
1824
1881
 
1825
1882
  Object.defineProperty(exports, 'enforce', {
1826
1883
  enumerable: true,
@@ -1832,6 +1889,7 @@ exports.VERSION = VERSION;
1832
1889
  exports.context = context;
1833
1890
  exports.create = create;
1834
1891
  exports.each = each;
1892
+ exports.eager = eager;
1835
1893
  exports.group = group;
1836
1894
  exports.include = include;
1837
1895
  exports.omitWhen = omitWhen;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t,e=require("n4s"),r=require("context"),u=Object.assign,i=(n=0,function(){return"".concat(n++)});function o(n){return"function"==typeof n}function s(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return o(n)?n.apply(void 0,t):n}function c(n,t){var e;return null!==(e=s(n))&&void 0!==e?e:t}function a(n,t){throw Error(c(t,n))}function f(n,t){setTimeout((function(){a(n,t)}),0)}function l(n){function t(n,t,u){return r.references.push(),e(n,s(t,u)),function(){return[r.references[n],function(t){return e(n,s(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,o(t=u[t][1])&&t(e,i),o(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 p(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 v(n){return[].concat(n)}function d(n){return(n=v(n))[n.length-1]}function g(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return d(t)},getCursor:function(){return v(t)},next:function(){return t[t.length-1]++,d(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"}(t||(t={}));var h=r.createContext((function(n,e){return e?null:u({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:t.DEFAULT,keys:{current:{},prev:{}}},testCursor:g()},n)}));function m(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function y(n){return!!Array.isArray(n)}function E(n){return null===n}var b=m(E);function N(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];y(u)?e.push(N(u,t)):(u=t(u),b(u)&&e.push(u))}return e}function C(n,t,e){return S(n,t)[d(t)]=e,n}function T(n){return v(n).reduce((function(n,t){return y(t)?n.concat(T(t)):v(n).concat(t)}),[])}function S(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=c(n[r],[]),n=n[r]}return n}function k(n){return void 0===n}function O(n){return E(n)||k(n)}function x(n){return String(n)===n}function I(n,t){return k(n)&&x(t)}function P(n,t){return n.length===Number(t)}function w(n){void 0===n&&(n=1);var t=[],e=function(r,u){var i=e.get(r);return i?i[1]:(u=u(),t.unshift([r.concat(),u]),function(n,t){return n.length>Number(t)}(t,n)&&(t.length=n),u)};return e.invalidate=function(n){var e=t.findIndex((function(t){var e=t[0];return P(n,e.length)&&n.every((function(n,t){return n===e[t]}))}));-1<e&&t.splice(e,1)},e.get=function(n){return t[t.findIndex((function(t){var e=t[0];return P(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))]||null},e}function F(){return h.useX().stateRef}function _(){return F().suiteId()[0]}function D(){return F().testCallbacks()}function L(){return F().optionalFields()}function W(){return F().testObjects()}function X(){(0,W()[1])((function(n){return{prev:n.prev,current:v(n.current)}}))}function A(n){(0,W()[1])((function(t){return{prev:t.prev,current:v(n(t.current))}}))}function U(){return T(N(W()[0].current,(function(n){return n.isPending()?n:null})))}var R,M=w();function q(){var n=W()[0].current;return M([n],(function(){return T(n)}))}function G(n){q().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(R||(R={}));var j=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=i(),this.severity=R.Error,this.status=H,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){I(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Q||(this.status=n)},n.prototype.warns=function(){return this.severity===R.Warning},n.prototype.setPending=function(){this.setStatus(z)},n.prototype.fail=function(){this.setStatus(this.warns()?B:V)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Y)},n.prototype.warn=function(){this.severity=R.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(K)},n.prototype.cancel=function(){this.setStatus(J),X()},n.prototype.reset=function(){this.status=H,X()},n.prototype.omit=function(){this.setStatus(Q)},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(Q)},n.prototype.isUntested=function(){return this.statusEquals(H)},n.prototype.isFailing=function(){return this.statusEquals(V)},n.prototype.isCanceled=function(){return this.statusEquals(J)},n.prototype.isSkipped=function(){return this.statusEquals(K)},n.prototype.isPassing=function(){return this.statusEquals(Y)},n.prototype.isWarning=function(){return this.statusEquals(B)},n.prototype.statusEquals=function(n){return this.status===n},n}(),H="UNTESTED",K="SKIPPED",V="FAILED",B="WARNING",Y="PASSING",z="PENDING",J="CANCELED",Q="OMITTED";function Z(){return h.useX().testCursor.getCursor()}function $(){return h.useX().testCursor.cursorAt()}function nn(){return h.useX().testCursor.next()}function tn(n,e){if(n=void 0===(n=n.type)?t.DEFAULT:n,o(e)){var r={current:{},prev:{}},u=Z();return h.run({isolate:{type:n,keys:r}},(function(){h.useX().testCursor.addLevel(),r.prev=v(S(W()[0].prev,Z())).reduce((function(n,t){return t instanceof j&&!O(t.key)?(n[t.key]=t,n):n}),{}),A((function(n){return C(n,u,[])}));var n=e();return h.useX().testCursor.removeLevel(),nn(),n}))}}function en(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function rn(n){if(n){if(function(n){return"number"==typeof n}(n))return 0===n;if(en(n,"length"))return P(n,0);if("object"==typeof n)return P(Object.keys(n),0)}return!0}var un=m(rn);function on(n,t){return!!t&&!sn(n,t)}function sn(n,t){return!(!t||n.fieldName!==t)}function cn(n){var t=U();return!rn(t)&&(n?t.some((function(t){return sn(t,n)})):un(t))}function an(n,t){function e(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e("errorCount","errors"):t.isWarning()&&e("warnCount","warnings")),i}var fn=function(){return(fn=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function ln(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 pn(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns())}function vn(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){return function(n,t,e,r){return!!(function(n,t){return!(!t||n.groupName===t)}(n,e)||on(n,r)||pn(t,n))}(e,n,u,i)||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),fn({},i&&((r={})[i]=[],r)))}function dn(n,t){return t?n[t]:n}function gn(n){return mn("errors",n)}function hn(n){return mn("warnings",n)}function mn(n,t){return dn(n=vn(n,q(),{fieldName:t}),t)}function yn(n,t){return dn(n=bn("errors",n,t),t)}function En(n,t){return dn(n=bn("warnings",n,t),t)}function bn(n,t,e){return t||a("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),vn(n,q(),{group:t,fieldName:e})}function Nn(n,t,e){return!(!n.hasFailures()||on(n,e)||pn(t,n))}function Cn(n){return Sn("errors",n)}function Tn(n){return Sn("warnings",n)}function Sn(n,t){return q().some((function(e){return Nn(e,n,t)}))}function kn(n,t){return xn("errors",n,t)}function On(n,t){return xn("warnings",n,t)}function xn(n,t,e){return q().some((function(r){return t===r.groupName&&Nn(r,n,e)}))}function In(n,t){return!!function(n){var t=q().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(rn(q())||function(n,t){return!!t&&rn(n.tests[t])}(n,t)||function(n){var t=L()[0];return un(U().filter((function(e){return!on(e,n)&&!0!==t[e.fieldName]})))}(t))&&function(n){var t=q(),e=L()[0];return t.every((function(t){return!!on(t,n)||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var Pn=w(20);function wn(){var n=q(),t={stateRef:F()};return Pn([n],h.bind(t,(function(){var n=F().suiteName()[0];return u(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return q().forEach((function(t){var e=t.fieldName,r=t.groupName;n.tests[e]=an(n.tests,t),r&&(n.groups[r]=n.groups[r]||{},n.groups[r][e]=an(n.groups[r],t))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(n)}(),{getErrors:h.bind(t,gn),getErrorsByGroup:h.bind(t,yn),getWarnings:h.bind(t,hn),getWarningsByGroup:h.bind(t,En),hasErrors:h.bind(t,Cn),hasErrorsByGroup:h.bind(t,kn),hasWarnings:h.bind(t,Tn),hasWarningsByGroup:h.bind(t,On),isValid:h.bind(t,(function(n){return In(wn(),n)})),suiteName:n})})))}var Fn=w(20);function _n(){var n=q(),t={stateRef:F()};return Fn([n],h.bind(t,(function(){return u({},wn(),{done:h.bind(t,Xn)})})))}function Dn(n,t,e){return!(o(n)&&(!t||e.tests[t]&&!rn(e.tests[t].testCount)))}function Ln(n){return!(cn()&&(!n||cn(n)))}var Wn,Xn=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=_n(),Dn(e,n,t))return t;var r=function(){return e(wn())};return Ln(n)?(r(),t):(An(r,n),t)};function An(n,t){var e=h.bind({},n);(0,D()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Un(n){return n.forEach((function(n){return n()}))}function Rn(){var n=function(){var n={};return{emit:function(t,e){n[t]&&n[t].forEach((function(n){n(e)}))},on:function(t,e){return n[t]||(n[t]=[]),n[t].push(e),{off:function(){n[t]=n[t].filter((function(n){return n!==e}))}}}}}();return n.on(Wn.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=D()[0].fieldCallbacks;n&&!cn(n)&&y(t[n])&&Un(t[n])}(n.fieldName),function(){var n=D()[0].doneCallbacks;cn()||Un(n)}())})),n.on(Wn.SUITE_COMPLETED,(function(){!function(){var n=L()[0];if(!rn(n)){var t={};A((function(e){return N(e,(function(e){var r=e.fieldName;if(t.hasOwnProperty(r))t[e.fieldName]&&e.omit();else{var u=n[r];o(u)&&(t[r]=u(),t[e.fieldName]&&e.omit())}return e}))}))}}()})),n.on(Wn.REMOVE_FIELD,(function(n){G((function(t){sn(t,n)&&(t.cancel(),function(n){A((function(t){return N(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Wn.RESET_FIELD,(function(n){G((function(t){sn(t,n)&&t.reset()}))})),n}function Mn(){var n=h.useX();return n.bus||a(),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_COMPLETED="suite_completed"}(Wn||(Wn={}));function qn(){return!!h.useX().skipped}function Gn(n){return Kn(0,"tests",n)}function jn(n){return Kn(1,"tests",n)}function Hn(n){var t=n.fieldName;if(n=n.groupName,qn())return!0;var e=h.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=h.useX().exclusion.groups;if(en(t,n))return!1===t[n];for(var e in t)if(!0===t[e])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!i&&(!!Vn(u)||!1===u[t])}return!!function(n){var t=h.useX().exclusion;return!!function(){var n,t=h.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}()&&(!n||(!(n in t.groups)||!t.groups[n]))}(n)||!i&&(!!Vn(u)&&!s(e[t]))}function Kn(n,t,e){var r=h.useX("hook called outside of a running suite.");e&&v(e).forEach((function(e){x(e)&&(r.exclusion[t][e]=0===n)}))}function Vn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Bn(n){a("Wrong arguments passed to group. Group ".concat(n,"."))}function Yn(){return!!h.useX().omitted}Gn.group=function(n){return Kn(0,"groups",n)},jn.group=function(n){return Kn(1,"groups",n)};var zn=m(x);function Jn(n){return n&&o(n.then)}function Qn(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function Zn(n){var t=n.asyncTest,e=n.message;if(Jn(t)){var r=Mn().emit,u=F(),i=h.bind({stateRef:u},(function(){X(),r(Wn.TEST_COMPLETED,n)}));u=h.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=x(t)?t:e,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function $n(n){var t=Mn(),e=function(n){return h.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){I(n.message,e)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{Jn(e)?(n.asyncTest=e,n.setPending(),Zn(n)):t.emit(Wn.TEST_COMPLETED,n)}catch(t){a("Unexpected error encountered during test registration.\n Test Object: ".concat(n,".\n Error: ").concat(t,"."))}}function nt(n){var e=W()[0].prev;return rn(e)?(tt(n),n):(e=function(n){var t=Z();return function(n,t){return S(n,t)[d(t)]}(n,t)}(e),O(n.key)?(function(n,t){return un(n)&&!Qn(n,t)}(e,n)&&(function(n,e){h.useX().isolate.type===t.EACH||f("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(e.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.'))}(e,n),function(){var n=W(),t=n[1],e=n[0].prev;n=S(e,Z());var r=$();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),tt(n=c(e,n)),n):(tt(n=function(n,t){var e=function(n){return h.useX().isolate.keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=h.useX().isolate.keys.current;O(e[n])?e[n]=t:f('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 tt(n){var t=Z();A((function(e){return C(e,t,n)}))}function et(n){var t=nt(n);return Yn()?(t.omit(),nn(),t):Hn(n)?(t.skip(qn()),nn(),t):(function(n,t){t!==n&&Qn(n,t)&&n.isPending()&&n.cancel()}(t,n),tt(n),nn(),function(n){n.isUntested()?$n(n):Jn(n.asyncTest)&&(n.setPending(),Zn(n))}(n),n)}function rt(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=o(t[1])?t:ln([void 0],t,!0);t=r[0],e=r[1],r=r[2],zn(n)&&it("fieldName","string"),o(e)||it("Test callback","function");var u=h.useX();return et(t=new j(n,e,{message:t,groupName:u.groupName,key:r}))}var ut=u(rt,{memo:function(n){var t=w(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=$();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[_(),e,u].concat(i),E(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)}))):et(r[1])}}(rt)});function it(n,t){a("Incompatible params passed to test function. ".concat(n," must be a ").concat(t))}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return e.enforce}}),exports.VERSION="4.1.3",exports.context=h,exports.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],o(r)||a("vest.create: Expected callback to be a function.");var s=Rn(),c=l();return n={stateRef:p(c,{suiteId:i(),suiteName:n}),bus:s},u(h.bind(n,(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return c.reset(),tn({type:t.SUITE},(function(){r.apply(void 0,n)})),s.emit(Wn.SUITE_COMPLETED),_n()})),{get:h.bind(n,wn),remove:h.bind(n,(function(n){s.emit(Wn.REMOVE_FIELD,n)})),reset:c.reset,resetField:h.bind(n,(function(n){s.emit(Wn.RESET_FIELD,n)}))})},exports.each=function(n,e){o(e)||a("callback must be a function"),tn({type:t.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},exports.group=function(n,e){x(n)||Bn("name must be a string"),o(e)||Bn("callback must be a function"),tn({type:t.GROUP},(function(){h.run({groupName:n},e)}))},exports.include=function(n){function t(t){var e=h.useX(),r=e.exclusion;e.inclusion[n]=function(){return en(r.tests,n)?c(r.tests[n],!0):x(t)?!!r.tests[t]:s(t,s(wn))}}var e=h.useX();return n?(e.inclusion[n]=c(e.exclusion.tests[n],!0),{when:t}):{when:t}},exports.omitWhen=function(n,e){tn({type:t.OMIT_WHEN},(function(){h.run({omitted:Yn()||s(n,s(wn))},(function(){return e()}))}))},exports.only=Gn,exports.optional=function(n){(0,L()[1])((function(t){if(y(n)||x(n))v(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},exports.skip=jn,exports.skipWhen=function(n,e){tn({type:t.SKIP_WHEN},(function(){h.run({skipped:qn()||s(n,s(wn))},(function(){return e()}))}))},exports.test=ut,exports.warn=function(){var n=h.useX("warn hook called outside of a running suite.");n.currentTest||a("warn called outside of a test."),n.currentTest.warn()};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t,e,r=require("n4s"),u=require("context"),i=Object.assign,o=(n=0,function(){return"".concat(n++)});function s(n){return"function"==typeof n}function c(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return s(n)?n.apply(void 0,t):n}function a(n,t){var e;return null!==(e=c(n))&&void 0!==e?e:t}function f(n,t){throw Error(a(t,n))}function l(n,t){setTimeout((function(){f(n,t)}),0)}function p(n){function t(n,t,u){return r.references.push(),e(n,c(t,u)),function(){return[r.references[n],function(t){return e(n,c(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,s(t=u[t][1])&&t(e,i),s(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 d(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 v(n){return[].concat(n)}function g(n){return(n=v(n))[n.length-1]}function h(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return g(t)},getCursor:function(){return v(t)},next:function(){return t[t.length-1]++,g(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"}(t||(t={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(e||(e={}));var E=u.createContext((function(n,r){return r?null:i({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:t.DEFAULT,keys:{current:{},prev:{}}},mode:[e.ALL],testCursor:h()},n)}));function m(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function y(n){return!!Array.isArray(n)}function N(n){return null===n}var S=m(N);function b(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];y(u)?e.push(b(u,t)):(u=t(u),S(u)&&e.push(u))}return e}function C(n,t,e){return T(n,t)[g(t)]=e,n}function R(n){return v(n).reduce((function(n,t){return y(t)?n.concat(R(t)):v(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]=a(n[r],[]),n=n[r]}return n}function I(n){return void 0===n}function _(n){return N(n)||I(n)}function A(n){return String(n)===n}function O(n,t){return I(n)&&A(t)}function k(n,t){return n.length===Number(t)}function L(n){function t(n){return e.findIndex((function(t){var e=t[0];return k(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 n.length>Number(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 x(){return E.useX().stateRef}function F(){return x().suiteId()[0]}function G(){return x().testCallbacks()}function P(){return x().optionalFields()}function W(){return x().testObjects()}function D(){(0,W()[1])((function(n){return{prev:n.prev,current:v(n.current)}}))}function U(n){(0,W()[1])((function(t){return{prev:t.prev,current:v(n(t.current))}}))}function w(){return R(b(W()[0].current,(function(n){return n.isPending()?n:null})))}var X,H=L();function K(){var n=W()[0].current;return H([n],(function(){return R(n)}))}function q(n){K().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(X||(X={}));var M=function(){function n(n,t,e){var r=void 0===e?{}:e;e=r.message;var u=r.groupName;r=r.key,this.key=null,this.id=o(),this.severity=X.Error,this.status=j,this.fieldName=n,this.testFn=t,u&&(this.groupName=u),e&&(this.message=e),r&&(this.key=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){O(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Z||(this.status=n)},n.prototype.warns=function(){return this.severity===X.Warning},n.prototype.setPending=function(){this.setStatus(J)},n.prototype.fail=function(){this.setStatus(this.warns()?Y:V)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(z)},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(B)},n.prototype.cancel=function(){this.setStatus(Q),D()},n.prototype.reset=function(){this.status=j,D()},n.prototype.omit=function(){this.setStatus(Z)},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(J)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Z)},n.prototype.isUntested=function(){return this.statusEquals(j)},n.prototype.isFailing=function(){return this.statusEquals(V)},n.prototype.isCanceled=function(){return this.statusEquals(Q)},n.prototype.isSkipped=function(){return this.statusEquals(B)},n.prototype.isPassing=function(){return this.statusEquals(z)},n.prototype.isWarning=function(){return this.statusEquals(Y)},n.prototype.statusEquals=function(n){return this.status===n},n}(),j="UNTESTED",B="SKIPPED",V="FAILED",Y="WARNING",z="PASSING",J="PENDING",Q="CANCELED",Z="OMITTED";function $(){return E.useX().testCursor.getCursor()}function nn(){return E.useX().testCursor.cursorAt()}function tn(){return E.useX().testCursor.next()}function en(n,e){if(n=void 0===(n=n.type)?t.DEFAULT:n,s(e)){var r={current:{},prev:{}},u=$();return E.run({isolate:{type:n,keys:r}},(function(){E.useX().testCursor.addLevel(),r.prev=v(T(W()[0].prev,$())).reduce((function(n,t){return t instanceof M&&!_(t.key)?(n[t.key]=t,n):n}),{}),U((function(n){return C(n,u,[])}));var n=e();return E.useX().testCursor.removeLevel(),tn(),n}))}}function rn(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function un(n){if(n){if(function(n){return"number"==typeof n}(n))return 0===n;if(rn(n,"length"))return k(n,0);if("object"==typeof n)return k(Object.keys(n),0)}return!0}var on,sn=m(un);function cn(n,t){return!!t&&!an(n,t)}function an(n,t){return!(!t||n.fieldName!==t)}function fn(n){var t=w();return!un(t)&&(n?t.some((function(t){return an(t,n)})):sn(t))}function ln(n,t){function e(n){i[n===on.ERRORS?"errorCount":"warnCount"]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(on.ERRORS):t.isWarning()&&e(on.WARNINGS)),i}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(on||(on={}));var pn=function(){return(pn=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var u in t=arguments[e])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function dn(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 vn(n,t){return function(n,t){return!!n!=!!t}(n===on.WARNINGS,t.warns())}function gn(n,t,e){var r;void 0===e&&(e={});var u=(e=e||{}).group,i=e.fieldName;return t.reduce((function(t,e){return function(n,t,e,r){return!!(function(n,t){return!(!t||n.groupName===t)}(n,e)||cn(n,r)||vn(t,n))}(e,n,u,i)||!e.hasFailures()||(t[e.fieldName]=(t[e.fieldName]||[]).concat(e.message||[])),t}),pn({},i&&((r={})[i]=[],r)))}function hn(n,t){return t?n[t]:n}function En(n){return yn(on.ERRORS,n)}function mn(n){return yn(on.WARNINGS,n)}function yn(n,t){return hn(n=gn(n,K(),{fieldName:t}),t)}function Nn(n,t){return hn(n=bn(on.ERRORS,n,t),t)}function Sn(n,t){return hn(n=bn(on.WARNINGS,n,t),t)}function bn(n,t,e){return t||f("get".concat(n[0].toUpperCase()).concat(n.slice(1),"ByGroup requires a group name. Received `").concat(t,"` instead.")),gn(n,K(),{group:t,fieldName:e})}function Cn(n,t,e){return!(!n.hasFailures()||cn(n,e)||vn(t,n))}function Rn(n){return In(on.ERRORS,n)}function Tn(n){return In(on.WARNINGS,n)}function In(n,t){return K().some((function(e){return Cn(e,n,t)}))}function _n(n,t){return On(on.ERRORS,n,t)}function An(n,t){return On(on.WARNINGS,n,t)}function On(n,t,e){return K().some((function(r){return t===r.groupName&&Cn(r,n,e)}))}function kn(n,t){return!!function(n){var t=K().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(un(K())||function(n,t){return!!t&&un(n.tests[t])}(n,t)||function(n){var t=P()[0];return sn(w().filter((function(e){return!cn(e,n)&&!0!==t[e.fieldName]})))}(t))&&function(n){var t=K(),e=P()[0];return t.every((function(t){return!!cn(t,n)||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var Ln=L(20);function xn(){var n=K(),t={stateRef:x()};return Ln([n],E.bind(t,(function(){var n=x().suiteName()[0];return i(function(){var n=K(),t=i({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{}});return n.forEach((function(n){var e=n.fieldName,r=n.groupName;t.tests[e]=ln(t.tests,n),r&&(t.groups[r]=t.groups[r]||{},t.groups[r][e]=ln(t.groups[r],n))})),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}(),{getErrors:E.bind(t,En),getErrorsByGroup:E.bind(t,Nn),getWarnings:E.bind(t,mn),getWarningsByGroup:E.bind(t,Sn),hasErrors:E.bind(t,Rn),hasErrorsByGroup:E.bind(t,_n),hasWarnings:E.bind(t,Tn),hasWarningsByGroup:E.bind(t,An),isValid:E.bind(t,(function(n){return kn(xn(),n)})),suiteName:n})})))}var Fn=L(20);function Gn(){var n=K(),t={stateRef:x()};return Fn([n],E.bind(t,(function(){return i({},xn(),{done:E.bind(t,Un)})})))}function Pn(n,t,e){return!(s(n)&&(!t||e.tests[t]&&!un(e.tests[t].testCount)))}function Wn(n){return!(fn()&&(!n||fn(n)))}var Dn,Un=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=Gn(),Pn(e,n,t))return t;var r=function(){return e(xn())};return Wn(n)?(r(),t):(wn(r,n),t)};function wn(n,t){var e=E.bind({},n);(0,G()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(e):n.doneCallbacks.push(e),n}))}function Xn(n){return n.forEach((function(n){return n()}))}function Hn(){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(Dn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=G()[0].fieldCallbacks;n&&!fn(n)&&y(t[n])&&Xn(t[n])}(t.fieldName),fn()||n.emit(Dn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Dn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=P()[0];if(!un(n)){var t={};U((function(e){return b(e,(function(e){var r=e.fieldName;if(t.hasOwnProperty(r))t[e.fieldName]&&e.omit();else{var u=n[r];s(u)&&(t[r]=u(),t[e.fieldName]&&e.omit())}return e}))}))}}()})),n.on(Dn.ALL_RUNNING_TESTS_FINISHED,(function(){Xn(G()[0].doneCallbacks)})),n.on(Dn.REMOVE_FIELD,(function(n){q((function(t){an(t,n)&&(t.cancel(),function(n){U((function(t){return b(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Dn.RESET_FIELD,(function(n){q((function(t){an(t,n)&&t.reset()}))})),n}function Kn(){var n=E.useX();return n.bus||f(),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"}(Dn||(Dn={}));function qn(){return!!E.useX().skipped}function Mn(n){return Vn(0,"tests",n)}function jn(n){return Vn(1,"tests",n)}function Bn(n){var t=n.fieldName;if(n=n.groupName,qn())return!0;var e=E.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=E.useX().exclusion.groups;if(rn(t,n))return!1===t[n];for(var e in t)if(!0===t[e])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!i&&(!!Yn(u)||!1===u[t])}return!!function(n){var t=E.useX().exclusion;return!!function(){var n,t=E.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}()&&(!n||(!(n in t.groups)||!t.groups[n]))}(n)||!i&&(!!Yn(u)&&!c(e[t]))}function Vn(n,t,e){var r=E.useX("hook called outside of a running suite.");e&&v(e).forEach((function(e){A(e)&&(r.exclusion[t][e]=0===n)}))}function Yn(n){for(var t in n)if(!0===n[t])return!0;return!1}function zn(n){f("Wrong arguments passed to group. Group ".concat(n,"."))}function Jn(n){return!(!function(n){return E.useX().mode[0]===n}(e.EAGER)||!Rn(n.fieldName))}function Qn(){return!!E.useX().omitted}Mn.group=function(n){return Vn(0,"groups",n)},jn.group=function(n){return Vn(1,"groups",n)};var Zn=m(A);function $n(n){return n&&s(n.then)}function nt(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function tt(n){var t=n.asyncTest,e=n.message;if($n(t)){var r=Kn().emit,u=x(),i=E.bind({stateRef:u},(function(){D(),r(Dn.TEST_COMPLETED,n)}));u=E.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=A(t)?t:e,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function et(n){var t=Kn(),e=function(n){return E.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){O(n.message,e)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{$n(e)?(n.asyncTest=e,n.setPending(),tt(n)):t.emit(Dn.TEST_COMPLETED,n)}catch(t){f("Unexpected error encountered during test registration.\n Test Object: ".concat(n,".\n Error: ").concat(t,"."))}}function rt(n){var e=W()[0].prev;return un(e)?(ut(n),n):(e=function(n){var t=$();return function(n,t){return T(n,t)[g(t)]}(n,t)}(e),_(n.key)?(function(n,t){return sn(n)&&!nt(n,t)}(e,n)&&(function(n,e){E.useX().isolate.type===t.EACH||l("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(e.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.'))}(e,n),function(){var n=W(),t=n[1],e=n[0].prev;n=T(e,$());var r=nn();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),e=null),ut(n=a(e,n)),n):(ut(n=function(n,t){var e=function(n){return E.useX().isolate.keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=E.useX().isolate.keys.current;_(e[n])?e[n]=t:l('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 ut(n){var t=$();U((function(e){return C(e,t,n)}))}function it(n){var t=rt(n);return Jn(n)?(tn(),n.skip(),n):Qn()?(t.omit(),tn(),t):Bn(n)?(t.skip(qn()),tn(),t):(function(n,t){t!==n&&nt(n,t)&&n.isPending()&&n.cancel()}(t,n),ut(n),tn(),function(n){n.isUntested()?et(n):$n(n.asyncTest)&&(n.setPending(),tt(n))}(n),n)}function ot(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=s(t[1])?t:dn([void 0],t,!0);t=r[0],e=r[1],r=r[2],Zn(n)&&ct("fieldName","string"),s(e)||ct("Test callback","function");var u=E.useX();return it(t=new M(n,e,{message:t,groupName:u.groupName,key:r}))}var st=i(ot,{memo:function(n){var t=L(100);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=nn();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[F(),e,u].concat(i),N(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)}))):it(r[1])}}(ot)});function ct(n,t){f("Incompatible params passed to test function. ".concat(n," must be a ").concat(t))}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return r.enforce}}),exports.VERSION="4.2.0",exports.context=E,exports.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],s(r)||f("vest.create: Expected callback to be a function.");var u=Hn(),c=p();return n={stateRef:d(c,{suiteId:o(),suiteName:n}),bus:u},i(E.bind(n,(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return c.reset(),en({type:t.SUITE},(function(){r.apply(void 0,n)})),u.emit(Dn.SUITE_CALLBACK_DONE_RUNNING),Gn()})),{get:E.bind(n,xn),remove:E.bind(n,(function(n){u.emit(Dn.REMOVE_FIELD,n)})),reset:c.reset,resetField:E.bind(n,(function(n){u.emit(Dn.RESET_FIELD,n)}))})},exports.each=function(n,e){s(e)||f("each callback must be a function"),en({type:t.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},exports.eager=function(){!function(n){E.useX().mode[0]=n}(e.EAGER)},exports.group=function(n,e){A(n)||zn("name must be a string"),s(e)||zn("callback must be a function"),en({type:t.GROUP},(function(){E.run({groupName:n},e)}))},exports.include=function(n){function t(t){var e=E.useX(),r=e.exclusion;e.inclusion[n]=function(){return rn(r.tests,n)?a(r.tests[n],!0):A(t)?!!r.tests[t]:c(t,c(xn))}}var e=E.useX();return n?(e.inclusion[n]=a(e.exclusion.tests[n],!0),{when:t}):{when:t}},exports.omitWhen=function(n,e){en({type:t.OMIT_WHEN},(function(){E.run({omitted:Qn()||c(n,c(xn))},(function(){return e()}))}))},exports.only=Mn,exports.optional=function(n){(0,P()[1])((function(t){if(y(n)||A(n))v(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},exports.skip=jn,exports.skipWhen=function(n,e){en({type:t.SKIP_WHEN},(function(){E.run({skipped:qn()||c(n,c(xn))},(function(){return e()}))}))},exports.test=st,exports.warn=function(){var n=E.useX("warn hook called outside of a running suite.");n.currentTest||f("warn called outside of a test."),n.currentTest.warn()};