vest 4.3.1 → 4.3.2-dev-2805e3

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 (33) hide show
  1. package/dist/cjs/classnames.development.js +21 -18
  2. package/dist/cjs/classnames.production.js +1 -1
  3. package/dist/cjs/enforce/compounds.development.js +3 -3
  4. package/dist/cjs/enforce/compounds.production.js +1 -1
  5. package/dist/cjs/parser.development.js +21 -18
  6. package/dist/cjs/parser.production.js +1 -1
  7. package/dist/cjs/vest.development.js +121 -134
  8. package/dist/cjs/vest.production.js +1 -1
  9. package/dist/es/classnames.development.js +21 -18
  10. package/dist/es/classnames.production.js +1 -1
  11. package/dist/es/enforce/compounds.development.js +3 -3
  12. package/dist/es/enforce/compounds.production.js +1 -1
  13. package/dist/es/parser.development.js +21 -18
  14. package/dist/es/parser.production.js +1 -1
  15. package/dist/es/vest.development.js +121 -134
  16. package/dist/es/vest.production.js +1 -1
  17. package/dist/umd/classnames.development.js +21 -18
  18. package/dist/umd/classnames.production.js +1 -1
  19. package/dist/umd/enforce/compose.development.js +12 -8
  20. package/dist/umd/enforce/compose.production.js +1 -1
  21. package/dist/umd/enforce/compounds.development.js +15 -11
  22. package/dist/umd/enforce/compounds.production.js +1 -1
  23. package/dist/umd/enforce/schema.development.js +12 -8
  24. package/dist/umd/enforce/schema.production.js +1 -1
  25. package/dist/umd/parser.development.js +21 -18
  26. package/dist/umd/parser.production.js +1 -1
  27. package/dist/umd/vest.development.js +128 -141
  28. package/dist/umd/vest.production.js +1 -1
  29. package/package.json +3 -3
  30. package/types/classnames.d.ts +9 -5
  31. package/types/parser.d.ts +9 -5
  32. package/types/promisify.d.ts +9 -5
  33. package/types/vest.d.ts +10 -6
@@ -144,7 +144,7 @@
144
144
  else if (typeof value === 'object') {
145
145
  return lengthEquals(Object.keys(value), 0);
146
146
  }
147
- return true;
147
+ return false;
148
148
  }
149
149
  var isNotEmpty = bindNot(isEmpty);
150
150
 
@@ -644,15 +644,10 @@
644
644
  context: function () { return ctx.useX(); },
645
645
  extend: function (customRules) {
646
646
  assign(baseRules, customRules);
647
+ handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
647
648
  }
648
649
  };
649
- if (!isProxySupported()) {
650
- eachEnforceRule(function (ruleName) {
651
- // Only on the first rule access - start the chain of calls
652
- target[ruleName] = genEnforceLazy(ruleName);
653
- });
654
- return assign(enforceEager, target);
655
- }
650
+ handleNoProxy();
656
651
  return new Proxy(assign(enforceEager, target), {
657
652
  get: function (target, key) {
658
653
  if (key in target) {
@@ -665,6 +660,15 @@
665
660
  return genEnforceLazy(key);
666
661
  }
667
662
  });
663
+ function handleNoProxy() {
664
+ if (!isProxySupported()) {
665
+ eachEnforceRule(function (ruleName) {
666
+ // Only on the first rule access - start the chain of calls
667
+ target[ruleName] = genEnforceLazy(ruleName);
668
+ });
669
+ return assign(enforceEager, target);
670
+ }
671
+ }
668
672
  }
669
673
  var enforce = genEnforce();
670
674
 
@@ -891,18 +895,6 @@
891
895
  return testObject.isPending() ? testObject : null;
892
896
  }));
893
897
  }
894
- function useOmittedFields() {
895
- var testObjects = useTestsFlat();
896
- return testObjects.reduce(function (omittedFields, testObject) {
897
- if (omittedFields[testObject.fieldName]) {
898
- return omittedFields;
899
- }
900
- if (testObject.isOmitted()) {
901
- omittedFields[testObject.fieldName] = true;
902
- }
903
- return omittedFields;
904
- }, {});
905
- }
906
898
  var flatCache = createCache();
907
899
  function useTestsFlat() {
908
900
  var current = useTestObjects()[0].current;
@@ -1197,9 +1189,7 @@
1197
1189
 
1198
1190
  function isolate(_a, callback) {
1199
1191
  var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
1200
- if (!isFunction(callback)) {
1201
- return;
1202
- }
1192
+ invariant(isFunction(callback));
1203
1193
  var keys = {
1204
1194
  current: {},
1205
1195
  prev: {}
@@ -1229,6 +1219,11 @@
1229
1219
  SeverityCount["ERROR_COUNT"] = "errorCount";
1230
1220
  SeverityCount["WARN_COUNT"] = "warnCount";
1231
1221
  })(SeverityCount || (SeverityCount = {}));
1222
+ function countKeyBySeverity(severity) {
1223
+ return severity === Severity.ERRORS
1224
+ ? SeverityCount.ERROR_COUNT
1225
+ : SeverityCount.WARN_COUNT;
1226
+ }
1232
1227
 
1233
1228
  function nonMatchingFieldName(testObject, fieldName) {
1234
1229
  return !!fieldName && !matchingFieldName(testObject, fieldName);
@@ -1248,10 +1243,23 @@
1248
1243
  return either(severity === Severity.WARNINGS, testObject.warns());
1249
1244
  }
1250
1245
 
1246
+ /**
1247
+ * The difference between this file and hasFailures is that hasFailures uses the static
1248
+ * summary object, while this one uses the actual validation state
1249
+ */
1250
+ function hasErrorsByTestObjects(fieldName) {
1251
+ return hasFailuresByTestObjects(Severity.ERRORS, fieldName);
1252
+ }
1253
+ function hasFailuresByTestObjects(severityKey, fieldName) {
1254
+ var testObjects = useTestsFlat();
1255
+ return testObjects.some(function (testObject) {
1256
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
1257
+ });
1258
+ }
1251
1259
  /**
1252
1260
  * Determines whether a certain test profile has failures.
1253
1261
  */
1254
- function hasFailuresLogic(testObject, severityKey, fieldName) {
1262
+ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
1255
1263
  if (!testObject.hasFailures()) {
1256
1264
  return false;
1257
1265
  }
@@ -1264,51 +1272,29 @@
1264
1272
  return true;
1265
1273
  }
1266
1274
 
1267
- function hasErrors(fieldName) {
1268
- return has(Severity.ERRORS, fieldName);
1269
- }
1270
- function hasWarnings(fieldName) {
1271
- return has(Severity.WARNINGS, fieldName);
1272
- }
1273
- function has(severityKey, fieldName) {
1274
- var testObjects = useTestsFlat();
1275
- return testObjects.some(function (testObject) {
1276
- return hasFailuresLogic(testObject, severityKey, fieldName);
1277
- });
1278
- }
1279
-
1280
- function isValid(fieldName) {
1281
- var _a, _b;
1282
- var summary = context.useX().summary;
1283
- invariant(summary);
1284
- return Boolean(fieldName ? (_b = (_a = summary.tests) === null || _a === void 0 ? void 0 : _a[fieldName]) === null || _b === void 0 ? void 0 : _b.valid : summary.valid);
1285
- }
1286
1275
  // eslint-disable-next-line max-statements, complexity
1287
1276
  function shouldAddValidProp(fieldName) {
1288
1277
  if (fieldIsOmitted(fieldName)) {
1289
1278
  return true;
1290
1279
  }
1291
- if (hasErrors(fieldName)) {
1280
+ if (hasErrorsByTestObjects(fieldName)) {
1292
1281
  return false;
1293
1282
  }
1294
1283
  var testObjects = useTestsFlat();
1295
1284
  if (isEmpty(testObjects)) {
1296
1285
  return false;
1297
1286
  }
1298
- if (fieldDoesNotExist(fieldName)) {
1299
- return false;
1300
- }
1301
1287
  if (hasNonOptionalIncomplete(fieldName)) {
1302
1288
  return false;
1303
1289
  }
1304
1290
  return noMissingTests(fieldName);
1305
1291
  }
1306
1292
  function fieldIsOmitted(fieldName) {
1307
- var omittedFields = useOmittedFields();
1308
1293
  if (!fieldName) {
1309
1294
  return false;
1310
1295
  }
1311
- return !!omittedFields[fieldName];
1296
+ var flatTests = useTestsFlat();
1297
+ return flatTests.some(function (testObject) { return testObject.fieldName === fieldName && testObject.isOmitted(); });
1312
1298
  }
1313
1299
  function hasNonOptionalIncomplete(fieldName) {
1314
1300
  var optionalFields = useOptionalFields()[0];
@@ -1319,11 +1305,6 @@
1319
1305
  return optionalFields[testObject.fieldName] !== true;
1320
1306
  }));
