vest 4.4.3-dev-c786f7 → 4.5.0-dev-9b46fb

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.
Files changed (41) hide show
  1. package/dist/cjs/classnames.development.js +13 -36
  2. package/dist/cjs/classnames.production.js +1 -1
  3. package/dist/cjs/enforce/compose.development.js +1 -1
  4. package/dist/cjs/enforce/compose.production.js +1 -1
  5. package/dist/cjs/enforce/compounds.development.js +1 -1
  6. package/dist/cjs/enforce/compounds.production.js +1 -1
  7. package/dist/cjs/enforce/schema.development.js +1 -1
  8. package/dist/cjs/enforce/schema.production.js +1 -1
  9. package/dist/cjs/parser.development.js +13 -36
  10. package/dist/cjs/parser.production.js +1 -1
  11. package/dist/cjs/vest.development.js +88 -94
  12. package/dist/cjs/vest.production.js +1 -1
  13. package/dist/es/classnames.development.js +14 -37
  14. package/dist/es/classnames.production.js +1 -1
  15. package/dist/es/enforce/compose.development.js +1 -1
  16. package/dist/es/enforce/compose.production.js +1 -1
  17. package/dist/es/enforce/compounds.development.js +1 -1
  18. package/dist/es/enforce/compounds.production.js +1 -1
  19. package/dist/es/enforce/schema.development.js +1 -1
  20. package/dist/es/enforce/schema.production.js +1 -1
  21. package/dist/es/parser.development.js +14 -37
  22. package/dist/es/parser.production.js +1 -1
  23. package/dist/es/vest.development.js +89 -96
  24. package/dist/es/vest.production.js +1 -1
  25. package/dist/umd/classnames.development.js +16 -45
  26. package/dist/umd/classnames.production.js +1 -1
  27. package/dist/umd/enforce/compose.development.js +17 -0
  28. package/dist/umd/enforce/compounds.development.js +68 -51
  29. package/dist/umd/enforce/compounds.production.js +1 -1
  30. package/dist/umd/enforce/schema.development.js +17 -0
  31. package/dist/umd/parser.development.js +16 -45
  32. package/dist/umd/parser.production.js +1 -1
  33. package/dist/umd/vest.development.js +106 -95
  34. package/dist/umd/vest.production.js +1 -1
  35. package/package.json +4 -4
  36. package/types/enforce/compose.d.ts +2 -1
  37. package/types/enforce/compounds.d.ts +2 -1
  38. package/types/enforce/schema.d.ts +2 -1
  39. package/types/parser.d.ts +8 -7
  40. package/types/promisify.d.ts +20 -35
  41. package/types/vest.d.ts +45 -60
@@ -1,58 +1,35 @@
1
1
  'use strict';
2
2
 
3
3
  var vestUtils = require('vest-utils');
4
+ var vest = require('vest');
4
5
 
