vest 4.4.0-dev-08ec91 → 4.4.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.
@@ -180,40 +180,6 @@ function getCurrent(array, path) {
180
180
  return current;
181
181
  }
182
182
 
183
- function createCursor() {
184
- var storage = {
185
- cursor: []
186
- };
187
- function addLevel() {
188
- storage.cursor.push(0);
189
- }
190
- function removeLevel() {
191
- storage.cursor.pop();
192
- }
193
- function cursorAt() {
194
- return last(storage.cursor);
195
- }
196
- function getCursor() {
197
- return asArray(storage.cursor);
198
- }
199
- function next() {
200
- storage.cursor[storage.cursor.length - 1]++;
201
- return last(storage.cursor);
202
- }
203
- function reset() {
204
- storage.cursor = [0];
205
- }
206
- reset();
207
- return {
208
- addLevel: addLevel,
209
- cursorAt: cursorAt,
210
- getCursor: getCursor,
211
- next: next,
212
- removeLevel: removeLevel,
213
- reset: reset
214
- };
215
- }
216
-
217
183
  var IsolateTypes;
218
184
  (function (IsolateTypes) {
219
185
  IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
@@ -230,6 +196,133 @@ var Modes;
230
196
  Modes[Modes["EAGER"] = 1] = "EAGER";
231
197
  })(Modes || (Modes = {}));
232
198
 
199
+ function invariant(condition,
200
+ // eslint-disable-next-line @typescript-eslint/ban-types
201
+ message) {
202
+ if (condition) {
203
+ return;
204
+ }
205
+ // If message is a string object (rather than string literal)
206
+ // Throw the value directly as a string
207
+ // Alternatively, throw an error with the message
208
+ throw message instanceof String
209
+ ? message.valueOf()
210
+ : new Error(message ? optionalFunctionValue(message) : message);
211
+ }
212
+
213
+ function createIsolateCursor() {
214
+ var cursor = {
215
+ value: 0
216
+ };
217
+ return {
218
+ current: current,
219
+ next: next
220
+ };
221
+ /**
222
+ * @returns {number} The current value of the cursor
223
+ */
224
+ function current() {
225
+ return cursor.value;
226
+ }
227
+ /**
228
+ * Moves the isolate cursor forward by 1
229
+ */
230
+ function next() {
231
+ cursor.value++;
232
+ }
233
+ }
234
+
235
+ function isNullish(value) {
236
+ return isNull(value) || isUndefined(value);
237
+ }
238
+
239
+ function deferThrow(message) {
240
+ setTimeout(function () {
241
+ throw new Error(message);
242
+ }, 0);
243
+ }
244
+
245
+ function usePrevKeys() {
246
+ var prev = useTestObjects()[0].prev;
247
+ return asArray(getCurrent(prev, useCurrentPath())).reduce(function (prevKeys, testObject) {
248
+ if (!(testObject instanceof VestTest)) {
249
+ return prevKeys;
250
+ }
251
+ if (isNullish(testObject.key)) {
252
+ return prevKeys;
253
+ }
254
+ prevKeys[testObject.key] = testObject;
255
+ return prevKeys;
256
+ }, {});
257
+ }
258
+ function usePrevTestByKey(key) {
259
+ var prev = context.useX().isolate.keys.prev;
260
+ return prev[key];
261
+ }
262
+ function useRetainTestKey(key, testObject) {
263
+ var context$1 = context.useX();
264
+ var current = context$1.isolate.keys.current;
265
+ if (isNullish(current[key])) {
266
+ current[key] = testObject;
267
+ }
268
+ else {
269
+ deferThrow("Encountered the same test key \"".concat(key, "\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."));
270
+ }
271
+ }
272
+
273
+ function isolate(_a, callback) {
274
+ var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
275
+ invariant(isFunction(callback));
276
+ // Generate a new Isolate layer, with its own cursor
277
+ var isolate = generateIsolate(type, useCurrentPath());
278
+ var output = context.run({ isolate: isolate }, function () {
279
+ isolate.keys.prev = usePrevKeys();
280
+ useSetTests(function (tests) { return setValueAtPath(tests, isolate.path, []); });
281
+ var res = callback();
282
+ return res;
283
+ });
284
+ // Move the parent cursor forward once we're done
285
+ useCursor().next();
286
+ return output;
287
+ }
288
+ /**
289
+ * @returns {Isolate} The current isolate layer
290
+ */
291
+ function useIsolate() {
292
+ return context.useX().isolate;
293
+ }
294
+ /**
295
+ * @returns {boolean} Whether or not the current isolate allows tests to be reordered
296
+ */
297
+ function shouldAllowReorder() {
298
+ return context.useX().isolate.type === IsolateTypes.EACH;
299
+ }
300
+ /**
301
+ * @returns {number[]} The current cursor path of the isolate tree
302
+ */
303
+ function useCurrentPath() {
304
+ var isolate = useIsolate();
305
+ return isolate.path.concat(isolate.cursor.current());
306
+ }
307
+ /**
308
+ * @returns {IsolateCursor} The cursor object for the current isolate
309
+ */
310
+ function useCursor() {
311
+ return useIsolate().cursor;
312
+ }
313
+ function generateIsolate(type, path) {
314
+ if (path === void 0) { path = []; }
315
+ return {
316
+ cursor: createIsolateCursor(),
317
+ keys: {
318
+ current: {},
319
+ prev: {}
320
+ },
321
+ path: path,
322
+ type: type
323
+ };
324
+ }
325
+
233
326
  var context = context$1.createContext(function (ctxRef, parentContext) {
234
327
  return parentContext
235
328
  ? null
@@ -239,15 +332,8 @@ var context = context$1.createContext(function (ctxRef, parentContext) {
239
332
  groups: {}
240
333
  },
241
334
  inclusion: {},
242
- isolate: {
243
- type: IsolateTypes.DEFAULT,
244
- keys: {
245
- current: {},
246
- prev: {}
247
- }
248
- },
249
- mode: [Modes.ALL],
250
- testCursor: createCursor()
335
+ isolate: generateIsolate(IsolateTypes.DEFAULT),
336
+ mode: [Modes.ALL]
251
337
  }, ctxRef);
252
338
  });
253
339
 
@@ -466,20 +552,6 @@ var STATUS_PENDING = 'PENDING';
466
552
  var STATUS_CANCELED = 'CANCELED';
467
553
  var STATUS_OMITTED = 'OMITTED';
468
554
 
