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