1321
1307
  }
1322
- function fieldDoesNotExist(fieldName) {
1323
- var testObjects = useTestsFlat();
1324
- return (!!fieldName &&
1325
- !testObjects.find(function (testObject) { return testObject.fieldName === fieldName; }));
1326
- }
1327
1308
  function noMissingTests(fieldName) {
1328
1309
  var testObjects = useTestsFlat();
1329
1310
  var optionalFields = useOptionalFields()[0];
@@ -1337,6 +1318,11 @@
1337
1318
  });
1338
1319
  }
1339
1320
 
1321
+ function useSummary() {
1322
+ var summary = context.useX().summary;
1323
+ invariant(summary);
1324
+ return summary;
1325
+ }
1340
1326
  /**
1341
1327
  * Reads the testObjects list and gets full validation result from it.
1342
1328
  */
@@ -1385,13 +1371,9 @@
1385
1371
  }
1386
1372
  return summary;
1387
1373
  }
1388
- /**
1389
- * Appends the test to a results object
1390
- */
1391
- // eslint-disable-next-line max-statements
1392
1374
  function appendTestObject(summaryKey, testObject) {
1393
1375
  var fieldName = testObject.fieldName, message = testObject.message;
1394
- summaryKey[fieldName] = summaryKey[fieldName] || baseStats();
1376
+ summaryKey[fieldName] = summaryKey[fieldName] || baseTestStats();
1395
1377
  var testKey = summaryKey[fieldName];
1396
1378
  if (testObject.isNonActionable())
1397
1379
  return testKey;
@@ -1404,18 +1386,13 @@
1404
1386
  }
1405
1387
  return testKey;
1406
1388
  function incrementFailures(severity) {
1407
- var countKey = getCountKey(severity);
1389
+ var countKey = countKeyBySeverity(severity);
1408
1390
  testKey[countKey]++;
1409
1391
  if (message) {
1410
1392
  testKey[severity] = (testKey[severity] || []).concat(message);
1411
1393
  }
1412
1394
  }
1413
1395
  }
1414
- function getCountKey(severity) {
1415
- return severity === Severity.ERRORS
1416
- ? SeverityCount.ERROR_COUNT
1417
- : SeverityCount.WARN_COUNT;
1418
- }
1419
1396
  function baseStats() {
1420
1397
  return {
1421
1398
  errorCount: 0,
@@ -1423,6 +1400,12 @@
1423
1400
  testCount: 0
1424
1401
  };
1425
1402
  }
1403
+ function baseTestStats() {
1404
+ return assign(baseStats(), {
1405
+ errors: [],
1406
+ warnings: []
1407
+ });
1408
+ }
1426
1409
 
1427
1410
  // calls collectAll or getByFieldName depending on whether fieldName is provided
1428
1411
  function gatherFailures(testGroup, severityKey, fieldName) {
@@ -1435,10 +1418,11 @@
1435
1418
  return ((_a = testGroup === null || testGroup === void 0 ? void 0 : testGroup[fieldName]) === null || _a === void 0 ? void 0 : _a[severityKey]) || [];
1436
1419
  }
1437
1420
  function collectAll(testGroup, severityKey) {
1438
- var _a;
1439
1421
  var output = {};
1440
1422
  for (var field in testGroup) {
1441
- output[field] = ((_a = testGroup[field]) === null || _a === void 0 ? void 0 : _a[severityKey]) || [];
1423
+ // We will probably never get to the fallback array
1424
+ // leaving it just in case the implementation changes
1425
+ output[field] = testGroup[field][severityKey] || [];
1442
1426
  }
1443
1427
  return output;
1444
1428
  }
@@ -1453,8 +1437,7 @@
1453
1437
  * @returns suite or field's errors or warnings.
1454
1438
  */
1455
1439
  function getFailures(severityKey, fieldName) {
1456
- var summary = context.useX().summary;
1457
- invariant(summary);
1440
+ var summary = useSummary();
1458
1441
  return gatherFailures(summary.tests, severityKey, fieldName);
1459
1442
  }
1460
1443
 
@@ -1465,27 +1448,55 @@
1465
1448
  return getFailuresByGroup(groupName, Severity.WARNINGS, fieldName);
1466
1449
  }
1467
1450
  function getFailuresByGroup(groupName, severityKey, fieldName) {
1468
- var summary = context.useX().summary;
1469
- invariant(summary);
1451
+ var summary = useSummary();
1470
1452
  return gatherFailures(summary.groups[groupName], severityKey, fieldName);
1471
1453
  }
1472
1454
 