5
- var Severity;
6
- (function (Severity) {
7
- Severity["WARNINGS"] = "warnings";
8
- Severity["ERRORS"] = "errors";
9
- })(Severity || (Severity = {}));
10
- var SeverityCount;
11
- (function (SeverityCount) {
12
- SeverityCount["ERROR_COUNT"] = "errorCount";
13
- SeverityCount["WARN_COUNT"] = "warnCount";
14
- })(SeverityCount || (SeverityCount = {}));
15
-
16
- // eslint-disable-next-line max-lines-per-function
17
- function parse(res) {
18
- vestUtils.invariant(res && vestUtils.hasOwnProperty(res, 'valid'), "Vest parser: expected argument at position 0 to be Vest's result object.");
6
+ // eslint-disable-next-line max-statements
7
+ function parse(summary) {
8
+ vestUtils.invariant(summary && vestUtils.hasOwnProperty(summary, 'valid'), "Vest parser: expected argument at position 0 to be Vest's result object.");
9
+ var sel = vest.suiteSelectors(summary);
19
10
  var testedStorage = {};
20
11
  var selectors = {
21
- invalid: hasErrors,
12
+ invalid: sel.hasErrors,
22
13
  tested: isTested,
23
14
  untested: isUntested,
24
- valid: isValid,
25
- warning: hasWarnings
15
+ valid: sel.isValid,
16
+ warning: sel.hasWarnings
26
17
  };
27
18
  return selectors;
19
+ // Booleans
28
20
  function isTested(fieldName) {
29
21
  if (!fieldName) {
30
- return vestUtils.isPositive(res.testCount);
22
+ return vestUtils.isPositive(summary.testCount);
31
23
  }
32
24
  if (vestUtils.hasOwnProperty(testedStorage, fieldName))
33
25
  return testedStorage[fieldName];
34
26
  testedStorage[fieldName] =
35
- vestUtils.hasOwnProperty(res.tests, fieldName) &&
36
- vestUtils.isPositive(res.tests[fieldName].testCount);
27
+ vestUtils.hasOwnProperty(summary.tests, fieldName) &&
28
+ vestUtils.isPositive(summary.tests[fieldName].testCount);
37
29
  return selectors.tested(fieldName);
38
30
  }
39
31
  function isUntested(fieldName) {
40
- return res.testCount === 0 || !selectors.tested(fieldName);
41
- }
42
- function isValid(fieldName) {
43
- var _a;
44
- return fieldName ? Boolean((_a = res.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : res.valid;
45
- }
46
- function hasWarnings(fieldName) {
47
- return hasFailures(SeverityCount.WARN_COUNT, fieldName);
48
- }
49
- function hasErrors(fieldName) {
50
- return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
51
- }
52
- function hasFailures(countKey, fieldName) {
53
- var _a;
54
- var failureCount = vestUtils.defaultTo(fieldName ? (_a = res.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[countKey] : res[countKey], 0);
55
- return vestUtils.isPositive(failureCount);
32
+ return !(vestUtils.isPositive(summary.testCount) && selectors.tested(fieldName));
56
33
  }
57
34
  }
58
35
 
@@ -1 +1 @@
1
- "use strict";var t,n,r,e=require("vest-utils");(n=t||(t={})).WARNINGS="warnings",n.ERRORS="errors",function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(r||(r={})),module.exports=function(t,n){void 0===n&&(n={});var i=function(t){function n(n,r){var i;return n=e.defaultTo(r?null===(i=t.tests[r])||void 0===i?void 0:i[n]:t[n],0),e.isPositive(n)}e.invariant(t&&e.hasOwnProperty(t,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var i={},s={invalid:function(t){return n(r.ERROR_COUNT,t)},tested:function(n){return n?e.hasOwnProperty(i,n)?i[n]:(i[n]=e.hasOwnProperty(t.tests,n)&&e.isPositive(t.tests[n].testCount),s.tested(n)):e.isPositive(t.testCount)},untested:function(n){return 0===t.testCount||!s.tested(n)},valid:function(n){var r;return n?!(null===(r=t.tests[n])||void 0===r||!r.valid):t.valid},warning:function(t){return n(r.WARN_COUNT,t)}};return s}(t);return function(t){var r,s=[];for(r in n){var o=r;e.isFunction(i[o])&&i[o](t)&&s.push(n[o])}return s.join(" ")}};
1
+ "use strict";var t=require("vest-utils"),e=require("vest");module.exports=function(s,r){void 0===r&&(r={});var i=function(s){t.invariant(s&&t.hasOwnProperty(s,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var r=e.suiteSelectors(s),i={},n={invalid:r.hasErrors,tested:function(e){return e?t.hasOwnProperty(i,e)?i[e]:(i[e]=t.hasOwnProperty(s.tests,e)&&t.isPositive(s.tests[e].testCount),n.tested(e)):t.isPositive(s.testCount)},untested:function(e){return!(t.isPositive(s.testCount)&&n.tested(e))},valid:r.isValid,warning:r.hasWarnings};return n}(s);return function(e){var s,n=[];for(s in r){var o=s;t.isFunction(i[o])&&i[o](e)&&n.push(r[o])}return n.join(" ")}};
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var n4s = require('n4s');
4
3
  var vestUtils = require('vest-utils');
4
+ var n4s = require('n4s');
5
5
 
6
6
  function ruleReturn(pass, message) {
7
7
  var output = { pass: pass };
@@ -1 +1 @@
1
- "use strict";var n=require("n4s"),t=require("vest-utils");function r(n,t){return n={pass:n},t&&(n.message=t),n}function u(n){return t.defaultTo(n,r(!0))}function e(n,t){try{return n.run(t)}catch(n){return r(!1)}}module.exports=function(){function r(r){return n.ctx.run({value:r},(function(){return u(t.mapFirst(s,(function(n,t){t(!(n=e(n,r)).pass,n)})))}))}for(var s=[],i=0;i<arguments.length;i++)s[i]=arguments[i];return t.assign((function(n){n=r(n),t.invariant(n.pass,t.StringObject(n.message))}),{run:r,test:function(n){return r(n).pass}})};
1
+ "use strict";var n=require("vest-utils"),t=require("n4s");function r(n,t){return n={pass:n},t&&(n.message=t),n}function u(t){return n.defaultTo(t,r(!0))}function e(n,t){try{return n.run(t)}catch(n){return r(!1)}}module.exports=function(){function r(r){return t.ctx.run({value:r},(function(){return u(n.mapFirst(s,(function(n,t){t(!(n=e(n,r)).pass,n)})))}))}for(var s=[],i=0;i<arguments.length;i++)s[i]=arguments[i];return n.assign((function(t){t=r(t),n.invariant(t.pass,n.StringObject(t.message))}),{run:r,test:function(n){return r(n).pass}})};
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var n4s = require('n4s');
4
3
  var vestUtils = require('vest-utils');
4
+ var n4s = require('n4s');
5
5
 
6
6
  function ruleReturn(pass, message) {
7
7
  var output = { pass: pass };
@@ -1 +1 @@
1
- "use strict";var n=require("n4s"),r=require("vest-utils");function t(n,r){return n={pass:n},r&&(n.message=r),n}function e(){return t(!1)}function u(n){return r.defaultTo(n,e())}function f(n){return r.defaultTo(n,t(!0))}function o(n,r){try{return n.run(r)}catch(n){return e()}}function i(n,r){return n===r}r.bindNot(i);n.enforce.extend({allOf:function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return f(r.mapFirst(t,(function(r,t){t(!(r=o(r,n)).pass,r)})))},anyOf:function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return u(r.mapFirst(t,(function(r,t){t((r=o(r,n)).pass,r)})))},noneOf:function(n){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return f(r.mapFirst(t,(function(r,t){t((r=o(r,n)).pass,e())})))},oneOf:function(n){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];var f=0;return e.some((function(t){if(o(t,n).pass&&f++,r.greaterThan(f,1))return!1})),t(i(f,1))}});
1
+ "use strict";var n=require("vest-utils"),r=require("n4s");function t(n,r){return n={pass:n},r&&(n.message=r),n}function e(){return t(!1)}function u(r){return n.defaultTo(r,e())}function f(r){return n.defaultTo(r,t(!0))}function o(n,r){try{return n.run(r)}catch(n){return e()}}function i(n,r){return n===r}n.bindNot(i);r.enforce.extend({allOf:function(r){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return f(n.mapFirst(t,(function(n,t){t(!(n=o(n,r)).pass,n)})))},anyOf:function(r){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return u(n.mapFirst(t,(function(n,t){t((n=o(n,r)).pass,n)})))},noneOf:function(r){for(var t=[],u=1;u<arguments.length;u++)t[u-1]=arguments[u];return f(n.mapFirst(t,(function(n,t){t((n=o(n,r)).pass,e())})))},oneOf:function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];var f=0;return e.some((function(t){if(o(t,r).pass&&f++,n.greaterThan(f,1))return!1})),t(i(f,1))}});
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var n4s = require('n4s');
6
5
  var vestUtils = require('vest-utils');
6
+ var n4s = require('n4s');
7
7
 
8
8
  function ruleReturn(pass, message) {
9
9
  var output = { pass: pass };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("n4s"),n=require("vest-utils");function e(r,n){return r={pass:r},n&&(r.message=n),r}function t(){return e(!1)}function u(){return e(!0)}function i(r,n){try{return r.run(n)}catch(r){return t()}}function o(n,e){var t,o=function(t){var u=n[t],o=e[t];if(!(t=r.ctx.run({value:u,set:!0,meta:{key:t}},(function(){return i(o,u)}))).pass)return{value:t}};for(t in e){var a=o(t);if("object"==typeof a)return a.value}return u()}r.enforce.extend({isArrayOf:function(e,t){return function(r){return n.defaultTo(r,u())}(n.mapFirst(e,(function(n,e,u){e(!(u=r.ctx.run({value:n,set:!0,meta:{index:u}},(function(){return i(t,n)}))).pass,u)})))},loose:o,optional:function(r,e){return n.isNullish(r)?u():i(e,r)},shape:function(r,e){var i=o(r,e);if(!i.pass)return i;for(var a in r)if(!n.hasOwnProperty(e,a))return t();return u()}}),exports.partial=function(n){var e,t={};for(e in n)t[e]=r.enforce.optional(n[e]);return t};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("vest-utils"),n=require("n4s");function e(r,n){return r={pass:r},n&&(r.message=n),r}function t(){return e(!1)}function u(){return e(!0)}function i(r,n){try{return r.run(n)}catch(r){return t()}}function o(r,e){var t,o=function(t){var u=r[t],o=e[t];if(!(t=n.ctx.run({value:u,set:!0,meta:{key:t}},(function(){return i(o,u)}))).pass)return{value:t}};for(t in e){var a=o(t);if("object"==typeof a)return a.value}return u()}n.enforce.extend({isArrayOf:function(e,t){return function(n){return r.defaultTo(n,u())}(r.mapFirst(e,(function(r,e,u){e(!(u=n.ctx.run({value:r,set:!0,meta:{index:u}},(function(){return i(t,r)}))).pass,u)})))},loose:o,optional:function(n,e){return r.isNullish(n)?u():i(e,n)},shape:function(n,e){var i=o(n,e);if(!i.pass)return i;for(var a in n)if(!r.hasOwnProperty(e,a))return t();return u()}}),exports.partial=function(r){var e,t={};for(e in r)t[e]=n.enforce.optional(r[e]);return t};
@@ -2,59 +2,36 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var vest = require('vest');
5
6
  var vestUtils = require('vest-utils');
6
7
 
7
- var Severity;
8
- (function (Severity) {
9
- Severity["WARNINGS"] = "warnings";
10
- Severity["ERRORS"] = "errors";
11
- })(Severity || (Severity = {}));
12
- var SeverityCount;
13
- (function (SeverityCount) {
14
- SeverityCount["ERROR_COUNT"] = "errorCount";
15
- SeverityCount["WARN_COUNT"] = "warnCount";
16
- })(SeverityCount || (SeverityCount = {}));
17
-
18
- // eslint-disable-next-line max-lines-per-function
19
- function parse(res) {
20
- vestUtils.invariant(res && vestUtils.hasOwnProperty(res, 'valid'), "Vest parser: expected argument at position 0 to be Vest's result object.");
8
+ // eslint-disable-next-line max-statements
9
+ function parse(summary) {
10
+ vestUtils.invariant(summary && vestUtils.hasOwnProperty(summary, 'valid'), "Vest parser: expected argument at position 0 to be Vest's result object.");
11
+ var sel = vest.suiteSelectors(summary);
21
12
  var testedStorage = {};
22
13
  var selectors = {
23
- invalid: hasErrors,
14
+ invalid: sel.hasErrors,
24
15
  tested: isTested,
25
16
  untested: isUntested,
26
- valid: isValid,
27
- warning: hasWarnings
17
+ valid: sel.isValid,
18
+ warning: sel.hasWarnings
28
19
  };
29
20
  return selectors;
21
+ // Booleans
30
22
  function isTested(fieldName) {
31
23
  if (!fieldName) {
32
- return vestUtils.isPositive(res.testCount);
24
+ return vestUtils.isPositive(summary.testCount);
33
25
  }
34
26
  if (vestUtils.hasOwnProperty(testedStorage, fieldName))
35
27
  return testedStorage[fieldName];
36
28
  testedStorage[fieldName] =
37
- vestUtils.hasOwnProperty(res.tests, fieldName) &&
38
- vestUtils.isPositive(res.tests[fieldName].testCount);
29
+ vestUtils.hasOwnProperty(summary.tests, fieldName) &&
30
+ vestUtils.isPositive(summary.tests[fieldName].testCount);
39
31
  return selectors.tested(fieldName);
40
32
  }
41
33
  function isUntested(fieldName) {
42
- return res.testCount === 0 || !selectors.tested(fieldName);
43
- }
44
- function isValid(fieldName) {
45
- var _a;
46
- return fieldName ? Boolean((_a = res.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : res.valid;
47
- }
48
- function hasWarnings(fieldName) {
49
- return hasFailures(SeverityCount.WARN_COUNT, fieldName);
50
- }
51
- function hasErrors(fieldName) {
52
- return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
53
- }
54
- function hasFailures(countKey, fieldName) {
55
- var _a;
56
- var failureCount = vestUtils.defaultTo(fieldName ? (_a = res.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[countKey] : res[countKey], 0);
57
- return vestUtils.isPositive(failureCount);
34
+ return !(vestUtils.isPositive(summary.testCount) && selectors.tested(fieldName));
58
35
  }
59
36
  }
60
37
 
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t,e,r,n=require("vest-utils");(e=t||(t={})).WARNINGS="warnings",e.ERRORS="errors",function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(r||(r={})),exports.parse=function(t){function e(e,r){var s;return e=n.defaultTo(r?null===(s=t.tests[r])||void 0===s?void 0:s[e]:t[e],0),n.isPositive(e)}n.invariant(t&&n.hasOwnProperty(t,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var s={},i={invalid:function(t){return e(r.ERROR_COUNT,t)},tested:function(e){return e?n.hasOwnProperty(s,e)?s[e]:(s[e]=n.hasOwnProperty(t.tests,e)&&n.isPositive(t.tests[e].testCount),i.tested(e)):n.isPositive(t.testCount)},untested:function(e){return 0===t.testCount||!i.tested(e)},valid:function(e){var r;return e?!(null===(r=t.tests[e])||void 0===r||!r.valid):t.valid},warning:function(t){return e(r.WARN_COUNT,t)}};return i};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("vest"),e=require("vest-utils");exports.parse=function(s){e.invariant(s&&e.hasOwnProperty(s,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var r=t.suiteSelectors(s),i={},n={invalid:r.hasErrors,tested:function(t){return t?e.hasOwnProperty(i,t)?i[t]:(i[t]=e.hasOwnProperty(s.tests,t)&&e.isPositive(s.tests[t].testCount),n.tested(t)):e.isPositive(s.testCount)},untested:function(t){return!(e.isPositive(s.testCount)&&n.tested(t))},valid:r.isValid,warning:r.hasWarnings};return n};
@@ -65,7 +65,7 @@ function generateIsolate(type, path) {
65
65
  var context = context$1.createContext(function (ctxRef, parentContext) {
66
66
  return parentContext
67
67
  ? null
68
- : vestUtils.assign({}, {
68
+ : vestUtils.assign({
69
69
  exclusion: {
70
70
  tests: {},
71
71
  groups: {}
@@ -156,7 +156,7 @@ var VestTest = /** @class */ (function () {
156
156
  function VestTest(fieldName, testFn, _a) {
157
157
  var _b = _a === void 0 ? {} : _a, message = _b.message, groupName = _b.groupName, key = _b.key;
158
158
  this.key = null;
159
- this.id = vestUtils.genId();
159
+ this.id = vestUtils.seq();
160
160
  this.severity = TestSeverity.Error;
161
161
  this.status = STATUS_UNTESTED;
162
162
  this.fieldName = fieldName;
@@ -601,11 +601,6 @@ function missingTestsLogic(testObject, fieldName) {
601
601
  testObject.isOmitted());
602
602
  }
603
603
 
604
- function useSummary() {
605
- var summary = context.useX().summary;
606
- vestUtils.invariant(summary);
607
- return summary;
608
- }
609
604
  /**
610
605
  * Reads the testObjects list and gets full validation result from it.
611
606
  */
@@ -717,57 +712,85 @@ function collectAll(testGroup, severityKey) {
717
712
  return output;
718
713
  }
719
714
 
720
- function getErrors(fieldName) {
721
- return getFailures(Severity.ERRORS, fieldName);
722
- }
723
- function getWarnings(fieldName) {
724
- return getFailures(Severity.WARNINGS, fieldName);
715
+ // eslint-disable-next-line max-lines-per-function, max-statements
716
+ function suiteSelectors(summary) {
717
+ var selectors = {
718
+ getErrors: getErrors,
719
+ getErrorsByGroup: getErrorsByGroup,
720
+ getWarnings: getWarnings,
721
+ getWarningsByGroup: getWarningsByGroup,
722
+ hasErrors: hasErrors,
723
+ hasErrorsByGroup: hasErrorsByGroup,
724
+ hasWarnings: hasWarnings,
725
+ hasWarningsByGroup: hasWarningsByGroup,
726
+ isValid: isValid,
727
+ isValidByGroup: isValidByGroup
728
+ };
729
+ return selectors;
730
+ // Booleans
731
+ function isValid(fieldName) {
732
+ var _a;
733
+ return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
734
+ }
735
+ function isValidByGroup(groupName, fieldName) {
736
+ var group = summary.groups[groupName];
737
+ if (!group) {
738
+ return false;
739
+ }
740
+ if (fieldName) {
741
+ return isFieldValid(group, fieldName);
742
+ }
743
+ for (var fieldName_1 in group) {
744
+ if (!isFieldValid(group, fieldName_1)) {
745
+ return false;
746
+ }
747
+ }
748
+ return true;
749
+ }
750
+ function hasWarnings(fieldName) {
751
+ return hasFailures(summary, SeverityCount.WARN_COUNT, fieldName);
752
+ }
753
+ function hasErrors(fieldName) {
754
+ return hasFailures(summary, SeverityCount.ERROR_COUNT, fieldName);
755
+ }
756
+ function hasWarningsByGroup(groupName, fieldName) {
757
+ return hasFailuresByGroup(summary, SeverityCount.WARN_COUNT, groupName, fieldName);
758
+ }
759
+ function hasErrorsByGroup(groupName, fieldName) {
760
+ return hasFailuresByGroup(summary, SeverityCount.ERROR_COUNT, groupName, fieldName);
761
+ }
762
+ function getWarnings(fieldName) {
763
+ return getFailures(summary, Severity.WARNINGS, fieldName);
764
+ }
765
+ function getErrors(fieldName) {
766
+ return getFailures(summary, Severity.ERRORS, fieldName);
767
+ }
768
+ function getErrorsByGroup(groupName, fieldName) {
769
+ return getFailuresByGroup(summary, Severity.ERRORS, groupName, fieldName);
770
+ }
771
+ function getWarningsByGroup(groupName, fieldName) {
772
+ return getFailuresByGroup(summary, Severity.WARNINGS, groupName, fieldName);
773
+ }
725
774
  }
726
- /**
727
- * @returns suite or field's errors or warnings.
728
- */
729
- function getFailures(severityKey, fieldName) {
730
- var summary = useSummary();
775
+ // Gathers all failures of a given severity
776
+ // With a fieldName, it will only gather failures for that field
777
+ function getFailures(summary, severityKey, fieldName) {
731
778
  return gatherFailures(summary.tests, severityKey, fieldName);
732
779
  }
733
-
734
- function getErrorsByGroup(groupName, fieldName) {
735
- return getFailuresByGroup(groupName, Severity.ERRORS, fieldName);
736
- }
737
- function getWarningsByGroup(groupName, fieldName) {
738
- return getFailuresByGroup(groupName, Severity.WARNINGS, fieldName);
739
- }
740
- function getFailuresByGroup(groupName, severityKey, fieldName) {
741
- var summary = useSummary();
780
+ // Gathers all failures of a given severity within a group
781
+ // With a fieldName, it will only gather failures for that field
782
+ function getFailuresByGroup(summary, severityKey, groupName, fieldName) {
742
783
  return gatherFailures(summary.groups[groupName], severityKey, fieldName);
743
784
  }
744
-
745
- function hasErrors(fieldName) {
746
- return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
747
- }
748
- function hasWarnings(fieldName) {
749
- return hasFailures(SeverityCount.WARN_COUNT, fieldName);
750
- }
751
- function hasFailures(severityCount, fieldName) {
785
+ // Checks if a field is valid within a container object - can be within a group or top level
786
+ function isFieldValid(testContainer, fieldName) {
752
787
  var _a;
753
- var summary = useSummary();
754
- if (fieldName) {
755
- return vestUtils.isPositive((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
756
- }
757
- return vestUtils.isPositive(summary[severityCount]);
758
- }
759
-
760
- function hasErrorsByGroup(groupName, fieldName) {
761
- return hasFailuresByGroup(Severity.ERRORS, groupName, fieldName);
762
- }
763
- function hasWarningsByGroup(groupName, fieldName) {
764
- return hasFailuresByGroup(Severity.WARNINGS, groupName, fieldName);
788
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
765
789
  }
766
- // eslint-disable-next-line max-statements
767
- function hasFailuresByGroup(severityKey, groupName, fieldName) {
790
+ // Checks if a there are any failures of a given severity within a group
791
+ // If a fieldName is provided, it will only check for failures within that field
792
+ function hasFailuresByGroup(summary, severityCount, groupName, fieldName) {
768
793
  var _a, _b;
769
- var summary = useSummary();
770
- var severityCount = countKeyBySeverity(severityKey);
771
794
  var group = summary.groups[groupName];
772
795
  if (!group) {
773
796
  return false;
@@ -782,32 +805,14 @@ function hasFailuresByGroup(severityKey, groupName, fieldName) {
782
805
  }
783
806
  return false;
784
807
  }
785
-
786
- function isValid(fieldName) {
787
- var summary = useSummary();
788
- return fieldName
789
- ? Boolean(isFieldValid(summary.tests, fieldName))
790
- : summary.valid;
791
- }
792
- function isValidByGroup(groupName, fieldName) {
793
- var summary = useSummary();
794
- var group = summary.groups[groupName];
795
- if (!group) {
796
- return false;
797
- }
798
- if (fieldName) {
799
- return isFieldValid(group, fieldName);
800
- }
801
- for (var fieldName_1 in group) {
802
- if (!isFieldValid(group, fieldName_1)) {
803
- return false;
804
- }
805
- }
806
- return true;
807
- }
808
- function isFieldValid(testContainer, fieldName) {
808
+ // Checks if there are any failures of a given severity
809
+ // If a fieldName is provided, it will only check for failures within that field
810
+ function hasFailures(summary, countKey, fieldName) {
809
811
  var _a;
810
- return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
812
+ var failureCount = fieldName
813
+ ? (_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[countKey]
814
+ : summary[countKey] || 0;
815
+ return vestUtils.isPositive(failureCount);
811
816
  }
812
817
 
813
818
  var cache$1 = vestUtils.cache(1);
@@ -817,18 +822,7 @@ function produceSuiteResult() {
817
822
  return cache$1([testObjects], context.bind(ctxRef, function () {
818
823
  var summary = genTestsSummary();
819
824
  var suiteName = useSuiteName();
820
- var ref = { summary: summary };
821
- return vestUtils.assign(summary, {
822
- getErrors: context.bind(ref, getErrors),
823
- getErrorsByGroup: context.bind(ref, getErrorsByGroup),
824
- getWarnings: context.bind(ref, getWarnings),
825
- getWarningsByGroup: context.bind(ref, getWarningsByGroup),
826
- hasErrors: context.bind(ref, hasErrors),
827
- hasErrorsByGroup: context.bind(ref, hasErrorsByGroup),
828
- hasWarnings: context.bind(ref, hasWarnings),
829
- hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
830
- isValid: context.bind(ref, isValid),
831
- isValidByGroup: context.bind(ref, isValidByGroup),
825
+ return vestUtils.assign(summary, suiteSelectors(summary), {
832
826
  suiteName: suiteName
833
827
  });
834
828
  }));
@@ -847,7 +841,7 @@ function hasRemainingTests(fieldName) {
847
841
  return matchingFieldName(testObject, fieldName);
848
842
  });
849
843
  }
850
- return vestUtils.isNotEmpty(allIncomplete);
844
+ return true;
851
845
  }
852
846
 
853
847
  var cache = vestUtils.cache(20);
@@ -864,10 +858,10 @@ function produceFullResult() {
864
858
  * DONE is here and not in its own module to prevent circular dependency issues.
865
859
  */
866
860
  function shouldSkipDoneRegistration(callback, fieldName, output) {
861
+ var _a;
867
862
  // If we do not have any test runs for the current field
868
863
  return !!(!vestUtils.isFunction(callback) ||
869
- (fieldName &&
870
- (!output.tests[fieldName] || vestUtils.isEmpty(output.tests[fieldName].testCount))));
864
+ (fieldName && vestUtils.numberEquals((_a = output.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.testCount, 0)));
871
865
  }
872
866
  function shouldRunDoneCallback(fieldName) {
873
867
  // is suite finished || field name exists, and test is finished;
@@ -1042,7 +1036,7 @@ function create() {
1042
1036
  // State initialization
1043
1037
  var state = createState();
1044
1038
  // State reference - this holds the actual state values
1045
- var stateRef = createStateRef(state, { suiteId: vestUtils.genId(), suiteName: suiteName });
1039
+ var stateRef = createStateRef(state, { suiteId: vestUtils.seq(), suiteName: suiteName });
1046
1040
  // Create base context reference. All hooks will derive their data from this
1047
1041
  var ctxRef = { stateRef: stateRef, bus: bus };
1048
1042
  var suite = vestUtils.assign(
@@ -1156,7 +1150,7 @@ skip.group = function (item) {
1156
1150
  return addTo(1 /* ExclusionGroup.SKIP */, 'groups', item);
1157
1151
  };
1158
1152
  //Checks whether a certain test profile excluded by any of the exclusion groups.
1159
- // eslint-disable-next-line complexity, max-statements, max-lines-per-function
1153
+ // eslint-disable-next-line complexity, max-statements
1160
1154
  function isExcluded(testObject) {
1161
1155
  var fieldName = testObject.fieldName, groupName = testObject.groupName;
1162
1156
  if (isExcludedIndividually())
@@ -1618,7 +1612,6 @@ function registerTestObjectByTier(testObject) {
1618
1612
  }
1619
1613
 
1620
1614
  /* eslint-disable jest/valid-title */
1621
- // eslint-disable-next-line max-lines-per-function
1622
1615
  function bindTestMemo(test) {
1623
1616
  var cache = vestUtils.cache(10); // arbitrary cache size
1624
1617
  // eslint-disable-next-line max-statements
@@ -1689,7 +1682,7 @@ function warn() {
1689
1682
  ctx.currentTest.warn();
1690
1683
  }
1691
1684
 
1692
- var VERSION = "4.4.3-dev-c786f7";
1685
+ var VERSION = "4.5.0-dev-9b46fb";
1693
1686
 
1694
1687
  Object.defineProperty(exports, 'enforce', {
1695
1688
  enumerable: true,
@@ -1709,5 +1702,6 @@ exports.only = only;
1709
1702
  exports.optional = optional;
1710
1703
  exports.skip = skip;
1711
1704
  exports.skipWhen = skipWhen;
1705
+ exports.suiteSelectors = suiteSelectors;
1712
1706
  exports.test = test;
1713
1707
  exports.warn = warn;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,t,e,r=require("n4s"),i=require("vest-utils"),u=require("context");function o(){var n=0;return{current:function(){return n},next:function(){n++}}}function s(n,t){return void 0===t&&(t=[]),{cursor:o(),keys:{current:{},prev:{}},path:t,type:n}}(t=n||(n={}))[t.DEFAULT=0]="DEFAULT",t[t.SUITE=1]="SUITE",t[t.EACH=2]="EACH",t[t.SKIP_WHEN=3]="SKIP_WHEN",t[t.OMIT_WHEN=4]="OMIT_WHEN",t[t.GROUP=5]="GROUP",function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(e||(e={}));var a=u.createContext((function(t,r){return r?null:i.assign({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:s(n.DEFAULT),mode:[e.ALL]},t)}));function c(){return a.useX().stateRef}function f(){return c().suiteId()[0]}function l(){return c().testCallbacks()}function p(n){return d()[0][n]}function d(){return c().optionalFields()}function v(n,t){(0,d()[1])((function(e){var r;return i.assign(e,((r={})[n]=i.optionalFunctionValue(t,e[n]),r))}))}function E(n){var t;return null===(t=p(n))||void 0===t?void 0:t[0]}function g(){return c().testObjects()}function h(){N((function(n){return n}))}function N(n){(0,g()[1])((function(t){return{prev:t.prev,current:i.asArray(n(t.current))}}))}function y(){return R().filter((function(n){return n.isPending()}))}var m,S=i.cache();function R(){var n=g()[0].current;return S([n],(function(){return i.nestedArray.flatten(n)}))}function T(n){R().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(m||(m={}));var A,C,b=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.genId(),this.severity=m.Error,this.status=I,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){(function(n,t){return i.isUndefined(n)&&i.isStringValue(t)})(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==L||(this.status=n)},n.prototype.warns=function(){return this.severity===m.Warning},n.prototype.setPending=function(){this.setStatus(P)},n.prototype.fail=function(){this.setStatus(this.warns()?O:F)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(k)},n.prototype.warn=function(){this.severity=m.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(_)},n.prototype.cancel=function(){this.setStatus(x),h()},n.prototype.reset=function(){this.status=I,h()},n.prototype.omit=function(){this.setStatus(L)},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(P)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(L)},n.prototype.isUntested=function(){return this.statusEquals(I)},n.prototype.isFailing=function(){return this.statusEquals(F)},n.prototype.isCanceled=function(){return this.statusEquals(x)},n.prototype.isSkipped=function(){return this.statusEquals(_)},n.prototype.isPassing=function(){return this.statusEquals(k)},n.prototype.isWarning=function(){return this.statusEquals(O)},n.prototype.statusEquals=function(n){return this.status===n},n}(),I="UNTESTED",_="SKIPPED",F="FAILED",O="WARNING",k="PASSING",P="PENDING",x="CANCELED",L="OMITTED";function U(n){function t(n,t,u){return r.references.push(),e(n,i.optionalFunctionValue(t,u)),function(){return[r.references[n],function(t){return e(n,i.optionalFunctionValue(t,r.references[n]))}]}}function e(t,e){var o=r.references[t];r.references[t]=e,t=u[t][1],i.isFunction(t)&&t(e,o),i.isFunction(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 W(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(){return a.useX().isolate}function G(){var n=V();return n.path.concat(n.cursor.current())}function w(){return V().cursor}function D(t,e){t=void 0===(t=t.type)?n.DEFAULT:t,i.invariant(i.isFunction(e));var r=s(t,G());return t=a.run({isolate:r},(function(){return r.keys.prev=function(){var n=g()[0].prev;return i.asArray(i.nestedArray.getCurrent(n,G())).reduce((function(n,t){return t instanceof b&&!i.isNullish(t.key)?(n[t.key]=t,n):n}),{})}(),N((function(n){return i.nestedArray.setValueAtPath(n,r.path,[])})),e()})),w().next(),t}function X(n){return n===A.ERRORS?C.ERROR_COUNT:C.WARN_COUNT}function H(n,t){return!!t&&!K(n,t)}function K(n,t){return!(!t||n.fieldName!==t)}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(A||(A={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(C||(C={}));var q=i.bindNot((function(n,t){return n.groupName===t}));function M(n){return function(n,t){return R().some((function(e){return B(e,n,t)}))}(A.ERRORS,n)}function B(n,t,e){return!(!n.hasFailures()||H(n,e)||function(n,t){return i.either(n===A.WARNINGS,t.warns())}(t,n))}function j(n){if(J(n))return!0;if(M(n))return!1;var t=R();return!i.isEmpty(t)&&!function(n){return i.isNotEmpty(y().filter((function(t){return z(t,n)})))}(n)&&function(n){return R().every((function(t){return!!H(t,n)||Q(t,n)}))}(n)}function Y(n,t){return!!J(t)||!function(n,t,e){return R().some((function(r){return!q(r,t)&&B(r,n,e)}))}(A.ERRORS,n,t)&&!function(n,t){return i.isNotEmpty(y().filter((function(e){return!q(e,n)&&z(e,t)})))}(n,t)&&function(n,t){return R().every((function(e){return!!q(e,n)||Q(e,t)}))}(n,t)}function J(n){return!!n&&!0===function(n){var t;return null===(t=p(n))||void 0===t?void 0:t[1]}(n)}function z(n,t){return!H(n,t)&&!0!==E(n.fieldName)}function Q(n,t){return!!H(n,t)||(!0===E(n.fieldName)||n.isTested()||n.isOmitted())}function Z(){var n=a.useX().summary;return i.invariant(n),n}function $(){var n=R(),t=i.assign({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){return function(n,t){n[t.fieldName]=nn(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&j(t.fieldName)}(n.tests,t),function(n,t){var e=t.groupName;e&&(n[e]=n[e]||{},n[e][t.fieldName]=nn(n[e],t),n[e][t.fieldName].valid=!1!==n[e][t.fieldName].valid&&Y(e,t.fieldName))}(n.groups,t),n}),t),t.valid=j(),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 nn(n,t){function e(n){var t=X(n);o[t]++,u&&(o[n]=(o[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||i.assign({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var o=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(A.ERRORS):t.isWarning()&&e(A.WARNINGS)),o}function tn(n,t,e){return e?function(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}(n,t,e):function(n,t){var e,r={},u=X(t);for(e in n)i.isPositive(n[e][u])&&(r[e]=n[e][t]||[]);return r}(n,t)}function en(n){return un(A.ERRORS,n)}function rn(n){return un(A.WARNINGS,n)}function un(n,t){return tn(Z().tests,n,t)}function on(n,t){return an(n,A.ERRORS,t)}function sn(n,t){return an(n,A.WARNINGS,t)}function an(n,t,e){return tn(Z().groups[n],t,e)}function cn(n){return ln(C.ERROR_COUNT,n)}function fn(n){return ln(C.WARN_COUNT,n)}function ln(n,t){var e,r=Z();return t?i.isPositive(null===(e=r.tests[t])||void 0===e?void 0:e[n]):i.isPositive(r[n])}function pn(n,t){return vn(A.ERRORS,n,t)}function dn(n,t){return vn(A.WARNINGS,n,t)}function vn(n,t,e){var r,u,o=Z();if(n=X(n),!(t=o.groups[t]))return!1;if(e)return i.isPositive(null===(r=t[e])||void 0===r?void 0:r[n]);for(var s in t)if(i.isPositive(null===(u=t[s])||void 0===u?void 0:u[n]))return!0;return!1}function En(n){var t=Z();return n?!!hn(t.tests,n):t.valid}function gn(n,t){if(!(n=Z().groups[n]))return!1;if(t)return hn(n,t);for(var e in n)if(!hn(n,e))return!1;return!0}function hn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}var Nn=i.cache(1);function yn(){var n=R(),t={stateRef:c()};return Nn([n],a.bind(t,(function(){var n=$(),t=c().suiteName()[0],e={summary:n};return i.assign(n,{getErrors:a.bind(e,en),getErrorsByGroup:a.bind(e,on),getWarnings:a.bind(e,rn),getWarningsByGroup:a.bind(e,sn),hasErrors:a.bind(e,cn),hasErrorsByGroup:a.bind(e,pn),hasWarnings:a.bind(e,fn),hasWarningsByGroup:a.bind(e,dn),isValid:a.bind(e,En),isValidByGroup:a.bind(e,gn),suiteName:t})})))}function mn(n){var t=y();return!i.isEmpty(t)&&(n?t.some((function(t){return K(t,n)})):i.isNotEmpty(t))}var Sn=i.cache(20);function Rn(){var n=R(),t={stateRef:c()};return Sn([n],a.bind(t,(function(){return i.assign({},yn(),{done:a.bind(t,bn)})})))}function Tn(n,t,e){return!(i.isFunction(n)&&(!t||e.tests[t]&&!i.isEmpty(e.tests[t].testCount)))}function An(n){return!(mn()&&(!n||mn(n)))}var Cn,bn=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=Rn(),Tn(e,n,t))return t;var r=function(){return e(yn())};return An(n)?(r(),t):(In(r,n),t)};function In(n,t){(0,l()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function _n(){var n=i.bus.createBus();return n.on(Cn.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=l()[0].fieldCallbacks;n&&!mn(n)&&i.isArray(t[n])&&i.callEach(t[n])}(t.fieldName),mn()||n.emit(Cn.ALL_RUNNING_TESTS_FINISHED))})),n.on(Cn.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),v(n.fieldName,(function(n){return[n[0],!0]})))}var t=d()[0];if(!i.isEmpty(t)){var e={};N((function(t){return i.nestedArray.transform(t,(function(t){if(i.hasOwnProperty(e,t.fieldName))n(t);else{var r=E(t.fieldName);i.isFunction(r)&&(e[t.fieldName]=r(),n(t))}return t}))}))}}()})),n.on(Cn.ALL_RUNNING_TESTS_FINISHED,(function(){!function(){var n=l()[0].doneCallbacks;i.callEach(n)}()})),n.on(Cn.REMOVE_FIELD,(function(n){T((function(t){K(t,n)&&(t.cancel(),function(n){N((function(t){return i.nestedArray.transform(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Cn.RESET_FIELD,(function(n){T((function(t){K(t,n)&&t.reset()}))})),n}function Fn(){var n=a.useX();return i.invariant(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"}(Cn||(Cn={}));function On(){return!!a.useX().skipped}function kn(n){return Ln(0,"tests",n)}function Pn(n){return Ln(1,"tests",n)}function xn(n){var t=n.fieldName;if(n=n.groupName,On())return!0;var e=a.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,o=u[t];if(!1===o)return!0;if(o=!0===o,n){if(function(n){var t=a.useX().exclusion.groups;return i.hasOwnProperty(t,n)?!1===t[n]:Wn()}(n))return!0;if(!0===r.groups[n])return!o&&(!!Un(u)||!1===u[t])}return!!function(n){return!!Wn()&&!n}(n)||!o&&(!!Un(u)&&!i.optionalFunctionValue(e[t]))}function Ln(n,t,e){var r=a.useX("hook called outside of a running suite.");e&&i.asArray(e).forEach((function(e){i.isStringValue(e)&&(r.exclusion[t][e]=0===n)}))}function Un(n){for(var t in n)if(!0===n[t])return!0;return!1}function Wn(){var n,t=a.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function Vn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Gn(n){return function(n){return a.useX().mode[0]===n}(e.EAGER)&&M(n.fieldName)}function wn(){return!!a.useX().omitted}function Dn(n,t,e){if(e||2===arguments.length)for(var r,i=0,u=t.length;i<u;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return n.concat(r||Array.prototype.slice.call(t))}function Xn(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function Hn(n){var t=n.asyncTest,e=n.message;if(i.isPromise(t)){var r=Fn().emit,u=c(),o=a.bind({stateRef:u},(function(){h(),r(Cn.TEST_COMPLETED,n)}));u=a.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=i.isStringValue(t)?t:e,n.fail(),o())}));try{t.then(o,u)}catch(n){u()}}}function Kn(n){var t=Fn(),e=function(n){return a.run({currentTest:n},(function(){return n.run()}))}(n);try{i.isPromise(e)?(n.asyncTest=e,n.setPending(),Hn(n)):t.emit(Cn.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 qn(t){var e=g()[0].prev;return i.isEmpty(e)?(Mn(t),t):(e=function(n){var t=G();return i.nestedArray.valueAtPath(n,t)}(e),i.isNullish(t.key)?(function(n,t){return i.isNotEmpty(n)&&!Xn(n,t)}(e,t)&&(function(t,e){V().type===n.EACH||i.deferThrow("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.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,t),function(){var n=w().current();N((function(t){return t.splice(n),t}))}(),e=null),Mn(t=i.defaultTo(e,t)),t):(Mn(t=function(n,t){var e=function(n){return V().keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=V().keys.current;i.isNullish(e[n])?e[n]=t:i.deferThrow('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}(t.key,t)),t))}function Mn(n){var t=G();N((function(e){return i.nestedArray.setValueAtPath(e,t,n)}))}function Bn(n){var t=w();if(Gn(n))return n.skip(),qn(n),t.next(),n;var e=qn(n);return wn()?(e.omit(),t.next(),e):xn(n)?(e.skip(On()),t.next(),e):(function(n,t){t!==n&&Xn(n,t)&&n.isPending()&&n.cancel()}(e,n),Mn(n),function(n){n.isUntested()?Kn(n):i.isPromise(n.asyncTest)&&(n.setPending(),Hn(n))}(n),t.next(),n)}function jn(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=i.isFunction(t[1])?t:Dn([void 0],t,!0);t=r[0],e=r[1],r=r[2],i.invariant(i.isStringValue(n),Jn("fieldName","string")),i.invariant(i.isFunction(e),Jn("Test callback","function"));var u=a.useX();return Bn(t=new b(n,e,{message:t,groupName:u.groupName,key:r}))}kn.group=function(n){return Ln(0,"groups",n)},Pn.group=function(n){return Ln(1,"groups",n)},i.bindNot(i.isStringValue);var Yn=i.assign(jn,{memo:function(n){var t=i.cache(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=w().current();var o=(r=r.reverse())[0],s=r[1],a=r[2];return u=[f(),e,u].concat(o),r=t.get(u),i.isNull(r)?t(u,(function(){return n(e,a,s)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,a,s)}))):Bn(r[1])}}(jn)});function Jn(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 r.enforce}}),exports.VERSION="4.4.3-dev-c786f7",exports.context=a,exports.create=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r=(t=t.reverse())[0];t=t[1],i.invariant(i.isFunction(r),"vest.create: Expected callback to be a function.");var u=_n(),o=U();return t={stateRef:W(o,{suiteId:i.genId(),suiteName:t}),bus:u},i.assign(a.bind(t,(function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return o.reset(),D({type:n.SUITE},(function(){r.apply(void 0,t)})),u.emit(Cn.SUITE_CALLBACK_DONE_RUNNING),Rn()})),{get:a.bind(t,yn),remove:a.bind(t,(function(n){u.emit(Cn.REMOVE_FIELD,n)})),reset:o.reset,resetField:a.bind(t,(function(n){u.emit(Cn.RESET_FIELD,n)}))})},exports.each=function(t,e){i.invariant(i.isFunction(e),"each callback must be a function"),D({type:n.EACH},(function(){t.forEach((function(n,t){e(n,t)}))}))},exports.eager=function(){!function(n){a.useX().mode[0]=n}(e.EAGER)},exports.group=function(t,e){i.invariant(i.isStringValue(t),Vn("name must be a string")),i.invariant(i.isFunction(e),Vn("callback must be a function")),D({type:n.GROUP},(function(){a.run({groupName:t},e)}))},exports.include=function(n){var t=a.useX(),e=t.inclusion;return t=t.exclusion,i.invariant(i.isStringValue(n)),e[n]=i.defaultTo(t.tests[n],!0),{when:function(t){var e=a.useX(),r=e.exclusion;e.inclusion[n]=function(){return i.hasOwnProperty(r.tests,n)?i.defaultTo(r.tests[n],!0):i.isStringValue(t)?!!r.tests[t]:i.optionalFunctionValue(t,i.optionalFunctionValue(yn))}}}},exports.omitWhen=function(t,e){D({type:n.OMIT_WHEN},(function(){a.run({omitted:wn()||i.optionalFunctionValue(t,i.optionalFunctionValue(yn))},(function(){return e()}))}))},exports.only=kn,exports.optional=function(n){if(i.isArray(n)||i.isStringValue(n))i.asArray(n).forEach((function(n){v(n,[!0,!1])}));else for(var t in n)v(t,[n[t],!1])},exports.skip=Pn,exports.skipWhen=function(t,e){D({type:n.SKIP_WHEN},(function(){a.run({skipped:On()||i.optionalFunctionValue(t,i.optionalFunctionValue(yn))},(function(){return e()}))}))},exports.test=Yn,exports.warn=function(){var n=a.useX("warn hook called outside of a running suite.");i.invariant(n.currentTest,"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"),i=require("vest-utils"),u=require("context");function o(){var n=0;return{current:function(){return n},next:function(){n++}}}function s(n,t){return void 0===t&&(t=[]),{cursor:o(),keys:{current:{},prev:{}},path:t,type:n}}(t=n||(n={}))[t.DEFAULT=0]="DEFAULT",t[t.SUITE=1]="SUITE",t[t.EACH=2]="EACH",t[t.SKIP_WHEN=3]="SKIP_WHEN",t[t.OMIT_WHEN=4]="OMIT_WHEN",t[t.GROUP=5]="GROUP",function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(e||(e={}));var a=u.createContext((function(t,r){return r?null:i.assign({exclusion:{tests:{},groups:{}},inclusion:{},isolate:s(n.DEFAULT),mode:[e.ALL]},t)}));function c(){return a.useX().stateRef}function f(){return c().suiteId()[0]}function l(){return c().testCallbacks()}function p(n){return d()[0][n]}function d(){return c().optionalFields()}function v(n,t){(0,d()[1])((function(e){var r;return i.assign(e,((r={})[n]=i.optionalFunctionValue(t,e[n]),r))}))}function E(n){var t;return null===(t=p(n))||void 0===t?void 0:t[0]}function h(){return c().testObjects()}function g(){N((function(n){return n}))}function N(n){(0,h()[1])((function(t){return{prev:t.prev,current:i.asArray(n(t.current))}}))}function y(){return R().filter((function(n){return n.isPending()}))}var m,S=i.cache();function R(){var n=h()[0].current;return S([n],(function(){return i.nestedArray.flatten(n)}))}function T(n){R().forEach(n)}!function(n){n.Error="error",n.Warning="warning"}(m||(m={}));var C,A,_=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.seq(),this.severity=m.Error,this.status=F,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){(function(n,t){return i.isUndefined(n)&&i.isStringValue(t)})(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==L||(this.status=n)},n.prototype.warns=function(){return this.severity===m.Warning},n.prototype.setPending=function(){this.setStatus(P)},n.prototype.fail=function(){this.setStatus(this.warns()?b:I)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(k)},n.prototype.warn=function(){this.severity=m.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(O)},n.prototype.cancel=function(){this.setStatus(x),g()},n.prototype.reset=function(){this.status=F,g()},n.prototype.omit=function(){this.setStatus(L)},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(P)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(L)},n.prototype.isUntested=function(){return this.statusEquals(F)},n.prototype.isFailing=function(){return this.statusEquals(I)},n.prototype.isCanceled=function(){return this.statusEquals(x)},n.prototype.isSkipped=function(){return this.statusEquals(O)},n.prototype.isPassing=function(){return this.statusEquals(k)},n.prototype.isWarning=function(){return this.statusEquals(b)},n.prototype.statusEquals=function(n){return this.status===n},n}(),F="UNTESTED",O="SKIPPED",I="FAILED",b="WARNING",k="PASSING",P="PENDING",x="CANCELED",L="OMITTED";function U(n){function t(n,t,u){return r.references.push(),e(n,i.optionalFunctionValue(t,u)),function(){return[r.references[n],function(t){return e(n,i.optionalFunctionValue(t,r.references[n]))}]}}function e(t,e){var o=r.references[t];r.references[t]=e,t=u[t][1],i.isFunction(t)&&t(e,o),i.isFunction(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 W(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(){return a.useX().isolate}function G(){var n=V();return n.path.concat(n.cursor.current())}function w(){return V().cursor}function D(t,e){t=void 0===(t=t.type)?n.DEFAULT:t,i.invariant(i.isFunction(e));var r=s(t,G());return t=a.run({isolate:r},(function(){return r.keys.prev=function(){var n=h()[0].prev;return i.asArray(i.nestedArray.getCurrent(n,G())).reduce((function(n,t){return t instanceof _&&!i.isNullish(t.key)?(n[t.key]=t,n):n}),{})}(),N((function(n){return i.nestedArray.setValueAtPath(n,r.path,[])})),e()})),w().next(),t}function q(n){return n===C.ERRORS?A.ERROR_COUNT:A.WARN_COUNT}function X(n,t){return!!t&&!H(n,t)}function H(n,t){return!(!t||n.fieldName!==t)}!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(C||(C={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(A||(A={}));var K=i.bindNot((function(n,t){return n.groupName===t}));function M(n){return function(n,t){return R().some((function(e){return B(e,n,t)}))}(C.ERRORS,n)}function B(n,t,e){return!(!n.hasFailures()||X(n,e)||function(n,t){return i.either(n===C.WARNINGS,t.warns())}(t,n))}function j(n){if(J(n))return!0;if(M(n))return!1;var t=R();return!i.isEmpty(t)&&!function(n){return i.isNotEmpty(y().filter((function(t){return z(t,n)})))}(n)&&function(n){return R().every((function(t){return!!X(t,n)||Q(t,n)}))}(n)}function Y(n,t){return!!J(t)||!function(n,t,e){return R().some((function(r){return!K(r,t)&&B(r,n,e)}))}(C.ERRORS,n,t)&&!function(n,t){return i.isNotEmpty(y().filter((function(e){return!K(e,n)&&z(e,t)})))}(n,t)&&function(n,t){return R().every((function(e){return!!K(e,n)||Q(e,t)}))}(n,t)}function J(n){return!!n&&!0===function(n){var t;return null===(t=p(n))||void 0===t?void 0:t[1]}(n)}function z(n,t){return!X(n,t)&&!0!==E(n.fieldName)}function Q(n,t){return!!X(n,t)||(!0===E(n.fieldName)||n.isTested()||n.isOmitted())}function Z(){var n=R(),t=i.assign({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){return function(n,t){n[t.fieldName]=$(n,t),n[t.fieldName].valid=!1!==n[t.fieldName].valid&&j(t.fieldName)}(n.tests,t),function(n,t){var e=t.groupName;e&&(n[e]=n[e]||{},n[e][t.fieldName]=$(n[e],t),n[e][t.fieldName].valid=!1!==n[e][t.fieldName].valid&&Y(e,t.fieldName))}(n.groups,t),n}),t),t.valid=j(),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,t){function e(n){var t=q(n);o[t]++,u&&(o[n]=(o[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||i.assign({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var o=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(C.ERRORS):t.isWarning()&&e(C.WARNINGS)),o}function nn(n,t,e){return e?function(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}(n,t,e):function(n,t){var e,r={},u=q(t);for(e in n)i.isPositive(n[e][u])&&(r[e]=n[e][t]||[]);return r}(n,t)}function tn(n){return{getErrors:function(t){return en(n,C.ERRORS,t)},getErrorsByGroup:function(t,e){return rn(n,C.ERRORS,t,e)},getWarnings:function(t){return en(n,C.WARNINGS,t)},getWarningsByGroup:function(t,e){return rn(n,C.WARNINGS,t,e)},hasErrors:function(t){return sn(n,A.ERROR_COUNT,t)},hasErrorsByGroup:function(t,e){return on(n,A.ERROR_COUNT,t,e)},hasWarnings:function(t){return sn(n,A.WARN_COUNT,t)},hasWarningsByGroup:function(t,e){return on(n,A.WARN_COUNT,t,e)},isValid:function(t){var e;return t?!(null===(e=n.tests[t])||void 0===e||!e.valid):n.valid},isValidByGroup:function(t,e){if(!(t=n.groups[t]))return!1;if(e)return un(t,e);for(var r in t)if(!un(t,r))return!1;return!0}}}function en(n,t,e){return nn(n.tests,t,e)}function rn(n,t,e,r){return nn(n.groups[e],t,r)}function un(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function on(n,t,e,r){var u,o;if(!(n=n.groups[e]))return!1;if(r)return i.isPositive(null===(u=n[r])||void 0===u?void 0:u[t]);for(var s in n)if(i.isPositive(null===(o=n[s])||void 0===o?void 0:o[t]))return!0;return!1}function sn(n,t,e){var r;return n=e?null===(r=n.tests[e])||void 0===r?void 0:r[t]:n[t]||0,i.isPositive(n)}var an=i.cache(1);function cn(){var n=R(),t={stateRef:c()};return an([n],a.bind(t,(function(){var n=Z(),t=c().suiteName()[0];return i.assign(n,tn(n),{suiteName:t})})))}function fn(n){var t=y();return!i.isEmpty(t)&&(!n||t.some((function(t){return H(t,n)})))}var ln=i.cache(20);function pn(){var n=R(),t={stateRef:c()};return ln([n],a.bind(t,(function(){return i.assign({},cn(),{done:a.bind(t,hn)})})))}function dn(n,t,e){var r;return!!(!i.isFunction(n)||t&&i.numberEquals(null===(r=e.tests[t])||void 0===r?void 0:r.testCount,0))}function vn(n){return!(fn()&&(!n||fn(n)))}var En,hn=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=pn(),dn(e,n,t))return t;var r=function(){return e(cn())};return vn(n)?(r(),t):(gn(r,n),t)};function gn(n,t){(0,l()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Nn(){var n=i.bus.createBus();return n.on(En.TEST_COMPLETED,(function(t){t.isCanceled()||(t.done(),function(n){var t=l()[0].fieldCallbacks;n&&!fn(n)&&i.isArray(t[n])&&i.callEach(t[n])}(t.fieldName),fn()||n.emit(En.ALL_RUNNING_TESTS_FINISHED))})),n.on(En.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),v(n.fieldName,(function(n){return[n[0],!0]})))}var t=d()[0];if(!i.isEmpty(t)){var e={};N((function(t){return i.nestedArray.transform(t,(function(t){if(i.hasOwnProperty(e,t.fieldName))n(t);else{var r=E(t.fieldName);i.isFunction(r)&&(e[t.fieldName]=r(),n(t))}return t}))}))}}()})),n.on(En.ALL_RUNNING_TESTS_FINISHED,(function(){!function(){var n=l()[0].doneCallbacks;i.callEach(n)}()})),n.on(En.REMOVE_FIELD,(function(n){T((function(t){H(t,n)&&(t.cancel(),function(n){N((function(t){return i.nestedArray.transform(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(En.RESET_FIELD,(function(n){T((function(t){H(t,n)&&t.reset()}))})),n}function yn(){var n=a.useX();return i.invariant(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"}(En||(En={}));function mn(){return!!a.useX().skipped}function Sn(n){return Cn(0,"tests",n)}function Rn(n){return Cn(1,"tests",n)}function Tn(n){var t=n.fieldName;if(n=n.groupName,mn())return!0;var e=a.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,o=u[t];if(!1===o)return!0;if(o=!0===o,n){if(function(n){var t=a.useX().exclusion.groups;return i.hasOwnProperty(t,n)?!1===t[n]:_n()}(n))return!0;if(!0===r.groups[n])return!o&&(!!An(u)||!1===u[t])}return!!function(n){return!!_n()&&!n}(n)||!o&&(!!An(u)&&!i.optionalFunctionValue(e[t]))}function Cn(n,t,e){var r=a.useX("hook called outside of a running suite.");e&&i.asArray(e).forEach((function(e){i.isStringValue(e)&&(r.exclusion[t][e]=0===n)}))}function An(n){for(var t in n)if(!0===n[t])return!0;return!1}function _n(){var n,t=a.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function Fn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function On(n){return function(n){return a.useX().mode[0]===n}(e.EAGER)&&M(n.fieldName)}function In(){return!!a.useX().omitted}function bn(n,t,e){if(e||2===arguments.length)for(var r,i=0,u=t.length;i<u;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return n.concat(r||Array.prototype.slice.call(t))}function kn(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function Pn(n){var t=n.asyncTest,e=n.message;if(i.isPromise(t)){var r=yn().emit,u=c(),o=a.bind({stateRef:u},(function(){g(),r(En.TEST_COMPLETED,n)}));u=a.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=i.isStringValue(t)?t:e,n.fail(),o())}));try{t.then(o,u)}catch(n){u()}}}function xn(n){var t=yn(),e=function(n){return a.run({currentTest:n},(function(){return n.run()}))}(n);try{i.isPromise(e)?(n.asyncTest=e,n.setPending(),Pn(n)):t.emit(En.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 Ln(t){var e=h()[0].prev;return i.isEmpty(e)?(Un(t),t):(e=function(n){var t=G();return i.nestedArray.valueAtPath(n,t)}(e),i.isNullish(t.key)?(function(n,t){return i.isNotEmpty(n)&&!kn(n,t)}(e,t)&&(function(t,e){V().type===n.EACH||i.deferThrow("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.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,t),function(){var n=w().current();N((function(t){return t.splice(n),t}))}(),e=null),Un(t=i.defaultTo(e,t)),t):(Un(t=function(n,t){var e=function(n){return V().keys.prev[n]}(n);return e&&(t=e),function(n,t){var e=V().keys.current;i.isNullish(e[n])?e[n]=t:i.deferThrow('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}(t.key,t)),t))}function Un(n){var t=G();N((function(e){return i.nestedArray.setValueAtPath(e,t,n)}))}function Wn(n){var t=w();if(On(n))return n.skip(),Ln(n),t.next(),n;var e=Ln(n);return In()?(e.omit(),t.next(),e):Tn(n)?(e.skip(mn()),t.next(),e):(function(n,t){t!==n&&kn(n,t)&&n.isPending()&&n.cancel()}(e,n),Un(n),function(n){n.isUntested()?xn(n):i.isPromise(n.asyncTest)&&(n.setPending(),Pn(n))}(n),t.next(),n)}function Vn(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=i.isFunction(t[1])?t:bn([void 0],t,!0);t=r[0],e=r[1],r=r[2],i.invariant(i.isStringValue(n),wn("fieldName","string")),i.invariant(i.isFunction(e),wn("Test callback","function"));var u=a.useX();return Wn(t=new _(n,e,{message:t,groupName:u.groupName,key:r}))}Sn.group=function(n){return Cn(0,"groups",n)},Rn.group=function(n){return Cn(1,"groups",n)},i.bindNot(i.isStringValue);var Gn=i.assign(Vn,{memo:function(n){var t=i.cache(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=w().current();var o=(r=r.reverse())[0],s=r[1],a=r[2];return u=[f(),e,u].concat(o),r=t.get(u),i.isNull(r)?t(u,(function(){return n(e,a,s)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,a,s)}))):Wn(r[1])}}(Vn)});function wn(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 r.enforce}}),exports.VERSION="4.5.0-dev-9b46fb",exports.context=a,exports.create=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r=(t=t.reverse())[0];t=t[1],i.invariant(i.isFunction(r),"vest.create: Expected callback to be a function.");var u=Nn(),o=U();return t={stateRef:W(o,{suiteId:i.seq(),suiteName:t}),bus:u},i.assign(a.bind(t,(function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return o.reset(),D({type:n.SUITE},(function(){r.apply(void 0,t)})),u.emit(En.SUITE_CALLBACK_DONE_RUNNING),pn()})),{get:a.bind(t,cn),remove:a.bind(t,(function(n){u.emit(En.REMOVE_FIELD,n)})),reset:o.reset,resetField:a.bind(t,(function(n){u.emit(En.RESET_FIELD,n)}))})},exports.each=function(t,e){i.invariant(i.isFunction(e),"each callback must be a function"),D({type:n.EACH},(function(){t.forEach((function(n,t){e(n,t)}))}))},exports.eager=function(){!function(n){a.useX().mode[0]=n}(e.EAGER)},exports.group=function(t,e){i.invariant(i.isStringValue(t),Fn("name must be a string")),i.invariant(i.isFunction(e),Fn("callback must be a function")),D({type:n.GROUP},(function(){a.run({groupName:t},e)}))},exports.include=function(n){var t=a.useX(),e=t.inclusion;return t=t.exclusion,i.invariant(i.isStringValue(n)),e[n]=i.defaultTo(t.tests[n],!0),{when:function(t){var e=a.useX(),r=e.exclusion;e.inclusion[n]=function(){return i.hasOwnProperty(r.tests,n)?i.defaultTo(r.tests[n],!0):i.isStringValue(t)?!!r.tests[t]:i.optionalFunctionValue(t,i.optionalFunctionValue(cn))}}}},exports.omitWhen=function(t,e){D({type:n.OMIT_WHEN},(function(){a.run({omitted:In()||i.optionalFunctionValue(t,i.optionalFunctionValue(cn))},(function(){return e()}))}))},exports.only=Sn,exports.optional=function(n){if(i.isArray(n)||i.isStringValue(n))i.asArray(n).forEach((function(n){v(n,[!0,!1])}));else for(var t in n)v(t,[n[t],!1])},exports.skip=Rn,exports.skipWhen=function(t,e){D({type:n.SKIP_WHEN},(function(){a.run({skipped:mn()||i.optionalFunctionValue(t,i.optionalFunctionValue(cn))},(function(){return e()}))}))},exports.suiteSelectors=tn,exports.test=Gn,exports.warn=function(){var n=a.useX("warn hook called outside of a running suite.");i.invariant(n.currentTest,"warn called outside of a test."),n.currentTest.warn()};