469
- function invariant(condition,
470
- // eslint-disable-next-line @typescript-eslint/ban-types
471
- message) {
472
- if (condition) {
473
- return;
474
- }
475
- // If message is a string object (rather than string literal)
476
- // Throw the value directly as a string
477
- // Alternatively, throw an error with the message
478
- throw message instanceof String
479
- ? message.valueOf()
480
- : new Error(message ? optionalFunctionValue(message) : message);
481
- }
482
-
483
555
  // eslint-disable-next-line max-lines-per-function
484
556
  function createState(onStateChange) {
485
557
  var state = {
@@ -563,87 +635,6 @@ function createStateRef(state, _a) {
563
635
  };
564
636
  }
565
637
 
566
- function isNullish(value) {
567
- return isNull(value) || isUndefined(value);
568
- }
569
-
570
- function deferThrow(message) {
571
- setTimeout(function () {
572
- throw new Error(message);
573
- }, 0);
574
- }
575
-
576
- function usePath() {
577
- var context$1 = context.useX();
578
- return context$1.testCursor.getCursor();
579
- }
580
- function useCursorAt() {
581
- var context$1 = context.useX();
582
- return context$1.testCursor.cursorAt();
583
- }
584
- function moveForward() {
585
- var context$1 = context.useX();
586
- return context$1.testCursor.next();
587
- }
588
- function addLevel() {
589
- var context$1 = context.useX();
590
- context$1.testCursor.addLevel();
591
- }
592
- function removeLevel() {
593
- var context$1 = context.useX();
594
- context$1.testCursor.removeLevel();
595
- }
596
-
597
- function usePrevKeys() {
598
- var prev = useTestObjects()[0].prev;
599
- return asArray(getCurrent(prev, usePath())).reduce(function (prevKeys, testObject) {
600
- if (!(testObject instanceof VestTest)) {
601
- return prevKeys;
602
- }
603
- if (isNullish(testObject.key)) {
604
- return prevKeys;
605
- }
606
- prevKeys[testObject.key] = testObject;
607
- return prevKeys;
608
- }, {});
609
- }
610
- function usePrevTestByKey(key) {
611
- var prev = context.useX().isolate.keys.prev;
612
- return prev[key];
613
- }
614
- function useRetainTestKey(key, testObject) {
615
- var context$1 = context.useX();
616
- var current = context$1.isolate.keys.current;
617
- if (isNullish(current[key])) {
618
- current[key] = testObject;
619
- }
620
- else {
621
- deferThrow("Encountered the same test key \"".concat(key, "\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."));
622
- }
623
- }
624
-
625
- function isolate(_a, callback) {
626
- var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
627
- invariant(isFunction(callback));
628
- var keys = {
629
- current: {},
630
- prev: {}
631
- };
632
- var path = usePath();
633
- return context.run({ isolate: { type: type, keys: keys } }, function () {
634
- addLevel();
635
- keys.prev = usePrevKeys();
636
- useSetTests(function (tests) { return setValueAtPath(tests, path, []); });
637
- var res = callback();
638
- removeLevel();
639
- moveForward();
640
- return res;
641
- });
642
- }
643
- function shouldAllowReorder() {
644
- return context.useX().isolate.type === IsolateTypes.EACH;
645
- }
646
-
647
638
  var Severity;
648
639
  (function (Severity) {
649
640
  Severity["WARNINGS"] = "warnings";
@@ -1663,7 +1654,7 @@ function optional(optionals) {
1663
1654
  }
1664
1655
  }
1665
1656
 
1666
- /*! *****************************************************************************
1657
+ /******************************************************************************
1667
1658
  Copyright (c) Microsoft Corporation.
1668
1659
 
1669
1660
  Permission to use, copy, modify, and/or distribute this software for any
@@ -1808,8 +1799,8 @@ function useTestAtCursor(newTestObject) {
1808
1799
  function removeAllNextTestsInIsolate() {
1809
1800
  var _a = useTestObjects(), testObjects = _a[0], setTestObjects = _a[1];
1810
1801
  var prevTests = testObjects.prev;
1811
- var current = getCurrent(prevTests, usePath());
1812
- var cursorAt = useCursorAt();
1802
+ var current = getCurrent(prevTests, useCurrentPath());
1803
+ var cursorAt = useCursor().current();
1813
1804
  current.splice(cursorAt);
1814
1805
  // We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
1815
1806
  // since we're only touching the "prev" state. The reason we still use the setter function is
@@ -1823,13 +1814,13 @@ function removeAllNextTestsInIsolate() {
1823
1814
  });
1824
1815
  }
1825
1816
  function useSetTestAtCursor(testObject) {
1826
- var cursorPath = usePath();
1817
+ var cursorPath = useCurrentPath();
1827
1818
  useSetTests(function (tests) {
1828
1819
  return setValueAtPath(tests, cursorPath, testObject);
1829
1820
  });
1830
1821
  }
1831
1822
  function useGetTestAtCursor(tests) {
1832
- var cursorPath = usePath();
1823
+ var cursorPath = useCurrentPath();
1833
1824
  return valueAtPath(tests, cursorPath);
1834
1825
  }
1835
1826
  function testReorderDetected(prevTest, newTest) {
@@ -1853,16 +1844,17 @@ function handleKeyTest(key, newTestObject) {
1853
1844
 
1854
1845
  // eslint-disable-next-line max-statements
1855
1846
  function registerPrevRunTest(testObject) {
1847
+ var cursor = useCursor();
1856
1848
  if (shouldSkipBasedOnMode(testObject)) {
1857
1849
  testObject.skip();
1858
1850
  useTestAtCursor(testObject);
1859
- moveForward();
1851
+ cursor.next();
1860
1852
  return testObject;
1861
1853
  }
1862
1854
  var prevRunTest = useTestAtCursor(testObject);
1863
1855
  if (isOmitted()) {
1864
1856
  prevRunTest.omit();
1865
- moveForward();
1857
+ cursor.next();
1866
1858
  return prevRunTest;
1867
1859
  }
1868
1860
  if (isExcluded(testObject)) {
@@ -1871,13 +1863,13 @@ function registerPrevRunTest(testObject) {
1871
1863
  // This mostly means that we're probably giving
1872
1864
  // up on this async test intentionally.
1873
1865
  prevRunTest.skip(isExcludedIndividually());
1874
- moveForward();
1866
+ cursor.next();
1875
1867
  return prevRunTest;
1876
1868
  }
1877
1869
  cancelOverriddenPendingTest(prevRunTest, testObject);
1878
1870
  useSetTestAtCursor(testObject);
1879
- moveForward();
1880
1871
  registerTestObjectByTier(testObject);
1872
+ cursor.next();
1881
1873
  return testObject;
1882
1874
  }
1883
1875
  function registerTestObjectByTier(testObject) {
@@ -1900,7 +1892,7 @@ function bindTestMemo(test) {
1900
1892
  for (var _i = 1; _i < arguments.length; _i++) {
1901
1893
  args[_i - 1] = arguments[_i];
1902
1894
  }
1903
- var cursorAt = useCursorAt();
1895
+ var cursorAt = useCursor().current();
1904
1896
  var _a = args.reverse(), deps = _a[0], testFn = _a[1], msg = _a[2];
1905
1897
  // Implicit dependency for more specificity
1906
1898
  var dependencies = [useSuiteId(), fieldName, cursorAt].concat(deps);
@@ -1962,7 +1954,7 @@ function warn() {
1962
1954
  ctx.currentTest.warn();
1963
1955
  }
1964
1956
 
1965
- var VERSION = "4.4.0-dev-08ec91";
1957
+ var VERSION = "4.4.0";
1966
1958
 
1967
1959
  Object.defineProperty(exports, 'enforce', {
1968
1960
  enumerable: true,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t=require("n4s"),r=require("context"),e=(n=0,function(){return"".concat(n++)});function u(n){return String(n)===n}function i(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function o(n){return void 0===n}function s(n){return[].concat(n)}var c=Object.assign;function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return function(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}(n.length,t)}function l(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function p(n){function t(n){return r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))}void 0===n&&(n=1);var r=[],e=function(t,u){var i=e.get(t);return i?i[1]:(u=u(),r.unshift([t.concat(),u]),function(n,t){return l(n.length,t)}(r,n)&&(r.length=n),u)};return e.invalidate=function(n){-1<(n=t(n))&&r.splice(n,1)},e.get=function(n){return r[t(n)]||null},e}function d(n){return!!Array.isArray(n)}function v(n){return null===n}var g,h,E=i(v);function N(n){return"function"==typeof n}function m(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return N(n)?n.apply(void 0,t):n}function y(n,t){var r;return null!==(r=m(n))&&void 0!==r?r:t}function R(n){return(n=s(n))[n.length-1]}function S(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];d(u)?r.push(S(u,t)):(u=t(u),E(u)&&r.push(u))}return r}function C(n,t,r){return T(n,t)[R(t)]=r,n}function b(n){return s(n).reduce((function(n,t){return d(t)?n.concat(b(t)):s(n).concat(t)}),[])}function T(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=y(n[e],[]),n=n[e]}return n}function _(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return R(t)},getCursor:function(){return s(t)},next:function(){return t[t.length-1]++,R(t)},removeLevel:function(){t.pop()},reset:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(g||(g={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(h||(h={}));var I=r.createContext((function(n,t){return t?null:c({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:g.DEFAULT,keys:{current:{},prev:{}}},mode:[h.ALL],testCursor:_()},n)}));function O(){return I.useX().stateRef}function A(){return O().suiteId()[0]}function k(){return O().testCallbacks()}function L(n){return x()[0][n]}function x(){return O().optionalFields()}function F(n,t){(0,x()[1])((function(r){var e;return c(r,((e={})[n]=m(t,r[n]),e))}))}function U(n){var t;return null===(t=L(n))||void 0===t?void 0:t[0]}function W(){return O().testObjects()}function G(){P((function(n){return n}))}function P(n){(0,W()[1])((function(t){return{prev:t.prev,current:s(n(t.current))}}))}function D(){return H().filter((function(n){return n.isPending()}))}var w,X=p();function H(){var n=W()[0].current;return X([n],(function(){return b(n)}))}function K(n){H().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(w||(w={}));var M,q,j=function(){function n(n,t,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=w.Error,this.status=B,this.fieldName=n,this.testFn=t,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){(function(n,t){return o(n)&&u(t)})(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==$||(this.status=n)},n.prototype.warns=function(){return this.severity===w.Warning},n.prototype.setPending=function(){this.setStatus(Q)},n.prototype.fail=function(){this.setStatus(this.warns()?J:Y)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(z)},n.prototype.warn=function(){this.severity=w.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(V)},n.prototype.cancel=function(){this.setStatus(Z),G()},n.prototype.reset=function(){this.status=B,G()},n.prototype.omit=function(){this.setStatus($)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},n.prototype.isPending=function(){return this.statusEquals(Q)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals($)},n.prototype.isUntested=function(){return this.statusEquals(B)},n.prototype.isFailing=function(){return this.statusEquals(Y)},n.prototype.isCanceled=function(){return this.statusEquals(Z)},n.prototype.isSkipped=function(){return this.statusEquals(V)},n.prototype.isPassing=function(){return this.statusEquals(z)},n.prototype.isWarning=function(){return this.statusEquals(J)},n.prototype.statusEquals=function(n){return this.status===n},n}(),B="UNTESTED",V="SKIPPED",Y="FAILED",J="WARNING",z="PASSING",Q="PENDING",Z="CANCELED",$="OMITTED";function nn(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?m(t):t)}function tn(n){function t(n,t,u){return e.references.push(),r(n,m(t,u)),function(){return[e.references[n],function(t){return r(n,m(t,e.references[n]))}]}}function r(t,r){var i=e.references[t];e.references[t]=r,N(t=u[t][1])&&t(r,i),N(n)&&n()}var e={references:[]},u=[];return{registerStateKey:function(n,r){var e=u.length;return u.push([n,r]),t(e,n)},reset:function(){var n=e.references;e.references=[],u.forEach((function(r,e){return t(e,r[0],n[e])}))}}}function rn(n,t){var r=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(r),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function en(n){return v(n)||o(n)}function un(n){setTimeout((function(){throw Error(n)}),0)}function on(){return I.useX().testCursor.getCursor()}function sn(){return I.useX().testCursor.cursorAt()}function cn(){return I.useX().testCursor.next()}function an(n,t){n=void 0===(n=n.type)?g.DEFAULT:n,nn(N(t));var r={current:{},prev:{}},e=on();return I.run({isolate:{type:n,keys:r}},(function(){I.useX().testCursor.addLevel(),r.prev=s(T(W()[0].prev,on())).reduce((function(n,t){return t instanceof j&&!en(t.key)?(n[t.key]=t,n):n}),{}),P((function(n){return C(n,e,[])}));var n=t();return I.useX().testCursor.removeLevel(),cn(),n}))}function fn(n){return n===M.ERRORS?q.ERROR_COUNT:q.WARN_COUNT}function ln(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function pn(n){return!n||(function(n){return"number"==typeof n}(n)?0===n:ln(n,"length")?f(n,0):"object"==typeof n&&f(Object.keys(n),0))}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(M||(M={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(q||(q={}));var dn=i(pn);function vn(n,t){return!!t&&!gn(n,t)}function gn(n,t){return!(!t||n.fieldName!==t)}var hn=i((function(n,t){return n.groupName===t}));function En(n){return function(n,t){return H().some((function(r){return Nn(r,n,t)}))}(M.ERRORS,n)}function Nn(n,t,r){return!(!n.hasFailures()||vn(n,r)||function(n,t){return function(n,t){return!!n!=!!t}(n===M.WARNINGS,t.warns())}(t,n))}function mn(n){return!!Rn(n)||!En(n)&&(!pn(H())&&!function(n){return dn(D().filter((function(t){return Sn(t,n)})))}(n)&&function(n){return H().every((function(t){return!!vn(t,n)||Cn(t,n)}))}(n))}function yn(n,t){return!!Rn(t)||!function(n,t,r){return H().some((function(e){return!hn(e,t)&&Nn(e,n,r)}))}(M.ERRORS,n,t)&&!function(n,t){return dn(D().filter((function(r){return!hn(r,n)&&Sn(r,t)})))}(n,t)&&function(n,t){return H().every((function(r){return!!hn(r,n)||Cn(r,t)}))}(n,t)}function Rn(n){return!!n&&!0===function(n){var t;return null===(t=L(n))||void 0===t?void 0:t[1]}(n)}function Sn(n,t){return!vn(n,t)&&!0!==U(n.fieldName)}function Cn(n,t){return!!vn(n,t)||(!0===U(n.fieldName)||n.isTested()||n.isOmitted())}function bn(){var n=I.useX().summary;return nn(n),n}function Tn(){var n=H(),t=c({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){return function(n,t){n[t.fieldName]=_n(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&mn(t.fieldName)}(n.tests,t),function(n,t){var r=t.groupName;r&&(n[r]=n[r]||{},n[r][t.fieldName]=_n(n[r],t),n[r][t.fieldName].valid=!1!==n[r][t.fieldName].valid&&yn(r,t.fieldName))}(n.groups,t),n}),t),t.valid=mn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}function _n(n,t){function r(n){var t=fn(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||c({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[e];return t.isNonActionable()||(n[e].testCount++,t.isFailing()?r(M.ERRORS):t.isWarning()&&r(M.WARNINGS)),i}function In(n){return l(n,0)}function On(n,t,r){return r?function(n,t,r){var e;return(null===(e=null==n?void 0:n[r])||void 0===e?void 0:e[t])||[]}(n,t,r):function(n,t){var r,e={},u=fn(t);for(r in n)In(n[r][u])&&(e[r]=n[r][t]||[]);return e}(n,t)}function An(n){return Ln(M.ERRORS,n)}function kn(n){return Ln(M.WARNINGS,n)}function Ln(n,t){return On(bn().tests,n,t)}function xn(n,t){return Un(n,M.ERRORS,t)}function Fn(n,t){return Un(n,M.WARNINGS,t)}function Un(n,t,r){return On(bn().groups[n],t,r)}function Wn(n){return Pn(q.ERROR_COUNT,n)}function Gn(n){return Pn(q.WARN_COUNT,n)}function Pn(n,t){var r,e=bn();return In(t?null===(r=e.tests[t])||void 0===r?void 0:r[n]:e[n])}function Dn(n,t){return Xn(M.ERRORS,n,t)}function wn(n,t){return Xn(M.WARNINGS,n,t)}function Xn(n,t,r){var e,u,i=bn();if(n=fn(n),!(t=i.groups[t]))return!1;if(r)return In(null===(e=t[r])||void 0===e?void 0:e[n]);for(var o in t)if(In(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Hn(n){var t=bn();return n?!!Mn(t.tests,n):t.valid}function Kn(n,t){if(!(n=bn().groups[n]))return!1;if(t)return Mn(n,t);for(var r in n)if(!Mn(n,r))return!1;return!0}function Mn(n,t){var r;return!(null===(r=n[t])||void 0===r||!r.valid)}var qn=p(1);function jn(){var n=H(),t={stateRef:O()};return qn([n],I.bind(t,(function(){var n=Tn(),t=O().suiteName()[0],r={summary:n};return c(n,{getErrors:I.bind(r,An),getErrorsByGroup:I.bind(r,xn),getWarnings:I.bind(r,kn),getWarningsByGroup:I.bind(r,Fn),hasErrors:I.bind(r,Wn),hasErrorsByGroup:I.bind(r,Dn),hasWarnings:I.bind(r,Gn),hasWarningsByGroup:I.bind(r,wn),isValid:I.bind(r,Hn),isValidByGroup:I.bind(r,Kn),suiteName:t})})))}function Bn(n){var t=D();return!pn(t)&&(n?t.some((function(t){return gn(t,n)})):dn(t))}var Vn=p(20);function Yn(){var n=H(),t={stateRef:O()};return Vn([n],I.bind(t,(function(){return c({},jn(),{done:I.bind(t,Zn)})})))}function Jn(n,t,r){return!(N(n)&&(!t||r.tests[t]&&!pn(r.tests[t].testCount)))}function zn(n){return!(Bn()&&(!n||Bn(n)))}var Qn,Zn=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Yn(),Jn(r,n,t))return t;var e=function(){return r(jn())};return zn(n)?(e(),t):($n(e,n),t)};function $n(n,t){(0,k()[1])((function(r){return t?r.fieldCallbacks[t]=(r.fieldCallbacks[t]||[]).concat(n):r.doneCallbacks.push(n),r}))}function nt(n){return n.forEach((function(n){return n()}))}function tt(){var n=function(){var n={};return{emit:function(t,r){(n[t]||[]).forEach((function(n){n(r)}))},on:function(t,r){return n[t]=(n[t]||[]).concat(r),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==r}))}}}}}();return n.on(Qn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=k()[0].fieldCallbacks;n&&!Bn(n)&&d(t[n])&&nt(t[n])}(t.fieldName),Bn()||n.emit(Qn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Qn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),F(n.fieldName,(function(n){return[n[0],!0]})))}if(!pn(x()[0])){var t={};P((function(r){return S(r,(function(r){if(ln(t,r.fieldName))n(r);else{var e=U(r.fieldName);N(e)&&(t[r.fieldName]=e(),n(r))}return r}))}))}}()})),n.on(Qn.ALL_RUNNING_TESTS_FINISHED,(function(){nt(k()[0].doneCallbacks)})),n.on(Qn.REMOVE_FIELD,(function(n){K((function(t){gn(t,n)&&(t.cancel(),function(n){P((function(t){return S(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Qn.RESET_FIELD,(function(n){K((function(t){gn(t,n)&&t.reset()}))})),n}function rt(){var n=I.useX();return nn(n.bus),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Qn||(Qn={}));function et(){return!!I.useX().skipped}function ut(n){return st(0,"tests",n)}function it(n){return st(1,"tests",n)}function ot(n){var t=n.fieldName;if(n=n.groupName,et())return!0;var r=I.useX(),e=r.exclusion;r=r.inclusion;var u=e.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){if(function(n){var t=I.useX().exclusion.groups;return ln(t,n)?!1===t[n]:at()}(n))return!0;if(!0===e.groups[n])return!i&&(!!ct(u)||!1===u[t])}return!!function(n){return!!at()&&!n}(n)||!i&&(!!ct(u)&&!m(r[t]))}function st(n,t,r){var e=I.useX("hook called outside of a running suite.");r&&s(r).forEach((function(r){u(r)&&(e.exclusion[t][r]=0===n)}))}function ct(n){for(var t in n)if(!0===n[t])return!0;return!1}function at(){var n,t=I.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function ft(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function lt(n){return!(!function(n){return I.useX().mode[0]===n}(h.EAGER)||!En(n.fieldName))}function pt(){return!!I.useX().omitted}function dt(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||Array.prototype.slice.call(t))}function vt(n){return n&&N(n.then)}function gt(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function ht(n){var t=n.asyncTest,r=n.message;if(vt(t)){var e=rt().emit,i=O(),o=I.bind({stateRef:i},(function(){G(),e(Qn.TEST_COMPLETED,n)}));i=I.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=u(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Et(n){var t=rt(),r=function(n){return I.run({currentTest:n},(function(){return n.run()}))}(n);try{vt(r)?(n.asyncTest=r,n.setPending(),ht(n)):t.emit(Qn.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}function Nt(n){var t=W()[0].prev;return pn(t)?(mt(n),n):(t=function(n){var t=on();return function(n,t){return T(n,t)[R(t)]}(n,t)}(t),en(n.key)?(function(n,t){return dn(n)&&!gt(n,t)}(t,n)&&(function(n,t){I.useX().isolate.type===g.EACH||un("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.'))}(t,n),function(){var n=W(),t=n[1],r=n[0].prev;n=T(r,on());var e=sn();n.splice(e),t((function(n){return{prev:r,current:n.current}}))}(),t=null),mt(n=y(t,n)),n):(mt(n=function(n,t){var r=function(n){return I.useX().isolate.keys.prev[n]}(n);return r&&(t=r),function(n,t){var r=I.useX().isolate.keys.current;en(r[n])?r[n]=t:un('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."))}(n,t),t}(n.key,n)),n))}function mt(n){var t=on();P((function(r){return C(r,t,n)}))}function yt(n){if(lt(n))return n.skip(),Nt(n),cn(),n;var t=Nt(n);return pt()?(t.omit(),cn(),t):ot(n)?(t.skip(et()),cn(),t):(function(n,t){t!==n&&gt(n,t)&&n.isPending()&&n.cancel()}(t,n),mt(n),cn(),function(n){n.isUntested()?Et(n):vt(n.asyncTest)&&(n.setPending(),ht(n))}(n),n)}function Rt(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=N(t[1])?t:dt([void 0],t,!0);t=e[0],r=e[1],e=e[2],nn(u(n),Ct("fieldName","string")),nn(N(r),Ct("Test callback","function"));var i=I.useX();return yt(t=new j(n,r,{message:t,groupName:i.groupName,key:e}))}ut.group=function(n){return st(0,"groups",n)},it.group=function(n){return st(1,"groups",n)};var St=c(Rt,{memo:function(n){var t=p(10);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=sn();var i=(e=e.reverse())[0],o=e[1],s=e[2];return u=[A(),r,u].concat(i),v(e=t.get(u))?t(u,(function(){return n(r,s,o)})):e[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(r,s,o)}))):yt(e[1])}}(Rt)});function Ct(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return t.enforce}}),exports.VERSION="4.4.0-dev-08ec91",exports.context=I,exports.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];n=n[1],nn(N(r),"vest.create: Expected callback to be a function.");var u=tt(),i=tn();return n={stateRef:rn(i,{suiteId:e(),suiteName:n}),bus:u},c(I.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:g.SUITE},(function(){r.apply(void 0,n)})),u.emit(Qn.SUITE_CALLBACK_DONE_RUNNING),Yn()})),{get:I.bind(n,jn),remove:I.bind(n,(function(n){u.emit(Qn.REMOVE_FIELD,n)})),reset:i.reset,resetField:I.bind(n,(function(n){u.emit(Qn.RESET_FIELD,n)}))})},exports.each=function(n,t){nn(N(t),"each callback must be a function"),an({type:g.EACH},(function(){n.forEach((function(n,r){t(n,r)}))}))},exports.eager=function(){!function(n){I.useX().mode[0]=n}(h.EAGER)},exports.group=function(n,t){nn(u(n),ft("name must be a string")),nn(N(t),ft("callback must be a function")),an({type:g.GROUP},(function(){I.run({groupName:n},t)}))},exports.include=function(n){var t=I.useX(),r=t.inclusion;return t=t.exclusion,nn(u(n)),r[n]=y(t.tests[n],!0),{when:function(t){var r=I.useX(),e=r.exclusion;r.inclusion[n]=function(){return ln(e.tests,n)?y(e.tests[n],!0):u(t)?!!e.tests[t]:m(t,m(jn))}}}},exports.omitWhen=function(n,t){an({type:g.OMIT_WHEN},(function(){I.run({omitted:pt()||m(n,m(jn))},(function(){return t()}))}))},exports.only=ut,exports.optional=function(n){if(d(n)||u(n))s(n).forEach((function(n){F(n,[!0,!1])}));else for(var t in n)F(t,[n[t],!1])},exports.skip=it,exports.skipWhen=function(n,t){an({type:g.SKIP_WHEN},(function(){I.run({skipped:et()||m(n,m(jn))},(function(){return t()}))}))},exports.test=St,exports.warn=function(){var n=I.useX("warn hook called outside of a running suite.");nn(n.currentTest,"warn called outside of a test."),n.currentTest.warn()};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t=require("n4s"),r=require("context"),e=(n=0,function(){return"".concat(n++)});function u(n){return String(n)===n}function i(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function o(n){return void 0===n}function s(n){return[].concat(n)}var c=Object.assign;function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return function(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}(n.length,t)}function l(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function p(n){function t(n){return r.findIndex((function(t){var r=t[0];return f(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))}void 0===n&&(n=1);var r=[],e=function(t,u){var i=e.get(t);return i?i[1]:(u=u(),r.unshift([t.concat(),u]),function(n,t){return l(n.length,t)}(r,n)&&(r.length=n),u)};return e.invalidate=function(n){-1<(n=t(n))&&r.splice(n,1)},e.get=function(n){return r[t(n)]||null},e}function d(n){return!!Array.isArray(n)}function v(n){return null===n}var h,E,g=i(v);function N(n){return"function"==typeof n}function m(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return N(n)?n.apply(void 0,t):n}function y(n,t){var r;return null!==(r=m(n))&&void 0!==r?r:t}function R(n){return(n=s(n))[n.length-1]}function S(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];d(u)?r.push(S(u,t)):(u=t(u),g(u)&&r.push(u))}return r}function b(n,t,r){return C(n,t)[R(t)]=r,n}function T(n){return s(n).reduce((function(n,t){return d(t)?n.concat(T(t)):s(n).concat(t)}),[])}function C(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=y(n[e],[]),n=n[e]}return n}function _(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?m(t):t)}function I(){var n=0;return{current:function(){return n},next:function(){n++}}}function O(n){return v(n)||o(n)}function A(n){setTimeout((function(){throw Error(n)}),0)}function k(n,t){n=void 0===(n=n.type)?h.DEFAULT:n,_(N(t));var r=U(n,L());return n=W.run({isolate:r},(function(){return r.keys.prev=s(C(M()[0].prev,L())).reduce((function(n,t){return t instanceof $&&!O(t.key)?(n[t.key]=t,n):n}),{}),j((function(n){return b(n,r.path,[])})),t()})),F().next(),n}function x(){return W.useX().isolate}function L(){var n=x();return n.path.concat(n.cursor.current())}function F(){return x().cursor}function U(n,t){return void 0===t&&(t=[]),{cursor:I(),keys:{current:{},prev:{}},path:t,type:n}}!function(n){n[n.DEFAULT=0]="DEFAULT",n[n.SUITE=1]="SUITE",n[n.EACH=2]="EACH",n[n.SKIP_WHEN=3]="SKIP_WHEN",n[n.OMIT_WHEN=4]="OMIT_WHEN",n[n.GROUP=5]="GROUP"}(h||(h={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(E||(E={}));var W=r.createContext((function(n,t){return t?null:c({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:U(h.DEFAULT),mode:[E.ALL]},n)}));function G(){return W.useX().stateRef}function P(){return G().suiteId()[0]}function D(){return G().testCallbacks()}function w(n){return X()[0][n]}function X(){return G().optionalFields()}function H(n,t){(0,X()[1])((function(r){var e;return c(r,((e={})[n]=m(t,r[n]),e))}))}function K(n){var t;return null===(t=w(n))||void 0===t?void 0:t[0]}function M(){return G().testObjects()}function q(){j((function(n){return n}))}function j(n){(0,M()[1])((function(t){return{prev:t.prev,current:s(n(t.current))}}))}function B(){return J().filter((function(n){return n.isPending()}))}var V,Y=p();function J(){var n=M()[0].current;return Y([n],(function(){return T(n)}))}function z(n){J().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(V||(V={}));var Q,Z,$=function(){function n(n,t,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=V.Error,this.status=nn,this.fieldName=n,this.testFn=t,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){(function(n,t){return o(n)&&u(t)})(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==cn||(this.status=n)},n.prototype.warns=function(){return this.severity===V.Warning},n.prototype.setPending=function(){this.setStatus(on)},n.prototype.fail=function(){this.setStatus(this.warns()?en:rn)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(un)},n.prototype.warn=function(){this.severity=V.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(tn)},n.prototype.cancel=function(){this.setStatus(sn),q()},n.prototype.reset=function(){this.status=nn,q()},n.prototype.omit=function(){this.setStatus(cn)},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(on)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(cn)},n.prototype.isUntested=function(){return this.statusEquals(nn)},n.prototype.isFailing=function(){return this.statusEquals(rn)},n.prototype.isCanceled=function(){return this.statusEquals(sn)},n.prototype.isSkipped=function(){return this.statusEquals(tn)},n.prototype.isPassing=function(){return this.statusEquals(un)},n.prototype.isWarning=function(){return this.statusEquals(en)},n.prototype.statusEquals=function(n){return this.status===n},n}(),nn="UNTESTED",tn="SKIPPED",rn="FAILED",en="WARNING",un="PASSING",on="PENDING",sn="CANCELED",cn="OMITTED";function an(n){function t(n,t,u){return e.references.push(),r(n,m(t,u)),function(){return[e.references[n],function(t){return r(n,m(t,e.references[n]))}]}}function r(t,r){var i=e.references[t];e.references[t]=r,N(t=u[t][1])&&t(r,i),N(n)&&n()}var e={references:[]},u=[];return{registerStateKey:function(n,r){var e=u.length;return u.push([n,r]),t(e,n)},reset:function(){var n=e.references;e.references=[],u.forEach((function(r,e){return t(e,r[0],n[e])}))}}}function fn(n,t){var r=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(r),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function ln(n){return n===Q.ERRORS?Z.ERROR_COUNT:Z.WARN_COUNT}function pn(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function dn(n){return!n||(function(n){return"number"==typeof n}(n)?0===n:pn(n,"length")?f(n,0):"object"==typeof n&&f(Object.keys(n),0))}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Q||(Q={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Z||(Z={}));var vn=i(dn);function hn(n,t){return!!t&&!En(n,t)}function En(n,t){return!(!t||n.fieldName!==t)}var gn=i((function(n,t){return n.groupName===t}));function Nn(n){return function(n,t){return J().some((function(r){return mn(r,n,t)}))}(Q.ERRORS,n)}function mn(n,t,r){return!(!n.hasFailures()||hn(n,r)||function(n,t){return function(n,t){return!!n!=!!t}(n===Q.WARNINGS,t.warns())}(t,n))}function yn(n){return!!Sn(n)||!Nn(n)&&(!dn(J())&&!function(n){return vn(B().filter((function(t){return bn(t,n)})))}(n)&&function(n){return J().every((function(t){return!!hn(t,n)||Tn(t,n)}))}(n))}function Rn(n,t){return!!Sn(t)||!function(n,t,r){return J().some((function(e){return!gn(e,t)&&mn(e,n,r)}))}(Q.ERRORS,n,t)&&!function(n,t){return vn(B().filter((function(r){return!gn(r,n)&&bn(r,t)})))}(n,t)&&function(n,t){return J().every((function(r){return!!gn(r,n)||Tn(r,t)}))}(n,t)}function Sn(n){return!!n&&!0===function(n){var t;return null===(t=w(n))||void 0===t?void 0:t[1]}(n)}function bn(n,t){return!hn(n,t)&&!0!==K(n.fieldName)}function Tn(n,t){return!!hn(n,t)||(!0===K(n.fieldName)||n.isTested()||n.isOmitted())}function Cn(){var n=W.useX().summary;return _(n),n}function _n(){var n=J(),t=c({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){return function(n,t){n[t.fieldName]=In(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&yn(t.fieldName)}(n.tests,t),function(n,t){var r=t.groupName;r&&(n[r]=n[r]||{},n[r][t.fieldName]=In(n[r],t),n[r][t.fieldName].valid=!1!==n[r][t.fieldName].valid&&Rn(r,t.fieldName))}(n.groups,t),n}),t),t.valid=yn(),function(n){for(var t in n.tests)n.errorCount+=n.tests[t].errorCount,n.warnCount+=n.tests[t].warnCount,n.testCount+=n.tests[t].testCount;return n}(t)}function In(n,t){function r(n){var t=ln(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||c({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[e];return t.isNonActionable()||(n[e].testCount++,t.isFailing()?r(Q.ERRORS):t.isWarning()&&r(Q.WARNINGS)),i}function On(n){return l(n,0)}function An(n,t,r){return r?function(n,t,r){var e;return(null===(e=null==n?void 0:n[r])||void 0===e?void 0:e[t])||[]}(n,t,r):function(n,t){var r,e={},u=ln(t);for(r in n)On(n[r][u])&&(e[r]=n[r][t]||[]);return e}(n,t)}function kn(n){return Ln(Q.ERRORS,n)}function xn(n){return Ln(Q.WARNINGS,n)}function Ln(n,t){return An(Cn().tests,n,t)}function Fn(n,t){return Wn(n,Q.ERRORS,t)}function Un(n,t){return Wn(n,Q.WARNINGS,t)}function Wn(n,t,r){return An(Cn().groups[n],t,r)}function Gn(n){return Dn(Z.ERROR_COUNT,n)}function Pn(n){return Dn(Z.WARN_COUNT,n)}function Dn(n,t){var r,e=Cn();return On(t?null===(r=e.tests[t])||void 0===r?void 0:r[n]:e[n])}function wn(n,t){return Hn(Q.ERRORS,n,t)}function Xn(n,t){return Hn(Q.WARNINGS,n,t)}function Hn(n,t,r){var e,u,i=Cn();if(n=ln(n),!(t=i.groups[t]))return!1;if(r)return On(null===(e=t[r])||void 0===e?void 0:e[n]);for(var o in t)if(On(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Kn(n){var t=Cn();return n?!!qn(t.tests,n):t.valid}function Mn(n,t){if(!(n=Cn().groups[n]))return!1;if(t)return qn(n,t);for(var r in n)if(!qn(n,r))return!1;return!0}function qn(n,t){var r;return!(null===(r=n[t])||void 0===r||!r.valid)}var jn=p(1);function Bn(){var n=J(),t={stateRef:G()};return jn([n],W.bind(t,(function(){var n=_n(),t=G().suiteName()[0],r={summary:n};return c(n,{getErrors:W.bind(r,kn),getErrorsByGroup:W.bind(r,Fn),getWarnings:W.bind(r,xn),getWarningsByGroup:W.bind(r,Un),hasErrors:W.bind(r,Gn),hasErrorsByGroup:W.bind(r,wn),hasWarnings:W.bind(r,Pn),hasWarningsByGroup:W.bind(r,Xn),isValid:W.bind(r,Kn),isValidByGroup:W.bind(r,Mn),suiteName:t})})))}function Vn(n){var t=B();return!dn(t)&&(n?t.some((function(t){return En(t,n)})):vn(t))}var Yn=p(20);function Jn(){var n=J(),t={stateRef:G()};return Yn([n],W.bind(t,(function(){return c({},Bn(),{done:W.bind(t,$n)})})))}function zn(n,t,r){return!(N(n)&&(!t||r.tests[t]&&!dn(r.tests[t].testCount)))}function Qn(n){return!(Vn()&&(!n||Vn(n)))}var Zn,$n=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=Jn(),zn(r,n,t))return t;var e=function(){return r(Bn())};return Qn(n)?(e(),t):(nt(e,n),t)};function nt(n,t){(0,D()[1])((function(r){return t?r.fieldCallbacks[t]=(r.fieldCallbacks[t]||[]).concat(n):r.doneCallbacks.push(n),r}))}function tt(n){return n.forEach((function(n){return n()}))}function rt(){var n=function(){var n={};return{emit:function(t,r){(n[t]||[]).forEach((function(n){n(r)}))},on:function(t,r){return n[t]=(n[t]||[]).concat(r),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==r}))}}}}}();return n.on(Zn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=D()[0].fieldCallbacks;n&&!Vn(n)&&d(t[n])&&tt(t[n])}(t.fieldName),Vn()||n.emit(Zn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Zn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),H(n.fieldName,(function(n){return[n[0],!0]})))}if(!dn(X()[0])){var t={};j((function(r){return S(r,(function(r){if(pn(t,r.fieldName))n(r);else{var e=K(r.fieldName);N(e)&&(t[r.fieldName]=e(),n(r))}return r}))}))}}()})),n.on(Zn.ALL_RUNNING_TESTS_FINISHED,(function(){tt(D()[0].doneCallbacks)})),n.on(Zn.REMOVE_FIELD,(function(n){z((function(t){En(t,n)&&(t.cancel(),function(n){j((function(t){return S(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Zn.RESET_FIELD,(function(n){z((function(t){En(t,n)&&t.reset()}))})),n}function et(){var n=W.useX();return _(n.bus),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",n.REMOVE_FIELD="remove_field",n.RESET_FIELD="reset_field",n.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running"}(Zn||(Zn={}));function ut(){return!!W.useX().skipped}function it(n){return ct(0,"tests",n)}function ot(n){return ct(1,"tests",n)}function st(n){var t=n.fieldName;if(n=n.groupName,ut())return!0;var r=W.useX(),e=r.exclusion;r=r.inclusion;var u=e.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){if(function(n){var t=W.useX().exclusion.groups;return pn(t,n)?!1===t[n]:ft()}(n))return!0;if(!0===e.groups[n])return!i&&(!!at(u)||!1===u[t])}return!!function(n){return!!ft()&&!n}(n)||!i&&(!!at(u)&&!m(r[t]))}function ct(n,t,r){var e=W.useX("hook called outside of a running suite.");r&&s(r).forEach((function(r){u(r)&&(e.exclusion[t][r]=0===n)}))}function at(n){for(var t in n)if(!0===n[t])return!0;return!1}function ft(){var n,t=W.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function lt(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function pt(n){return!(!function(n){return W.useX().mode[0]===n}(E.EAGER)||!Nn(n.fieldName))}function dt(){return!!W.useX().omitted}function vt(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||Array.prototype.slice.call(t))}function ht(n){return n&&N(n.then)}function Et(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function gt(n){var t=n.asyncTest,r=n.message;if(ht(t)){var e=et().emit,i=G(),o=W.bind({stateRef:i},(function(){q(),e(Zn.TEST_COMPLETED,n)}));i=W.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=u(t)?t:r,n.fail(),o())}));try{t.then(o,i)}catch(n){i()}}}function Nt(n){var t=et(),r=function(n){return W.run({currentTest:n},(function(){return n.run()}))}(n);try{ht(r)?(n.asyncTest=r,n.setPending(),gt(n)):t.emit(Zn.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}function mt(n){var t=M()[0].prev;return dn(t)?(yt(n),n):(t=function(n){var t=L();return function(n,t){return C(n,t)[R(t)]}(n,t)}(t),O(n.key)?(function(n,t){return vn(n)&&!Et(n,t)}(t,n)&&(function(n,t){W.useX().isolate.type===h.EACH||A("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.'))}(t,n),function(){var n=M(),t=n[1],r=n[0].prev;n=C(r,L());var e=F().current();n.splice(e),t((function(n){return{prev:r,current:n.current}}))}(),t=null),yt(n=y(t,n)),n):(yt(n=function(n,t){var r=function(n){return W.useX().isolate.keys.prev[n]}(n);return r&&(t=r),function(n,t){var r=W.useX().isolate.keys.current;O(r[n])?r[n]=t:A('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted."))}(n,t),t}(n.key,n)),n))}function yt(n){var t=L();j((function(r){return b(r,t,n)}))}function Rt(n){var t=F();if(pt(n))return n.skip(),mt(n),t.next(),n;var r=mt(n);return dt()?(r.omit(),t.next(),r):st(n)?(r.skip(ut()),t.next(),r):(function(n,t){t!==n&&Et(n,t)&&n.isPending()&&n.cancel()}(r,n),yt(n),function(n){n.isUntested()?Nt(n):ht(n.asyncTest)&&(n.setPending(),gt(n))}(n),t.next(),n)}function St(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=N(t[1])?t:vt([void 0],t,!0);t=e[0],r=e[1],e=e[2],_(u(n),Tt("fieldName","string")),_(N(r),Tt("Test callback","function"));var i=W.useX();return Rt(t=new $(n,r,{message:t,groupName:i.groupName,key:e}))}it.group=function(n){return ct(0,"groups",n)},ot.group=function(n){return ct(1,"groups",n)};var bt=c(St,{memo:function(n){var t=p(10);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=F().current();var i=(e=e.reverse())[0],o=e[1],s=e[2];return u=[P(),r,u].concat(i),v(e=t.get(u))?t(u,(function(){return n(r,s,o)})):e[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(r,s,o)}))):Rt(e[1])}}(St)});function Tt(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}Object.defineProperty(exports,"enforce",{enumerable:!0,get:function(){return t.enforce}}),exports.VERSION="4.4.0",exports.context=W,exports.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];n=n[1],_(N(r),"vest.create: Expected callback to be a function.");var u=rt(),i=an();return n={stateRef:fn(i,{suiteId:e(),suiteName:n}),bus:u},c(W.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),k({type:h.SUITE},(function(){r.apply(void 0,n)})),u.emit(Zn.SUITE_CALLBACK_DONE_RUNNING),Jn()})),{get:W.bind(n,Bn),remove:W.bind(n,(function(n){u.emit(Zn.REMOVE_FIELD,n)})),reset:i.reset,resetField:W.bind(n,(function(n){u.emit(Zn.RESET_FIELD,n)}))})},exports.each=function(n,t){_(N(t),"each callback must be a function"),k({type:h.EACH},(function(){n.forEach((function(n,r){t(n,r)}))}))},exports.eager=function(){!function(n){W.useX().mode[0]=n}(E.EAGER)},exports.group=function(n,t){_(u(n),lt("name must be a string")),_(N(t),lt("callback must be a function")),k({type:h.GROUP},(function(){W.run({groupName:n},t)}))},exports.include=function(n){var t=W.useX(),r=t.inclusion;return t=t.exclusion,_(u(n)),r[n]=y(t.tests[n],!0),{when:function(t){var r=W.useX(),e=r.exclusion;r.inclusion[n]=function(){return pn(e.tests,n)?y(e.tests[n],!0):u(t)?!!e.tests[t]:m(t,m(Bn))}}}},exports.omitWhen=function(n,t){k({type:h.OMIT_WHEN},(function(){W.run({omitted:dt()||m(n,m(Bn))},(function(){return t()}))}))},exports.only=it,exports.optional=function(n){if(d(n)||u(n))s(n).forEach((function(n){H(n,[!0,!1])}));else for(var t in n)H(t,[n[t],!1])},exports.skip=ot,exports.skipWhen=function(n,t){k({type:h.SKIP_WHEN},(function(){W.run({skipped:ut()||m(n,m(Bn))},(function(){return t()}))}))},exports.test=bt,exports.warn=function(){var n=W.useX("warn hook called outside of a running suite.");_(n.currentTest,"warn called outside of a test."),n.currentTest.warn()};