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