1455
+ function hasErrors(fieldName) {
1456
+ return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
1457
+ }
1458
+ function hasWarnings(fieldName) {
1459
+ return hasFailures(SeverityCount.WARN_COUNT, fieldName);
1460
+ }
1461
+ function hasFailures(severityCount, fieldName) {
1462
+ var _a;
1463
+ var summary = useSummary();
1464
+ if (fieldName) {
1465
+ return isPositive((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
1466
+ }
1467
+ return isPositive(summary[severityCount]);
1468
+ }
1469
+
1473
1470
  function hasErrorsByGroup(groupName, fieldName) {
1474
- return hasByGroup(Severity.ERRORS, groupName, fieldName);
1471
+ return hasFailuresByGroup(Severity.ERRORS, groupName, fieldName);
1475
1472
  }
1476
1473
  function hasWarningsByGroup(groupName, fieldName) {
1477
- return hasByGroup(Severity.WARNINGS, groupName, fieldName);
1474
+ return hasFailuresByGroup(Severity.WARNINGS, groupName, fieldName);
1478
1475
  }
1479
- /**
1480
- * Checks whether there are failures in a given group.
1481
- */
1482
- function hasByGroup(severityKey, group, fieldName) {
1483
- var testObjects = useTestsFlat();
1484
- return testObjects.some(function (testObject) {
1485
- return group === testObject.groupName
1486
- ? hasFailuresLogic(testObject, severityKey, fieldName)
1487
- : false;
1488
- });
1476
+ // eslint-disable-next-line max-statements
1477
+ function hasFailuresByGroup(severityKey, groupName, fieldName) {
1478
+ var _a, _b;
1479
+ var summary = useSummary();
1480
+ var severityCount = countKeyBySeverity(severityKey);
1481
+ var group = summary.groups[groupName];
1482
+ if (!group) {
1483
+ return false;
1484
+ }
1485
+ if (fieldName) {
1486
+ return isPositive((_a = group[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
1487
+ }
1488
+ for (var field in group) {
1489
+ if (isPositive((_b = group[field]) === null || _b === void 0 ? void 0 : _b[severityCount])) {
1490
+ return true;
1491
+ }
1492
+ }
1493
+ return false;
1494
+ }
1495
+
1496
+ function isValid(fieldName) {
1497
+ var _a;
1498
+ var summary = useSummary();
1499
+ return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
1489
1500
  }
1490
1501
 
1491
1502
  var cache$1 = createCache(1);
@@ -1495,7 +1506,7 @@
1495
1506
  return cache$1([testObjects], context.bind(ctxRef, function () {
1496
1507
  var summary = genTestsSummary();
1497
1508
  var suiteName = useSuiteName();
1498
- var ref = assign({ summary: summary }, ctxRef);
1509
+ var ref = { summary: summary };
1499
1510
  return assign(summary, {
1500
1511
  getErrors: context.bind(ref, getErrors),
1501
1512
  getErrorsByGroup: context.bind(ref, getErrorsByGroup),
@@ -1888,7 +1899,7 @@
1888
1899
  return keyTests[fieldName] === false;
1889
1900
  }
1890
1901
  }
1891
- if (isMissingFromIncludedGroup(groupName)) {
1902
+ if (isTopLevelWhenThereIsAnIncludedGroup(groupName)) {
1892
1903
  return true;
1893
1904
  }
1894
1905
  // if field is only'ed
@@ -1897,39 +1908,13 @@
1897
1908
  // If there is _ANY_ `only`ed test (and we already know this one isn't) return true
1898
1909
  if (hasIncludedTests(keyTests)) {
1899
1910
  // Check if inclusion rules for this field (`include` hook)
1911
+ // TODO: Check if this may need to be moved outside of the condition.
1912
+ // What if there are no included tests? This shouldn't run then?
1900
1913
  return !optionalFunctionValue(inclusion[fieldName]);
1901
1914
  }
1902
1915
  // We're done here. This field is not excluded
1903
1916
  return false;
1904
1917
  }
1905
- // eslint-disable-next-line max-statements
1906
- function isMissingFromIncludedGroup(groupName) {
1907
- var context$1 = context.useX();
1908
- var exclusion = context$1.exclusion;
1909
- if (!hasIncludedGroups()) {
1910
- return false;
1911
- }
1912
- if (!groupName) {
1913
- return true;
1914
- }
1915
- if (groupName in exclusion.groups) {
1916
- if (exclusion.groups[groupName]) {
1917
- return false;
1918
- }
1919
- return true;
1920
- }
1921
- return true;
1922
- }
1923
- function hasIncludedGroups() {
1924
- var context$1 = context.useX();
1925
- var exclusion = context$1.exclusion;
1926
- for (var group in exclusion.groups) {
1927
- if (exclusion.groups[group]) {
1928
- return true;
1929
- }
1930
- }
1931
- return false;
1932
- }
1933
1918
  /**
1934
1919
  * Checks whether a given group is excluded from running.
1935
1920
  */
@@ -1944,13 +1929,8 @@
1944
1929
  return keyGroups[groupName] === false;
1945
1930
  }
1946
1931
  // Group is not present
1947
- for (var group in keyGroups) {
1948
- // If any other group is only'ed
1949
- if (keyGroups[group] === true) {
1950
- return true;
1951
- }
1952
- }
1953
- return false;
1932
+ // Return whether other groups are included
1933
+ return hasIncludedGroups();
1954
1934
  }
1955
1935
  /**
1956
1936
  * Adds fields to a specified exclusion group.
@@ -1979,6 +1959,24 @@
1979
1959
  }
1980
1960
  return false;
1981
1961
  }
1962
+ // are we not in a group and there is an included group?
1963
+ function isTopLevelWhenThereIsAnIncludedGroup(groupName) {
1964
+ if (!hasIncludedGroups()) {
1965
+ return false;
1966
+ }
1967
+ // Return whether there's an included group, and we're not inside a group
1968
+ return !groupName;
1969
+ }
1970
+ function hasIncludedGroups() {
1971
+ var context$1 = context.useX();
1972
+ var exclusion = context$1.exclusion;
1973
+ for (var group in exclusion.groups) {
1974
+ if (exclusion.groups[group]) {
1975
+ return true;
1976
+ }
1977
+ }
1978
+ return false;
1979
+ }
1982
1980
 
1983
1981
  /**
1984
1982
  * Runs tests within a group so that they can be controlled or queried separately.
@@ -2004,16 +2002,18 @@
2004
2002
  function include(fieldName) {
2005
2003
  var context$1 = context.useX();
2006
2004
  var inclusion = context$1.inclusion, exclusion = context$1.exclusion;
2007
- if (!fieldName) {
2008
- return { when: when };
2009
- }
2005
+ invariant(isStringValue(fieldName));
2010
2006
  inclusion[fieldName] = defaultTo(exclusion.tests[fieldName], true);
2011
2007
  return { when: when };
2012
2008
  function when(condition) {
2013
2009
  var context$1 = context.useX();
2014
2010
  var inclusion = context$1.inclusion, exclusion = context$1.exclusion;
2011
+ // This callback will run as part of the "isExcluded" series of checks
2015
2012
  inclusion[fieldName] = function () {
2016
2013
  if (hasOwnProperty(exclusion.tests, fieldName)) {
2014
+ // I suspect this code is technically unreachable because
2015
+ // if there are any skip/only rules applied to the current
2016
+ // field, the "isExcluded" function will have already bailed
2017
2017
  return defaultTo(exclusion.tests[fieldName], true);
2018
2018
  }
2019
2019
  if (isStringValue(condition)) {
@@ -2047,7 +2047,7 @@
2047
2047
  setMode(Modes.EAGER);
2048
2048
  }
2049
2049
  function shouldSkipBasedOnMode(testObject) {
2050
- if (isEager() && hasErrors(testObject.fieldName))
2050
+ if (isEager() && hasErrorsByTestObjects(testObject.fieldName))
2051
2051
  return true;
2052
2052
  return false;
2053
2053
  }
@@ -2159,6 +2159,8 @@
2159
2159
  asyncTest.then(done, fail);
2160
2160
  }
2161
2161
  catch (e) {
2162
+ // We will probably never get here, unless the consumer uses a buggy custom Promise
2163
+ // implementation that behaves differently than the native one, or if they for some
2162
2164
  fail();
2163
2165
  }
2164
2166
  }
@@ -2167,22 +2169,7 @@
2167
2169
  * Runs sync tests - or extracts promise.
2168
2170
  */
2169
2171
  function runSyncTest(testObject) {
2170
- return context.run({ currentTest: testObject }, function () {
2171
- var result;
2172
- try {
2173
- result = testObject.testFn();
2174
- }
2175
- catch (e) {
2176
- if (shouldUseErrorAsMessage(testObject.message, e)) {
2177
- testObject.message = e;
2178
- }
2179
- result = false;
2180
- }
2181
- if (result === false) {
2182
- testObject.fail();
2183
- }
2184
- return result;
2185
- });
2172
+ return context.run({ currentTest: testObject }, function () { return testObject.run(); });
2186
2173
  }
2187
2174
 
2188
2175
  /**
@@ -2401,7 +2388,7 @@
2401
2388
  ctx.currentTest.warn();
2402
2389
  }
2403
2390
 
2404
- var VERSION = "4.3.1";
2391
+ var VERSION = "4.3.2-dev-2805e3";
2405
2392
 
2406
2393
  exports.VERSION = VERSION;
2407
2394
  exports.context = context;
@@ -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"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function p(n,t){return l(n,t)||f(n,t)}function d(n){return!!Array.isArray(n)}function v(n,t){return!!(d(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||h(n,t)}function N(n,t,e){return p(n,t)&&g(n,e)}function m(n){return i(n)||o(n)&&!n.trim()}function y(n){return!!n===n}function E(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function S(n){if(n){if(E(n))return 0===n;if(Object.prototype.hasOwnProperty.call(n,"length"))return b(n,0);if("object"==typeof n)return b(Object.keys(n),0)}return!0}function T(n,t){return n in t}function O(n){return Number.isNaN(n)}function R(n){return!!n}function C(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function I(n,t){return f(n.length,t)}function k(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function _(n,t){return o(n)&&o(t)&&n.startsWith(t)}function A(n){for(var e in mt){var r=mt[e];t(r)&&n(e,r)}}function L(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function w(n,t){var e;return null!==(e=L(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?L(t):t)}function W(n){function t(t,u){var i,o,s=e();return t=zn({},s||{},null!==(i=L(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){return F(r.ctx,w(n,"Context was used after it was closed")),r.ctx}}}function x(){return null}function P(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 X(){try{return t(Proxy)}catch(n){return!1}}function U(n,t){return n={pass:n},t&&(n.message=t),n}function G(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(y(n)||n&&y(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),y(n)?U(n):U(n.pass,L.apply(void 0,P([n.message,t,e],r,!1)))}function D(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=G.apply(void 0,P([yt.run({value:n},(function(){return e.apply(void 0,P([n],u,!1))})),r,n],u,!1))).pass,S(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!X())return A((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 q(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function K(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 G.apply(void 0,P([o.apply(void 0,P([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return w(q(e,(function(e,r){var u,i=yt.run({value:n},(function(){return e(n)}));i.pass||r(U(!!i.pass,null!==(u=L(t,n,i.message))&&void 0!==u?u:i.message))})),U(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return X()?s=new Proxy(s,{get:function(t,e){return mt[e]?n(e):t[e]}}):(A((function(t){s[t]=n(t)})),s)}}(n)}function j(n){function t(n){return e.findIndex((function(t){var e=t[0];return b(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]),I(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 B(n){return(n=[].concat(n))[n.length-1]}function H(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];d(u)?e.push(H(u,t)):(u=t(u),Qn(u)&&e.push(u))}return e}function M(n){return[].concat(n).reduce((function(n,t){return d(t)?n.concat(M(t)):[].concat(n).concat(t)}),[])}function V(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=w(n[r],[]),n=n[r]}return n}function J(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return B(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,B(t)},removeLevel:function(){t.pop()},reset:n}}function Y(){return Tt.useX().stateRef}function z(){return Y().testObjects()}function Q(){(0,z()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function Z(n){(0,z()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function $(){return M(H(z()[0].current,(function(n){return n.isPending()?n:null})))}function nn(){var n=z()[0].current;return Ot([n],(function(){return M(n)}))}function tn(n){function e(n,t,e){return u.references.push(),r(n,L(t,e)),function(){return[u.references[n],function(t){return r(n,L(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function en(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 rn(n){setTimeout((function(){throw Error(n)}),0)}function un(){return Tt.useX().testCursor.getCursor()}function on(){return Tt.useX().testCursor.next()}function sn(n,e){if(n=void 0===(n=n.type)?Vn.DEFAULT:n,t(e)){var r={current:{},prev:{}},u=un();return Tt.run({isolate:{type:n,keys:r}},(function(){Tt.useX().testCursor.addLevel(),r.prev=function(){var n=z()[0].prev;return[].concat(V(n,un())).reduce((function(n,t){return t instanceof It&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),Z((function(n){return V(n,u)[B(u)]=[],n}));var n=e();return Tt.useX().testCursor.removeLevel(),on(),n}))}}function an(n,t){return!(!t||n.fieldName!==t)}function cn(n,t,e){return(e=!n.hasFailures()||e&&!an(n,e))||(n=n.warns(),e=t===Rt.WARNINGS!=!!n),!e}function fn(n){return pn(Rt.ERRORS,n)}function ln(n){return pn(Rt.WARNINGS,n)}function pn(n,t){return nn().some((function(e){return cn(e,n,t)}))}function dn(n){var t,e,r=Tt.useX().summary;return F(r),!!(n?null!==(e=null===(t=r.tests)||void 0===t?void 0:t[n])&&void 0!==e&&e.valid:r.valid)}function vn(n){var t=nn().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return(t=!!n&&!!t[n])||!fn(n)&&(!(S(t=nn())||function(n){var t=nn();return!!n&&!t.find((function(t){return t.fieldName===n}))}(n)||function(n){var t=Y().optionalFields()[0];return lt($().filter((function(e){return!(n&&!an(e,n))&&!0!==t[e.fieldName]})))}(n))&&function(n){var t=nn(),e=Y().optionalFields()[0];return t.every((function(t){return!(!n||an(t,n))||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(n))}function hn(n,t){function e(n){i[n===Rt.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]||{errorCount:0,warnCount:0,testCount:0};var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Rt.ERRORS):t.isWarning()&&e(Rt.WARNINGS)),i}function gn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function Nn(n,t){var e,r,u={};for(r in n)u[r]=(null===(e=n[r])||void 0===e?void 0:e[t])||[];return u}function mn(n){return En(Rt.ERRORS,n)}function yn(n){return En(Rt.WARNINGS,n)}function En(n,t){var e=Tt.useX().summary;return F(e),e=e.tests,t?gn(e,n,t):Nn(e,n)}function bn(n,t){return Tn(n,Rt.ERRORS,t)}function Sn(n,t){return Tn(n,Rt.WARNINGS,t)}function Tn(n,t,e){var r=Tt.useX().summary;return F(r),n=r.groups[n],e?gn(n,t,e):Nn(n,t)}function On(n,t){return Cn(Rt.ERRORS,n,t)}function Rn(n,t){return Cn(Rt.WARNINGS,n,t)}function Cn(n,t,e){return nn().some((function(r){return t===r.groupName&&cn(r,n,e)}))}function In(){var n=nn(),t={stateRef:Y()};return Xt([n],Tt.bind(t,(function(){var n=function(){var n=nn(),t=zn({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=hn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&vn(t.fieldName),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=hn(e[r],t)),n}),t),t.valid=vn(),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)}(),e=Y().suiteName()[0],r=zn({summary:n},t);return zn(n,{getErrors:Tt.bind(r,mn),getErrorsByGroup:Tt.bind(r,bn),getWarnings:Tt.bind(r,yn),getWarningsByGroup:Tt.bind(r,Sn),hasErrors:Tt.bind(r,fn),hasErrorsByGroup:Tt.bind(r,On),hasWarnings:Tt.bind(r,ln),hasWarningsByGroup:Tt.bind(r,Rn),isValid:Tt.bind(r,dn),suiteName:e})})))}function kn(n){var t=$();return!S(t)&&(n?t.some((function(t){return an(t,n)})):lt(t))}function _n(){var n=nn(),t={stateRef:Y()};return Ut([n],Tt.bind(t,(function(){return zn({},In(),{done:Tt.bind(t,Gt)})})))}function An(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!S(r.tests[e].testCount)))}function Ln(n){return!(kn()&&(!n||kn(n)))}function wn(n,t){(0,Y().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Fn(n){return n.forEach((function(n){return n()}))}function Wn(){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(Pt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=Y().testCallbacks()[0].fieldCallbacks;t&&!kn(t)&&d(e[t])&&Fn(e[t]),kn()||n.emit(Pt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Pt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=Y().optionalFields()[0];if(!S(n)){var e={};Z((function(r){return H(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))e[r.fieldName]&&r.omit();else{var u=n[r.fieldName];t(u)&&(e[r.fieldName]=u(),e[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Pt.ALL_RUNNING_TESTS_FINISHED,(function(){Fn(Y().testCallbacks()[0].doneCallbacks)})),n.on(Pt.REMOVE_FIELD,(function(n){nn().forEach((function(t){an(t,n)&&(t.cancel(),function(n){Z((function(t){return H(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Pt.RESET_FIELD,(function(n){nn().forEach((function(t){an(t,n)&&t.reset()}))})),n}function xn(){var n=Tt.useX();return F(n.bus),n.bus}function Pn(n){return Un(0,"tests",n)}function Xn(n){return Un(1,"tests",n)}function Un(n,t,e){var r=Tt.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(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(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function qn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=xn().emit,i=Y(),s=Tt.bind({stateRef:i},(function(){Q(),u(Pt.TEST_COMPLETED,n)}));i=Tt.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function Kn(n){var t=z()[0].prev;if(S(t))return jn(n),n;var e=un();if(t=V(t,e)[B(e)],!i(n.key)){t=n.key,(e=Tt.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=Tt.useX().isolate.keys.current;return i(r[t])?r[t]=e:rn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),jn(n),n}return!lt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(Tt.useX().isolate.type===Vn.EACH||rn("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=z(),t=n[1],e=n[0].prev;n=V(e,un());var r=Tt.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),jn(n=w(t,n)),n}function jn(n){var t=un();Z((function(e){return V(e,t)[B(t)]=n,e}))}function Bn(n){var e=Yn.EAGER;if(e=!(Tt.useX().mode[0]!==e||!fn(n.fieldName)))return n.skip(),Kn(n),on(),n;if(e=Kn(n),Tt.useX().omitted)return e.omit(),on(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,Tt.useX().skipped)return!0;var e=Tt.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[t];if(!1===i)return!0;if(i=!0===i,n){n:{var o=Tt.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,n))var s=!1===o[n];else{for(s in o)if(!0===o[s]){s=!0;break n}s=!1}}if(s)return!0;if(!0===r.groups[n])return!(i||!Gn(u)&&!1!==u[t])}r=Tt.useX().exclusion;n:{for(a in(s=Tt.useX().exclusion).groups)if(s.groups[a]){var a=!0;break n}a=!1}return!(!a||n&&n in r.groups&&r.groups[n])||!i&&!!Gn(u)&&!L(e[t])}(n))return e.skip(!!Tt.useX().skipped),on(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),jn(n),on(),n.isUntested()){e=xn();var r=function(n){return Tt.run({currentTest:n},(function(){try{var t=n.testFn()}catch(e){t=e,u(n.message)&&o(t)&&(n.message=e),t=!1}return!1===t&&n.fail(),t}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),qn(n)):e.emit(Pt.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)&&t(e.then)&&(n.setPending(),qn(n));return n}function Hn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:P([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),Mn("fieldName","string")),F(t(r),Mn("Test callback","function"));var i=Tt.useX();return Bn(e=new It(n,r,{message:e,groupName:i.groupName,key:u}))}function Mn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var Vn,Jn,Yn,zn=Object.assign,Qn=e(r),Zn=e(u),$n=e(i),nt=e(s),tt=e(a),et=e(c),rt=e(l),ut=e(d),it=e(v),ot=e(N),st=e(m),at=e(y),ct=e(E),ft=e(b),lt=e(S),pt=e(T),dt=e(O),vt=e(o),ht=e(R),gt=e(C),Nt=e(k),mt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:nt,doesNotStartWith:e(_),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:p,gt:f,gte:p,inside:v,isArray:d,isBetween:N,isBlank:m,isBoolean:y,isEmpty:S,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:ht,isKeyOf:T,isNaN:O,isNegative:function(n){return h(n,0)},isNotArray:ut,isNotBetween:ot,isNotBlank:st,isNotBoolean:at,isNotEmpty:lt,isNotKeyOf:pt,isNotNaN:dt,isNotNull:Qn,isNotNullish:$n,isNotNumber:ct,isNotNumeric:et,isNotString:vt,isNotUndefined:Zn,isNotValueOf:gt,isNull:r,isNullish:i,isNumber:E,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:function(n){return f(n,0)},isString:o,isTruthy:R,isUndefined:u,isValueOf:C,lengthEquals:b,lengthNotEquals:ft,lessThan:h,lessThanOrEquals:g,longerThan:I,longerThanOrEquals:function(n,t){return p(n.length,t)},lt:h,lte:g,matches:k,notEquals:tt,notInside:it,notMatches:Nt,numberEquals:l,numberNotEquals:rt,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:_},yt=W((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?zn(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:zn(e,{parent:x})})),Et=(Jn={context:function(){return yt.useX()},extend:function(n){zn(mt,n)}},X()?new Proxy(zn(D,Jn),{get:function(n,t){return t in n?n[t]:mt[t]?K(t):void 0}}):(A((function(n){Jn[n]=K(n)})),zn(D,Jn))),bt=function(n){return function(){return"".concat(n++)}}(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 St,Tt=W((function(n,t){return t?null:zn({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:Vn.DEFAULT,keys:{current:{},prev:{}}},mode:[Yn.ALL],testCursor:J()},n)})),Ot=j();!function(n){n.Error="error",n.Warning="warning"}(St||(St={}));var Rt,Ct,It=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=bt(),this.severity=St.Error,this.status=kt,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,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==xt||(this.status=n)},n.prototype.warns=function(){return this.severity===St.Warning},n.prototype.setPending=function(){this.setStatus(Ft)},n.prototype.fail=function(){this.setStatus(this.warns()?Lt:At)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(wt)},n.prototype.warn=function(){this.severity=St.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(_t)},n.prototype.cancel=function(){this.setStatus(Wt),Q()},n.prototype.reset=function(){this.status=kt,Q()},n.prototype.omit=function(){this.setStatus(xt)},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(Ft)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(xt)},n.prototype.isUntested=function(){return this.statusEquals(kt)},n.prototype.isFailing=function(){return this.statusEquals(At)},n.prototype.isCanceled=function(){return this.statusEquals(Wt)},n.prototype.isSkipped=function(){return this.statusEquals(_t)},n.prototype.isPassing=function(){return this.statusEquals(wt)},n.prototype.isWarning=function(){return this.statusEquals(Lt)},n.prototype.statusEquals=function(n){return this.status===n},n}(),kt="UNTESTED",_t="SKIPPED",At="FAILED",Lt="WARNING",wt="PASSING",Ft="PENDING",Wt="CANCELED",xt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Rt||(Rt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Ct||(Ct={}));var Pt,Xt=j(1),Ut=j(20),Gt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=(n=n.reverse())[0];if(n=n[1],t=_n(),An(e,n,t))return t;var r=function(){return e(In())};return Ln(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"}(Pt||(Pt={})),Pn.group=function(n){return Un(0,"groups",n)},Xn.group=function(n){return Un(1,"groups",n)};var Dt=zn(Hn,{memo:function(n){var t=j(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=Tt.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[Y().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.3.1",n.context=Tt,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],F(t(r),"vest.create: Expected callback to be a function.");var u=Wn(),i=tn();return n={stateRef:en(i,{suiteId:bt(),suiteName:n}),bus:u},zn(Tt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),sn({type:Vn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Pt.SUITE_CALLBACK_DONE_RUNNING),_n()})),{get:Tt.bind(n,In),remove:Tt.bind(n,(function(n){u.emit(Pt.REMOVE_FIELD,n)})),reset:i.reset,resetField:Tt.bind(n,(function(n){u.emit(Pt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),sn({type:Vn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Yn.EAGER;Tt.useX().mode[0]=n},n.enforce=Et,n.group=function(n,e){F(o(n),Dn("name must be a string")),F(t(e),Dn("callback must be a function")),sn({type:Vn.GROUP},(function(){Tt.run({groupName:n},e)}))},n.include=function(n){function t(t){var e=Tt.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?w(r.tests[n],!0):o(t)?!!r.tests[t]:L(t,L(In))}}var e=Tt.useX();return n?(e.inclusion[n]=w(e.exclusion.tests[n],!0),{when:t}):{when:t}},n.omitWhen=function(n,t){sn({type:Vn.OMIT_WHEN},(function(){Tt.run({omitted:!!Tt.useX().omitted||L(n,L(In))},(function(){return t()}))}))},n.only=Pn,n.optional=function(n){(0,Y().optionalFields()[1])((function(t){if(d(n)||o(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},n.skip=Xn,n.skipWhen=function(n,t){sn({type:Vn.SKIP_WHEN},(function(){Tt.run({skipped:!!Tt.useX().skipped||L(n,L(In))},(function(){return t()}))}))},n.test=Dt,n.warn=function(){var n=Tt.useX("warn hook called outside of a running suite.");F(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"==typeof n}function e(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return!n.apply(void 0,t)}}function r(n){return null===n}function u(n){return void 0===n}function i(n){return null===n||u(n)}function o(n){return String(n)===n}function s(n,t){return o(n)&&o(t)&&n.endsWith(t)}function a(n,t){return n===t}function c(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return c(n)&&c(t)&&Number(n)>Number(t)}function l(n,t){return c(n)&&c(t)&&Number(n)===Number(t)}function p(n,t){return l(n,t)||f(n,t)}function d(n){return!!Array.isArray(n)}function v(n,t){return!!(d(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return c(n)&&c(t)&&Number(n)<Number(t)}function N(n,t){return l(n,t)||h(n,t)}function g(n,t,e){return p(n,t)&&N(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n){return"number"==typeof n}function R(n,t){return l(n.length,t)}function b(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?R(n,0):"object"==typeof n&&R(Object.keys(n),0))}function O(n,t){return n in t}function S(n){return Number.isNaN(n)}function T(n){return f(n,0)}function C(n){return!!n}function _(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function I(n,t){return f(n.length,t)}function A(n,t){return t instanceof RegExp?t.test(n):!!o(t)&&new RegExp(t).test(n)}function k(n,t){return o(n)&&o(t)&&n.startsWith(t)}function L(n){for(var e in Rt){var r=Rt[e];t(r)&&n(e,r)}}function w(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return t(n)?n.apply(void 0,e):n}function W(n,t){var e;return null!==(e=w(n))&&void 0!==e?e:t}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?w(t):t)}function P(n){function t(t,u){var i,o,s=e();return t=$n({},s||{},null!==(i=w(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){return F(r.ctx,W(n,"Context was used after it was closed")),r.ctx}}}function U(){return null}function x(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 X(){try{return t(Proxy)}catch(n){return!1}}function G(n,t){return n={pass:n},t&&(n.message=t),n}function D(n,t,e){for(var r=[],u=3;u<arguments.length;u++)r[u-3]=arguments[u];return F(m(n)||n&&m(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),m(n)?G(n):G(n.pass,w.apply(void 0,x([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],i=0;i<arguments.length;i++)u[i]=arguments[i];return F((i=D.apply(void 0,x([bt.run({value:n},(function(){return e.apply(void 0,x([n],u,!1))})),r,n],u,!1))).pass,b(i.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(i.message)),t}}var e={};if(!X())return L((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Rt[e])return t(r,n,e)}});return r}function K(n,t){function e(n){r=!0,u=n}for(var r=!1,u=null,i=0;i<n.length;i++)if(t(n[i],e,i),r)return u}function j(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=Rt[r];e.push((function(n){return D.apply(void 0,x([o.apply(void 0,x([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(K(e,(function(e,r){var u,i=bt.run({value:n},(function(){return e(n)}));i.pass||r(G(!!i.pass,null!==(u=w(t,n,i.message))&&void 0!==u?u:i.message))})),G(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return X()?s=new Proxy(s,{get:function(t,e){return Rt[e]?n(e):t[e]}}):(L((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return R(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]),I(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 H(n){return(n=[].concat(n))[n.length-1]}function M(n,t){for(var e=[],r=0;r<n.length;r++){var u=n[r];d(u)?e.push(M(u,t)):(u=t(u),nt(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return d(t)?n.concat(V(t)):[].concat(n).concat(t)}),[])}function J(n,t){var e=0;for(t=t.slice(0,-1);e<t.length;e++){var r=t[e];n[r]=W(n[r],[]),n=n[r]}return n}function Y(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return H(t)},getCursor:function(){return[].concat(t)},next:function(){return t[t.length-1]++,H(t)},removeLevel:function(){t.pop()},reset:n}}function z(){return Ct.useX().stateRef}function Q(){return z().testObjects()}function Z(){(0,Q()[1])((function(n){return{prev:n.prev,current:[].concat(n.current)}}))}function $(n){(0,Q()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function nn(){return V(M(Q()[0].current,(function(n){return n.isPending()?n:null})))}function tn(){var n=Q()[0].current;return _t([n],(function(){return V(n)}))}function en(n){function e(n,t,e){return u.references.push(),r(n,w(t,e)),function(){return[u.references[n],function(t){return r(n,w(t,u.references[n]))}]}}function r(e,r){var o=u.references[e];u.references[e]=r,t(e=i[e][1])&&e(r,o),t(n)&&n()}var u={references:[]},i=[];return{registerStateKey:function(n,t){var r=i.length;return i.push([n,t]),e(r,n)},reset:function(){var n=u.references;u.references=[],i.forEach((function(t,r){return e(r,t[0],n[r])}))}}}function rn(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 un(n){setTimeout((function(){throw Error(n)}),0)}function on(){return Ct.useX().testCursor.getCursor()}function sn(){return Ct.useX().testCursor.next()}function an(n,e){n=void 0===(n=n.type)?zn.DEFAULT:n,F(t(e));var r={current:{},prev:{}},u=on();return Ct.run({isolate:{type:n,keys:r}},(function(){Ct.useX().testCursor.addLevel(),r.prev=function(){var n=Q()[0].prev;return[].concat(J(n,on())).reduce((function(n,t){return t instanceof kt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),$((function(n){return J(n,u)[H(u)]=[],n}));var n=e();return Ct.useX().testCursor.removeLevel(),sn(),n}))}function cn(n,t){return!(!t||n.fieldName!==t)}function fn(n,t){return tn().some((function(e){return e.hasFailures()?t&&!cn(e,t)?e=!1:(e=e.warns(),e=n===It.WARNINGS==!!e):e=!1,e}))}function ln(n){return!!function(n){return!!n&&tn().some((function(t){return t.fieldName===n&&t.isOmitted()}))}(n)||!fn(It.ERRORS,n)&&(!b(tn())&&!function(n){var t=z().optionalFields()[0];return vt(nn().filter((function(e){return!(n&&!cn(e,n))&&!0!==t[e.fieldName]})))}(n)&&function(n){var t=tn(),e=z().optionalFields()[0];return t.every((function(t){return!(!n||cn(t,n))||(!0===e[t.fieldName]||t.isTested()||t.isOmitted())}))}(n))}function pn(){var n=Ct.useX().summary;return F(n),n}function dn(n,t){function e(n){i[n===It.ERRORS?At.ERROR_COUNT:At.WARN_COUNT]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||$n({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(It.ERRORS):t.isWarning()&&e(It.WARNINGS)),i}function vn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function hn(n,t){var e,r={};for(e in n)r[e]=n[e][t]||[];return r}function Nn(n){return En(It.ERRORS,n)}function gn(n){return En(It.WARNINGS,n)}function En(n,t){var e=pn().tests;return t?vn(e,n,t):hn(e,n)}function mn(n,t){return Rn(n,It.ERRORS,t)}function yn(n,t){return Rn(n,It.WARNINGS,t)}function Rn(n,t,e){return n=pn().groups[n],e?vn(n,t,e):hn(n,t)}function bn(n){return Sn(At.ERROR_COUNT,n)}function On(n){return Sn(At.WARN_COUNT,n)}function Sn(n,t){var e,r=pn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Tn(n,t){return _n(It.ERRORS,n,t)}function Cn(n,t){return _n(It.WARNINGS,n,t)}function _n(n,t,e){var r,u,i=pn();if(n=n===It.ERRORS?At.ERROR_COUNT:At.WARN_COUNT,!(t=i.groups[t]))return!1;if(e)return T(null===(r=t[e])||void 0===r?void 0:r[n]);for(var o in t)if(T(null===(u=t[o])||void 0===u?void 0:u[n]))return!0;return!1}function In(n){var t,e=pn();return n?!(null===(t=e.tests[n])||void 0===t||!t.valid):e.valid}function An(){var n=tn(),t={stateRef:z()};return Dt([n],Ct.bind(t,(function(){var n=function(){var n=tn(),t=$n({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=dn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&ln(t.fieldName),e=n.groups;var r=t.groupName;return r&&(e[r]=e[r]||{},e[r][t.fieldName]=dn(e[r],t)),n}),t),t.valid=ln(),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)}(),t=z().suiteName()[0],e={summary:n};return $n(n,{getErrors:Ct.bind(e,Nn),getErrorsByGroup:Ct.bind(e,mn),getWarnings:Ct.bind(e,gn),getWarningsByGroup:Ct.bind(e,yn),hasErrors:Ct.bind(e,bn),hasErrorsByGroup:Ct.bind(e,Tn),hasWarnings:Ct.bind(e,On),hasWarningsByGroup:Ct.bind(e,Cn),isValid:Ct.bind(e,In),suiteName:t})})))}function kn(n){var t=nn();return!b(t)&&(n?t.some((function(t){return cn(t,n)})):vt(t))}function Ln(){var n=tn(),t={stateRef:z()};return qt([n],Ct.bind(t,(function(){return $n({},An(),{done:Ct.bind(t,Kt)})})))}function wn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!b(r.tests[e].testCount)))}function Wn(n){return!(kn()&&(!n||kn(n)))}function Fn(n,t){(0,z().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Pn(n){return n.forEach((function(n){return n()}))}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(Gt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=z().testCallbacks()[0].fieldCallbacks;t&&!kn(t)&&d(e[t])&&Pn(e[t]),kn()||n.emit(Gt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Gt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var n=z().optionalFields()[0];if(!b(n)){var e={};$((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))e[r.fieldName]&&r.omit();else{var u=n[r.fieldName];t(u)&&(e[r.fieldName]=u(),e[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Gt.ALL_RUNNING_TESTS_FINISHED,(function(){Pn(z().testCallbacks()[0].doneCallbacks)})),n.on(Gt.REMOVE_FIELD,(function(n){tn().forEach((function(t){cn(t,n)&&(t.cancel(),function(n){$((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Gt.RESET_FIELD,(function(n){tn().forEach((function(t){cn(t,n)&&t.reset()}))})),n}function xn(){var n=Ct.useX();return F(n.bus),n.bus}function Xn(n){return Dn(0,"tests",n)}function Gn(n){return Dn(1,"tests",n)}function Dn(n,t,e){var r=Ct.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){o(e)&&(r.exclusion[t][e]=0===n)}))}function qn(n){for(var t in n)if(!0===n[t])return!0;return!1}function Kn(){var n,t=Ct.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function jn(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function Bn(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=xn().emit,i=z(),s=Ct.bind({stateRef:i},(function(){Z(),u(Gt.TEST_COMPLETED,n)}));i=Ct.bind({stateRef:i},(function(t){n.isCanceled()||(n.message=o(t)?t:r,n.fail(),s())}));try{e.then(s,i)}catch(n){i()}}}function Hn(n){var t=Q()[0].prev;if(b(t))return Mn(n),n;var e=on();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=Ct.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=Ct.useX().isolate.keys.current;return i(r[t])?r[t]=e:un('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Mn(n),n}return!vt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(Ct.useX().isolate.type===zn.EACH||un("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=Q(),t=n[1],e=n[0].prev;n=J(e,on());var r=Ct.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),Mn(n=W(t,n)),n}function Mn(n){var t=on();$((function(e){return J(e,t)[H(t)]=n,e}))}function Vn(n){var e=Zn.EAGER;if(e=!(Ct.useX().mode[0]!==e||!fn(It.ERRORS,n.fieldName)))return n.skip(),Hn(n),sn(),n;if(e=Hn(n),Ct.useX().omitted)return e.omit(),sn(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,Ct.useX().skipped)return!0;var e=Ct.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=Ct.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Kn())return!0;if(!0===r.groups[n])return!(i||!qn(u)&&!1!==u[t])}return!!(n=!!Kn()&&!n)||!i&&!!qn(u)&&!w(e[t])}(n))return e.skip(!!Ct.useX().skipped),sn(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),Mn(n),sn(),n.isUntested()){e=xn();var r=function(n){return Ct.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),Bn(n)):e.emit(Gt.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)&&t(e.then)&&(n.setPending(),Bn(n));return n}function Jn(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:x([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),Yn("fieldName","string")),F(t(r),Yn("Test callback","function"));var i=Ct.useX();return Vn(e=new kt(n,r,{message:e,groupName:i.groupName,key:u}))}function Yn(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var zn,Qn,Zn,$n=Object.assign,nt=e(r),tt=e(u),et=e(i),rt=e(s),ut=e(a),it=e(c),ot=e(l),st=e(d),at=e(v),ct=e(g),ft=e(E),lt=e(m),pt=e(y),dt=e(R),vt=e(b),ht=e(O),Nt=e(S),gt=e(o),Et=e(C),mt=e(_),yt=e(A),Rt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:rt,doesNotStartWith:e(k),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:p,gt:f,gte:p,inside:v,isArray:d,isBetween:g,isBlank:E,isBoolean:m,isEmpty:b,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:Et,isKeyOf:O,isNaN:S,isNegative:function(n){return h(n,0)},isNotArray:st,isNotBetween:ct,isNotBlank:ft,isNotBoolean:lt,isNotEmpty:vt,isNotKeyOf:ht,isNotNaN:Nt,isNotNull:nt,isNotNullish:et,isNotNumber:pt,isNotNumeric:it,isNotString:gt,isNotUndefined:tt,isNotValueOf:mt,isNull:r,isNullish:i,isNumber:y,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:_,lengthEquals:R,lengthNotEquals:dt,lessThan:h,lessThanOrEquals:N,longerThan:I,longerThanOrEquals:function(n,t){return p(n.length,t)},lt:h,lte:N,matches:A,notEquals:ut,notInside:at,notMatches:yt,numberEquals:l,numberNotEquals:ot,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return N(n.length,t)},startsWith:k},bt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?$n(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:$n(e,{parent:U})})),Ot=function(){function n(){if(!X())return L((function(n){t[n]=j(n)})),$n(q,t)}var t={context:function(){return bt.useX()},extend:function(t){$n(Rt,t),n()}};return n(),new Proxy($n(q,t),{get:function(n,t){return t in n?n[t]:Rt[t]?j(t):void 0}})}(),St=(Qn=0,function(){return"".concat(Qn++)});!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"}(zn||(zn={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(Zn||(Zn={}));var Tt,Ct=P((function(n,t){return t?null:$n({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:zn.DEFAULT,keys:{current:{},prev:{}}},mode:[Zn.ALL],testCursor:Y()},n)})),_t=B();!function(n){n.Error="error",n.Warning="warning"}(Tt||(Tt={}));var It,At,kt=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=St(),this.severity=Tt.Error,this.status=Lt,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,u(this.message)&&o(n)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==Xt||(this.status=n)},n.prototype.warns=function(){return this.severity===Tt.Warning},n.prototype.setPending=function(){this.setStatus(Ut)},n.prototype.fail=function(){this.setStatus(this.warns()?Ft:Wt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Pt)},n.prototype.warn=function(){this.severity=Tt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(n){this.isPending()&&!n||this.setStatus(wt)},n.prototype.cancel=function(){this.setStatus(xt),Z()},n.prototype.reset=function(){this.status=Lt,Z()},n.prototype.omit=function(){this.setStatus(Xt)},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(Xt)},n.prototype.isUntested=function(){return this.statusEquals(Lt)},n.prototype.isFailing=function(){return this.statusEquals(Wt)},n.prototype.isCanceled=function(){return this.statusEquals(xt)},n.prototype.isSkipped=function(){return this.statusEquals(wt)},n.prototype.isPassing=function(){return this.statusEquals(Pt)},n.prototype.isWarning=function(){return this.statusEquals(Ft)},n.prototype.statusEquals=function(n){return this.status===n},n}(),Lt="UNTESTED",wt="SKIPPED",Wt="FAILED",Ft="WARNING",Pt="PASSING",Ut="PENDING",xt="CANCELED",Xt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(It||(It={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(At||(At={}));var Gt,Dt=B(1),qt=B(20),Kt=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=Ln(),wn(e,n,t))return t;var r=function(){return e(An())};return Wn(n)?(r(),t):(Fn(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"}(Gt||(Gt={})),Xn.group=function(n){return Dn(0,"groups",n)},Gn.group=function(n){return Dn(1,"groups",n)};var jt=$n(Jn,{memo:function(n){var t=B(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=Ct.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[z().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)}))):Vn(r[1])}}(Jn)});n.VERSION="4.3.2-dev-2805e3",n.context=Ct,n.create=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];n=n[1],F(t(r),"vest.create: Expected callback to be a function.");var u=Un(),i=en();return n={stateRef:rn(i,{suiteId:St(),suiteName:n}),bus:u},$n(Ct.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),an({type:zn.SUITE},(function(){r.apply(void 0,n)})),u.emit(Gt.SUITE_CALLBACK_DONE_RUNNING),Ln()})),{get:Ct.bind(n,An),remove:Ct.bind(n,(function(n){u.emit(Gt.REMOVE_FIELD,n)})),reset:i.reset,resetField:Ct.bind(n,(function(n){u.emit(Gt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),an({type:zn.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=Zn.EAGER;Ct.useX().mode[0]=n},n.enforce=Ot,n.group=function(n,e){F(o(n),jn("name must be a string")),F(t(e),jn("callback must be a function")),an({type:zn.GROUP},(function(){Ct.run({groupName:n},e)}))},n.include=function(n){var t=Ct.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=Ct.useX(),r=e.exclusion;e.inclusion[n]=function(){return Object.prototype.hasOwnProperty.call(r.tests,n)?W(r.tests[n],!0):o(t)?!!r.tests[t]:w(t,w(An))}}}},n.omitWhen=function(n,t){an({type:zn.OMIT_WHEN},(function(){Ct.run({omitted:!!Ct.useX().omitted||w(n,w(An))},(function(){return t()}))}))},n.only=Xn,n.optional=function(n){(0,z().optionalFields()[1])((function(t){if(d(n)||o(n))[].concat(n).forEach((function(n){t[n]=!0}));else for(var e in n)t[e]=n[e];return t}))},n.skip=Gn,n.skipWhen=function(n,t){an({type:zn.SKIP_WHEN},(function(){Ct.run({skipped:!!Ct.useX().skipped||w(n,w(An))},(function(){return t()}))}))},n.test=jt,n.warn=function(){var n=Ct.useX("warn hook called outside of a running suite.");F(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.3.1",
2
+ "version": "4.3.2-dev-2805e3",
3
3
  "license": "MIT",
4
4
  "name": "vest",
5
5
  "author": "ealush",
@@ -20,8 +20,8 @@
20
20
  "url": "https://github.com/ealush/vest.git/issues"
21
21
  },
22
22
  "dependencies": {
23
- "context": "^2.0.3",
24
- "n4s": "^4.1.4"
23
+ "context": "dev",
24
+ "n4s": "dev"
25
25
  },
26
26
  "homepage": "https://vestjs.dev/",
27
27
  "exports": {
@@ -1,14 +1,18 @@
1
- type Groups = Record<string, TestGroup>;
2
1
  type SuiteSummary = {
3
2
  groups: Groups;
4
- tests: TestGroup;
3
+ tests: Tests;
5
4
  valid: boolean;
6
5
  } & SummaryBase;
7
- type TestGroup = Record<string, SingleTestSummary>;
8
- type SingleTestSummary = SummaryBase & {
6
+ type GroupTestSummary = BaseTestSummary;
7
+ type Groups = Record<string, Group>;
8
+ type Group = Record<string, GroupTestSummary>;
9
+ type Tests = Record<string, SingleTestSummary>;
10
+ type SingleTestSummary = BaseTestSummary & {
11
+ valid: boolean;
12
+ };
13
+ type BaseTestSummary = SummaryBase & {
9
14
  errors: string[];
10
15
  warnings: string[];
11
- valid: boolean;
12
16
  };
13
17
  type SummaryBase = {
14
18
  errorCount: number;
package/types/parser.d.ts CHANGED
@@ -1,14 +1,18 @@
1
- type Groups = Record<string, TestGroup>;
2
1
  type SuiteSummary = {
3
2
  groups: Groups;
4
- tests: TestGroup;
3
+ tests: Tests;
5
4
  valid: boolean;
6
5
  } & SummaryBase;
7
- type TestGroup = Record<string, SingleTestSummary>;
8
- type SingleTestSummary = SummaryBase & {
6
+ type GroupTestSummary = BaseTestSummary;
7
+ type Groups = Record<string, Group>;
8
+ type Group = Record<string, GroupTestSummary>;
9
+ type Tests = Record<string, SingleTestSummary>;
10
+ type SingleTestSummary = BaseTestSummary & {
11
+ valid: boolean;
12
+ };
13
+ type BaseTestSummary = SummaryBase & {
9
14
  errors: string[];
10
15
  warnings: string[];
11
- valid: boolean;
12
16
  };
13
17
  type SummaryBase = {
14
18
  errorCount: number;