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
@@ -296,18 +296,6 @@ function useAllIncomplete() {
296
296
  return testObject.isPending() ? testObject : null;
297
297
  }));
298
298
  }
299
- function useOmittedFields() {
300
- var testObjects = useTestsFlat();
301
- return testObjects.reduce(function (omittedFields, testObject) {
302
- if (omittedFields[testObject.fieldName]) {
303
- return omittedFields;
304
- }
305
- if (testObject.isOmitted()) {
306
- omittedFields[testObject.fieldName] = true;
307
- }
308
- return omittedFields;
309
- }, {});
310
- }
311
299
  var flatCache = createCache();
312
300
  function useTestsFlat() {
313
301
  var current = useTestObjects()[0].current;
@@ -620,9 +608,7 @@ function useRetainTestKey(key, testObject) {
620
608
 
621
609
  function isolate(_a, callback) {
622
610
  var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
623
- if (!isFunction(callback)) {
624
- return;
625
- }
611
+ invariant(isFunction(callback));
626
612
  var keys = {
627
613
  current: {},
628
614
  prev: {}
@@ -652,6 +638,11 @@ var SeverityCount;
652
638
  SeverityCount["ERROR_COUNT"] = "errorCount";
653
639
  SeverityCount["WARN_COUNT"] = "warnCount";
654
640
  })(SeverityCount || (SeverityCount = {}));
641
+ function countKeyBySeverity(severity) {
642
+ return severity === Severity.ERRORS
643
+ ? SeverityCount.ERROR_COUNT
644
+ : SeverityCount.WARN_COUNT;
645
+ }
655
646
 
656
647
  /**
657
648
  * A safe hasOwnProperty access
@@ -677,7 +668,7 @@ function isEmpty(value) {
677
668
  else if (typeof value === 'object') {
678
669
  return lengthEquals(Object.keys(value), 0);
679
670
  }
680
- return true;
671
+ return false;
681
672
  }
682
673
  var isNotEmpty = bindNot(isEmpty);
683
674
 
@@ -699,10 +690,23 @@ function nonMatchingSeverityProfile(severity, testObject) {
699
690
  return either(severity === Severity.WARNINGS, testObject.warns());
700
691
  }
701
692
 
693
+ /**
694
+ * The difference between this file and hasFailures is that hasFailures uses the static
695
+ * summary object, while this one uses the actual validation state
696
+ */
697
+ function hasErrorsByTestObjects(fieldName) {
698
+ return hasFailuresByTestObjects(Severity.ERRORS, fieldName);
699
+ }
700
+ function hasFailuresByTestObjects(severityKey, fieldName) {
701
+ var testObjects = useTestsFlat();
702
+ return testObjects.some(function (testObject) {
703
+ return hasFailuresByTestObject(testObject, severityKey, fieldName);
704
+ });
705
+ }
702
706
  /**
703
707
  * Determines whether a certain test profile has failures.
704
708
  */
705
- function hasFailuresLogic(testObject, severityKey, fieldName) {
709
+ function hasFailuresByTestObject(testObject, severityKey, fieldName) {
706
710
  if (!testObject.hasFailures()) {
707
711
  return false;
708
712
  }
@@ -715,51 +719,29 @@ function hasFailuresLogic(testObject, severityKey, fieldName) {
715
719
  return true;
716
720
  }
717
721
 
718
- function hasErrors(fieldName) {
719
- return has(Severity.ERRORS, fieldName);
720
- }
721
- function hasWarnings(fieldName) {
722
- return has(Severity.WARNINGS, fieldName);
723
- }
724
- function has(severityKey, fieldName) {
725
- var testObjects = useTestsFlat();
726
- return testObjects.some(function (testObject) {
727
- return hasFailuresLogic(testObject, severityKey, fieldName);
728
- });
729
- }
730
-
731
- function isValid(fieldName) {
732
- var _a, _b;
733
- var summary = context.useX().summary;
734
- invariant(summary);
735
- 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);
736
- }
737
722
  // eslint-disable-next-line max-statements, complexity
738
723
  function shouldAddValidProp(fieldName) {
739
724
  if (fieldIsOmitted(fieldName)) {
740
725
  return true;
741
726
  }
742
- if (hasErrors(fieldName)) {
727
+ if (hasErrorsByTestObjects(fieldName)) {
743
728
  return false;
744
729
  }
745
730
  var testObjects = useTestsFlat();
746
731
  if (isEmpty(testObjects)) {
747
732
  return false;
748
733
  }
749
- if (fieldDoesNotExist(fieldName)) {
750
- return false;
751
- }
752
734
  if (hasNonOptionalIncomplete(fieldName)) {
753
735
  return false;
754
736
  }
755
737
  return noMissingTests(fieldName);
756
738
  }
757
739
  function fieldIsOmitted(fieldName) {
758
- var omittedFields = useOmittedFields();
759
740
  if (!fieldName) {
760
741
  return false;
761
742
  }
762
- return !!omittedFields[fieldName];
743
+ var flatTests = useTestsFlat();
744
+ return flatTests.some(function (testObject) { return testObject.fieldName === fieldName && testObject.isOmitted(); });
763
745
  }
764
746
  function hasNonOptionalIncomplete(fieldName) {
765
747
  var optionalFields = useOptionalFields()[0];
@@ -770,11 +752,6 @@ function hasNonOptionalIncomplete(fieldName) {
770
752
  return optionalFields[testObject.fieldName] !== true;
771
753
  }));
772
754
  }
773
- function fieldDoesNotExist(fieldName) {
774
- var testObjects = useTestsFlat();
775
- return (!!fieldName &&
776
- !testObjects.find(function (testObject) { return testObject.fieldName === fieldName; }));
777
- }
778
755
  function noMissingTests(fieldName) {
779
756
  var testObjects = useTestsFlat();
780
757
  var optionalFields = useOptionalFields()[0];
@@ -788,6 +765,11 @@ function noMissingTests(fieldName) {
788
765
  });
789
766
  }
790
767
 
768
+ function useSummary() {
769
+ var summary = context.useX().summary;
770
+ invariant(summary);
771
+ return summary;
772
+ }
791
773
  /**
792
774
  * Reads the testObjects list and gets full validation result from it.
793
775
  */
@@ -836,13 +818,9 @@ function countFailures(summary) {
836
818
  }
837
819
  return summary;
838
820
  }
839
- /**
840
- * Appends the test to a results object
841
- */
842
- // eslint-disable-next-line max-statements
843
821
  function appendTestObject(summaryKey, testObject) {
844
822
  var fieldName = testObject.fieldName, message = testObject.message;
845
- summaryKey[fieldName] = summaryKey[fieldName] || baseStats();
823
+ summaryKey[fieldName] = summaryKey[fieldName] || baseTestStats();
846
824
  var testKey = summaryKey[fieldName];
847
825
  if (testObject.isNonActionable())
848
826
  return testKey;
@@ -855,18 +833,13 @@ function appendTestObject(summaryKey, testObject) {
855
833
  }
856
834
  return testKey;
857
835
  function incrementFailures(severity) {
858
- var countKey = getCountKey(severity);
836
+ var countKey = countKeyBySeverity(severity);
859
837
  testKey[countKey]++;
860
838
  if (message) {
861
839
  testKey[severity] = (testKey[severity] || []).concat(message);
862
840
  }
863
841
  }
864
842
  }
