vest 4.4.3-dev-c786f7 → 4.5.0-dev-9b46fb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +88 -94
- 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 +89 -96
- 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 +106 -95
- package/dist/umd/vest.production.js +1 -1
- package/package.json +4 -4
- package/types/enforce/compose.d.ts +2 -1
- package/types/enforce/compounds.d.ts +2 -1
- package/types/enforce/schema.d.ts +2 -1
- 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;
|
|
@@ -1407,11 +1424,6 @@
|
|
|
1407
1424
|
testObject.isOmitted());
|
|
1408
1425
|
}
|
|
1409
1426
|
|
|
1410
|
-
function useSummary() {
|
|
1411
|
-
var summary = context.useX().summary;
|
|
1412
|
-
invariant(summary);
|
|
1413
|
-
return summary;
|
|
1414
|
-
}
|
|
1415
1427
|
/**
|
|
1416
1428
|
* Reads the testObjects list and gets full validation result from it.
|
|
1417
1429
|
*/
|
|
@@ -1523,57 +1535,85 @@
|
|
|
1523
1535
|
return output;
|
|
1524
1536
|
}
|
|
1525
1537
|
|
|
1526
|
-
function
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
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
|
+
}
|
|
1531
1597
|
}
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
function getFailures(severityKey, fieldName) {
|
|
1536
|
-
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) {
|
|
1537
1601
|
return gatherFailures(summary.tests, severityKey, fieldName);
|
|
1538
1602
|
}
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
}
|
|
1543
|
-
function getWarningsByGroup(groupName, fieldName) {
|
|
1544
|
-
return getFailuresByGroup(groupName, Severity.WARNINGS, fieldName);
|
|
1545
|
-
}
|
|
1546
|
-
function getFailuresByGroup(groupName, severityKey, fieldName) {
|
|
1547
|
-
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) {
|
|
1548
1606
|
return gatherFailures(summary.groups[groupName], severityKey, fieldName);
|
|
1549
1607
|
}
|
|
1550
|
-
|
|
1551
|
-
function
|
|
1552
|
-
return hasFailures(SeverityCount.ERROR_COUNT, fieldName);
|
|
1553
|
-
}
|
|
1554
|
-
function hasWarnings(fieldName) {
|
|
1555
|
-
return hasFailures(SeverityCount.WARN_COUNT, fieldName);
|
|
1556
|
-
}
|
|
1557
|
-
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) {
|
|
1558
1610
|
var _a;
|
|
1559
|
-
|
|
1560
|
-
if (fieldName) {
|
|
1561
|
-
return isPositive((_a = summary.tests[fieldName]) === null || _a === void 0 ? void 0 : _a[severityCount]);
|
|
1562
|
-
}
|
|
1563
|
-
return isPositive(summary[severityCount]);
|
|
1564
|
-
}
|
|
1565
|
-
|
|
1566
|
-
function hasErrorsByGroup(groupName, fieldName) {
|
|
1567
|
-
return hasFailuresByGroup(Severity.ERRORS, groupName, fieldName);
|
|
1568
|
-
}
|
|
1569
|
-
function hasWarningsByGroup(groupName, fieldName) {
|
|
1570
|
-
return hasFailuresByGroup(Severity.WARNINGS, groupName, fieldName);
|
|
1611
|
+
return !!((_a = testContainer[fieldName]) === null || _a === void 0 ? void 0 : _a.valid);
|
|
1571
1612
|
}
|
|
1572
|
-
//
|
|
1573
|
-
|
|
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) {
|
|
1574
1616
|
var _a, _b;
|
|
1575
|
-
var summary = useSummary();
|
|
1576
|
-
var severityCount = countKeyBySeverity(severityKey);
|
|
1577
1617
|
var group = summary.groups[groupName];
|
|
1578
1618
|
if (!group) {
|
|
1579
1619
|
return false;
|
|
@@ -1588,32 +1628,14 @@
|
|
|
1588
1628
|
}
|
|
1589
1629
|
return false;
|
|
1590
1630
|
}
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
return fieldName
|
|
1595
|
-
? Boolean(isFieldValid(summary.tests, fieldName))
|
|
1596
|
-
: summary.valid;
|
|
1597
|
-
}
|
|
1598
|
-
function isValidByGroup(groupName, fieldName) {
|
|
1599
|
-
var summary = useSummary();
|
|
1600
|
-
var group = summary.groups[groupName];
|
|
1601
|
-
if (!group) {
|
|
1602
|
-
return false;
|
|
1603
|
-
}
|
|
1604
|
-
if (fieldName) {
|
|
1605
|
-
return isFieldValid(group, fieldName);
|
|
1606
|
-
}
|
|
1607
|
-
for (var fieldName_1 in group) {
|
|
1608
|
-
if (!isFieldValid(group, fieldName_1)) {
|
|
1609
|
-
return false;
|
|
1610
|
-
}
|
|
1611
|
-
}
|
|
1612
|
-
return true;
|
|
1613
|
-
}
|
|
1614
|
-
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) {
|
|
1615
1634
|
var _a;
|
|
1616
|
-
|
|
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);
|
|
1617
1639
|
}
|
|
1618
1640
|
|
|
1619
1641
|
var cache$1 = createCache(1);
|
|
@@ -1623,18 +1645,7 @@
|
|
|
1623
1645
|
return cache$1([testObjects], context.bind(ctxRef, function () {
|
|
1624
1646
|
var summary = genTestsSummary();
|
|
1625
1647
|
var suiteName = useSuiteName();
|
|
1626
|
-
|
|
1627
|
-
return assign(summary, {
|
|
1628
|
-
getErrors: context.bind(ref, getErrors),
|
|
1629
|
-
getErrorsByGroup: context.bind(ref, getErrorsByGroup),
|
|
1630
|
-
getWarnings: context.bind(ref, getWarnings),
|
|
1631
|
-
getWarningsByGroup: context.bind(ref, getWarningsByGroup),
|
|
1632
|
-
hasErrors: context.bind(ref, hasErrors),
|
|
1633
|
-
hasErrorsByGroup: context.bind(ref, hasErrorsByGroup),
|
|
1634
|
-
hasWarnings: context.bind(ref, hasWarnings),
|
|
1635
|
-
hasWarningsByGroup: context.bind(ref, hasWarningsByGroup),
|
|
1636
|
-
isValid: context.bind(ref, isValid),
|
|
1637
|
-
isValidByGroup: context.bind(ref, isValidByGroup),
|
|
1648
|
+
return assign(summary, suiteSelectors(summary), {
|
|
1638
1649
|
suiteName: suiteName
|
|
1639
1650
|
});
|
|
1640
1651
|
}));
|
|
@@ -1653,7 +1664,7 @@
|
|
|
1653
1664
|
return matchingFieldName(testObject, fieldName);
|
|
1654
1665
|
});
|
|
1655
1666
|
}
|
|
1656
|
-
return
|
|
1667
|
+
return true;
|
|
1657
1668
|
}
|
|
1658
1669
|
|
|
1659
1670
|
var cache = createCache(20);
|
|
@@ -1670,10 +1681,10 @@
|
|
|
1670
1681
|
* DONE is here and not in its own module to prevent circular dependency issues.
|
|
1671
1682
|
*/
|
|
1672
1683
|
function shouldSkipDoneRegistration(callback, fieldName, output) {
|
|
1684
|
+
var _a;
|
|
1673
1685
|
// If we do not have any test runs for the current field
|
|
1674
1686
|
return !!(!isFunction(callback) ||
|
|
1675
|
-
(fieldName &&
|
|
1676
|
-
(!output.tests[fieldName] || isEmpty(output.tests[fieldName].testCount))));
|
|
1687
|
+
(fieldName && numberEquals((_a = output.tests[fieldName]) === null || _a === void 0 ? void 0 : _a.testCount, 0)));
|
|
1677
1688
|
}
|
|
1678
1689
|
function shouldRunDoneCallback(fieldName) {
|
|
1679
1690
|
// is suite finished || field name exists, and test is finished;
|
|
@@ -1848,7 +1859,7 @@
|
|
|
1848
1859
|
// State initialization
|
|
1849
1860
|
var state = createState();
|
|
1850
1861
|
// State reference - this holds the actual state values
|
|
1851
|
-
var stateRef = createStateRef(state, { suiteId:
|
|
1862
|
+
var stateRef = createStateRef(state, { suiteId: seq(), suiteName: suiteName });
|
|
1852
1863
|
// Create base context reference. All hooks will derive their data from this
|
|
1853
1864
|
var ctxRef = { stateRef: stateRef, bus: bus };
|
|
1854
1865
|
var suite = assign(
|
|
@@ -1962,7 +1973,7 @@
|
|
|
1962
1973
|
return addTo(1 /* ExclusionGroup.SKIP */, 'groups', item);
|
|
1963
1974
|
};
|
|
1964
1975
|
//Checks whether a certain test profile excluded by any of the exclusion groups.
|
|
1965
|
-
// eslint-disable-next-line complexity, max-statements
|
|
1976
|
+
// eslint-disable-next-line complexity, max-statements
|
|
1966
1977
|
function isExcluded(testObject) {
|
|
1967
1978
|
var fieldName = testObject.fieldName, groupName = testObject.groupName;
|
|
1968
1979
|
if (isExcludedIndividually())
|
|
@@ -2397,7 +2408,6 @@
|
|
|
2397
2408
|
}
|
|
2398
2409
|
|
|
2399
2410
|
/* eslint-disable jest/valid-title */
|
|
2400
|
-
// eslint-disable-next-line max-lines-per-function
|
|
2401
2411
|
function bindTestMemo(test) {
|
|
2402
2412
|
var cache = createCache(10); // arbitrary cache size
|
|
2403
2413
|
// eslint-disable-next-line max-statements
|
|
@@ -2468,7 +2478,7 @@
|
|
|
2468
2478
|
ctx.currentTest.warn();
|
|
2469
2479
|
}
|
|
2470
2480
|
|
|
2471
|
-
var VERSION = "4.
|
|
2481
|
+
var VERSION = "4.5.0-dev-9b46fb";
|
|
2472
2482
|
|
|
2473
2483
|
exports.VERSION = VERSION;
|
|
2474
2484
|
exports.context = context;
|
|
@@ -2483,6 +2493,7 @@
|
|
|
2483
2493
|
exports.optional = optional;
|
|
2484
2494
|
exports.skip = skip;
|
|
2485
2495
|
exports.skipWhen = skipWhen;
|
|
2496
|
+
exports.suiteSelectors = suiteSelectors;
|
|
2486
2497
|
exports.test = test;
|
|
2487
2498
|
exports.warn = warn;
|
|
2488
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(){return Ut.useX().isolate}function ln(){var n=fn();return n.path.concat(n.cursor.current())}function dn(n,t){n=void 0===(n=n.type)?st.DEFAULT:n,y(l(t));var e=Z(n,ln());return n=Ut.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 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()})),fn().cursor.next(),n}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=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.")),rt(n),n}return!mt(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(fn().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=fn().cursor.current();un((function(t){return t.splice(n),t}))}(),t=null),rt(n=p(t,n)),n}function rt(n){var t=ln();un((function(e){return E(e,t)[h(t)]=n,e}))}function ut(n){var t=fn().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=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)}))):ut(r[1])}}(it)});n.VERSION="4.4.3-dev-c786f7",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(),dn({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"),dn({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")),dn({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){dn({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){dn({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.8-dev-
|
|
24
|
-
"n4s": "^4.1.9-dev-
|
|
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": {
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -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
|
};
|
package/types/parser.d.ts
CHANGED
|
@@ -17,11 +17,12 @@ type SummaryBase = {
|
|
|
17
17
|
warnCount: number;
|
|
18
18
|
testCount: number;
|
|
19
19
|
};
|
|
20
|
-
declare function parse(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
declare function parse(summary: SuiteSummary): ParsedVestObject;
|
|
21
|
+
interface ParsedVestObject {
|
|
22
|
+
valid(fieldName?: string): boolean;
|
|
23
|
+
tested(fieldName?: string): boolean;
|
|
24
|
+
invalid(fieldName?: string): boolean;
|
|
25
|
+
untested(fieldName?: string): boolean;
|
|
26
|
+
warning(fieldName?: string): boolean;
|
|
27
|
+
}
|
|
27
28
|
export { parse };
|
package/types/promisify.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reads the testObjects list and gets full validation result from it.
|
|
3
|
-
*/
|
|
4
|
-
declare function genTestsSummary(): SuiteSummary;
|
|
5
1
|
type SuiteSummary = {
|
|
6
2
|
groups: Groups;
|
|
7
3
|
tests: Tests;
|
|
@@ -22,37 +18,6 @@ type SummaryBase = {
|
|
|
22
18
|
testCount: number;
|
|
23
19
|
};
|
|
24
20
|
type FailureMessages = Record<string, string[]>;
|
|
25
|
-
declare function getErrors(): FailureMessages;
|
|
26
|
-
declare function getErrors(fieldName?: string): string[];
|
|
27
|
-
declare function getWarnings(): FailureMessages;
|
|
28
|
-
declare function getWarnings(fieldName?: string): string[];
|
|
29
|
-
declare function getErrorsByGroup(groupName: string): FailureMessages;
|
|
30
|
-
declare function getErrorsByGroup(groupName: string, fieldName: string): string[];
|
|
31
|
-
declare function getWarningsByGroup(groupName: string): FailureMessages;
|
|
32
|
-
declare function getWarningsByGroup(groupName: string, fieldName: string): string[];
|
|
33
|
-
declare function hasErrors(fieldName?: string): boolean;
|
|
34
|
-
declare function hasWarnings(fieldName?: string): boolean;
|
|
35
|
-
declare function hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
|
|
36
|
-
declare function hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
|
|
37
|
-
declare function isValid(fieldName?: string): boolean;
|
|
38
|
-
declare function isValidByGroup(groupName: string, fieldName?: string): boolean;
|
|
39
|
-
type SuiteResult = ReturnType<typeof genTestsSummary> & {
|
|
40
|
-
/**
|
|
41
|
-
* Returns whether the suite as a whole is valid.
|
|
42
|
-
* Determined if there are no errors, and if no
|
|
43
|
-
* required fields are skipped.
|
|
44
|
-
*/
|
|
45
|
-
isValid: typeof isValid;
|
|
46
|
-
isValidByGroup: typeof isValidByGroup;
|
|
47
|
-
hasErrors: typeof hasErrors;
|
|
48
|
-
hasWarnings: typeof hasWarnings;
|
|
49
|
-
getErrors: typeof getErrors;
|
|
50
|
-
getWarnings: typeof getWarnings;
|
|
51
|
-
hasErrorsByGroup: typeof hasErrorsByGroup;
|
|
52
|
-
hasWarningsByGroup: typeof hasWarningsByGroup;
|
|
53
|
-
getErrorsByGroup: typeof getErrorsByGroup;
|
|
54
|
-
getWarningsByGroup: typeof getWarningsByGroup;
|
|
55
|
-
};
|
|
56
21
|
type SuiteRunResult = SuiteResult & {
|
|
57
22
|
done: Done;
|
|
58
23
|
};
|
|
@@ -65,5 +30,25 @@ interface Done {
|
|
|
65
30
|
cb: (res: SuiteResult) => void
|
|
66
31
|
]): SuiteRunResult;
|
|
67
32
|
}
|
|
33
|
+
type SuiteName = string | void;
|
|
34
|
+
interface SuiteSelectors {
|
|
35
|
+
getErrors(fieldName: string): string[];
|
|
36
|
+
getErrors(): FailureMessages;
|
|
37
|
+
getWarnings(): FailureMessages;
|
|
38
|
+
getWarnings(fieldName: string): string[];
|
|
39
|
+
getErrorsByGroup(groupName: string, fieldName: string): string[];
|
|
40
|
+
getErrorsByGroup(groupName: string): FailureMessages;
|
|
41
|
+
getWarningsByGroup(groupName: string): FailureMessages;
|
|
42
|
+
getWarningsByGroup(groupName: string, fieldName: string): string[];
|
|
43
|
+
hasErrors(fieldName?: string): boolean;
|
|
44
|
+
hasWarnings(fieldName?: string): boolean;
|
|
45
|
+
hasErrorsByGroup(groupName: string, fieldName?: string): boolean;
|
|
46
|
+
hasWarningsByGroup(groupName: string, fieldName?: string): boolean;
|
|
47
|
+
isValid(fieldName?: string): boolean;
|
|
48
|
+
isValidByGroup(groupName: string, fieldName?: string): boolean;
|
|
49
|
+
}
|
|
50
|
+
type SuiteResult = SuiteSummary & SuiteSelectors & {
|
|
51
|
+
suiteName: SuiteName;
|
|
52
|
+
};
|
|
68
53
|
declare const promisify: (validatorFn: (...args: any[]) => SuiteRunResult) => (...args: any[]) => Promise<SuiteResult>;
|
|
69
54
|
export { promisify as default };
|