vest 4.4.2-dev-ae93bf → 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 (43) 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 +113 -118
  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 +114 -120
  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 +131 -119
  34. package/dist/umd/vest.production.js +1 -1
  35. package/package.json +4 -4
  36. package/testUtils/__tests__/partition.test.ts +21 -0
  37. package/testUtils/partition.ts +13 -0
  38. package/types/enforce/compose.d.ts +3 -2
  39. package/types/enforce/compounds.d.ts +3 -2
  40. package/types/enforce/schema.d.ts +3 -2
  41. package/types/parser.d.ts +8 -7
  42. package/types/promisify.d.ts +20 -35
  43. package/types/vest.d.ts +45 -60
@@ -249,7 +249,7 @@
249
249
  /**
250
250
  * @returns a unique numeric id.
251
251
  */
252
- var genId = (function (n) { return function () {
252
+ var seq = (function (n) { return function () {
253
253
  return "".concat(n++);
254
254
  }; })(0);
255
255
 
@@ -667,30 +667,47 @@
667
667
 
668
668
  function enforceEager(value) {
669
669
  var target = {};
670
+ // This condition is for when we don't have proxy support (ES5).
671
+ // In this case, we need to manually assign the rules to the target object on runtime.
672
+ // The follow up proxy block is used in case we do have proxy support, and we can assign each rule upon invocation.
670
673
  if (!isProxySupported()) {
674
+ // We iterate over each of the rules, and add them to the target object being return by enforce
671
675
  eachEnforceRule(function (ruleName, ruleFn) {
676
+ // We then wrap the rule with `genRuleCall` that adds the base enforce behavior
672
677
  target[ruleName] = genRuleCall(target, ruleFn, ruleName);
673
678
  });
674
679
  return target;
675
680
  }
681
+ // We create a proxy intercepting access to the target object (which is empty).
676
682
  var proxy = new Proxy(target, {
677
683
  get: function (_, ruleName) {
684
+ // On property access, we identify if it is a rule or not.
678
685
  var rule = getRule(ruleName);
686
+ // If it is a rule, we wrap it with `genRuleCall` that adds the base enforce behavior
679
687
  if (rule) {
680
688
  return genRuleCall(proxy, rule, ruleName);
681
689
  }
682
690
  }
683
691
  });
684
692
  return proxy;
693
+ // This function is used to wrap a rule with the base enforce behavior
694
+ // It takes the target object, the rule function, and the rule name
695
+ // It then returns the rule, in a manner that can be used by enforce
685
696
  function genRuleCall(target, rule, ruleName) {
686
697
  return function ruleCall() {
687
698
  var args = [];
688
699
  for (var _i = 0; _i < arguments.length; _i++) {
689
700
  args[_i] = arguments[_i];
690
701
  }
702
+ // Order of operation:
703
+ // 1. Create a context with the value being enforced
704
+ // 2. Call the rule within the context, and pass over the arguments passed to it
705
+ // 3. Transform the result to the correct output format
691
706
  var transformedResult = ctx.run({ value: value }, function () {
692
707
  return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
693
708
  });
709
+ // On rule failure (the result is false), we either throw an error
710
+ // or throw a string value if the rule has a message defined in it.
694
711
  invariant(transformedResult.pass, isNullish(transformedResult.message)
695
712
  ? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
696
713
  : StringObject(transformedResult.message));
@@ -871,7 +888,7 @@
871
888
  var context = createContext(function (ctxRef, parentContext) {
872
889
  return parentContext
873
890
  ? null
874
- : assign({}, {
891
+ : assign({
875
892
  exclusion: {
876
893
  tests: {},
877
894
  groups: {}
@@ -962,7 +979,7 @@
962
979
  function VestTest(fieldName, testFn, _a) {
963
980
  var _b = _a === void 0 ? {} : _a, message = _b.message, groupName = _b.groupName, key = _b.key;
964
981
  this.key = null;
965
- this.id = genId();
982
+ this.id = seq();
966
983
  this.severity = TestSeverity.Error;
967
984
  this.status = STATUS_UNTESTED;
968
985
  this.fieldName = fieldName;
@@ -1180,6 +1197,26 @@
1180
1197
  };
1181
1198
  }
1182
1199
 
1200
+ /**
1201
+ * @returns {Isolate} The current isolate layer
1202
+ */
1203
+ function useIsolate() {
1204
+ return context.useX().isolate;
1205
+ }
1206
+ /**
1207
+ * @returns {number[]} The current cursor path of the isolate tree
1208
+ */
1209
+ function useCurrentPath() {
1210
+ var isolate = useIsolate();
1211
+ return isolate.path.concat(isolate.cursor.current());
1212
+ }
1213
+ /**
1214
+ * @returns {IsolateCursor} The cursor object for the current isolate
1215
+ */
1216
+ function useCursor() {
1217
+ return useIsolate().cursor;
1218
+ }
1219
+
1183
1220
  function usePrevKeys() {
1184
1221
  var prev = useTestObjects()[0].prev;
1185
1222
  return asArray(getCurrent(prev, useCurrentPath())).reduce(function (prevKeys, testObject) {
@@ -1222,31 +1259,12 @@
1222
1259
  useCursor().next();
1223
1260
  return output;
1224
1261
  }
1225
- /**
1226
- * @returns {Isolate} The current isolate layer
1227
- */
1228
- function useIsolate() {
1229
- return context.useX().isolate;
1230
- }
1231
1262
  /**
1232
1263
  * @returns {boolean} Whether or not the current isolate allows tests to be reordered
1233
1264
  */
1234
1265
  function shouldAllowReorder() {
1235
1266
  return useIsolate().type === IsolateTypes.EACH;
1236
1267
  }
1237
- /**
1238
- * @returns {number[]} The current cursor path of the isolate tree
1239
- */
1240
- function useCurrentPath() {
1241
- var isolate = useIsolate();
1242
- return isolate.path.concat(isolate.cursor.current());
1243
- }
1244
- /**
1245
- * @returns {IsolateCursor} The cursor object for the current isolate
1246
- */
1247
- function useCursor() {
1248
- return useIsolate().cursor;
1249
- }
1250
1268
 
1251
1269
  var Severity;
1252
1270
  (function (Severity) {
@@ -1406,11 +1424,6 @@
1406
1424
  testObject.isOmitted());
1407
1425
  }
1408
1426
 
1409
- function useSummary() {
1410
- var summary = context.useX().summary;
1411
- invariant(summary);
1412
- return summary;
1413
- }
1414
1427
  /**
1415
1428
  * Reads the testObjects list and gets full validation result from it.
1416
1429
  */
@@ -1522,57 +1535,85 @@
1522
1535
  return output;
1523
1536
  }
1524
1537
 
1525
- function getErrors(fieldName) {
1526
- return getFailures(Severity.ERRORS, fieldName);
1527
- }
1528
- function getWarnings(fieldName) {
1529
- return getFailures(Severity.WARNINGS, fieldName);
1538
+ // eslint-disable-next-line max-lines-per-function, max-statements
1539
+ function suiteSelectors(summary) {
1540
+ var selectors = {
1541
+ getErrors: getErrors,
1542
+ getErrorsByGroup: getErrorsByGroup,
1543
+ getWarnings: getWarnings,
1544
+ getWarningsByGroup: getWarningsByGroup,
1545
+ hasErrors: hasErrors,
1546
+ hasErrorsByGroup: hasErrorsByGroup,
1547
+ hasWarnings: hasWarnings,
1548
+ hasWarningsByGroup: hasWarningsByGroup,
1549
+ isValid: isValid,
1550
+ isValidByGroup: isValidByGroup
1551
+ };
1552
+ return selectors;
1553
+ // Booleans
1554
+ function isValid(fieldName) {
1555
+ var _a;
1556
+ return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1557
+ }
1558
+ function isValidByGroup(groupName, fieldName) {
1559
+ var group = summary.groups[groupName];
1560
+ if (!group) {
1561
+ return false;
1562
+ }
1563
+ if (fieldName) {
1564
+ return isFieldValid(group, fieldName);
1565
+ }
1566
+ for (var fieldName_1 in group) {
1567
+ if (!isFieldValid(group, fieldName_1)) {
1568
+ return false;
1569
+ }
1570
+ }
1571
+ return true;
1572
+ }
1573
+ function hasWarnings(fieldName) {
1574
+ return hasFailures(summary, SeverityCount.WARN_COUNT, fieldName);
1575
+ }
1576
+ function hasErrors(fieldName) {
1577
+ return hasFailures(summary, SeverityCount.ERROR_COUNT, fieldName);
1578
+ }
1579
+ function hasWarningsByGroup(groupName, fieldName) {
1580
+ return hasFailuresByGroup(summary, SeverityCount.WARN_COUNT, groupName, fieldName);
1581
+ }
1582
+ function hasErrorsByGroup(groupName, fieldName) {
1583
+ return hasFailuresByGroup(summary, SeverityCount.ERROR_COUNT, groupName, fieldName);
1584
+ }
1585
+ function getWarnings(fieldName) {
1586
+ return getFailures(summary, Severity.WARNINGS, fieldName);
1587
+ }
1588
+ function getErrors(fieldName) {
1589
+ return getFailures(summary, Severity.ERRORS, fieldName);
1590
+ }
1591
+ function getErrorsByGroup(groupName, fieldName) {
1592
+ return getFailuresByGroup(summary, Severity.ERRORS, groupName, fieldName);
1593
+ }
1594
+ function getWarningsByGroup(groupName, fieldName) {
1595
+ return getFailuresByGroup(summary, Severity.WARNINGS, groupName, fieldName);
1596
+ }
1530
1597
  }
1531
- /**
1532
- * @returns suite or field's errors or warnings.
1533
- */
1534
- function getFailures(severityKey, fieldName) {
1535
- var summary = useSummary();
1598
+ // Gathers all failures of a given severity
1599
+ // With a fieldName, it will only gather failures for that field
1600
+ function getFailures(summary, severityKey, fieldName) {
1536
1601
  return gatherFailures(summary.tests, severityKey, fieldName);
1537
1602
  }
1538
-
1539
- function getErrorsByGroup(groupName, fieldName) {
1540
- return getFailuresByGroup(groupName, Severity.ERRORS, fieldName);
1541
- }
1542
- function getWarningsByGroup(groupName, fieldName) {
1543
- return getFailuresByGroup(groupName, Severity.WARNINGS, fieldName);
1544
- }
1545
- function getFailuresByGroup(groupName, severityKey, fieldName) {
1546
- var summary = useSummary();
1603
+ // Gathers all failures of a given severity within a group
1604
+ // With a fieldName, it will only gather failures for that field
1605
+ function getFailuresByGroup(summary, severityKey, groupName, fieldName) {
1547
1606
  return gatherFailures(summary.groups[groupName], severityKey, fieldName);
1548
1607
  }
1549
-
1550
- function hasErrors(fieldName) {
1551
- return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
1552
- }
1553
- function hasWarnings(fieldName) {
1554
- return hasFailures(SeverityCount.WARN_COUNT, fieldName);
1555
- }
1556
- function hasFailures(severityCount, fieldName) {
1608
+ // Checks if a field is valid within a container object - can be within a group or top level
1609
+ function isFieldValid(testContainer, fieldName) {
1557
1610
  var _a;
1558
- var summary = useSummary();
1559
- if (fieldName) {
1560
- return isPositive((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
1561
- }
1562
- return isPositive(summary[severityCount]);
1563
- }
1564
-
1565
- function hasErrorsByGroup(groupName, fieldName) {
1566
- return hasFailuresByGroup(Severity.ERRORS, groupName, fieldName);
1567
- }
1568
- function hasWarningsByGroup(groupName, fieldName) {
1569
- return hasFailuresByGroup(Severity.WARNINGS, groupName, fieldName);
1611
+ return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
1570
1612
  }
1571
- // eslint-disable-next-line max-statements
1572
- function hasFailuresByGroup(severityKey, groupName, fieldName) {
1613
+ // Checks if a there are any failures of a given severity within a group
1614
+ // If a fieldName is provided, it will only check for failures within that field
1615
+ function hasFailuresByGroup(summary, severityCount, groupName, fieldName) {
1573
1616
  var _a, _b;
1574
- var summary = useSummary();
1575
- var severityCount = countKeyBySeverity(severityKey);
1576
1617
  var group = summary.groups[groupName];
1577
1618
  if (!group) {
1578
1619
  return false;
@@ -1587,32 +1628,14 @@
1587
1628
  }
1588
1629
  return false;
1589
1630
  }
1590
-
1591
- function isValid(fieldName) {
1592
- var summary = useSummary();
1593
- return fieldName
1594
- ? Boolean(isFieldValid(summary.tests, fieldName))
1595
- : summary.valid;
1596
- }
1597
- function isValidByGroup(groupName, fieldName) {
1598
- var summary = useSummary();
1599
- var group = summary.groups[groupName];
1600
- if (!group) {
1601
- return false;
1602
- }
1603
- if (fieldName) {
1604
- return isFieldValid(group, fieldName);
1605
- }
1606
- for (var fieldName_1 in group) {
1607
- if (!isFieldValid(group, fieldName_1)) {
1608
- return false;
1609
- }
1610
- }
1611
- return true;
1612
- }
1613
- function isFieldValid(testContainer, fieldName) {
1631
+ // Checks if there are any failures of a given severity
1632
+ // If a fieldName is provided, it will only check for failures within that field
1633
+ function hasFailures(summary, countKey, fieldName) {
1614
1634
  var _a;
1615
- return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
1635
+ var failureCount = fieldName
1636
+ ? (_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[countKey]
1637
+ : summary[countKey] || 0;
1638
+ return isPositive(failureCount);
1616
1639
  }
1617
1640
 
1618
1641
  var cache$1 = createCache(1);
@@ -1622,18 +1645,7 @@
1622
1645
  return cache$1([testObjects], context.bind(ctxRef, function () {
1623
1646
  var summary = genTestsSummary();
1624
1647
  var suiteName = useSuiteName();
1625
- var ref = { summary: summary };
1626
- return assign(summary, {
1627
- getErrors: context.bind(ref, getErrors),
1628
- getErrorsByGroup: context.bind(ref, getErrorsByGroup),
1629
- getWarnings: context.bind(ref, getWarnings),
1630
- getWarningsByGroup: context.bind(ref, getWarningsByGroup),
1631
- hasErrors: context.bind(ref, hasErrors),
1632
- hasErrorsByGroup: context.bind(ref, hasErrorsByGroup),
1633
- hasWarnings: context.bind(ref, hasWarnings),
1634
- hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
1635
- isValid: context.bind(ref, isValid),
1636
- isValidByGroup: context.bind(ref, isValidByGroup),
1648
+ return assign(summary, suiteSelectors(summary), {
1637
1649
  suiteName: suiteName
1638
1650
  });
1639
1651
  }));
@@ -1652,7 +1664,7 @@
1652
1664
  return matchingFieldName(testObject, fieldName);
1653
1665
  });
1654
1666
  }
1655
- return isNotEmpty(allIncomplete);
1667
+ return true;
1656
1668
  }
1657
1669
 
1658
1670
  var cache = createCache(20);
@@ -1669,10 +1681,10 @@
1669
1681
  * DONE is here and not in its own module to prevent circular dependency issues.
1670
1682
  */
1671
1683
  function shouldSkipDoneRegistration(callback, fieldName, output) {
1684
+ var _a;
1672
1685
  // If we do not have any test runs for the current field
1673
1686
  return !!(!isFunction(callback) ||
1674
- (fieldName &&
1675
- (!output.tests[fieldName] || isEmpty(output.tests[fieldName].testCount))));
1687
+ (fieldName && numberEquals((_a = output.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.testCount, 0)));
1676
1688
  }
1677
1689
  function shouldRunDoneCallback(fieldName) {
1678
1690
  // is suite finished || field name exists, and test is finished;
@@ -1847,7 +1859,7 @@
1847
1859
  // State initialization
1848
1860
  var state = createState();
1849
1861
  // State reference - this holds the actual state values
1850
- var stateRef = createStateRef(state, { suiteId: genId(), suiteName: suiteName });
1862
+ var stateRef = createStateRef(state, { suiteId: seq(), suiteName: suiteName });
1851
1863
  // Create base context reference. All hooks will derive their data from this
1852
1864
  var ctxRef = { stateRef: stateRef, bus: bus };
1853
1865
  var suite = assign(
@@ -1942,10 +1954,10 @@
1942
1954
  * only('username');
1943
1955
  */
1944
1956
  function only(item) {
1945
- return addTo(0 /* ONLY */, 'tests', item);
1957
+ return addTo(0 /* ExclusionGroup.ONLY */, 'tests', item);
1946
1958
  }
1947
1959
  only.group = function (item) {
1948
- return addTo(0 /* ONLY */, 'groups', item);
1960
+ return addTo(0 /* ExclusionGroup.ONLY */, 'groups', item);
1949
1961
  };
1950
1962
  /**
1951
1963
  * Adds a field or a list of fields into the exclusion list
@@ -1955,13 +1967,13 @@
1955
1967
  * skip('username');
1956
1968
  */
1957
1969
  function skip(item) {
1958
- return addTo(1 /* SKIP */, 'tests', item);
1970
+ return addTo(1 /* ExclusionGroup.SKIP */, 'tests', item);
1959
1971
  }
1960
1972
  skip.group = function (item) {
1961
- return addTo(1 /* SKIP */, 'groups', item);
1973
+ return addTo(1 /* ExclusionGroup.SKIP */, 'groups', item);
1962
1974
  };
1963
1975
  //Checks whether a certain test profile excluded by any of the exclusion groups.
1964
- // eslint-disable-next-line complexity, max-statements, max-lines-per-function
1976
+ // eslint-disable-next-line complexity, max-statements
1965
1977
  function isExcluded(testObject) {
1966
1978
  var fieldName = testObject.fieldName, groupName = testObject.groupName;
1967
1979
  if (isExcludedIndividually())
@@ -2037,7 +2049,7 @@
2037
2049
  return;
2038
2050
  }
2039
2051
  context$1.exclusion[itemType][itemName] =
2040
- exclusionGroup === 0 /* ONLY */;
2052
+ exclusionGroup === 0 /* ExclusionGroup.ONLY */;
2041
2053
  });
2042
2054
  }
2043
2055
  /**
@@ -2396,7 +2408,6 @@
2396
2408
  }
2397
2409
 
2398
2410
  /* eslint-disable jest/valid-title */
2399
- // eslint-disable-next-line max-lines-per-function
2400
2411
  function bindTestMemo(test) {
2401
2412
  var cache = createCache(10); // arbitrary cache size
2402
2413
  // eslint-disable-next-line max-statements
@@ -2467,7 +2478,7 @@
2467
2478
  ctx.currentTest.warn();
2468
2479
  }
2469
2480
 
2470
- var VERSION = "4.4.2-dev-ae93bf";
2481
+ var VERSION = "4.5.0-dev-9b46fb";
2471
2482
 
2472
2483
  exports.VERSION = VERSION;
2473
2484
  exports.context = context;
@@ -2482,6 +2493,7 @@
2482
2493
  exports.optional = optional;
2483
2494
  exports.skip = skip;
2484
2495
  exports.skipWhen = skipWhen;
2496
+ exports.suiteSelectors = suiteSelectors;
2485
2497
  exports.test = test;
2486
2498
  exports.warn = warn;
2487
2499
 
@@ -1 +1 @@
1
- "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function e(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function r(n,t){return e(n)&&e(t)&&Number(n)===Number(t)}function u(n,t){return r(n.length,t)}function i(n,t){return e(n)&&e(t)&&Number(n)>Number(t)}function o(n,t){return i(n.length,t)}function s(n){function t(n){return e.findIndex((function(t){var e=t[0];return u(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),o(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function a(n){return null===n}function c(n){return void 0===n}function f(n){return null===n||c(n)}function l(n){return"function"==typeof n}function d(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return l(n)?n.apply(void 0,t):n}function p(n,t){var e;return null!==(e=d(n))&&void 0!==e?e:d(t)}function v(n){return!!Array.isArray(n)}function h(n){return(n=[].concat(n))[n.length-1]}function N(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];v(u)?e.push(N(u,t)):(u=t(u),pt(u)&&e.push(u))}return e}function g(n){return[].concat(n).reduce((function(n,t){return v(t)?n.concat(g(t)):[].concat(n).concat(t)}),[])}function E(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=p(n[r],[]),n=n[r]}return n}function m(n){return n.forEach((function(n){return n()}))}function y(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?d(t):t)}function b(n){return String(n)===n}function R(n){return!!n===n}function S(n){setTimeout((function(){throw Error(n)}),0)}function O(n,t){function e(n,t){n&&(r=!0,u=t)}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function T(n){return!n||(Object.prototype.hasOwnProperty.call(n,"length")?u(n,0):"object"==typeof n&&u(Object.keys(n),0))}function C(n){return i(n,0)}function I(n,t){return b(n)&&b(t)&&n.endsWith(t)}function _(n,t){return n===t}function k(n,t){return r(n,t)||i(n,t)}function A(n,t){return!!(v(t)||b(t)&&b(n))&&-1!==t.indexOf(n)}function w(n,t){return e(n)&&e(t)&&Number(n)<Number(t)}function W(n,t){return r(n,t)||w(n,t)}function x(n,t,e){return k(n,t)&&W(n,e)}function F(n){return f(n)||b(n)&&!n.trim()}function L(n,t){return n in t}function P(n){return Number.isNaN(n)}function U(n){return"number"==typeof n}function G(n){return!!n}function D(n,t){if(f(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function X(n,t){return t instanceof RegExp?t.test(n):!!b(t)&&new RegExp(t).test(n)}function q(n,t){return b(n)&&b(t)&&n.startsWith(t)}function j(n){for(var t in xt){var e=xt[t];l(e)&&n(t,e)}}function K(n){function t(t,u){var i,o,s=e();return t=gt({},s||{},null!==(i=d(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){var t=e();return y(t,p(n,"Context was used after it was closed")),t}}}function B(){return null}function H(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function M(){try{return l(Proxy)}catch(n){return!1}}function V(n,t){return n={pass:n},t&&(n.message=t),n}function J(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return y(R(n)||n&&R(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),R(n)?V(n):V(n.pass,d.apply(void 0,H([n.message,t,e],r,!1)))}function Y(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return y((i=Ft.run({value:n},(function(){return J.apply(void 0,H([e.apply(void 0,H([n],u,!1)),r,n],u,!1))}))).pass,f(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(d(i.message))),t}}var e={};if(!M())return j((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=xt[e])return t(r,n,e)}});return r}function z(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=xt[r];e.push((function(n){return J.apply(void 0,H([o.apply(void 0,H([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return p(O(e,(function(e,r){var u,i=Ft.run({value:n},(function(){return e(n)}));r(!i.pass,V(!!i.pass,null!==(u=d(t,n,i.message))&&void 0!==u?u:i.message))})),V(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return M()?s=new Proxy(s,{get:function(t,e){return xt[e]?n(e):t[e]}}):(j((function(t){s[t]=n(t)})),s)}}(n)}function Q(){var n=0;return{current:function(){return n},next:function(){n++}}}function Z(n,t){return void 0===t&&(t=[]),{cursor:Q(),keys:{current:{},prev:{}},path:t,type:n}}function $(){return Ut.useX().stateRef}function nn(n){return $().optionalFields()[0][n]}function tn(n,t){(0,$().optionalFields()[1])((function(e){var r;return gt(e,((r={})[n]=d(t,e[n]),r))}))}function en(n){var t;return null===(t=nn(n))||void 0===t?void 0:t[0]}function rn(){un((function(n){return n}))}function un(n){(0,$().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function on(){return sn().filter((function(n){return n.isPending()}))}function sn(){var n=$().testObjects()[0].current;return Gt([n],(function(){return g(n)}))}function an(n){function t(n,t,u){return r.references.push(),e(n,d(t,u)),function(){return[r.references[n],function(t){return e(n,d(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,l(t=u[t][1])&&t(e,i),l(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 cn(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 fn(n,t){n=void 0===(n=n.type)?st.DEFAULT:n,y(l(t));var e=Z(n,dn());return n=Ut.run({isolate:e},(function(){return e.keys.prev=function(){var n=$().testObjects()[0].prev;return[].concat(E(n,dn())).reduce((function(n,t){return t instanceof qt&&!f(t.key)?(n[t.key]=t,n):n}),{})}(),un((function(n){var t=e.path;return E(n,t)[h(t)]=[],n})),t()})),ln().cursor.next(),n}function ln(){return Ut.useX().isolate}function dn(){var n=ln();return n.path.concat(n.cursor.current())}function pn(n){return n===Dt.ERRORS?Xt.ERROR_COUNT:Xt.WARN_COUNT}function vn(n,t){return!(!t||n.fieldName!==t)}function hn(n,t){return sn().some((function(e){return Nn(e,n,t)}))}function Nn(n,t,e){return(e=!n.hasFailures()||e&&!vn(n,e))||(n=n.warns(),e=t===Dt.WARNINGS!=!!n),!e}function gn(n){return!!En(n)||!hn(Dt.ERRORS,n)&&(!T(sn())&&!function(n){return mt(on().filter((function(t){return mn(t,n)})))}(n)&&function(n){return sn().every((function(t){return!(!n||vn(t,n))||yn(t,n)}))}(n))}function En(n){return!!n&&!0===(null===(t=nn(n))||void 0===t?void 0:t[1]);var t}function mn(n,t){return!(t&&!vn(n,t))&&!0!==en(n.fieldName)}function yn(n,t){return!(!t||vn(n,t))||(!0===en(n.fieldName)||n.isTested()||n.isOmitted())}function bn(){var n=Ut.useX().summary;return y(n),n}function Rn(){var n=sn(),t=gt({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=Sn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&gn(t.fieldName);var r=n.groups,u=t.groupName;return u&&(r[u]=r[u]||{},r[u][t.fieldName]=Sn(r[u],t),e=r[u][t.fieldName],!1===r[u][t.fieldName].valid?t=!1:t=!!En(t=t.fieldName)||!function(n,t,e){return sn().some((function(r){return!Qt(r,t)&&Nn(r,n,e)}))}(Dt.ERRORS,u,t)&&!function(n,t){return mt(on().filter((function(e){return!Qt(e,n)&&mn(e,t)})))}(u,t)&&function(n,t){return sn().every((function(e){return!!Qt(e,n)||yn(e,t)}))}(u,t),e.valid=t),n}),t),t.valid=gn(),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 Sn(n,t){function e(n){var t=pn(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||gt({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Dt.ERRORS):t.isWarning()&&e(Dt.WARNINGS)),i}function On(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function Tn(n,t){var e,r={},u=pn(t);for(e in n)C(n[e][u])&&(r[e]=n[e][t]||[]);return r}function Cn(n){return _n(Dt.ERRORS,n)}function In(n){return _n(Dt.WARNINGS,n)}function _n(n,t){var e=bn().tests;return t?On(e,n,t):Tn(e,n)}function kn(n,t){return wn(n,Dt.ERRORS,t)}function An(n,t){return wn(n,Dt.WARNINGS,t)}function wn(n,t,e){return n=bn().groups[n],e?On(n,t,e):Tn(n,t)}function Wn(n){return Fn(Xt.ERROR_COUNT,n)}function xn(n){return Fn(Xt.WARN_COUNT,n)}function Fn(n,t){var e,r=bn();return C(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Ln(n,t){return Un(Dt.ERRORS,n,t)}function Pn(n,t){return Un(Dt.WARNINGS,n,t)}function Un(n,t,e){var r,u,i=bn();if(n=pn(n),!(t=i.groups[t]))return!1;if(e)return C(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(C(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function Gn(n){var t=bn();return n?!!Xn(t.tests,n):t.valid}function Dn(n,t){if(!(n=bn().groups[n]))return!1;if(t)return Xn(n,t);for(var e in n)if(!Xn(n,e))return!1;return!0}function Xn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function qn(){var n=sn(),t={stateRef:$()};return Zt([n],Ut.bind(t,(function(){var n=Rn(),t=$().suiteName()[0],e={summary:n};return gt(n,{getErrors:Ut.bind(e,Cn),getErrorsByGroup:Ut.bind(e,kn),getWarnings:Ut.bind(e,In),getWarningsByGroup:Ut.bind(e,An),hasErrors:Ut.bind(e,Wn),hasErrorsByGroup:Ut.bind(e,Ln),hasWarnings:Ut.bind(e,xn),hasWarningsByGroup:Ut.bind(e,Pn),isValid:Ut.bind(e,Gn),isValidByGroup:Ut.bind(e,Dn),suiteName:t})})))}function jn(n){var t=on();return!T(t)&&(n?t.some((function(t){return vn(t,n)})):mt(t))}function Kn(){var n=sn(),t={stateRef:$()};return $t([n],Ut.bind(t,(function(){return gt({},qn(),{done:Ut.bind(t,ne)})})))}function Bn(n,t,e){return!(l(n)&&(!t||e.tests[t]&&!T(e.tests[t].testCount)))}function Hn(n){return!(jn()&&(!n||jn(n)))}function Mn(n,t){(0,$().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Vn(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==e}))}}}}}();return n.on(zt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=$().testCallbacks()[0].fieldCallbacks;t&&!jn(t)&&v(e[t])&&m(e[t]),jn()||n.emit(zt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(zt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),tn(n.fieldName,(function(n){return[n[0],!0]})))}if(!T($().optionalFields()[0])){var t={};un((function(e){return N(e,(function(e){if(Object.prototype.hasOwnProperty.call(t,e.fieldName))n(e);else{var r=en(e.fieldName);l(r)&&(t[e.fieldName]=r(),n(e))}return e}))}))}}()})),n.on(zt.ALL_RUNNING_TESTS_FINISHED,(function(){m($().testCallbacks()[0].doneCallbacks)})),n.on(zt.REMOVE_FIELD,(function(n){sn().forEach((function(t){vn(t,n)&&(t.cancel(),function(n){un((function(t){return N(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(zt.RESET_FIELD,(function(n){sn().forEach((function(t){vn(t,n)&&t.reset()}))})),n}function Jn(){var n=Ut.useX();return y(n.bus),n.bus}function Yn(n){return Qn(0,"tests",n)}function zn(n){return Qn(1,"tests",n)}function Qn(n,t,e){var r=Ut.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){b(e)&&(r.exclusion[t][e]=0===n)}))}function Zn(n){for(var t in n)if(!0===n[t])return!0;return!1}function $n(){var n,t=Ut.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function nt(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function tt(n){var t=n.asyncTest,e=n.message;if(t&&l(t.then)){var r=Jn().emit,u=$(),i=Ut.bind({stateRef:u},(function(){rn(),r(zt.TEST_COMPLETED,n)}));u=Ut.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=b(t)?t:e,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function et(n){var t=$().testObjects()[0].prev;if(T(t))return rt(n),n;var e=dn();if(t=E(t,e)[h(e)],!f(n.key)){t=n.key,(e=ln().keys.prev[t])&&(n=e),e=n;var r=ln().keys.current;return f(r[t])?r[t]=e:S('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),rt(n),n}return!mt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(ln().type===st.EACH||S("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=ln().cursor.current();un((function(t){return t.splice(n),t}))}(),t=null),rt(n=p(t,n)),n}function rt(n){var t=dn();un((function(e){return E(e,t)[h(t)]=n,e}))}function ut(n){var t=ln().cursor,e=ct.EAGER;if(Ut.useX().mode[0]===e&&hn(Dt.ERRORS,n.fieldName))return n.skip(),et(n),t.next(),n;if(e=et(n),Ut.useX().omitted)return e.omit(),t.next(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,Ut.useX().skipped)return!0;var e=Ut.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=Ut.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:$n())return!0;if(!0===r.groups[n])return!(i||!Zn(u)&&!1!==u[t])}return!!(n=!!$n()&&!n)||!i&&!!Zn(u)&&!d(e[t])}(n))return e.skip(!!Ut.useX().skipped),t.next(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),rt(n),n.isUntested()){e=Jn();var r=function(n){return Ut.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&l(r.then)?(n.asyncTest=r,n.setPending(),tt(n)):e.emit(zt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&l(e.then)&&(n.setPending(),tt(n));return t.next(),n}function it(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=l(t[1])?t:H([void 0],t,!0);t=r[0],e=r[1],r=r[2],y(b(n),ot("fieldName","string")),y(l(e),ot("Test callback","function"));var u=Ut.useX();return ut(t=new qt(n,e,{message:t,groupName:u.groupName,key:r}))}function ot(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var st,at,ct,ft=t(e),lt=t(r),dt=t(u),pt=t(a),vt=t(c),ht=t(f),Nt=t(v),gt=Object.assign,Et=(at=0,function(){return"".concat(at++)}),mt=t(T),yt=t(I),bt=t(_),Rt=t(A),St=t(x),Ot=t(F),Tt=t(R),Ct=t(L),It=t(P),_t=t(U),kt=t(b),At=t(G),wt=t(D),Wt=t(X),xt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:yt,doesNotStartWith:t(q),endsWith:I,equals:_,greaterThan:i,greaterThanOrEquals:k,gt:i,gte:k,inside:A,isArray:v,isBetween:x,isBlank:F,isBoolean:R,isEmpty:T,isEven:function(n){return!!e(n)&&0==n%2},isFalsy:At,isKeyOf:L,isNaN:P,isNegative:function(n){return w(n,0)},isNotArray:Nt,isNotBetween:St,isNotBlank:Ot,isNotBoolean:Tt,isNotEmpty:mt,isNotKeyOf:Ct,isNotNaN:It,isNotNull:pt,isNotNullish:ht,isNotNumber:_t,isNotNumeric:ft,isNotString:kt,isNotUndefined:vt,isNotValueOf:wt,isNull:a,isNullish:f,isNumber:U,isNumeric:e,isOdd:function(n){return!!e(n)&&0!=n%2},isPositive:C,isString:b,isTruthy:G,isUndefined:c,isValueOf:D,lengthEquals:u,lengthNotEquals:dt,lessThan:w,lessThanOrEquals:W,longerThan:o,longerThanOrEquals:function(n,t){return k(n.length,t)},lt:w,lte:W,matches:X,notEquals:bt,notInside:Rt,notMatches:Wt,numberEquals:r,numberNotEquals:lt,shorterThan:function(n,t){return w(n.length,t)},shorterThanOrEquals:function(n,t){return W(n.length,t)},startsWith:q},Ft=K((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?gt(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:gt(e,{parent:B})})),Lt=function(){function n(){if(!M())return j((function(n){t[n]=z(n)})),gt(Y,t)}var t={context:function(){return Ft.useX()},extend:function(t){gt(xt,t),n()}};return n(),new Proxy(gt(Y,t),{get:function(n,t){return t in n?n[t]:xt[t]?z(t):void 0}})}();!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"}(st||(st={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(ct||(ct={}));var Pt,Ut=K((function(n,t){return t?null:gt({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:Z(st.DEFAULT),mode:[ct.ALL]},n)})),Gt=s();!function(n){n.Error="error",n.Warning="warning"}(Pt||(Pt={}));var Dt,Xt,qt=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=Et(),this.severity=Pt.Error,this.status=jt,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){n=t,c(this.message)&&b(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Yt||(this.status=n)},n.prototype.warns=function(){return this.severity===Pt.Warning},n.prototype.setPending=function(){this.setStatus(Vt)},n.prototype.fail=function(){this.setStatus(this.warns()?Ht:Bt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Mt)},n.prototype.warn=function(){this.severity=Pt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(Kt)},n.prototype.cancel=function(){this.setStatus(Jt),rn()},n.prototype.reset=function(){this.status=jt,rn()},n.prototype.omit=function(){this.setStatus(Yt)},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(Vt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Yt)},n.prototype.isUntested=function(){return this.statusEquals(jt)},n.prototype.isFailing=function(){return this.statusEquals(Bt)},n.prototype.isCanceled=function(){return this.statusEquals(Jt)},n.prototype.isSkipped=function(){return this.statusEquals(Kt)},n.prototype.isPassing=function(){return this.statusEquals(Mt)},n.prototype.isWarning=function(){return this.statusEquals(Ht)},n.prototype.statusEquals=function(n){return this.status===n},n}(),jt="UNTESTED",Kt="SKIPPED",Bt="FAILED",Ht="WARNING",Mt="PASSING",Vt="PENDING",Jt="CANCELED",Yt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Dt||(Dt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Xt||(Xt={}));var zt,Qt=t((function(n,t){return n.groupName===t})),Zt=s(1),$t=s(20),ne=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=Kn(),Bn(e,n,t))return t;var r=function(){return e(qn())};return Hn(n)?(r(),t):(Mn(r,n),t)};!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"}(zt||(zt={})),Yn.group=function(n){return Qn(0,"groups",n)},zn.group=function(n){return Qn(1,"groups",n)};var te=gt(it,{memo:function(n){var t=s(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=ln().cursor.current();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[$().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):ut(r[1])}}(it)});n.VERSION="4.4.2-dev-ae93bf",n.context=Ut,n.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];n=n[1],y(l(e),"vest.create: Expected callback to be a function.");var r=Vn(),u=an();return n={stateRef:cn(u,{suiteId:Et(),suiteName:n}),bus:r},gt(Ut.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return u.reset(),fn({type:st.SUITE},(function(){e.apply(void 0,n)})),r.emit(zt.SUITE_CALLBACK_DONE_RUNNING),Kn()})),{get:Ut.bind(n,qn),remove:Ut.bind(n,(function(n){r.emit(zt.REMOVE_FIELD,n)})),reset:u.reset,resetField:Ut.bind(n,(function(n){r.emit(zt.RESET_FIELD,n)}))})},n.each=function(n,t){y(l(t),"each callback must be a function"),fn({type:st.EACH},(function(){n.forEach((function(n,e){t(n,e)}))}))},n.eager=function(){var n=ct.EAGER;Ut.useX().mode[0]=n},n.enforce=Lt,n.group=function(n,t){y(b(n),nt("name must be a string")),y(l(t),nt("callback must be a function")),fn({type:st.GROUP},(function(){Ut.run({groupName:n},t)}))},n.include=function(n){var t=Ut.useX(),e=t.inclusion;return t=t.exclusion,y(b(n)),e[n]=p(t.tests[n],!0),{when:function(t){var e=Ut.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?p(r.tests[n],!0):b(t)?!!r.tests[t]:d(t,d(qn))}}}},n.omitWhen=function(n,t){fn({type:st.OMIT_WHEN},(function(){Ut.run({omitted:!!Ut.useX().omitted||d(n,d(qn))},(function(){return t()}))}))},n.only=Yn,n.optional=function(n){if(v(n)||b(n))[].concat(n).forEach((function(n){tn(n,[!0,!1])}));else for(var t in n)tn(t,[n[t],!1])},n.skip=zn,n.skipWhen=function(n,t){fn({type:st.SKIP_WHEN},(function(){Ut.run({skipped:!!Ut.useX().skipped||d(n,d(qn))},(function(){return t()}))}))},n.test=te,n.warn=function(){var n=Ut.useX("warn hook called outside of a running suite.");y(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
1
+ "use strict";!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).vest={})}(this,(function(n){function t(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function e(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function r(n,t){return e(n)&&e(t)&&Number(n)===Number(t)}function u(n,t){return r(n.length,t)}function i(n,t){return e(n)&&e(t)&&Number(n)>Number(t)}function o(n,t){return i(n.length,t)}function s(n){function t(n){return e.findIndex((function(t){var e=t[0];return u(n,e.length)&&n.every((function(n,t){return n===e[t]}))}))}void 0===n&&(n=1);var e=[],r=function(t,u){var i=r.get(t);return i?i[1]:(u=u(),e.unshift([t.concat(),u]),o(e,n)&&(e.length=n),u)};return r.invalidate=function(n){-1<(n=t(n))&&e.splice(n,1)},r.get=function(n){return e[t(n)]||null},r}function a(n){return null===n}function c(n){return void 0===n}function f(n){return null===n||c(n)}function l(n){return"function"==typeof n}function d(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return l(n)?n.apply(void 0,t):n}function p(n,t){var e;return null!==(e=d(n))&&void 0!==e?e:d(t)}function v(n){return!!Array.isArray(n)}function h(n){return(n=[].concat(n))[n.length-1]}function N(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];v(u)?e.push(N(u,t)):(u=t(u),$n(u)&&e.push(u))}return e}function g(n){return[].concat(n).reduce((function(n,t){return v(t)?n.concat(g(t)):[].concat(n).concat(t)}),[])}function E(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=p(n[r],[]),n=n[r]}return n}function m(n){return n.forEach((function(n){return n()}))}function y(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?d(t):t)}function R(n){return String(n)===n}function O(n){return!!n===n}function S(n){setTimeout((function(){throw Error(n)}),0)}function T(n,t){function e(n,t){n&&(r=!0,u=t)}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function b(n){return!n||(Object.prototype.hasOwnProperty.call(n,"length")?u(n,0):"object"==typeof n&&u(Object.keys(n),0))}function C(n){return i(n,0)}function _(n,t){return R(n)&&R(t)&&n.endsWith(t)}function I(n,t){return n===t}function k(n,t){return r(n,t)||i(n,t)}function A(n,t){return!!(v(t)||R(t)&&R(n))&&-1!==t.indexOf(n)}function w(n,t){return e(n)&&e(t)&&Number(n)<Number(t)}function W(n,t){return r(n,t)||w(n,t)}function U(n,t,e){return k(n,t)&&W(n,e)}function x(n){return f(n)||R(n)&&!n.trim()}function F(n,t){return n in t}function L(n){return Number.isNaN(n)}function P(n){return"number"==typeof n}function G(n){return!!n}function D(n,t){if(f(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function X(n,t){return t instanceof RegExp?t.test(n):!!R(t)&&new RegExp(t).test(n)}function q(n,t){return R(n)&&R(t)&&n.startsWith(t)}function j(n){for(var t in mt){var e=mt[t];l(e)&&n(t,e)}}function K(n){function t(t,u){var i,o,s=e();return t=rt({},s||{},null!==(i=d(n,t,s))&&void 0!==i?i:t),i=r.ctx=Object.freeze(t),r.ancestry.unshift(i),u=u(i),r.ancestry.shift(),r.ctx=null!==(o=r.ancestry[0])&&void 0!==o?o:null,u}function e(){return r.ctx}var r={ancestry:[]};return{bind:function(n,e){return function(){for(var r=[],u=0;u<arguments.length;u++)r[u]=arguments[u];return t(n,(function(){return e.apply(void 0,r)}))}},run:t,use:e,useX:function(n){var t=e();return y(t,p(n,"Context was used after it was closed")),t}}}function B(){return null}function H(n,t,e){if(e||2===arguments.length)for(var r,u=0,i=t.length;u<i;u++)!r&&u in t||(r||(r=Array.prototype.slice.call(t,0,u)),r[u]=t[u]);return n.concat(r||Array.prototype.slice.call(t))}function M(){try{return l(Proxy)}catch(n){return!1}}function V(n,t){return n={pass:n},t&&(n.message=t),n}function J(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return y(O(n)||n&&O(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),O(n)?V(n):V(n.pass,d.apply(void 0,H([n.message,t,e],r,!1)))}function Y(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return y((i=yt.run({value:n},(function(){return J.apply(void 0,H([e.apply(void 0,H([n],u,!1)),r,n],u,!1))}))).pass,f(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(d(i.message))),t}}var e={};if(!M())return j((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=mt[e])return t(r,n,e)}});return r}function z(n){var t,e=[];return function n(r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];var o=mt[r];e.push((function(n){return J.apply(void 0,H([o.apply(void 0,H([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return p(T(e,(function(e,r){var u,i=yt.run({value:n},(function(){return e(n)}));r(!i.pass,V(!!i.pass,null!==(u=d(t,n,i.message))&&void 0!==u?u:i.message))})),V(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return M()?s=new Proxy(s,{get:function(t,e){return mt[e]?n(e):t[e]}}):(j((function(t){s[t]=n(t)})),s)}}(n)}function Q(){var n=0;return{current:function(){return n},next:function(){n++}}}function Z(n,t){return void 0===t&&(t=[]),{cursor:Q(),keys:{current:{},prev:{}},path:t,type:n}}function $(){return St.useX().stateRef}function nn(n){return $().optionalFields()[0][n]}function tn(n,t){(0,$().optionalFields()[1])((function(e){var r;return rt(e,((r={})[n]=d(t,e[n]),r))}))}function en(n){var t;return null===(t=nn(n))||void 0===t?void 0:t[0]}function rn(){un((function(n){return n}))}function un(n){(0,$().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function on(){return sn().filter((function(n){return n.isPending()}))}function sn(){var n=$().testObjects()[0].current;return Tt([n],(function(){return g(n)}))}function an(n){function t(n,t,u){return r.references.push(),e(n,d(t,u)),function(){return[r.references[n],function(t){return e(n,d(t,r.references[n]))}]}}function e(t,e){var i=r.references[t];r.references[t]=e,l(t=u[t][1])&&t(e,i),l(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 cn(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 fn(){return St.useX().isolate}function ln(){var n=fn();return n.path.concat(n.cursor.current())}function dn(n,t){n=void 0===(n=n.type)?Vn.DEFAULT:n,y(l(t));var e=Z(n,ln());return n=St.run({isolate:e},(function(){return e.keys.prev=function(){var n=$().testObjects()[0].prev;return[].concat(E(n,ln())).reduce((function(n,t){return t instanceof _t&&!f(t.key)?(n[t.key]=t,n):n}),{})}(),un((function(n){var t=e.path;return E(n,t)[h(t)]=[],n})),t()})),fn().cursor.next(),n}function pn(n,t){return!(!t||n.fieldName!==t)}function vn(n,t){return sn().some((function(e){return hn(e,n,t)}))}function hn(n,t,e){return(e=!n.hasFailures()||e&&!pn(n,e))||(n=n.warns(),e=t===bt.WARNINGS!=!!n),!e}function Nn(n){return!!gn(n)||!vn(bt.ERRORS,n)&&(!b(sn())&&!function(n){return it(on().filter((function(t){return En(t,n)})))}(n)&&function(n){return sn().every((function(t){return!(!n||pn(t,n))||mn(t,n)}))}(n))}function gn(n){return!!n&&!0===(null===(t=nn(n))||void 0===t?void 0:t[1]);var t}function En(n,t){return!(t&&!pn(n,t))&&!0!==en(n.fieldName)}function mn(n,t){return!(!t||pn(n,t))||(!0===en(n.fieldName)||n.isTested()||n.isOmitted())}function yn(){var n=sn(),t=rt({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=Rn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&Nn(t.fieldName);var r=n.groups,u=t.groupName;return u&&(r[u]=r[u]||{},r[u][t.fieldName]=Rn(r[u],t),e=r[u][t.fieldName],!1===r[u][t.fieldName].valid?t=!1:t=!!gn(t=t.fieldName)||!function(n,t,e){return sn().some((function(r){return!Pt(r,t)&&hn(r,n,e)}))}(bt.ERRORS,u,t)&&!function(n,t){return it(on().filter((function(e){return!Pt(e,n)&&En(e,t)})))}(u,t)&&function(n,t){return sn().every((function(e){return!!Pt(e,n)||mn(e,t)}))}(u,t),e.valid=t),n}),t),t.valid=Nn(),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 Rn(n,t){function e(n){i[n===bt.ERRORS?Ct.ERROR_COUNT:Ct.WARN_COUNT]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||rt({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(bt.ERRORS):t.isWarning()&&e(bt.WARNINGS)),i}function On(n,t,e){if(e){var r;n=(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}else{for(var u in r={},e=t===bt.ERRORS?Ct.ERROR_COUNT:Ct.WARN_COUNT,n)C(n[u][e])&&(r[u]=n[u][t]||[]);n=r}return n}function Sn(n){return{getErrors:function(t){return On(n.tests,bt.ERRORS,t)},getErrorsByGroup:function(t,e){return On(n.groups[t],bt.ERRORS,e)},getWarnings:function(t){return On(n.tests,bt.WARNINGS,t)},getWarningsByGroup:function(t,e){return On(n.groups[t],bt.WARNINGS,e)},hasErrors:function(t){return Cn(n,Ct.ERROR_COUNT,t)},hasErrorsByGroup:function(t,e){return bn(n,Ct.ERROR_COUNT,t,e)},hasWarnings:function(t){return Cn(n,Ct.WARN_COUNT,t)},hasWarningsByGroup:function(t,e){return bn(n,Ct.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 Tn(t,e);for(var r in t)if(!Tn(t,r))return!1;return!0}}}function Tn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function bn(n,t,e,r){var u,i;if(!(n=n.groups[e]))return!1;if(r)return C(null===(u=n[r])||void 0===u?void 0:u[t]);for(var o in n)if(C(null===(i=n[o])||void 0===i?void 0:i[t]))return!0;return!1}function Cn(n,t,e){var r;return C(n=e?null===(r=n.tests[e])||void 0===r?void 0:r[t]:n[t]||0)}function _n(){var n=sn(),t={stateRef:$()};return Gt([n],St.bind(t,(function(){var n=yn(),t=$().suiteName()[0];return rt(n,Sn(n),{suiteName:t})})))}function In(n){var t=on();return!b(t)&&(!n||t.some((function(t){return pn(t,n)})))}function kn(){var n=sn(),t={stateRef:$()};return Dt([n],St.bind(t,(function(){return rt({},_n(),{done:St.bind(t,Xt)})})))}function An(n,t,e){var u;return!!(!l(n)||t&&r(null===(u=e.tests[t])||void 0===u?void 0:u.testCount,0))}function wn(n){return!(In()&&(!n||In(n)))}function Wn(n,t){(0,$().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Un(){var n=function(){var n={};return{emit:function(t,e){(n[t]||[]).forEach((function(n){n(e)}))},on:function(t,e){return n[t]=(n[t]||[]).concat(e),{off:function(){n[t]=(n[t]||[]).filter((function(n){return n!==e}))}}}}}();return n.on(Lt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=$().testCallbacks()[0].fieldCallbacks;t&&!In(t)&&v(e[t])&&m(e[t]),In()||n.emit(Lt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Lt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){t[n.fieldName]&&(n.omit(),tn(n.fieldName,(function(n){return[n[0],!0]})))}if(!b($().optionalFields()[0])){var t={};un((function(e){return N(e,(function(e){if(Object.prototype.hasOwnProperty.call(t,e.fieldName))n(e);else{var r=en(e.fieldName);l(r)&&(t[e.fieldName]=r(),n(e))}return e}))}))}}()})),n.on(Lt.ALL_RUNNING_TESTS_FINISHED,(function(){m($().testCallbacks()[0].doneCallbacks)})),n.on(Lt.REMOVE_FIELD,(function(n){sn().forEach((function(t){pn(t,n)&&(t.cancel(),function(n){un((function(t){return N(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Lt.RESET_FIELD,(function(n){sn().forEach((function(t){pn(t,n)&&t.reset()}))})),n}function xn(){var n=St.useX();return y(n.bus),n.bus}function Fn(n){return Pn(0,"tests",n)}function Ln(n){return Pn(1,"tests",n)}function Pn(n,t,e){var r=St.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){R(e)&&(r.exclusion[t][e]=0===n)}))}function Gn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Dn(){var n,t=St.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function Xn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function qn(n){var t=n.asyncTest,e=n.message;if(t&&l(t.then)){var r=xn().emit,u=$(),i=St.bind({stateRef:u},(function(){rn(),r(Lt.TEST_COMPLETED,n)}));u=St.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=R(t)?t:e,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function jn(n){var t=$().testObjects()[0].prev;if(b(t))return Kn(n),n;var e=ln();if(t=E(t,e)[h(e)],!f(n.key)){t=n.key,(e=fn().keys.prev[t])&&(n=e),e=n;var r=fn().keys.current;return f(r[t])?r[t]=e:S('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Kn(n),n}return!it(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(fn().type===Vn.EACH||S("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(t.fieldName,"\n received: ").concat(n.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var n=fn().cursor.current();un((function(t){return t.splice(n),t}))}(),t=null),Kn(n=p(t,n)),n}function Kn(n){var t=ln();un((function(e){return E(e,t)[h(t)]=n,e}))}function Bn(n){var t=fn().cursor,e=Yn.EAGER;if(St.useX().mode[0]===e&&vn(bt.ERRORS,n.fieldName))return n.skip(),jn(n),t.next(),n;if(e=jn(n),St.useX().omitted)return e.omit(),t.next(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,St.useX().skipped)return!0;var e=St.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){var o=St.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Dn())return!0;if(!0===r.groups[n])return!(i||!Gn(u)&&!1!==u[t])}return!!(n=!!Dn()&&!n)||!i&&!!Gn(u)&&!d(e[t])}(n))return e.skip(!!St.useX().skipped),t.next(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Kn(n),n.isUntested()){e=xn();var r=function(n){return St.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&l(r.then)?(n.asyncTest=r,n.setPending(),qn(n)):e.emit(Lt.TEST_COMPLETED,n)}catch(t){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(n),".\n Error: ").concat(t,"."))}}else(e=n.asyncTest)&&l(e.then)&&(n.setPending(),qn(n));return t.next(),n}function Hn(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var r=l(t[1])?t:H([void 0],t,!0);t=r[0],e=r[1],r=r[2],y(R(n),Mn("fieldName","string")),y(l(e),Mn("Test callback","function"));var u=St.useX();return Bn(t=new _t(n,e,{message:t,groupName:u.groupName,key:r}))}function Mn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var Vn,Jn,Yn,zn=t(e),Qn=t(r),Zn=t(u),$n=t(a),nt=t(c),tt=t(f),et=t(v),rt=Object.assign,ut=(Jn=0,function(){return"".concat(Jn++)}),it=t(b),ot=t(_),st=t(I),at=t(A),ct=t(U),ft=t(x),lt=t(O),dt=t(F),pt=t(L),vt=t(P),ht=t(R),Nt=t(G),gt=t(D),Et=t(X),mt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:ot,doesNotStartWith:t(q),endsWith:_,equals:I,greaterThan:i,greaterThanOrEquals:k,gt:i,gte:k,inside:A,isArray:v,isBetween:U,isBlank:x,isBoolean:O,isEmpty:b,isEven:function(n){return!!e(n)&&0==n%2},isFalsy:Nt,isKeyOf:F,isNaN:L,isNegative:function(n){return w(n,0)},isNotArray:et,isNotBetween:ct,isNotBlank:ft,isNotBoolean:lt,isNotEmpty:it,isNotKeyOf:dt,isNotNaN:pt,isNotNull:$n,isNotNullish:tt,isNotNumber:vt,isNotNumeric:zn,isNotString:ht,isNotUndefined:nt,isNotValueOf:gt,isNull:a,isNullish:f,isNumber:P,isNumeric:e,isOdd:function(n){return!!e(n)&&0!=n%2},isPositive:C,isString:R,isTruthy:G,isUndefined:c,isValueOf:D,lengthEquals:u,lengthNotEquals:Zn,lessThan:w,lessThanOrEquals:W,longerThan:o,longerThanOrEquals:function(n,t){return k(n.length,t)},lt:w,lte:W,matches:X,notEquals:st,notInside:at,notMatches:Et,numberEquals:r,numberNotEquals:Qn,shorterThan:function(n,t){return w(n.length,t)},shorterThanOrEquals:function(n,t){return W(n.length,t)},startsWith:q},yt=K((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?rt(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:rt(e,{parent:B})})),Rt=function(){function n(){if(!M())return j((function(n){t[n]=z(n)})),rt(Y,t)}var t={context:function(){return yt.useX()},extend:function(t){rt(mt,t),n()}};return n(),new Proxy(rt(Y,t),{get:function(n,t){return t in n?n[t]:mt[t]?z(t):void 0}})}();!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"}(Vn||(Vn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Yn||(Yn={}));var Ot,St=K((function(n,t){return t?null:rt({exclusion:{tests:{},groups:{}},inclusion:{},isolate:Z(Vn.DEFAULT),mode:[Yn.ALL]},n)})),Tt=s();!function(n){n.Error="error",n.Warning="warning"}(Ot||(Ot={}));var bt,Ct,_t=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=ut(),this.severity=Ot.Error,this.status=It,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){n=t,c(this.message)&&R(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Ft||(this.status=n)},n.prototype.warns=function(){return this.severity===Ot.Warning},n.prototype.setPending=function(){this.setStatus(Ut)},n.prototype.fail=function(){this.setStatus(this.warns()?wt:At)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Wt)},n.prototype.warn=function(){this.severity=Ot.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(kt)},n.prototype.cancel=function(){this.setStatus(xt),rn()},n.prototype.reset=function(){this.status=It,rn()},n.prototype.omit=function(){this.setStatus(Ft)},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(Ut)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Ft)},n.prototype.isUntested=function(){return this.statusEquals(It)},n.prototype.isFailing=function(){return this.statusEquals(At)},n.prototype.isCanceled=function(){return this.statusEquals(xt)},n.prototype.isSkipped=function(){return this.statusEquals(kt)},n.prototype.isPassing=function(){return this.statusEquals(Wt)},n.prototype.isWarning=function(){return this.statusEquals(wt)},n.prototype.statusEquals=function(n){return this.status===n},n}(),It="UNTESTED",kt="SKIPPED",At="FAILED",wt="WARNING",Wt="PASSING",Ut="PENDING",xt="CANCELED",Ft="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(bt||(bt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Ct||(Ct={}));var Lt,Pt=t((function(n,t){return n.groupName===t})),Gt=s(1),Dt=s(20),Xt=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=kn(),An(e,n,t))return t;var r=function(){return e(_n())};return wn(n)?(r(),t):(Wn(r,n),t)};!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"}(Lt||(Lt={})),Fn.group=function(n){return Pn(0,"groups",n)},Ln.group=function(n){return Pn(1,"groups",n)};var qt=rt(Hn,{memo:function(n){var t=s(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=fn().cursor.current();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[$().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):Bn(r[1])}}(Hn)});n.VERSION="4.5.0-dev-9b46fb",n.context=St,n.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];n=n[1],y(l(e),"vest.create: Expected callback to be a function.");var r=Un(),u=an();return n={stateRef:cn(u,{suiteId:ut(),suiteName:n}),bus:r},rt(St.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return u.reset(),dn({type:Vn.SUITE},(function(){e.apply(void 0,n)})),r.emit(Lt.SUITE_CALLBACK_DONE_RUNNING),kn()})),{get:St.bind(n,_n),remove:St.bind(n,(function(n){r.emit(Lt.REMOVE_FIELD,n)})),reset:u.reset,resetField:St.bind(n,(function(n){r.emit(Lt.RESET_FIELD,n)}))})},n.each=function(n,t){y(l(t),"each callback must be a function"),dn({type:Vn.EACH},(function(){n.forEach((function(n,e){t(n,e)}))}))},n.eager=function(){var n=Yn.EAGER;St.useX().mode[0]=n},n.enforce=Rt,n.group=function(n,t){y(R(n),Xn("name must be a string")),y(l(t),Xn("callback must be a function")),dn({type:Vn.GROUP},(function(){St.run({groupName:n},t)}))},n.include=function(n){var t=St.useX(),e=t.inclusion;return t=t.exclusion,y(R(n)),e[n]=p(t.tests[n],!0),{when:function(t){var e=St.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?p(r.tests[n],!0):R(t)?!!r.tests[t]:d(t,d(_n))}}}},n.omitWhen=function(n,t){dn({type:Vn.OMIT_WHEN},(function(){St.run({omitted:!!St.useX().omitted||d(n,d(_n))},(function(){return t()}))}))},n.only=Fn,n.optional=function(n){if(v(n)||R(n))[].concat(n).forEach((function(n){tn(n,[!0,!1])}));else for(var t in n)tn(t,[n[t],!1])},n.skip=Ln,n.skipWhen=function(n,t){dn({type:Vn.SKIP_WHEN},(function(){St.run({skipped:!!St.useX().skipped||d(n,d(_n))},(function(){return t()}))}))},n.suiteSelectors=Sn,n.test=qt,n.warn=function(){var n=St.useX("warn hook called outside of a running suite.");y(n.currentTest,"warn called outside of a test."),n.currentTest.warn()},Object.defineProperty(n,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.4.2-dev-ae93bf",
2
+ "version": "4.5.0-dev-9b46fb",
3
3
  "license": "MIT",
4
4
  "name": "vest",
5
5
  "author": "ealush",
@@ -20,9 +20,9 @@
20
20
  "url": "https://github.com/ealush/vest.git/issues"
21
21
  },
22
22
  "dependencies": {
23
- "context": "^2.0.7-dev-ae93bf",
24
- "n4s": "^4.1.8-dev-ae93bf",
25
- "vest-utils": "^0.0.4-dev-ae93bf"
23
+ "context": "^2.0.8-dev-9b46fb",
24
+ "n4s": "^4.1.9-dev-9b46fb",
25
+ "vest-utils": "^0.0.2-dev-9b46fb"
26
26
  },
27
27
  "homepage": "https://vestjs.dev/",
28
28
  "exports": {
@@ -0,0 +1,21 @@
1
+ import { partition } from 'vest-utils';
2
+
3
+ describe('partition', () => {
4
+ it('Should correctly partition array', () => {
5
+ expect(partition([300, 200, 10, 50, 0, -500], v => v <= 100))
6
+ .toMatchInlineSnapshot(`
7
+ Array [
8
+ Array [
9
+ 10,
10
+ 50,
11
+ 0,
12
+ -500,
13
+ ],
14
+ Array [
15
+ 300,
16
+ 200,
17
+ ],
18
+ ]
19
+ `);
20
+ });
21
+ });
@@ -0,0 +1,13 @@
1
+ export default function partition<T>(
2
+ array: T[],
3
+ // eslint-disable-next-line no-unused-vars
4
+ predicate: (value: T, index: number, array: T[]) => boolean
5
+ ): [T[], T[]] {
6
+ return array.reduce(
7
+ (partitions: [T[], T[]], value, number) => {
8
+ partitions[predicate(value, number, array) ? 0 : 1].push(value);
9
+ return partitions;
10
+ },
11
+ [[], []]
12
+ );
13
+ }
@@ -3,6 +3,7 @@ type DropFirst<T extends unknown[]> = T extends [
3
3
  ...infer U
4
4
  ] ? U : never;
5
5
  type Stringable = string | ((...args: any[]) => string);
6
+ type CB = (...args: any[]) => any;
6
7
  type RuleReturn = boolean | {
7
8
  pass: boolean;
8
9
  message?: Stringable;
@@ -97,7 +98,7 @@ declare const baseRules: {
97
98
  shorterThanOrEquals: typeof shorterThanOrEquals;
98
99
  startsWith: typeof startsWith;
99
100
  };
100
- type Rules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
101
+ type Rules<E> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
101
102
  [P in KBaseRules]: (...args: DropFirst<Parameters<BaseRules[P]>> | Args) => Rules<E> & E;
102
103
  };
103
104
  /* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-empty-interface */
@@ -111,7 +112,7 @@ type LazyRules = n4s.IRules<LazyRuleMethods>;
111
112
  type Lazy = LazyRules & LazyRuleMethods &
112
113
  // This is a "catch all" hack to make TS happy while not
113
114
  // losing type hints
114
- Record<string, (...args: any[]) => any>;
115
+ Record<string, CB>;
115
116
  type LazyRuleMethods = LazyRuleRunners & {
116
117
  message: (message: LazyMessage) => Lazy;
117
118
  };
@@ -3,6 +3,7 @@ type DropFirst<T extends unknown[]> = T extends [
3
3
  ...infer U
4
4
  ] ? U : never;
5
5
  type Stringable = string | ((...args: any[]) => string);
6
+ type CB = (...args: any[]) => any;
6
7
  type RuleReturn = boolean | {
7
8
  pass: boolean;
8
9
  message?: Stringable;
@@ -97,7 +98,7 @@ declare const baseRules: {
97
98
  shorterThanOrEquals: typeof shorterThanOrEquals;
98
99
  startsWith: typeof startsWith;
99
100
  };
100
- type Rules<E = Record<string, unknown>> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
101
+ type Rules<E> = n4s.EnforceCustomMatchers<Rules<E> & E> & Record<string, (...args: Args) => Rules<E> & E> & {
101
102
  [P in KBaseRules]: (...args: DropFirst<Parameters<BaseRules[P]>> | Args) => Rules<E> & E;
102
103
  };
103
104
  /* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-empty-interface */
@@ -111,7 +112,7 @@ type LazyRules = n4s.IRules<LazyRuleMethods>;
111
112
  type Lazy = LazyRules & LazyRuleMethods &
112
113
  // This is a "catch all" hack to make TS happy while not
113
114
  // losing type hints
114
- Record<string, (...args: any[]) => any>;
115
+ Record<string, CB>;
115
116
  type LazyRuleMethods = LazyRuleRunners & {
116
117
  message: (message: LazyMessage) => Lazy;
117
118
  };