865
- function getCountKey(severity) {
866
- return severity === Severity.ERRORS
867
- ? SeverityCount.ERROR_COUNT
868
- : SeverityCount.WARN_COUNT;
869
- }
870
843
  function baseStats() {
871
844
  return {
872
845
  errorCount: 0,
@@ -874,6 +847,12 @@ function baseStats() {
874
847
  testCount: 0
875
848
  };
876
849
  }
850
+ function baseTestStats() {
851
+ return assign(baseStats(), {
852
+ errors: [],
853
+ warnings: []
854
+ });
855
+ }
877
856
 
878
857
  // calls collectAll or getByFieldName depending on whether fieldName is provided
879
858
  function gatherFailures(testGroup, severityKey, fieldName) {
@@ -886,10 +865,11 @@ function getByFieldName(testGroup, severityKey, fieldName) {
886
865
  return ((_a = testGroup === null || testGroup === void 0 ? void 0 : testGroup[fieldName]) === null || _a === void 0 ? void 0 : _a[severityKey]) || [];
887
866
  }
888
867
  function collectAll(testGroup, severityKey) {
889
- var _a;
890
868
  var output = {};
891
869
  for (var field in testGroup) {
892
- output[field] = ((_a = testGroup[field]) === null || _a === void 0 ? void 0 : _a[severityKey]) || [];
870
+ // We will probably never get to the fallback array
871
+ // leaving it just in case the implementation changes
872
+ output[field] = testGroup[field][severityKey] || [];
893
873
  }
894
874
  return output;
895
875
  }
@@ -904,8 +884,7 @@ function getWarnings(fieldName) {
904
884
  * @returns suite or field's errors or warnings.
905
885
  */
906
886
  function getFailures(severityKey, fieldName) {
907
- var summary = context.useX().summary;
908
- invariant(summary);
887
+ var summary = useSummary();
909
888
  return gatherFailures(summary.tests, severityKey, fieldName);
910
889
  }
911
890
 
@@ -916,27 +895,59 @@ function getWarningsByGroup(groupName, fieldName) {
916
895
  return getFailuresByGroup(groupName, Severity.WARNINGS, fieldName);
917
896
  }
918
897
  function getFailuresByGroup(groupName, severityKey, fieldName) {
919
- var summary = context.useX().summary;
920
- invariant(summary);
898
+ var summary = useSummary();
921
899
  return gatherFailures(summary.groups[groupName], severityKey, fieldName);
922
900
  }
923
901
 
902
+ function isPositive(value) {
903
+ return greaterThan(value, 0);
904
+ }
905
+
906
+ function hasErrors(fieldName) {
907
+ return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
908
+ }
909
+ function hasWarnings(fieldName) {
910
+ return hasFailures(SeverityCount.WARN_COUNT, fieldName);
911
+ }
912
+ function hasFailures(severityCount, fieldName) {
913
+ var _a;
914
+ var summary = useSummary();
915
+ if (fieldName) {
916
+ return isPositive((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
917
+ }
918
+ return isPositive(summary[severityCount]);
919
+ }
920
+
924
921
  function hasErrorsByGroup(groupName, fieldName) {
925
- return hasByGroup(Severity.ERRORS, groupName, fieldName);
922
+ return hasFailuresByGroup(Severity.ERRORS, groupName, fieldName);
926
923
  }
927
924
  function hasWarningsByGroup(groupName, fieldName) {
928
- return hasByGroup(Severity.WARNINGS, groupName, fieldName);
925
+ return hasFailuresByGroup(Severity.WARNINGS, groupName, fieldName);
929
926
  }
930
- /**
931
- * Checks whether there are failures in a given group.
932
- */
933
- function hasByGroup(severityKey, group, fieldName) {
934
- var testObjects = useTestsFlat();
935
- return testObjects.some(function (testObject) {
936
- return group === testObject.groupName
937
- ? hasFailuresLogic(testObject, severityKey, fieldName)
938
- : false;
939
- });
927
+ // eslint-disable-next-line max-statements
928
+ function hasFailuresByGroup(severityKey, groupName, fieldName) {
929
+ var _a, _b;
930
+ var summary = useSummary();
931
+ var severityCount = countKeyBySeverity(severityKey);
932
+ var group = summary.groups[groupName];
933
+ if (!group) {
934
+ return false;
935
+ }
936
+ if (fieldName) {
937
+ return isPositive((_a = group[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
938
+ }
939
+ for (var field in group) {
940
+ if (isPositive((_b = group[field]) === null || _b === void 0 ? void 0 : _b[severityCount])) {
941
+ return true;
942
+ }
943
+ }
944
+ return false;
945
+ }
946
+
947
+ function isValid(fieldName) {
948
+ var _a;
949
+ var summary = useSummary();
950
+ return fieldName ? Boolean((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : summary.valid;
940
951
  }
941
952
 
942
953
  var cache$1 = createCache(1);
@@ -946,7 +957,7 @@ function produceSuiteResult() {
946
957
  return cache$1([testObjects], context.bind(ctxRef, function () {
947
958
  var summary = genTestsSummary();
948
959
  var suiteName = useSuiteName();
949
- var ref = assign({ summary: summary }, ctxRef);
960
+ var ref = { summary: summary };
950
961
  return assign(summary, {
951
962
  getErrors: context.bind(ref, getErrors),
952
963
  getErrorsByGroup: context.bind(ref, getErrorsByGroup),
@@ -1339,7 +1350,7 @@ function isExcluded(testObject) {
1339
1350
  return keyTests[fieldName] === false;
1340
1351
  }
1341
1352
  }
1342
- if (isMissingFromIncludedGroup(groupName)) {
1353
+ if (isTopLevelWhenThereIsAnIncludedGroup(groupName)) {
1343
1354
  return true;
1344
1355
  }
1345
1356
  // if field is only'ed
@@ -1348,39 +1359,13 @@ function isExcluded(testObject) {
1348
1359
  // If there is _ANY_ `only`ed test (and we already know this one isn't) return true
1349
1360
  if (hasIncludedTests(keyTests)) {
1350
1361
  // Check if inclusion rules for this field (`include` hook)
1362
+ // TODO: Check if this may need to be moved outside of the condition.
1363
+ // What if there are no included tests? This shouldn't run then?
1351
1364
  return !optionalFunctionValue(inclusion[fieldName]);
1352
1365
  }
1353
1366
  // We're done here. This field is not excluded
1354
1367
  return false;
1355
1368
  }
1356
- // eslint-disable-next-line max-statements
1357
- function isMissingFromIncludedGroup(groupName) {
1358
- var context$1 = context.useX();
1359
- var exclusion = context$1.exclusion;
1360
- if (!hasIncludedGroups()) {
1361
- return false;
1362
- }
1363
- if (!groupName) {
1364
- return true;
1365
- }
1366
- if (groupName in exclusion.groups) {
1367
- if (exclusion.groups[groupName]) {
1368
- return false;
1369
- }
1370
- return true;
1371
- }
1372
- return true;
1373
- }
1374
- function hasIncludedGroups() {
1375
- var context$1 = context.useX();
1376
- var exclusion = context$1.exclusion;
1377
- for (var group in exclusion.groups) {
1378
- if (exclusion.groups[group]) {
1379
- return true;
1380
- }
1381
- }
1382
- return false;
1383
- }
1384
1369
  /**
1385
1370
  * Checks whether a given group is excluded from running.
1386
1371
  */
@@ -1395,13 +1380,8 @@ function isGroupExcluded(groupName) {
1395
1380
  return keyGroups[groupName] === false;
1396
1381
  }
1397
1382
  // Group is not present
1398
- for (var group in keyGroups) {
1399
- // If any other group is only'ed
1400
- if (keyGroups[group] === true) {
1401
- return true;
1402
- }
1403
- }
1404
- return false;
1383
+ // Return whether other groups are included
1384
+ return hasIncludedGroups();
1405
1385
  }
1406
1386
  /**
1407
1387
  * Adds fields to a specified exclusion group.
@@ -1430,6 +1410,24 @@ function hasIncludedTests(keyTests) {
1430
1410
  }
1431
1411
  return false;
1432
1412
  }
1413
+ // are we not in a group and there is an included group?
1414
+ function isTopLevelWhenThereIsAnIncludedGroup(groupName) {
1415
+ if (!hasIncludedGroups()) {
1416
+ return false;
1417
+ }
1418
+ // Return whether there's an included group, and we're not inside a group
1419
+ return !groupName;
1420
+ }
1421
+ function hasIncludedGroups() {
1422
+ var context$1 = context.useX();
1423
+ var exclusion = context$1.exclusion;
1424
+ for (var group in exclusion.groups) {
1425
+ if (exclusion.groups[group]) {
1426
+ return true;
1427
+ }
1428
+ }
1429
+ return false;
1430
+ }
1433
1431
 
1434
1432
  /**
1435
1433
  * Runs tests within a group so that they can be controlled or queried separately.
@@ -1455,16 +1453,18 @@ function groupErrorMsg(error) {
1455
1453
  function include(fieldName) {
1456
1454
  var context$1 = context.useX();
1457
1455
  var inclusion = context$1.inclusion, exclusion = context$1.exclusion;
1458
- if (!fieldName) {
1459
- return { when: when };
1460
- }
1456
+ invariant(isStringValue(fieldName));
1461
1457
  inclusion[fieldName] = defaultTo(exclusion.tests[fieldName], true);
1462
1458
  return { when: when };
1463
1459
  function when(condition) {
1464
1460
  var context$1 = context.useX();
1465
1461
  var inclusion = context$1.inclusion, exclusion = context$1.exclusion;
1462
+ // This callback will run as part of the "isExcluded" series of checks
1466
1463
  inclusion[fieldName] = function () {
1467
1464
  if (hasOwnProperty(exclusion.tests, fieldName)) {
1465
+ // I suspect this code is technically unreachable because
1466
+ // if there are any skip/only rules applied to the current
1467
+ // field, the "isExcluded" function will have already bailed
1468
1468
  return defaultTo(exclusion.tests[fieldName], true);
1469
1469
  }
1470
1470
  if (isStringValue(condition)) {
@@ -1498,7 +1498,7 @@ function eager() {
1498
1498
  setMode(Modes.EAGER);
1499
1499
  }
1500
1500
  function shouldSkipBasedOnMode(testObject) {
1501
- if (isEager() && hasErrors(testObject.fieldName))
1501
+ if (isEager() && hasErrorsByTestObjects(testObject.fieldName))
1502
1502
  return true;
1503
1503
  return false;
1504
1504
  }
@@ -1635,6 +1635,8 @@ function runAsyncTest(testObject) {
1635
1635
  asyncTest.then(done, fail);
1636
1636
  }
1637
1637
  catch (e) {
1638
+ // We will probably never get here, unless the consumer uses a buggy custom Promise
1639
+ // implementation that behaves differently than the native one, or if they for some
1638
1640
  fail();
1639
1641
  }
1640
1642
  }
@@ -1643,22 +1645,7 @@ function runAsyncTest(testObject) {
1643
1645
  * Runs sync tests - or extracts promise.
1644
1646
  */
1645
1647
  function runSyncTest(testObject) {
1646
- return context.run({ currentTest: testObject }, function () {
1647
- var result;
1648
- try {
1649
- result = testObject.testFn();
1650
- }
1651
- catch (e) {
1652
- if (shouldUseErrorAsMessage(testObject.message, e)) {
1653
- testObject.message = e;
1654
- }
1655
- result = false;
1656
- }
1657
- if (result === false) {
1658
- testObject.fail();
1659
- }
1660
- return result;
1661
- });
1648
+ return context.run({ currentTest: testObject }, function () { return testObject.run(); });
1662
1649
  }
1663
1650
 
1664
1651
  /**
@@ -1877,6 +1864,6 @@ function warn() {
1877
1864
  ctx.currentTest.warn();
1878
1865
  }
1879
1866
 
1880
- var VERSION = "4.3.1";
1867
+ var VERSION = "4.3.2-dev-2805e3";
1881
1868
 
1882
1869
  export { VERSION, context, create, each, eager, group, include, omitWhen, only, optional, skip, skipWhen, test, warn };
@@ -1 +1 @@
1
- import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}function i(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function o(t,n){return i(t)&&i(n)&&Number(t)===Number(n)}function s(t){function n(e,u){var o=n.get(e);return o?o[1]:(u=u(),r.unshift([e.concat(),u]),e=r.length,o=t,i(e)&&i(o)&&Number(e)>Number(o)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return o(t.length,e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var a=u((function(t){return null===t}));function c(t){return"function"==typeof t}function f(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return c(t)?t.apply(void 0,n):t}function l(t,n){var e;return null!==(e=f(t))&&void 0!==e?e:n}function p(t){return(t=[].concat(t))[t.length-1]}function d(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(d(u,n)):(u=n(u),a(u)&&e.push(u))}return e}function v(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(v(n)):[].concat(t).concat(n)}),[])}function h(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=l(t[r],[]),t=t[r]}return t}var g=Object.assign;function m(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return p(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,p(n)},removeLevel:function(){n.pop()},reset:t}}var N,E=N||(N={});E[E.DEFAULT=0]="DEFAULT",E[E.SUITE=1]="SUITE",E[E.EACH=2]="EACH",E[E.SKIP_WHEN=3]="SKIP_WHEN",E[E.OMIT_WHEN=4]="OMIT_WHEN",E[E.GROUP=5]="GROUP";var y,b=y||(y={});b[b.ALL=0]="ALL",b[b.EAGER=1]="EAGER";var S=t((function(t,n){return n?null:g({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:N.DEFAULT,keys:{current:{},prev:{}}},mode:[y.ALL],testCursor:m()},t)}));function C(){return S.useX().stateRef}function R(){return C().testObjects()}function T(){(0,R()[1])((function(t){return{prev:t.prev,current:[].concat(t.current)}}))}function A(t){(0,R()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function I(){return v(d(R()[0].current,(function(t){return t.isPending()?t:null})))}var O=s();function _(){var t=R()[0].current;return O([t],(function(){return v(t)}))}var k,L=k||(k={});L.Error="error",L.Warning="warning";var F=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=k.Error,this.status=X,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==x||(this.status=t)},t.prototype.warns=function(){return this.severity===k.Warning},t.prototype.setPending=function(){this.setStatus(w)},t.prototype.fail=function(){this.setStatus(this.warns()?U:P)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(W)},t.prototype.warn=function(){this.severity=k.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(G)},t.prototype.cancel=function(){this.setStatus(D),T()},t.prototype.reset=function(){this.status=X,T()},t.prototype.omit=function(){this.setStatus(x)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(w)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(x)},t.prototype.isUntested=function(){return this.statusEquals(X)},t.prototype.isFailing=function(){return this.statusEquals(P)},t.prototype.isCanceled=function(){return this.statusEquals(D)},t.prototype.isSkipped=function(){return this.statusEquals(G)},t.prototype.isPassing=function(){return this.statusEquals(W)},t.prototype.isWarning=function(){return this.statusEquals(U)},t.prototype.statusEquals=function(t){return this.status===t},t}(),X="UNTESTED",G="SKIPPED",P="FAILED",U="WARNING",W="PASSING",w="PENDING",D="CANCELED",x="OMITTED";function H(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?f(n):n)}function K(t){function n(t,n,u){return r.references.push(),e(t,f(n,u)),function(){return[r.references[t],function(n){return e(t,f(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,c(n=u[n][1])&&n(e,i),c(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function M(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function j(t){return null==t}function q(t){setTimeout((function(){throw Error(t)}),0)}function B(){return S.useX().testCursor.getCursor()}function V(){return S.useX().testCursor.next()}function Y(t,n){if(t=void 0===(t=t.type)?N.DEFAULT:t,c(n)){var e={current:{},prev:{}},r=B();return S.run({isolate:{type:t,keys:e}},(function(){S.useX().testCursor.addLevel(),e.prev=function(){var t=R()[0].prev;return[].concat(h(t,B())).reduce((function(t,n){return n instanceof F&&!j(n.key)?(t[n.key]=n,t):t}),{})}(),A((function(t){return h(t,r)[p(r)]=[],t}));var t=n();return S.useX().testCursor.removeLevel(),V(),t}))}}var J,z=J||(J={});z.WARNINGS="warnings",z.ERRORS="errors";var Q,Z=Q||(Q={});function $(t){if(t){if("number"==typeof t)return 0===t;if(Object.prototype.hasOwnProperty.call(t,"length"))return o(t.length,0);if("object"==typeof t)return o((t=Object.keys(t)).length,0)}return!0}Z.ERROR_COUNT="errorCount",Z.WARN_COUNT="warnCount";var tt=u($);function nt(t,n){return!(!n||t.fieldName!==n)}function et(t,n,e){return(e=!t.hasFailures()||e&&!nt(t,e))||(t=t.warns(),e=n===J.WARNINGS!=!!t),!e}function rt(t){return it(J.ERRORS,t)}function ut(t){return it(J.WARNINGS,t)}function it(t,n){return _().some((function(e){return et(e,t,n)}))}function ot(t){var n,e,r=S.useX().summary;return H(r),!!(t?null!==(e=null===(n=r.tests)||void 0===n?void 0:n[t])&&void 0!==e&&e.valid:r.valid)}function st(t){var n=_().reduce((function(t,n){return t[n.fieldName]||n.isOmitted()&&(t[n.fieldName]=!0),t}),{});return(n=!!t&&!!n[t])||!rt(t)&&(!($(n=_())||function(t){var n=_();return!!t&&!n.find((function(n){return n.fieldName===t}))}(t)||function(t){var n=C().optionalFields()[0];return tt(I().filter((function(e){return!(t&&!nt(e,t))&&!0!==n[e.fieldName]})))}(t))&&function(t){var n=_(),e=C().optionalFields()[0];return n.every((function(n){return!(!t||nt(n,t))||(!0===e[n.fieldName]||n.isTested()||n.isOmitted())}))}(t))}function at(t,n){function e(t){i[t===J.ERRORS?Q.ERROR_COUNT:Q.WARN_COUNT]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||{errorCount:0,warnCount:0,testCount:0};var i=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(J.ERRORS):n.isWarning()&&e(J.WARNINGS)),i}function ct(t,n,e){var r;return(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r[n])||[]}function ft(t,n){var e,r,u={};for(r in t)u[r]=(null===(e=t[r])||void 0===e?void 0:e[n])||[];return u}function lt(t){return dt(J.ERRORS,t)}function pt(t){return dt(J.WARNINGS,t)}function dt(t,n){var e=S.useX().summary;return H(e),e=e.tests,n?ct(e,t,n):ft(e,t)}function vt(t,n){return gt(t,J.ERRORS,n)}function ht(t,n){return gt(t,J.WARNINGS,n)}function gt(t,n,e){var r=S.useX().summary;return H(r),t=r.groups[t],e?ct(t,n,e):ft(t,n)}function mt(t,n){return Et(J.ERRORS,t,n)}function Nt(t,n){return Et(J.WARNINGS,t,n)}function Et(t,n,e){return _().some((function(r){return n===r.groupName&&et(r,t,e)}))}var yt=s(1);function bt(){var t=_(),n={stateRef:C()};return yt([t],S.bind(n,(function(){var t=function(){var t=_(),n=g({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var e=t.tests;e[n.fieldName]=at(e,n),e[n.fieldName].valid=!1!==e[n.fieldName].valid&&st(n.fieldName),e=t.groups;var r=n.groupName;return r&&(e[r]=e[r]||{},e[r][n.fieldName]=at(e[r],n)),t}),n),n.valid=st(),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}(),e=C().suiteName()[0],r=g({summary:t},n);return g(t,{getErrors:S.bind(r,lt),getErrorsByGroup:S.bind(r,vt),getWarnings:S.bind(r,pt),getWarningsByGroup:S.bind(r,ht),hasErrors:S.bind(r,rt),hasErrorsByGroup:S.bind(r,mt),hasWarnings:S.bind(r,ut),hasWarningsByGroup:S.bind(r,Nt),isValid:S.bind(r,ot),suiteName:e})})))}function St(t){var n=I();return!$(n)&&(t?n.some((function(n){return nt(n,t)})):tt(n))}var Ct=s(20);function Rt(){var t=_(),n={stateRef:C()};return Ct([t],S.bind(n,(function(){return g({},bt(),{done:S.bind(n,It)})})))}function Tt(t,n,e){return!(c(t)&&(!n||e.tests[n]&&!$(e.tests[n].testCount)))}function At(t){return!(St()&&(!t||St(t)))}function It(){function t(){return r(bt())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=Rt(),Tt(r,n,e)?e:At(n)?(t(),e):(Ot(t,n),e)}function Ot(t,n){(0,C().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function _t(t){return t.forEach((function(t){return t()}))}function kt(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==e}))}}}}}();return t.on(Ft.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=C().testCallbacks()[0].fieldCallbacks;n&&!St(n)&&Array.isArray(e[n])&&_t(e[n]),St()||t.emit(Ft.ALL_RUNNING_TESTS_FINISHED)}})),t.on(Ft.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var t=C().optionalFields()[0];if(!$(t)){var n={};A((function(e){return d(e,(function(e){if(Object.prototype.hasOwnProperty.call(n,e.fieldName))n[e.fieldName]&&e.omit();else{var r=t[e.fieldName];c(r)&&(n[e.fieldName]=r(),n[e.fieldName]&&e.omit())}return e}))}))}}()})),t.on(Ft.ALL_RUNNING_TESTS_FINISHED,(function(){_t(C().testCallbacks()[0].doneCallbacks)})),t.on(Ft.REMOVE_FIELD,(function(t){_().forEach((function(n){nt(n,t)&&(n.cancel(),function(t){A((function(n){return d(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(Ft.RESET_FIELD,(function(t){_().forEach((function(n){nt(n,t)&&n.reset()}))})),t}function Lt(){var t=S.useX();return H(t.bus),t.bus}var Ft,Xt=Ft||(Ft={});function Gt(t){return Ut(0,"tests",t)}function Pt(t){return Ut(1,"tests",t)}function Ut(t,n,e){var u=S.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function Wt(t){for(var n in t)if(!0===t[n])return!0;return!1}function wt(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function Dt(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function xt(t){var n=t.asyncTest,e=t.message;if(n&&c(n.then)){var u=Lt().emit,i=C(),o=S.bind({stateRef:i},(function(){T(),u(Ft.TEST_COMPLETED,t)}));i=S.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function Ht(t){var n=R()[0].prev;if($(n))return Kt(t),t;var e=B();if(n=h(n,e)[p(e)],!j(t.key)){n=t.key,(e=S.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=S.useX().isolate.keys.current;return j(r[n])?r[n]=e:q('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),Kt(t),t}return!tt(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(S.useX().isolate.type===N.EACH||q("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var t=R(),n=t[1],e=t[0].prev;t=h(e,B());var r=S.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),Kt(t=l(n,t)),t}function Kt(t){var n=B();A((function(e){return h(e,n)[p(n)]=t,e}))}function Mt(t){var n=y.EAGER;if(n=!(S.useX().mode[0]!==n||!rt(t.fieldName)))return t.skip(),Ht(t),V(),t;if(n=Ht(t),S.useX().omitted)return n.omit(),V(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,S.useX().skipped)return!0;var e=S.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){t:{var o=S.useX().exclusion.groups;if(Object.prototype.hasOwnProperty.call(o,t))var s=!1===o[t];else{for(s in o)if(!0===o[s]){s=!0;break t}s=!1}}if(s)return!0;if(!0===r.groups[t])return!(i||!Wt(u)&&!1!==u[n])}r=S.useX().exclusion;t:{for(a in(s=S.useX().exclusion).groups)if(s.groups[a]){var a=!0;break t}a=!1}return!(!a||t&&t in r.groups&&r.groups[t])||!i&&!!Wt(u)&&!f(e[n])}(t))return n.skip(!!S.useX().skipped),V(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),Kt(t),V(),t.isUntested()){n=Lt();var e=function(t){return S.run({currentTest:t},(function(){try{var n=t.testFn()}catch(e){n=e,void 0===t.message&&r(n)&&(t.message=e),n=!1}return!1===n&&t.fail(),n}))}(t);try{e&&c(e.then)?(t.asyncTest=e,t.setPending(),xt(t)):n.emit(Ft.TEST_COMPLETED,t)}catch(n){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&c(n.then)&&(t.setPending(),xt(t));return t}function jt(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var u=c(n[1])?n:Dt([void 0],n,!0);n=u[0],e=u[1],u=u[2],H(r(t),Bt("fieldName","string")),H(c(e),Bt("Test callback","function"));var i=S.useX();return Mt(n=new F(t,e,{message:n,groupName:i.groupName,key:u}))}Xt.TEST_COMPLETED="test_completed",Xt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",Xt.REMOVE_FIELD="remove_field",Xt.RESET_FIELD="reset_field",Xt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Gt.group=function(t){return Ut(0,"groups",t)},Pt.group=function(t){return Ut(1,"groups",t)};var qt=g(jt,{memo:function(t){var n=s(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=S.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[C().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):Mt(r[1])}}(jt)});function Bt(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var Vt="4.3.1";function Yt(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],H(c(r),"vest.create: Expected callback to be a function.");var u=kt(),i=K();return t={stateRef:M(i,{suiteId:e(),suiteName:t}),bus:u},g(S.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return i.reset(),Y({type:N.SUITE},(function(){r.apply(void 0,t)})),u.emit(Ft.SUITE_CALLBACK_DONE_RUNNING),Rt()})),{get:S.bind(t,bt),remove:S.bind(t,(function(t){u.emit(Ft.REMOVE_FIELD,t)})),reset:i.reset,resetField:S.bind(t,(function(t){u.emit(Ft.RESET_FIELD,t)}))})}function Jt(t,n){H(c(n),"each callback must be a function"),Y({type:N.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function zt(){var t=y.EAGER;S.useX().mode[0]=t}function Qt(t,n){H(r(t),wt("name must be a string")),H(c(n),wt("callback must be a function")),Y({type:N.GROUP},(function(){S.run({groupName:t},n)}))}function Zt(t){function n(n){var e=S.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?l(u.tests[t],!0):r(n)?!!u.tests[n]:f(n,f(bt))}}var e=S.useX();return t?(e.inclusion[t]=l(e.exclusion.tests[t],!0),{when:n}):{when:n}}function $t(t,n){Y({type:N.OMIT_WHEN},(function(){S.run({omitted:!!S.useX().omitted||f(t,f(bt))},(function(){return n()}))}))}function tn(t){(0,C().optionalFields()[1])((function(n){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){n[t]=!0}));else for(var e in t)n[e]=t[e];return n}))}function nn(t,n){Y({type:N.SKIP_WHEN},(function(){S.run({skipped:!!S.useX().skipped||f(t,f(bt))},(function(){return n()}))}))}function en(){var t=S.useX("warn hook called outside of a running suite.");H(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{Vt as VERSION,S as context,Yt as create,Jt as each,zt as eager,Qt as group,Zt as include,$t as omitWhen,Gt as only,tn as optional,Pt as skip,nn as skipWhen,qt as test,en as warn};
1
+ import{createContext as t}from"context";export{enforce}from"n4s";var n,e=(n=0,function(){return"".concat(n++)});function r(t){return String(t)===t}function u(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(void 0,n)}}function i(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function o(t,n){return i(t)&&i(n)&&Number(t)===Number(n)}function s(t,n){return i(t)&&i(n)&&Number(t)>Number(n)}function a(t){function n(e,u){var i=n.get(e);return i?i[1]:(u=u(),r.unshift([e.concat(),u]),s(r.length,t)&&(r.length=t),u)}function e(t){return r.findIndex((function(n){var e=n[0];return o(t.length,e.length)&&t.every((function(t,n){return t===e[n]}))}))}void 0===t&&(t=1);var r=[];return n.invalidate=function(t){-1<(t=e(t))&&r.splice(t,1)},n.get=function(t){return r[e(t)]||null},n}var c=u((function(t){return null===t}));function f(t){return"function"==typeof t}function l(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return f(t)?t.apply(void 0,n):t}function p(t,n){var e;return null!==(e=l(t))&&void 0!==e?e:n}function d(t){return(t=[].concat(t))[t.length-1]}function v(t,n){for(var e=[],r=0;r<t.length;r++){var u=t[r];Array.isArray(u)?e.push(v(u,n)):(u=n(u),c(u)&&e.push(u))}return e}function h(t){return[].concat(t).reduce((function(t,n){return Array.isArray(n)?t.concat(h(n)):[].concat(t).concat(n)}),[])}function E(t,n){var e=0;for(n=n.slice(0,-1);e<n.length;e++){var r=n[e];t[r]=p(t[r],[]),t=t[r]}return t}var g=Object.assign;function N(){function t(){n=[0]}var n=[];return t(),{addLevel:function(){n.push(0)},cursorAt:function(){return d(n)},getCursor:function(){return[].concat(n)},next:function(){return n[n.length-1]++,d(n)},removeLevel:function(){n.pop()},reset:t}}var m,y=m||(m={});y[y.DEFAULT=0]="DEFAULT",y[y.SUITE=1]="SUITE",y[y.EACH=2]="EACH",y[y.SKIP_WHEN=3]="SKIP_WHEN",y[y.OMIT_WHEN=4]="OMIT_WHEN",y[y.GROUP=5]="GROUP";var R,C=R||(R={});C[C.ALL=0]="ALL",C[C.EAGER=1]="EAGER";var S=t((function(t,n){return n?null:g({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:m.DEFAULT,keys:{current:{},prev:{}}},mode:[R.ALL],testCursor:N()},t)}));function b(){return S.useX().stateRef}function T(){return b().testObjects()}function O(){(0,T()[1])((function(t){return{prev:t.prev,current:[].concat(t.current)}}))}function A(t){(0,T()[1])((function(n){return{prev:n.prev,current:[].concat(t(n.current))}}))}function _(){return h(v(T()[0].current,(function(t){return t.isPending()?t:null})))}var I=a();function k(){var t=T()[0].current;return I([t],(function(){return h(t)}))}var L,F=L||(L={});F.Error="error",F.Warning="warning";var U=function(){function t(t,n,r){var u=void 0===r?{}:r;r=u.message;var i=u.groupName;u=u.key,this.key=null,this.id=e(),this.severity=L.Error,this.status=W,this.fieldName=t,this.testFn=n,i&&(this.groupName=i),r&&(this.message=r),u&&(this.key=u)}return t.prototype.run=function(){try{var t=this.testFn()}catch(n){t=n,void 0===this.message&&r(t)&&(this.message=n),t=!1}return!1===t&&this.fail(),t},t.prototype.setStatus=function(t){this.isFinalStatus()&&t!==H||(this.status=t)},t.prototype.warns=function(){return this.severity===L.Warning},t.prototype.setPending=function(){this.setStatus(D)},t.prototype.fail=function(){this.setStatus(this.warns()?X:G)},t.prototype.done=function(){this.isFinalStatus()||this.setStatus(w)},t.prototype.warn=function(){this.severity=L.Warning},t.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},t.prototype.skip=function(t){this.isPending()&&!t||this.setStatus(P)},t.prototype.cancel=function(){this.setStatus(x),O()},t.prototype.reset=function(){this.status=W,O()},t.prototype.omit=function(){this.setStatus(H)},t.prototype.valueOf=function(){return!this.isFailing()},t.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},t.prototype.isNonActionable=function(){return this.isSkipped()||this.isOmitted()||this.isCanceled()},t.prototype.isPending=function(){return this.statusEquals(D)},t.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},t.prototype.isOmitted=function(){return this.statusEquals(H)},t.prototype.isUntested=function(){return this.statusEquals(W)},t.prototype.isFailing=function(){return this.statusEquals(G)},t.prototype.isCanceled=function(){return this.statusEquals(x)},t.prototype.isSkipped=function(){return this.statusEquals(P)},t.prototype.isPassing=function(){return this.statusEquals(w)},t.prototype.isWarning=function(){return this.statusEquals(X)},t.prototype.statusEquals=function(t){return this.status===t},t}(),W="UNTESTED",P="SKIPPED",G="FAILED",X="WARNING",w="PASSING",D="PENDING",x="CANCELED",H="OMITTED";function K(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?l(n):n)}function M(t){function n(t,n,u){return r.references.push(),e(t,l(n,u)),function(){return[r.references[t],function(n){return e(t,l(n,r.references[t]))}]}}function e(n,e){var i=r.references[n];r.references[n]=e,f(n=u[n][1])&&n(e,i),f(t)&&t()}var r={references:[]},u=[];return{registerStateKey:function(t,e){var r=u.length;return u.push([t,e]),n(r,t)},reset:function(){var t=r.references;r.references=[],u.forEach((function(e,r){return n(r,e[0],t[r])}))}}}function j(t,n){var e=n.suiteId;return n=n.suiteName,{optionalFields:t.registerStateKey((function(){return{}})),suiteId:t.registerStateKey(e),suiteName:t.registerStateKey(n),testCallbacks:t.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:t.registerStateKey((function(t){return{prev:t?t.current:[],current:[]}}))}}function q(t){return null==t}function B(t){setTimeout((function(){throw Error(t)}),0)}function V(){return S.useX().testCursor.getCursor()}function Y(){return S.useX().testCursor.next()}function J(t,n){t=void 0===(t=t.type)?m.DEFAULT:t,K(f(n));var e={current:{},prev:{}},r=V();return S.run({isolate:{type:t,keys:e}},(function(){S.useX().testCursor.addLevel(),e.prev=function(){var t=T()[0].prev;return[].concat(E(t,V())).reduce((function(t,n){return n instanceof U&&!q(n.key)?(t[n.key]=n,t):t}),{})}(),A((function(t){return E(t,r)[d(r)]=[],t}));var t=n();return S.useX().testCursor.removeLevel(),Y(),t}))}var z,Q=z||(z={});Q.WARNINGS="warnings",Q.ERRORS="errors";var Z,$=Z||(Z={});function tt(t){return!t||("number"==typeof t?0===t:Object.prototype.hasOwnProperty.call(t,"length")?o(t.length,0):"object"==typeof t&&o((t=Object.keys(t)).length,0))}$.ERROR_COUNT="errorCount",$.WARN_COUNT="warnCount";var nt=u(tt);function et(t,n){return!(!n||t.fieldName!==n)}function rt(t,n){return k().some((function(e){return e.hasFailures()?n&&!et(e,n)?e=!1:(e=e.warns(),e=t===z.WARNINGS==!!e):e=!1,e}))}function ut(t){return!!function(t){return!!t&&k().some((function(n){return n.fieldName===t&&n.isOmitted()}))}(t)||!rt(z.ERRORS,t)&&(!tt(k())&&!function(t){var n=b().optionalFields()[0];return nt(_().filter((function(e){return!(t&&!et(e,t))&&!0!==n[e.fieldName]})))}(t)&&function(t){var n=k(),e=b().optionalFields()[0];return n.every((function(n){return!(!t||et(n,t))||(!0===e[n.fieldName]||n.isTested()||n.isOmitted())}))}(t))}function it(){var t=S.useX().summary;return K(t),t}function ot(t,n){function e(t){i[t===z.ERRORS?Z.ERROR_COUNT:Z.WARN_COUNT]++,u&&(i[t]=(i[t]||[]).concat(u))}var r=n.fieldName,u=n.message;t[r]=t[r]||g({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=t[r];return n.isNonActionable()||(t[r].testCount++,n.isFailing()?e(z.ERRORS):n.isWarning()&&e(z.WARNINGS)),i}function st(t,n,e){var r;return(null===(r=null==t?void 0:t[e])||void 0===r?void 0:r[n])||[]}function at(t,n){var e,r={};for(e in t)r[e]=t[e][n]||[];return r}function ct(t){return lt(z.ERRORS,t)}function ft(t){return lt(z.WARNINGS,t)}function lt(t,n){var e=it().tests;return n?st(e,t,n):at(e,t)}function pt(t,n){return vt(t,z.ERRORS,n)}function dt(t,n){return vt(t,z.WARNINGS,n)}function vt(t,n,e){return t=it().groups[t],e?st(t,n,e):at(t,n)}function ht(t){return gt(Z.ERROR_COUNT,t)}function Et(t){return gt(Z.WARN_COUNT,t)}function gt(t,n){var e,r=it();return s(n?null===(e=r.tests[n])||void 0===e?void 0:e[t]:r[t],0)}function Nt(t,n){return yt(z.ERRORS,t,n)}function mt(t,n){return yt(z.WARNINGS,t,n)}function yt(t,n,e){var r,u,i=it();if(t=t===z.ERRORS?Z.ERROR_COUNT:Z.WARN_COUNT,!(n=i.groups[n]))return!1;if(e)return s(null===(r=n[e])||void 0===r?void 0:r[t],0);for(var o in n)if(s(null===(u=n[o])||void 0===u?void 0:u[t],0))return!0;return!1}function Rt(t){var n,e=it();return t?!(null===(n=e.tests[t])||void 0===n||!n.valid):e.valid}var Ct=a(1);function St(){var t=k(),n={stateRef:b()};return Ct([t],S.bind(n,(function(){var t=function(){var t=k(),n=g({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return t.reduce((function(t,n){var e=t.tests;e[n.fieldName]=ot(e,n),e[n.fieldName].valid=!1!==e[n.fieldName].valid&&ut(n.fieldName),e=t.groups;var r=n.groupName;return r&&(e[r]=e[r]||{},e[r][n.fieldName]=ot(e[r],n)),t}),n),n.valid=ut(),function(t){for(var n in t.tests)t.errorCount+=t.tests[n].errorCount,t.warnCount+=t.tests[n].warnCount,t.testCount+=t.tests[n].testCount;return t}(n)}(),n=b().suiteName()[0],e={summary:t};return g(t,{getErrors:S.bind(e,ct),getErrorsByGroup:S.bind(e,pt),getWarnings:S.bind(e,ft),getWarningsByGroup:S.bind(e,dt),hasErrors:S.bind(e,ht),hasErrorsByGroup:S.bind(e,Nt),hasWarnings:S.bind(e,Et),hasWarningsByGroup:S.bind(e,mt),isValid:S.bind(e,Rt),suiteName:n})})))}function bt(t){var n=_();return!tt(n)&&(t?n.some((function(n){return et(n,t)})):nt(n))}var Tt=a(20);function Ot(){var t=k(),n={stateRef:b()};return Tt([t],S.bind(n,(function(){return g({},St(),{done:S.bind(n,It)})})))}function At(t,n,e){return!(f(t)&&(!n||e.tests[n]&&!tt(e.tests[n].testCount)))}function _t(t){return!(bt()&&(!t||bt(t)))}function It(){function t(){return r(St())}for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var r=(n=n.reverse())[0];return n=n[1],e=Ot(),At(r,n,e)?e:_t(n)?(t(),e):(kt(t,n),e)}function kt(t,n){(0,b().testCallbacks()[1])((function(e){return n?e.fieldCallbacks[n]=(e.fieldCallbacks[n]||[]).concat(t):e.doneCallbacks.push(t),e}))}function Lt(t){return t.forEach((function(t){return t()}))}function Ft(){var t=function(){var t={};return{emit:function(n,e){(t[n]||[]).forEach((function(t){t(e)}))},on:function(n,e){return t[n]=(t[n]||[]).concat(e),{off:function(){t[n]=(t[n]||[]).filter((function(t){return t!==e}))}}}}}();return t.on(Wt.TEST_COMPLETED,(function(n){if(!n.isCanceled()){n.done(),n=n.fieldName;var e=b().testCallbacks()[0].fieldCallbacks;n&&!bt(n)&&Array.isArray(e[n])&&Lt(e[n]),bt()||t.emit(Wt.ALL_RUNNING_TESTS_FINISHED)}})),t.on(Wt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){var t=b().optionalFields()[0];if(!tt(t)){var n={};A((function(e){return v(e,(function(e){if(Object.prototype.hasOwnProperty.call(n,e.fieldName))n[e.fieldName]&&e.omit();else{var r=t[e.fieldName];f(r)&&(n[e.fieldName]=r(),n[e.fieldName]&&e.omit())}return e}))}))}}()})),t.on(Wt.ALL_RUNNING_TESTS_FINISHED,(function(){Lt(b().testCallbacks()[0].doneCallbacks)})),t.on(Wt.REMOVE_FIELD,(function(t){k().forEach((function(n){et(n,t)&&(n.cancel(),function(t){A((function(n){return v(n,(function(n){return t!==n?n:null}))}))}(n))}))})),t.on(Wt.RESET_FIELD,(function(t){k().forEach((function(n){et(n,t)&&n.reset()}))})),t}function Ut(){var t=S.useX();return K(t.bus),t.bus}var Wt,Pt=Wt||(Wt={});function Gt(t){return wt(0,"tests",t)}function Xt(t){return wt(1,"tests",t)}function wt(t,n,e){var u=S.useX("hook called outside of a running suite.");e&&[].concat(e).forEach((function(e){r(e)&&(u.exclusion[n][e]=0===t)}))}function Dt(t){for(var n in t)if(!0===t[n])return!0;return!1}function xt(){var t,n=S.useX().exclusion;for(t in n.groups)if(n.groups[t])return!0;return!1}function Ht(t){return"Wrong arguments passed to group. Group ".concat(t,".")}function Kt(t,n,e){if(e||2===arguments.length)for(var r,u=0,i=n.length;u<i;u++)!r&&u in n||(r||(r=Array.prototype.slice.call(n,0,u)),r[u]=n[u]);return t.concat(r||Array.prototype.slice.call(n))}function Mt(t){var n=t.asyncTest,e=t.message;if(n&&f(n.then)){var u=Ut().emit,i=b(),o=S.bind({stateRef:i},(function(){O(),u(Wt.TEST_COMPLETED,t)}));i=S.bind({stateRef:i},(function(n){t.isCanceled()||(t.message=r(n)?n:e,t.fail(),o())}));try{n.then(o,i)}catch(t){i()}}}function jt(t){var n=T()[0].prev;if(tt(n))return qt(t),t;var e=V();if(n=E(n,e)[d(e)],!q(t.key)){n=t.key,(e=S.useX().isolate.keys.prev[n])&&(t=e),e=t;var r=S.useX().isolate.keys.current;return q(r[n])?r[n]=e:B('Encountered the same test key "'.concat(n,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),qt(t),t}return!nt(e=n)||e.fieldName===t.fieldName&&e.groupName===t.groupName||(S.useX().isolate.type===m.EACH||B("Vest Critical Error: Tests called in different order than previous run.\n expected: ".concat(n.fieldName,"\n received: ").concat(t.fieldName,'\n This can happen on one of two reasons:\n 1. You\'re using if/else statements to conditionally select tests. Instead, use "skipWhen".\n 2. You are iterating over a list of tests, and their order changed. Use "each" and a custom key prop so that Vest retains their state.')),function(){var t=T(),n=t[1],e=t[0].prev;t=E(e,V());var r=S.useX().testCursor.cursorAt();t.splice(r),n((function(t){return{prev:e,current:t.current}}))}(),n=null),qt(t=p(n,t)),t}function qt(t){var n=V();A((function(e){return E(e,n)[d(n)]=t,e}))}function Bt(t){var n=R.EAGER;if(n=!(S.useX().mode[0]!==n||!rt(z.ERRORS,t.fieldName)))return t.skip(),jt(t),Y(),t;if(n=jt(t),S.useX().omitted)return n.omit(),Y(),n;if(function(t){var n=t.fieldName;if(t=t.groupName,S.useX().skipped)return!0;var e=S.useX(),r=e.exclusion;e=e.inclusion;var u=r.tests,i=u[n];if(!1===i)return!0;if(i=!0===i,t){var o=S.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,t)?!1===o[t]:xt())return!0;if(!0===r.groups[t])return!(i||!Dt(u)&&!1!==u[n])}return!!(t=!!xt()&&!t)||!i&&!!Dt(u)&&!l(e[n])}(t))return n.skip(!!S.useX().skipped),Y(),n;if(t!==n&&n.fieldName===t.fieldName&&n.groupName===t.groupName&&n.isPending()&&n.cancel(),qt(t),Y(),t.isUntested()){n=Ut();var e=function(t){return S.run({currentTest:t},(function(){return t.run()}))}(t);try{e&&f(e.then)?(t.asyncTest=e,t.setPending(),Mt(t)):n.emit(Wt.TEST_COMPLETED,t)}catch(n){throw Error("Unexpected error encountered during test registration.\n Test Object: ".concat(JSON.stringify(t),".\n Error: ").concat(n,"."))}}else(n=t.asyncTest)&&f(n.then)&&(t.setPending(),Mt(t));return t}function Vt(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var u=f(n[1])?n:Kt([void 0],n,!0);n=u[0],e=u[1],u=u[2],K(r(t),Jt("fieldName","string")),K(f(e),Jt("Test callback","function"));var i=S.useX();return Bt(n=new U(t,e,{message:n,groupName:i.groupName,key:u}))}Pt.TEST_COMPLETED="test_completed",Pt.ALL_RUNNING_TESTS_FINISHED="all_running_tests_finished",Pt.REMOVE_FIELD="remove_field",Pt.RESET_FIELD="reset_field",Pt.SUITE_CALLBACK_DONE_RUNNING="suite_callback_done_running",Gt.group=function(t){return wt(0,"groups",t)},Xt.group=function(t){return wt(1,"groups",t)};var Yt=g(Vt,{memo:function(t){var n=a(10);return function(e){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];u=S.useX().testCursor.cursorAt();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[b().suiteId()[0],e,u].concat(i),null===(r=n.get(u))?n(u,(function(){return t(e,s,o)})):r[1].isCanceled()?(n.invalidate(u),n(u,(function(){return t(e,s,o)}))):Bt(r[1])}}(Vt)});function Jt(t,n){return"Incompatible params passed to test function. ".concat(t," must be a ").concat(n)}var zt="4.3.2-dev-2805e3";function Qt(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=(t=t.reverse())[0];t=t[1],K(f(r),"vest.create: Expected callback to be a function.");var u=Ft(),i=M();return t={stateRef:j(i,{suiteId:e(),suiteName:t}),bus:u},g(S.bind(t,(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return i.reset(),J({type:m.SUITE},(function(){r.apply(void 0,t)})),u.emit(Wt.SUITE_CALLBACK_DONE_RUNNING),Ot()})),{get:S.bind(t,St),remove:S.bind(t,(function(t){u.emit(Wt.REMOVE_FIELD,t)})),reset:i.reset,resetField:S.bind(t,(function(t){u.emit(Wt.RESET_FIELD,t)}))})}function Zt(t,n){K(f(n),"each callback must be a function"),J({type:m.EACH},(function(){t.forEach((function(t,e){n(t,e)}))}))}function $t(){var t=R.EAGER;S.useX().mode[0]=t}function tn(t,n){K(r(t),Ht("name must be a string")),K(f(n),Ht("callback must be a function")),J({type:m.GROUP},(function(){S.run({groupName:t},n)}))}function nn(t){var n=S.useX(),e=n.inclusion;return n=n.exclusion,K(r(t)),e[t]=p(n.tests[t],!0),{when:function(n){var e=S.useX(),u=e.exclusion;e.inclusion[t]=function(){return Object.prototype.hasOwnProperty.call(u.tests,t)?p(u.tests[t],!0):r(n)?!!u.tests[n]:l(n,l(St))}}}}function en(t,n){J({type:m.OMIT_WHEN},(function(){S.run({omitted:!!S.useX().omitted||l(t,l(St))},(function(){return n()}))}))}function rn(t){(0,b().optionalFields()[1])((function(n){if(Array.isArray(t)||r(t))[].concat(t).forEach((function(t){n[t]=!0}));else for(var e in t)n[e]=t[e];return n}))}function un(t,n){J({type:m.SKIP_WHEN},(function(){S.run({skipped:!!S.useX().skipped||l(t,l(St))},(function(){return n()}))}))}function on(){var t=S.useX("warn hook called outside of a running suite.");K(t.currentTest,"warn called outside of a test."),t.currentTest.warn()}export{zt as VERSION,S as context,Qt as create,Zt as each,$t as eager,tn as group,nn as include,en as omitWhen,Gt as only,rn as optional,Xt as skip,un as skipWhen,Yt as test,on as warn};
@@ -8,13 +8,6 @@
8
8
  return typeof value === 'function';
9
9
  }
10
10
 
11
- /**
12
- * A safe hasOwnProperty access
13
- */
14
- function hasOwnProperty(obj, key) {
15
- return Object.prototype.hasOwnProperty.call(obj, key);
16
- }
17
-
18
11
  function optionalFunctionValue(value) {
19
12
  var args = [];
20
13
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -23,6 +16,18 @@
23
16
  return isFunction(value) ? value.apply(void 0, args) : value;
24
17
  }
25
18
 
19
+ function defaultTo(callback, defaultValue) {
20
+ var _a;
21
+ return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
22
+ }
23
+
24
+ /**
25
+ * A safe hasOwnProperty access
26
+ */
27
+ function hasOwnProperty(obj, key) {
28
+ return Object.prototype.hasOwnProperty.call(obj, key);
29
+ }
30
+
26
31
  function invariant(condition,
27
32
  // eslint-disable-next-line @typescript-eslint/ban-types
28
33
  message) {
@@ -90,22 +95,20 @@
90
95
  return res.testCount === 0 || !selectors.tested(fieldName);
91
96
  }
92
97
  function isValid(fieldName) {
93
- var _a, _b;
94
- return Boolean(fieldName ? (_b = (_a = res.tests) === null || _a === void 0 ? void 0 : _a[fieldName]) === null || _b === void 0 ? void 0 : _b.valid : res.valid);
98
+ var _a;
99
+ return fieldName ? Boolean((_a = res.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.valid) : res.valid;
95
100
  }
96
101
  function hasWarnings(fieldName) {
97
- return hasFailures(res, SeverityCount.WARN_COUNT, fieldName);
102
+ return hasFailures(SeverityCount.WARN_COUNT, fieldName);
98
103
  }
99
104
  function hasErrors(fieldName) {
100
- return hasFailures(res, SeverityCount.ERROR_COUNT, fieldName);
105
+ return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
106
+ }
107
+ function hasFailures(countKey, fieldName) {
108
+ var _a;
109
+ var failureCount = defaultTo(fieldName ? (_a = res.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[countKey] : res[countKey], 0);
110
+ return isPositive(failureCount);
101
111
  }
102
- }
103
- function hasFailures(res, countKey, fieldName) {
104
- var _a, _b, _c;
105
- var failureCount = fieldName
106
- ? (_b = (_a = res.tests) === null || _a === void 0 ? void 0 : _a[fieldName]) === null || _b === void 0 ? void 0 : _b[countKey]
107
- : (_c = res[countKey]) !== null && _c !== void 0 ? _c : 0;
108
- return isPositive(failureCount);
109
112
  }
110
113
 
111
114
  /**
@@ -1 +1 @@
1
- "use strict";!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).classnames=n()}(this,(function(){function t(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function n(n,e){return t(n)&&t(e)&&Number(n)>Number(e)}function e(t){!function(t,n){if(!t)throw n instanceof String?n.valueOf():Error(n?function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return"function"==typeof t?t.apply(void 0,n):t}(n):n)}(t&&Object.prototype.hasOwnProperty.call(t,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var e={},o={invalid:function(n){return r(t,u.ERROR_COUNT,n)},tested:function(r){return r?Object.prototype.hasOwnProperty.call(e,r)?e[r]:(e[r]=Object.prototype.hasOwnProperty.call(t.tests,r)&&n(t.tests[r].testCount,0),o.tested(r)):n(t.testCount,0)},untested:function(n){return 0===t.testCount||!o.tested(n)},valid:function(n){var e,r;return!!(n?null!==(r=null===(e=t.tests)||void 0===e?void 0:e[n])&&void 0!==r&&r.valid:t.valid)},warning:function(n){return r(t,u.WARN_COUNT,n)}};return o}function r(t,e,r){var o,i,u;return n(t=r?null===(i=null===(o=t.tests)||void 0===o?void 0:o[r])||void 0===i?void 0:i[e]:null!==(u=t[e])&&void 0!==u?u:0,0)}var o,i,u;return(i=o||(o={})).WARNINGS="warnings",i.ERRORS="errors",function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(u||(u={})),function(t,n){void 0===n&&(n={});var r=e(t);return function(t){var e,o=[];for(e in n){var i=e;"function"==typeof r[i]&&r[i](t)&&o.push(n[i])}return o.join(" ")}}}));
1
+ "use strict";!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).classnames=n()}(this,(function(){function t(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return"function"==typeof t?t.apply(void 0,n):t}function n(t){var n=Number(t);return!(isNaN(parseFloat(String(t)))||isNaN(Number(t))||!isFinite(n))}function e(t,e){return n(t)&&n(e)&&Number(t)>Number(e)}function r(n){function r(r,o){var i,u;return r=o?null===(i=n.tests[o])||void 0===i?void 0:i[r]:n[r],e(i=null!==(u=t(r))&&void 0!==u?u:0,0)}!function(n,e){if(!n)throw e instanceof String?e.valueOf():Error(e?t(e):e)}(n&&Object.prototype.hasOwnProperty.call(n,"valid"),"Vest parser: expected argument at position 0 to be Vest's result object.");var o={},i={invalid:function(t){return r(u.ERROR_COUNT,t)},tested:function(t){return t?Object.prototype.hasOwnProperty.call(o,t)?o[t]:(o[t]=Object.prototype.hasOwnProperty.call(n.tests,t)&&e(n.tests[t].testCount,0),i.tested(t)):e(n.testCount,0)},untested:function(t){return 0===n.testCount||!i.tested(t)},valid:function(t){var e;return t?!(null===(e=n.tests[t])||void 0===e||!e.valid):n.valid},warning:function(t){return r(u.WARN_COUNT,t)}};return i}var o,i,u;return(i=o||(o={})).WARNINGS="warnings",i.ERRORS="errors",function(t){t.ERROR_COUNT="errorCount",t.WARN_COUNT="warnCount"}(u||(u={})),function(t,n){void 0===n&&(n={});var e=r(t);return function(t){var r,o=[];for(r in n){var i=r;"function"==typeof e[i]&&e[i](t)&&o.push(n[i])}return o.join(" ")}}}));
@@ -181,7 +181,7 @@
181
181
  else if (typeof value === 'object') {
182
182
  return lengthEquals(Object.keys(value), 0);
183
183
  }
184
- return true;
184
+ return false;
185
185
  }
186
186
  var isNotEmpty = bindNot(isEmpty);
187
187
 
@@ -647,15 +647,10 @@
647
647
  context: function () { return ctx.useX(); },
648
648
  extend: function (customRules) {
649
649
  assign(baseRules, customRules);
650
+ handleNoProxy(); // TODO: REMOVE when we stop supporting ES5
650
651
  }
651
652
  };
652
- if (!isProxySupported()) {
653
- eachEnforceRule(function (ruleName) {
654
- // Only on the first rule access - start the chain of calls
655
- target[ruleName] = genEnforceLazy(ruleName);
656
- });
657
- return assign(enforceEager, target);
658
- }
653
+ handleNoProxy();
659
654
  return new Proxy(assign(enforceEager, target), {
660
655
  get: function (target, key) {
661
656
  if (key in target) {
@@ -668,6 +663,15 @@
668
663
  return genEnforceLazy(key);
669
664
  }
670
665
  });
666
+ function handleNoProxy() {
667
+ if (!isProxySupported()) {
668
+ eachEnforceRule(function (ruleName) {
669
+ // Only on the first rule access - start the chain of calls
670
+ target[ruleName] = genEnforceLazy(ruleName);
671
+ });
672
+ return assign(enforceEager, target);
673
+ }
674
+ }
671
675
  }
672
676
  genEnforce();
673
677