vest 4.4.0-dev-08ec91 → 4.4.2
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 +2 -2
- package/dist/cjs/classnames.production.js +1 -1
- package/dist/cjs/enforce/compose.development.js +16 -10
- package/dist/cjs/enforce/compose.production.js +1 -1
- package/dist/cjs/enforce/compounds.development.js +18 -30
- package/dist/cjs/enforce/compounds.production.js +1 -1
- package/dist/cjs/enforce/schema.development.js +8 -8
- package/dist/cjs/enforce/schema.production.js +1 -1
- package/dist/cjs/parser.development.js +2 -2
- package/dist/cjs/parser.production.js +1 -1
- package/dist/cjs/vest.development.js +88 -112
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/classnames.development.js +2 -2
- package/dist/es/classnames.production.js +1 -1
- package/dist/es/enforce/compose.development.js +16 -10
- package/dist/es/enforce/compose.production.js +1 -1
- package/dist/es/enforce/compounds.development.js +18 -30
- package/dist/es/enforce/compounds.production.js +1 -1
- package/dist/es/enforce/schema.development.js +8 -8
- package/dist/es/enforce/schema.production.js +1 -1
- package/dist/es/parser.development.js +2 -2
- package/dist/es/parser.production.js +1 -1
- package/dist/es/vest.development.js +88 -112
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/classnames.development.js +2 -2
- package/dist/umd/classnames.production.js +1 -1
- package/dist/umd/enforce/compose.development.js +31 -31
- package/dist/umd/enforce/compose.production.js +1 -1
- package/dist/umd/enforce/compounds.development.js +106 -110
- package/dist/umd/enforce/compounds.production.js +1 -1
- package/dist/umd/enforce/schema.development.js +39 -39
- package/dist/umd/enforce/schema.production.js +1 -1
- package/dist/umd/parser.development.js +2 -2
- package/dist/umd/parser.production.js +1 -1
- package/dist/umd/vest.development.js +111 -126
- package/dist/umd/vest.production.js +1 -1
- package/package.json +3 -3
- package/testUtils/testObjects.ts +2 -17
- package/types/enforce/compose.d.ts +1 -1
- package/types/enforce/compounds.d.ts +1 -1
- package/types/enforce/schema.d.ts +1 -1
- package/types/vest.d.ts +14 -15
- package/testUtils/itWithContext.ts +0 -23
|
@@ -121,11 +121,6 @@
|
|
|
121
121
|
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
function isNumber(value) {
|
|
125
|
-
return Boolean(typeof value === 'number');
|
|
126
|
-
}
|
|
127
|
-
var isNotNumber = bindNot(isNumber);
|
|
128
|
-
|
|
129
124
|
function lengthEquals(value, arg1) {
|
|
130
125
|
return numberEquals(value.length, arg1);
|
|
131
126
|
}
|
|
@@ -135,9 +130,6 @@
|
|
|
135
130
|
if (!value) {
|
|
136
131
|
return true;
|
|
137
132
|
}
|
|
138
|
-
else if (isNumber(value)) {
|
|
139
|
-
return value === 0;
|
|
140
|
-
}
|
|
141
133
|
else if (hasOwnProperty(value, 'length')) {
|
|
142
134
|
return lengthEquals(value, 0);
|
|
143
135
|
}
|
|
@@ -172,6 +164,11 @@
|
|
|
172
164
|
return lessThan(value, 0);
|
|
173
165
|
}
|
|
174
166
|
|
|
167
|
+
function isNumber(value) {
|
|
168
|
+
return Boolean(typeof value === 'number');
|
|
169
|
+
}
|
|
170
|
+
var isNotNumber = bindNot(isNumber);
|
|
171
|
+
|
|
175
172
|
/**
|
|
176
173
|
* Validates that a given value is an odd number
|
|
177
174
|
*/
|
|
@@ -338,9 +335,9 @@
|
|
|
338
335
|
return isFunction(value) ? value.apply(void 0, args) : value;
|
|
339
336
|
}
|
|
340
337
|
|
|
341
|
-
function defaultTo(
|
|
338
|
+
function defaultTo(value, defaultValue) {
|
|
342
339
|
var _a;
|
|
343
|
-
return (_a = optionalFunctionValue(
|
|
340
|
+
return (_a = optionalFunctionValue(value)) !== null && _a !== void 0 ? _a : optionalFunctionValue(defaultValue);
|
|
344
341
|
}
|
|
345
342
|
|
|
346
343
|
function invariant(condition,
|
|
@@ -356,6 +353,10 @@
|
|
|
356
353
|
? message.valueOf()
|
|
357
354
|
: new Error(message ? optionalFunctionValue(message) : message);
|
|
358
355
|
}
|
|
356
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
357
|
+
function StringObject(value) {
|
|
358
|
+
return new String(optionalFunctionValue(value));
|
|
359
|
+
}
|
|
359
360
|
|
|
360
361
|
// eslint-disable-next-line max-lines-per-function
|
|
361
362
|
function createContext(init) {
|
|
@@ -367,8 +368,9 @@
|
|
|
367
368
|
useX: useX
|
|
368
369
|
};
|
|
369
370
|
function useX(errorMessage) {
|
|
370
|
-
|
|
371
|
-
|
|
371
|
+
var ctx = use();
|
|
372
|
+
invariant(ctx, defaultTo(errorMessage, 'Context was used after it was closed'));
|
|
373
|
+
return ctx;
|
|
372
374
|
}
|
|
373
375
|
function run(ctxRef, fn) {
|
|
374
376
|
var _a;
|
|
@@ -438,7 +440,7 @@
|
|
|
438
440
|
return null;
|
|
439
441
|
}
|
|
440
442
|
|
|
441
|
-
|
|
443
|
+
/******************************************************************************
|
|
442
444
|
Copyright (c) Microsoft Corporation.
|
|
443
445
|
|
|
444
446
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -531,12 +533,12 @@
|
|
|
531
533
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
532
534
|
args[_i] = arguments[_i];
|
|
533
535
|
}
|
|
534
|
-
var transformedResult =
|
|
535
|
-
ruleName,
|
|
536
|
-
|
|
537
|
-
invariant(transformedResult.pass,
|
|
536
|
+
var transformedResult = ctx.run({ value: value }, function () {
|
|
537
|
+
return transformResult.apply(void 0, __spreadArray([rule.apply(void 0, __spreadArray([value], args, false)), ruleName, value], args, false));
|
|
538
|
+
});
|
|
539
|
+
invariant(transformedResult.pass, isNullish(transformedResult.message)
|
|
538
540
|
? "enforce/".concat(ruleName, " failed with ").concat(JSON.stringify(value))
|
|
539
|
-
:
|
|
541
|
+
: StringObject(transformedResult.message));
|
|
540
542
|
return target;
|
|
541
543
|
};
|
|
542
544
|
}
|
|
@@ -551,9 +553,11 @@
|
|
|
551
553
|
return breakoutValue;
|
|
552
554
|
}
|
|
553
555
|
}
|
|
554
|
-
function breakout(value) {
|
|
555
|
-
|
|
556
|
-
|
|
556
|
+
function breakout(conditional, value) {
|
|
557
|
+
if (conditional) {
|
|
558
|
+
broke = true;
|
|
559
|
+
breakoutValue = value;
|
|
560
|
+
}
|
|
557
561
|
}
|
|
558
562
|
}
|
|
559
563
|
|
|
@@ -579,9 +583,7 @@
|
|
|
579
583
|
return defaultToPassing(mapFirst(registeredRules, function (rule, breakout) {
|
|
580
584
|
var _a;
|
|
581
585
|
var res = ctx.run({ value: value }, function () { return rule(value); });
|
|
582
|
-
|
|
583
|
-
breakout(ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
|
|
584
|
-
}
|
|
586
|
+
breakout(!res.pass, ruleReturn(!!res.pass, (_a = optionalFunctionValue(lazyMessage, value, res.message)) !== null && _a !== void 0 ? _a : res.message));
|
|
585
587
|
}));
|
|
586
588
|
},
|
|
587
589
|
test: function (value) { return proxy.run(value).pass; },
|
|
@@ -775,40 +777,6 @@
|
|
|
775
777
|
return current;
|
|
776
778
|
}
|
|
777
779
|
|
|
778
|
-
function createCursor() {
|
|
779
|
-
var storage = {
|
|
780
|
-
cursor: []
|
|
781
|
-
};
|
|
782
|
-
function addLevel() {
|
|
783
|
-
storage.cursor.push(0);
|
|
784
|
-
}
|
|
785
|
-
function removeLevel() {
|
|
786
|
-
storage.cursor.pop();
|
|
787
|
-
}
|
|
788
|
-
function cursorAt() {
|
|
789
|
-
return last(storage.cursor);
|
|
790
|
-
}
|
|
791
|
-
function getCursor() {
|
|
792
|
-
return asArray(storage.cursor);
|
|
793
|
-
}
|
|
794
|
-
function next() {
|
|
795
|
-
storage.cursor[storage.cursor.length - 1]++;
|
|
796
|
-
return last(storage.cursor);
|
|
797
|
-
}
|
|
798
|
-
function reset() {
|
|
799
|
-
storage.cursor = [0];
|
|
800
|
-
}
|
|
801
|
-
reset();
|
|
802
|
-
return {
|
|
803
|
-
addLevel: addLevel,
|
|
804
|
-
cursorAt: cursorAt,
|
|
805
|
-
getCursor: getCursor,
|
|
806
|
-
next: next,
|
|
807
|
-
removeLevel: removeLevel,
|
|
808
|
-
reset: reset
|
|
809
|
-
};
|
|
810
|
-
}
|
|
811
|
-
|
|
812
780
|
var IsolateTypes;
|
|
813
781
|
(function (IsolateTypes) {
|
|
814
782
|
IsolateTypes[IsolateTypes["DEFAULT"] = 0] = "DEFAULT";
|
|
@@ -825,6 +793,41 @@
|
|
|
825
793
|
Modes[Modes["EAGER"] = 1] = "EAGER";
|
|
826
794
|
})(Modes || (Modes = {}));
|
|
827
795
|
|
|
796
|
+
function createIsolateCursor() {
|
|
797
|
+
var cursor = {
|
|
798
|
+
value: 0
|
|
799
|
+
};
|
|
800
|
+
return {
|
|
801
|
+
current: current,
|
|
802
|
+
next: next
|
|
803
|
+
};
|
|
804
|
+
/**
|
|
805
|
+
* @returns {number} The current value of the cursor
|
|
806
|
+
*/
|
|
807
|
+
function current() {
|
|
808
|
+
return cursor.value;
|
|
809
|
+
}
|
|
810
|
+
/**
|
|
811
|
+
* Moves the isolate cursor forward by 1
|
|
812
|
+
*/
|
|
813
|
+
function next() {
|
|
814
|
+
cursor.value++;
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
function generateIsolate(type, path) {
|
|
819
|
+
if (path === void 0) { path = []; }
|
|
820
|
+
return {
|
|
821
|
+
cursor: createIsolateCursor(),
|
|
822
|
+
keys: {
|
|
823
|
+
current: {},
|
|
824
|
+
prev: {}
|
|
825
|
+
},
|
|
826
|
+
path: path,
|
|
827
|
+
type: type
|
|
828
|
+
};
|
|
829
|
+
}
|
|
830
|
+
|
|
828
831
|
var context = createContext(function (ctxRef, parentContext) {
|
|
829
832
|
return parentContext
|
|
830
833
|
? null
|
|
@@ -834,15 +837,8 @@
|
|
|
834
837
|
groups: {}
|
|
835
838
|
},
|
|
836
839
|
inclusion: {},
|
|
837
|
-
isolate:
|
|
838
|
-
|
|
839
|
-
keys: {
|
|
840
|
-
current: {},
|
|
841
|
-
prev: {}
|
|
842
|
-
}
|
|
843
|
-
},
|
|
844
|
-
mode: [Modes.ALL],
|
|
845
|
-
testCursor: createCursor()
|
|
840
|
+
isolate: generateIsolate(IsolateTypes.DEFAULT),
|
|
841
|
+
mode: [Modes.ALL]
|
|
846
842
|
}, ctxRef);
|
|
847
843
|
});
|
|
848
844
|
|
|
@@ -1150,30 +1146,9 @@
|
|
|
1150
1146
|
}, 0);
|
|
1151
1147
|
}
|
|
1152
1148
|
|
|
1153
|
-
function usePath() {
|
|
1154
|
-
var context$1 = context.useX();
|
|
1155
|
-
return context$1.testCursor.getCursor();
|
|
1156
|
-
}
|
|
1157
|
-
function useCursorAt() {
|
|
1158
|
-
var context$1 = context.useX();
|
|
1159
|
-
return context$1.testCursor.cursorAt();
|
|
1160
|
-
}
|
|
1161
|
-
function moveForward() {
|
|
1162
|
-
var context$1 = context.useX();
|
|
1163
|
-
return context$1.testCursor.next();
|
|
1164
|
-
}
|
|
1165
|
-
function addLevel() {
|
|
1166
|
-
var context$1 = context.useX();
|
|
1167
|
-
context$1.testCursor.addLevel();
|
|
1168
|
-
}
|
|
1169
|
-
function removeLevel() {
|
|
1170
|
-
var context$1 = context.useX();
|
|
1171
|
-
context$1.testCursor.removeLevel();
|
|
1172
|
-
}
|
|
1173
|
-
|
|
1174
1149
|
function usePrevKeys() {
|
|
1175
1150
|
var prev = useTestObjects()[0].prev;
|
|
1176
|
-
return asArray(getCurrent(prev,
|
|
1151
|
+
return asArray(getCurrent(prev, useCurrentPath())).reduce(function (prevKeys, testObject) {
|
|
1177
1152
|
if (!(testObject instanceof VestTest)) {
|
|
1178
1153
|
return prevKeys;
|
|
1179
1154
|
}
|
|
@@ -1185,12 +1160,11 @@
|
|
|
1185
1160
|
}, {});
|
|
1186
1161
|
}
|
|
1187
1162
|
function usePrevTestByKey(key) {
|
|
1188
|
-
var prev =
|
|
1163
|
+
var prev = useIsolate().keys.prev;
|
|
1189
1164
|
return prev[key];
|
|
1190
1165
|
}
|
|
1191
1166
|
function useRetainTestKey(key, testObject) {
|
|
1192
|
-
var
|
|
1193
|
-
var current = context$1.isolate.keys.current;
|
|
1167
|
+
var current = useIsolate().keys.current;
|
|
1194
1168
|
if (isNullish(current[key])) {
|
|
1195
1169
|
current[key] = testObject;
|
|
1196
1170
|
}
|
|
@@ -1202,23 +1176,42 @@
|
|
|
1202
1176
|
function isolate(_a, callback) {
|
|
1203
1177
|
var _b = _a.type, type = _b === void 0 ? IsolateTypes.DEFAULT : _b;
|
|
1204
1178
|
invariant(isFunction(callback));
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
return context.run({ isolate: { type: type, keys: keys } }, function () {
|
|
1211
|
-
addLevel();
|
|
1212
|
-
keys.prev = usePrevKeys();
|
|
1213
|
-
useSetTests(function (tests) { return setValueAtPath(tests, path, []); });
|
|
1179
|
+
// Generate a new Isolate layer, with its own cursor
|
|
1180
|
+
var isolate = generateIsolate(type, useCurrentPath());
|
|
1181
|
+
var output = context.run({ isolate: isolate }, function () {
|
|
1182
|
+
isolate.keys.prev = usePrevKeys();
|
|
1183
|
+
useSetTests(function (tests) { return setValueAtPath(tests, isolate.path, []); });
|
|
1214
1184
|
var res = callback();
|
|
1215
|
-
removeLevel();
|
|
1216
|
-
moveForward();
|
|
1217
1185
|
return res;
|
|
1218
1186
|
});
|
|
1187
|
+
// Move the parent cursor forward once we're done
|
|
1188
|
+
useCursor().next();
|
|
1189
|
+
return output;
|
|
1190
|
+
}
|
|
1191
|
+
/**
|
|
1192
|
+
* @returns {Isolate} The current isolate layer
|
|
1193
|
+
*/
|
|
1194
|
+
function useIsolate() {
|
|
1195
|
+
return context.useX().isolate;
|
|
1219
1196
|
}
|
|
1197
|
+
/**
|
|
1198
|
+
* @returns {boolean} Whether or not the current isolate allows tests to be reordered
|
|
1199
|
+
*/
|
|
1220
1200
|
function shouldAllowReorder() {
|
|
1221
|
-
return
|
|
1201
|
+
return useIsolate().type === IsolateTypes.EACH;
|
|
1202
|
+
}
|
|
1203
|
+
/**
|
|
1204
|
+
* @returns {number[]} The current cursor path of the isolate tree
|
|
1205
|
+
*/
|
|
1206
|
+
function useCurrentPath() {
|
|
1207
|
+
var isolate = useIsolate();
|
|
1208
|
+
return isolate.path.concat(isolate.cursor.current());
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* @returns {IsolateCursor} The cursor object for the current isolate
|
|
1212
|
+
*/
|
|
1213
|
+
function useCursor() {
|
|
1214
|
+
return useIsolate().cursor;
|
|
1222
1215
|
}
|
|
1223
1216
|
|
|
1224
1217
|
var Severity;
|
|
@@ -2142,9 +2135,7 @@
|
|
|
2142
2135
|
setMode(Modes.EAGER);
|
|
2143
2136
|
}
|
|
2144
2137
|
function shouldSkipBasedOnMode(testObject) {
|
|
2145
|
-
|
|
2146
|
-
return true;
|
|
2147
|
-
return false;
|
|
2138
|
+
return isEager() && hasErrorsByTestObjects(testObject.fieldName);
|
|
2148
2139
|
}
|
|
2149
2140
|
function isEager() {
|
|
2150
2141
|
return isMode(Modes.EAGER);
|
|
@@ -2326,30 +2317,23 @@
|
|
|
2326
2317
|
return nextTest;
|
|
2327
2318
|
}
|
|
2328
2319
|
function removeAllNextTestsInIsolate() {
|
|
2329
|
-
var
|
|
2330
|
-
var prevTests = testObjects.prev;
|
|
2331
|
-
var current = getCurrent(prevTests, usePath());
|
|
2332
|
-
var cursorAt = useCursorAt();
|
|
2333
|
-
current.splice(cursorAt);
|
|
2320
|
+
var cursorAt = useCursor().current();
|
|
2334
2321
|
// We actually don't mind mutating the state directly (as can be seen above). There is no harm in it
|
|
2335
2322
|
// since we're only touching the "prev" state. The reason we still use the setter function is
|
|
2336
2323
|
// to prevent future headaches if we ever do need to rely on prev-state immutability.
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
return
|
|
2340
|
-
prev: prevTests,
|
|
2341
|
-
current: current
|
|
2342
|
-
});
|
|
2324
|
+
useSetTests(function (current) {
|
|
2325
|
+
current.splice(cursorAt);
|
|
2326
|
+
return current;
|
|
2343
2327
|
});
|
|
2344
2328
|
}
|
|
2345
2329
|
function useSetTestAtCursor(testObject) {
|
|
2346
|
-
var cursorPath =
|
|
2330
|
+
var cursorPath = useCurrentPath();
|
|
2347
2331
|
useSetTests(function (tests) {
|
|
2348
2332
|
return setValueAtPath(tests, cursorPath, testObject);
|
|
2349
2333
|
});
|
|
2350
2334
|
}
|
|
2351
2335
|
function useGetTestAtCursor(tests) {
|
|
2352
|
-
var cursorPath =
|
|
2336
|
+
var cursorPath = useCurrentPath();
|
|
2353
2337
|
return valueAtPath(tests, cursorPath);
|
|
2354
2338
|
}
|
|
2355
2339
|
function testReorderDetected(prevTest, newTest) {
|
|
@@ -2373,16 +2357,17 @@
|
|
|
2373
2357
|
|
|
2374
2358
|
// eslint-disable-next-line max-statements
|
|
2375
2359
|
function registerPrevRunTest(testObject) {
|
|
2360
|
+
var cursor = useCursor();
|
|
2376
2361
|
if (shouldSkipBasedOnMode(testObject)) {
|
|
2377
2362
|
testObject.skip();
|
|
2378
2363
|
useTestAtCursor(testObject);
|
|
2379
|
-
|
|
2364
|
+
cursor.next();
|
|
2380
2365
|
return testObject;
|
|
2381
2366
|
}
|
|
2382
2367
|
var prevRunTest = useTestAtCursor(testObject);
|
|
2383
2368
|
if (isOmitted()) {
|
|
2384
2369
|
prevRunTest.omit();
|
|
2385
|
-
|
|
2370
|
+
cursor.next();
|
|
2386
2371
|
return prevRunTest;
|
|
2387
2372
|
}
|
|
2388
2373
|
if (isExcluded(testObject)) {
|
|
@@ -2391,13 +2376,13 @@
|
|
|
2391
2376
|
// This mostly means that we're probably giving
|
|
2392
2377
|
// up on this async test intentionally.
|
|
2393
2378
|
prevRunTest.skip(isExcludedIndividually());
|
|
2394
|
-
|
|
2379
|
+
cursor.next();
|
|
2395
2380
|
return prevRunTest;
|
|
2396
2381
|
}
|
|
2397
2382
|
cancelOverriddenPendingTest(prevRunTest, testObject);
|
|
2398
2383
|
useSetTestAtCursor(testObject);
|
|
2399
|
-
moveForward();
|
|
2400
2384
|
registerTestObjectByTier(testObject);
|
|
2385
|
+
cursor.next();
|
|
2401
2386
|
return testObject;
|
|
2402
2387
|
}
|
|
2403
2388
|
function registerTestObjectByTier(testObject) {
|
|
@@ -2420,7 +2405,7 @@
|
|
|
2420
2405
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
2421
2406
|
args[_i - 1] = arguments[_i];
|
|
2422
2407
|
}
|
|
2423
|
-
var cursorAt =
|
|
2408
|
+
var cursorAt = useCursor().current();
|
|
2424
2409
|
var _a = args.reverse(), deps = _a[0], testFn = _a[1], msg = _a[2];
|
|
2425
2410
|
// Implicit dependency for more specificity
|
|
2426
2411
|
var dependencies = [useSuiteId(), fieldName, cursorAt].concat(deps);
|
|
@@ -2482,7 +2467,7 @@
|
|
|
2482
2467
|
ctx.currentTest.warn();
|
|
2483
2468
|
}
|
|
2484
2469
|
|
|
2485
|
-
var VERSION = "4.4.
|
|
2470
|
+
var VERSION = "4.4.2";
|
|
2486
2471
|
|
|
2487
2472
|
exports.VERSION = VERSION;
|
|
2488
2473
|
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 c(n,t){return n===t}function a(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}function f(n,t){return a(n)&&a(t)&&Number(n)>Number(t)}function l(n,t){return a(n)&&a(t)&&Number(n)===Number(t)}function d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(t)||o(t)&&o(n))&&-1!==t.indexOf(n)}function h(n,t){return a(n)&&a(t)&&Number(n)<Number(t)}function g(n,t){return l(n,t)||h(n,t)}function N(n,t,e){return d(n,t)&&g(n,e)}function m(n){return i(n)||o(n)&&!n.trim()}function E(n){return!!n===n}function y(n){return"number"==typeof n}function b(n,t){return l(n.length,t)}function R(n){return!n||(y(n)?0===n:Object.prototype.hasOwnProperty.call(n,"length")?b(n,0):"object"==typeof n&&b(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 I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(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 Lt){var r=Lt[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=at({},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 x(){return null}function U(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(E(n)||n&&E(n.pass),"Incorrect return value for rule: "+JSON.stringify(n)),E(n)?G(n):G(n.pass,w.apply(void 0,U([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,U([wt.run({value:n},(function(){return e.apply(void 0,U([n],u,!1))})),r,n],u,!1))).pass,R(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=Lt[e])return t(r,n,e)}});return r}function j(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=Lt[r];e.push((function(n){return D.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return W(j(e,(function(e,r){var u,i=wt.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 Lt[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 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]),_(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];p(u)?e.push(M(u,t)):(u=t(u),ft(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(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 xt.useX().stateRef}function Q(n){return z().optionalFields()[0][n]}function Z(n,t){(0,z().optionalFields()[1])((function(e){var r;return at(e,((r={})[n]=w(t,e[n]),r))}))}function $(n){var t;return null===(t=Q(n))||void 0===t?void 0:t[0]}function nn(){tn((function(n){return n}))}function tn(n){(0,z().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function en(){return rn().filter((function(n){return n.isPending()}))}function rn(){var n=z().testObjects()[0].current;return Ut([n],(function(){return V(n)}))}function un(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 on(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 sn(n){setTimeout((function(){throw Error(n)}),0)}function cn(){return xt.useX().testCursor.getCursor()}function an(){return xt.useX().testCursor.next()}function fn(n,e){n=void 0===(n=n.type)?ot.DEFAULT:n,F(t(e));var r={current:{},prev:{}},u=cn();return xt.run({isolate:{type:n,keys:r}},(function(){xt.useX().testCursor.addLevel(),r.prev=function(){var n=z().testObjects()[0].prev;return[].concat(J(n,cn())).reduce((function(n,t){return t instanceof Dt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),tn((function(n){return J(n,u)[H(u)]=[],n}));var n=e();return xt.useX().testCursor.removeLevel(),an(),n}))}function ln(n){return n===Xt.ERRORS?Gt.ERROR_COUNT:Gt.WARN_COUNT}function dn(n,t){return!(!t||n.fieldName!==t)}function pn(n,t){return rn().some((function(e){return vn(e,n,t)}))}function vn(n,t,e){return(e=!n.hasFailures()||e&&!dn(n,e))||(n=n.warns(),e=t===Xt.WARNINGS!=!!n),!e}function hn(n){return!!gn(n)||!pn(Xt.ERRORS,n)&&(!R(rn())&&!function(n){return St(en().filter((function(t){return Nn(t,n)})))}(n)&&function(n){return rn().every((function(t){return!(!n||dn(t,n))||mn(t,n)}))}(n))}function gn(n){return!!n&&!0===(null===(t=Q(n))||void 0===t?void 0:t[1]);var t}function Nn(n,t){return!(t&&!dn(n,t))&&!0!==$(n.fieldName)}function mn(n,t){return!(!t||dn(n,t))||(!0===$(n.fieldName)||n.isTested()||n.isOmitted())}function En(){var n=xt.useX().summary;return F(n),n}function yn(){var n=rn(),t=at({errorCount:0,warnCount:0,testCount:0},{groups:{},tests:{},valid:!1});return n.reduce((function(n,t){var e=n.tests;e[t.fieldName]=bn(e,t),e[t.fieldName].valid=!1!==e[t.fieldName].valid&&hn(t.fieldName);var r=n.groups,u=t.groupName;return u&&(r[u]=r[u]||{},r[u][t.fieldName]=bn(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 rn().some((function(r){return!zt(r,t)&&vn(r,n,e)}))}(Xt.ERRORS,u,t)&&!function(n,t){return St(en().filter((function(e){return!zt(e,n)&&Nn(e,t)})))}(u,t)&&function(n,t){return rn().every((function(e){return!!zt(e,n)||mn(e,t)}))}(u,t),e.valid=t),n}),t),t.valid=hn(),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 bn(n,t){function e(n){var t=ln(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||at({errorCount:0,warnCount:0,testCount:0},{errors:[],warnings:[]});var i=n[r];return t.isNonActionable()||(n[r].testCount++,t.isFailing()?e(Xt.ERRORS):t.isWarning()&&e(Xt.WARNINGS)),i}function Rn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function On(n,t){var e,r={},u=ln(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function Sn(n){return Cn(Xt.ERRORS,n)}function Tn(n){return Cn(Xt.WARNINGS,n)}function Cn(n,t){var e=En().tests;return t?Rn(e,n,t):On(e,n)}function In(n,t){return An(n,Xt.ERRORS,t)}function _n(n,t){return An(n,Xt.WARNINGS,t)}function An(n,t,e){return n=En().groups[n],e?Rn(n,t,e):On(n,t)}function kn(n){return wn(Gt.ERROR_COUNT,n)}function Ln(n){return wn(Gt.WARN_COUNT,n)}function wn(n,t){var e,r=En();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Wn(n,t){return Pn(Xt.ERRORS,n,t)}function Fn(n,t){return Pn(Xt.WARNINGS,n,t)}function Pn(n,t,e){var r,u,i=En();if(n=ln(n),!(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 xn(n){var t=En();return n?!!Xn(t.tests,n):t.valid}function Un(n,t){if(!(n=En().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 Gn(){var n=rn(),t={stateRef:z()};return Qt([n],xt.bind(t,(function(){var n=yn(),t=z().suiteName()[0],e={summary:n};return at(n,{getErrors:xt.bind(e,Sn),getErrorsByGroup:xt.bind(e,In),getWarnings:xt.bind(e,Tn),getWarningsByGroup:xt.bind(e,_n),hasErrors:xt.bind(e,kn),hasErrorsByGroup:xt.bind(e,Wn),hasWarnings:xt.bind(e,Ln),hasWarningsByGroup:xt.bind(e,Fn),isValid:xt.bind(e,xn),isValidByGroup:xt.bind(e,Un),suiteName:t})})))}function Dn(n){var t=en();return!R(t)&&(n?t.some((function(t){return dn(t,n)})):St(t))}function qn(){var n=rn(),t={stateRef:z()};return Zt([n],xt.bind(t,(function(){return at({},Gn(),{done:xt.bind(t,$t)})})))}function jn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!R(r.tests[e].testCount)))}function Kn(n){return!(Dn()&&(!n||Dn(n)))}function Bn(n,t){(0,z().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Hn(n){return n.forEach((function(n){return n()}))}function Mn(){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(Yt.TEST_COMPLETED,(function(t){if(!t.isCanceled()){t.done(),t=t.fieldName;var e=z().testCallbacks()[0].fieldCallbacks;t&&!Dn(t)&&p(e[t])&&Hn(e[t]),Dn()||n.emit(Yt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(Yt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),Z(n.fieldName,(function(n){return[n[0],!0]})))}if(!R(z().optionalFields()[0])){var e={};tn((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=$(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(Yt.ALL_RUNNING_TESTS_FINISHED,(function(){Hn(z().testCallbacks()[0].doneCallbacks)})),n.on(Yt.REMOVE_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&(t.cancel(),function(n){tn((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(Yt.RESET_FIELD,(function(n){rn().forEach((function(t){dn(t,n)&&t.reset()}))})),n}function Vn(){var n=xt.useX();return F(n.bus),n.bus}function Jn(n){return zn(0,"tests",n)}function Yn(n){return zn(1,"tests",n)}function zn(n,t,e){var r=xt.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 Zn(){var n,t=xt.useX().exclusion;for(n in t.groups)if(t.groups[n])return!0;return!1}function $n(n){return"Wrong arguments passed to group. Group ".concat(n,".")}function nt(n){var e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Vn().emit,i=z(),s=xt.bind({stateRef:i},(function(){nn(),u(Yt.TEST_COMPLETED,n)}));i=xt.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 tt(n){var t=z().testObjects()[0].prev;if(R(t))return et(n),n;var e=cn();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=xt.useX().isolate.keys.prev[t])&&(n=e),e=n;var r=xt.useX().isolate.keys.current;return i(r[t])?r[t]=e:sn('Encountered the same test key "'.concat(t,"\" twice. This may lead to tests overriding each other's results, or to tests being unexpectedly omitted.")),et(n),n}return!St(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(xt.useX().isolate.type===ot.EACH||sn("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().testObjects(),t=n[1],e=n[0].prev;n=J(e,cn());var r=xt.useX().testCursor.cursorAt();n.splice(r),t((function(n){return{prev:e,current:n.current}}))}(),t=null),et(n=W(t,n)),n}function et(n){var t=cn();tn((function(e){return J(e,t)[H(t)]=n,e}))}function rt(n){var e=ct.EAGER;if(e=!(xt.useX().mode[0]!==e||!pn(Xt.ERRORS,n.fieldName)))return n.skip(),tt(n),an(),n;if(e=tt(n),xt.useX().omitted)return e.omit(),an(),e;if(function(n){var t=n.fieldName;if(n=n.groupName,xt.useX().skipped)return!0;var e=xt.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=xt.useX().exclusion.groups;if(o=Object.prototype.hasOwnProperty.call(o,n)?!1===o[n]:Zn())return!0;if(!0===r.groups[n])return!(i||!Qn(u)&&!1!==u[t])}return!!(n=!!Zn()&&!n)||!i&&!!Qn(u)&&!w(e[t])}(n))return e.skip(!!xt.useX().skipped),an(),e;if(n!==e&&e.fieldName===n.fieldName&&e.groupName===n.groupName&&e.isPending()&&e.cancel(),et(n),an(),n.isUntested()){e=Vn();var r=function(n){return xt.run({currentTest:n},(function(){return n.run()}))}(n);try{r&&t(r.then)?(n.asyncTest=r,n.setPending(),nt(n)):e.emit(Yt.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(),nt(n));return n}function ut(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),it("fieldName","string")),F(t(r),it("Test callback","function"));var i=xt.useX();return rt(e=new Dt(n,r,{message:e,groupName:i.groupName,key:u}))}function it(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var ot,st,ct,at=Object.assign,ft=e(r),lt=e(u),dt=e(i),pt=e(s),vt=e(c),ht=e(a),gt=e(l),Nt=e(p),mt=e(v),Et=e(N),yt=e(m),bt=e(E),Rt=e(y),Ot=e(b),St=e(R),Tt=e(O),Ct=e(S),It=e(o),_t=e(C),At=e(I),kt=e(A),Lt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:pt,doesNotStartWith:e(k),endsWith:s,equals:c,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:N,isBlank:m,isBoolean:E,isEmpty:R,isEven:function(n){return!!a(n)&&0==n%2},isFalsy:_t,isKeyOf:O,isNaN:S,isNegative:function(n){return h(n,0)},isNotArray:Nt,isNotBetween:Et,isNotBlank:yt,isNotBoolean:bt,isNotEmpty:St,isNotKeyOf:Tt,isNotNaN:Ct,isNotNull:ft,isNotNullish:dt,isNotNumber:Rt,isNotNumeric:ht,isNotString:It,isNotUndefined:lt,isNotValueOf:At,isNull:r,isNullish:i,isNumber:y,isNumeric:a,isOdd:function(n){return!!a(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:b,lengthNotEquals:Ot,lessThan:h,lessThanOrEquals:g,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:g,matches:A,notEquals:vt,notInside:mt,notMatches:kt,numberEquals:l,numberNotEquals:gt,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return g(n.length,t)},startsWith:k},wt=P((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?at(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:at(e,{parent:x})})),Wt=function(){function n(){if(!X())return L((function(n){t[n]=K(n)})),at(q,t)}var t={context:function(){return wt.useX()},extend:function(t){at(Lt,t),n()}};return n(),new Proxy(at(q,t),{get:function(n,t){return t in n?n[t]:Lt[t]?K(t):void 0}})}(),Ft=(st=0,function(){return"".concat(st++)});!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"}(ot||(ot={})),function(n){n[n.ALL=0]="ALL",n[n.EAGER=1]="EAGER"}(ct||(ct={}));var Pt,xt=P((function(n,t){return t?null:at({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:{type:ot.DEFAULT,keys:{current:{},prev:{}}},mode:[ct.ALL],testCursor:Y()},n)})),Ut=B();!function(n){n.Error="error",n.Warning="warning"}(Pt||(Pt={}));var Xt,Gt,Dt=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=Ft(),this.severity=Pt.Error,this.status=qt,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!==Jt||(this.status=n)},n.prototype.warns=function(){return this.severity===Pt.Warning},n.prototype.setPending=function(){this.setStatus(Mt)},n.prototype.fail=function(){this.setStatus(this.warns()?Bt:Kt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(Ht)},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(jt)},n.prototype.cancel=function(){this.setStatus(Vt),nn()},n.prototype.reset=function(){this.status=qt,nn()},n.prototype.omit=function(){this.setStatus(Jt)},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(Mt)},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.statusEquals(Jt)},n.prototype.isUntested=function(){return this.statusEquals(qt)},n.prototype.isFailing=function(){return this.statusEquals(Kt)},n.prototype.isCanceled=function(){return this.statusEquals(Vt)},n.prototype.isSkipped=function(){return this.statusEquals(jt)},n.prototype.isPassing=function(){return this.statusEquals(Ht)},n.prototype.isWarning=function(){return this.statusEquals(Bt)},n.prototype.statusEquals=function(n){return this.status===n},n}(),qt="UNTESTED",jt="SKIPPED",Kt="FAILED",Bt="WARNING",Ht="PASSING",Mt="PENDING",Vt="CANCELED",Jt="OMITTED";!function(n){n.WARNINGS="warnings",n.ERRORS="errors"}(Xt||(Xt={})),function(n){n.ERROR_COUNT="errorCount",n.WARN_COUNT="warnCount"}(Gt||(Gt={}));var Yt,zt=e((function(n,t){return n.groupName===t})),Qt=B(1),Zt=B(20),$t=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=qn(),jn(e,n,t))return t;var r=function(){return e(Gn())};return Kn(n)?(r(),t):(Bn(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"}(Yt||(Yt={})),Jn.group=function(n){return zn(0,"groups",n)},Yn.group=function(n){return zn(1,"groups",n)};var ne=at(ut,{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=xt.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)}))):rt(r[1])}}(ut)});n.VERSION="4.4.0-dev-08ec91",n.context=xt,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=Mn(),i=un();return n={stateRef:on(i,{suiteId:Ft(),suiteName:n}),bus:u},at(xt.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),fn({type:ot.SUITE},(function(){r.apply(void 0,n)})),u.emit(Yt.SUITE_CALLBACK_DONE_RUNNING),qn()})),{get:xt.bind(n,Gn),remove:xt.bind(n,(function(n){u.emit(Yt.REMOVE_FIELD,n)})),reset:i.reset,resetField:xt.bind(n,(function(n){u.emit(Yt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),fn({type:ot.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=ct.EAGER;xt.useX().mode[0]=n},n.enforce=Wt,n.group=function(n,e){F(o(n),$n("name must be a string")),F(t(e),$n("callback must be a function")),fn({type:ot.GROUP},(function(){xt.run({groupName:n},e)}))},n.include=function(n){var t=xt.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=W(t.tests[n],!0),{when:function(t){var e=xt.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(Gn))}}}},n.omitWhen=function(n,t){fn({type:ot.OMIT_WHEN},(function(){xt.run({omitted:!!xt.useX().omitted||w(n,w(Gn))},(function(){return t()}))}))},n.only=Jn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){Z(n,[!0,!1])}));else for(var t in n)Z(t,[n[t],!1])},n.skip=Yn,n.skipWhen=function(n,t){fn({type:ot.SKIP_WHEN},(function(){xt.run({skipped:!!xt.useX().skipped||w(n,w(Gn))},(function(){return t()}))}))},n.test=ne,n.warn=function(){var n=xt.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 d(n,t){return l(n,t)||f(n,t)}function p(n){return!!Array.isArray(n)}function v(n,t){return!!(p(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 d(n,t)&&N(n,e)}function E(n){return i(n)||o(n)&&!n.trim()}function m(n){return!!n===n}function y(n,t){return l(n.length,t)}function b(n){return!n||(Object.prototype.hasOwnProperty.call(n,"length")?y(n,0):"object"==typeof n&&y(Object.keys(n),0))}function R(n,t){return n in t}function S(n){return Number.isNaN(n)}function O(n){return"number"==typeof n}function T(n){return f(n,0)}function C(n){return!!n}function I(n,t){if(i(t))return!1;for(var e in t)if(t[e]===n)return!0;return!1}function _(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 A(n,t){return o(n)&&o(t)&&n.startsWith(t)}function w(n){for(var e in Wt){var r=Wt[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 x(n,t){var e;return null!==(e=W(n))&&void 0!==e?e:W(t)}function F(n,t){if(!n)throw t instanceof String?t.valueOf():Error(t?W(t):t)}function L(n){function t(t,u){var i,o,s=e();return t=ft({},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){var t=e();return F(t,x(n,"Context was used after it was closed")),t}}}function P(){return null}function U(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 G(){try{return t(Proxy)}catch(n){return!1}}function D(n,t){return n={pass:n},t&&(n.message=t),n}function X(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)?D(n):D(n.pass,W.apply(void 0,U([n.message,t,e],r,!1)))}function q(n){function t(t,e,r){return function(){for(var u=[],o=0;o<arguments.length;o++)u[o]=arguments[o];return F((o=xt.run({value:n},(function(){return X.apply(void 0,U([e.apply(void 0,U([n],u,!1)),r,n],u,!1))}))).pass,i(o.message)?"enforce/".concat(r," failed with ").concat(JSON.stringify(n)):new String(W(o.message))),t}}var e={};if(!G())return w((function(n,r){e[n]=t(e,r,n)})),e;var r=new Proxy(e,{get:function(n,e){if(n=Wt[e])return t(r,n,e)}});return r}function j(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 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=Wt[r];e.push((function(n){return X.apply(void 0,U([o.apply(void 0,U([n],u,!1)),r,n],u,!1))}));var s={run:function(n){return x(j(e,(function(e,r){var u,i=xt.run({value:n},(function(){return e(n)}));r(!i.pass,D(!!i.pass,null!==(u=W(t,n,i.message))&&void 0!==u?u:i.message))})),D(!0))},test:function(n){return s.run(n).pass},message:function(n){return n&&(t=n),s}};return G()?s=new Proxy(s,{get:function(t,e){return Wt[e]?n(e):t[e]}}):(w((function(t){s[t]=n(t)})),s)}}(n)}function B(n){function t(n){return e.findIndex((function(t){var e=t[0];return y(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]),_(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];p(u)?e.push(M(u,t)):(u=t(u),lt(u)&&e.push(u))}return e}function V(n){return[].concat(n).reduce((function(n,t){return p(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]=x(n[r],[]),n=n[r]}return n}function Y(){var n=0;return{current:function(){return n},next:function(){n++}}}function z(n,t){return void 0===t&&(t=[]),{cursor:Y(),keys:{current:{},prev:{}},path:t,type:n}}function Q(){return Ut.useX().stateRef}function Z(n){return Q().optionalFields()[0][n]}function $(n,t){(0,Q().optionalFields()[1])((function(e){var r;return ft(e,((r={})[n]=W(t,e[n]),r))}))}function nn(n){var t;return null===(t=Z(n))||void 0===t?void 0:t[0]}function tn(){en((function(n){return n}))}function en(n){(0,Q().testObjects()[1])((function(t){return{prev:t.prev,current:[].concat(n(t.current))}}))}function rn(){return un().filter((function(n){return n.isPending()}))}function un(){var n=Q().testObjects()[0].current;return Gt([n],(function(){return V(n)}))}function on(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 sn(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 an(n){setTimeout((function(){throw Error(n)}),0)}function cn(n,e){n=void 0===(n=n.type)?st.DEFAULT:n,F(t(e));var r=z(n,ln());return n=Ut.run({isolate:r},(function(){return r.keys.prev=function(){var n=Q().testObjects()[0].prev;return[].concat(J(n,ln())).reduce((function(n,t){return t instanceof qt&&!i(t.key)?(n[t.key]=t,n):n}),{})}(),en((function(n){var t=r.path;return J(n,t)[H(t)]=[],n})),e()})),fn().cursor.next(),n}function fn(){return Ut.useX().isolate}function ln(){var n=fn();return n.path.concat(n.cursor.current())}function dn(n){return n===Dt.ERRORS?Xt.ERROR_COUNT:Xt.WARN_COUNT}function pn(n,t){return!(!t||n.fieldName!==t)}function vn(n,t){return un().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===Dt.WARNINGS!=!!n),!e}function Nn(n){return!!gn(n)||!vn(Dt.ERRORS,n)&&(!b(un())&&!function(n){return Ot(rn().filter((function(t){return En(t,n)})))}(n)&&function(n){return un().every((function(t){return!(!n||pn(t,n))||mn(t,n)}))}(n))}function gn(n){return!!n&&!0===(null===(t=Z(n))||void 0===t?void 0:t[1]);var t}function En(n,t){return!(t&&!pn(n,t))&&!0!==nn(n.fieldName)}function mn(n,t){return!(!t||pn(n,t))||(!0===nn(n.fieldName)||n.isTested()||n.isOmitted())}function yn(){var n=Ut.useX().summary;return F(n),n}function bn(){var n=un(),t=ft({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 un().some((function(r){return!Qt(r,t)&&hn(r,n,e)}))}(Dt.ERRORS,u,t)&&!function(n,t){return Ot(rn().filter((function(e){return!Qt(e,n)&&En(e,t)})))}(u,t)&&function(n,t){return un().every((function(e){return!!Qt(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){var t=dn(n);i[t]++,u&&(i[n]=(i[n]||[]).concat(u))}var r=t.fieldName,u=t.message;n[r]=n[r]||ft({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 Sn(n,t,e){var r;return(null===(r=null==n?void 0:n[e])||void 0===r?void 0:r[t])||[]}function On(n,t){var e,r={},u=dn(t);for(e in n)T(n[e][u])&&(r[e]=n[e][t]||[]);return r}function Tn(n){return In(Dt.ERRORS,n)}function Cn(n){return In(Dt.WARNINGS,n)}function In(n,t){var e=yn().tests;return t?Sn(e,n,t):On(e,n)}function _n(n,t){return An(n,Dt.ERRORS,t)}function kn(n,t){return An(n,Dt.WARNINGS,t)}function An(n,t,e){return n=yn().groups[n],e?Sn(n,t,e):On(n,t)}function wn(n){return xn(Xt.ERROR_COUNT,n)}function Wn(n){return xn(Xt.WARN_COUNT,n)}function xn(n,t){var e,r=yn();return T(t?null===(e=r.tests[t])||void 0===e?void 0:e[n]:r[n])}function Fn(n,t){return Pn(Dt.ERRORS,n,t)}function Ln(n,t){return Pn(Dt.WARNINGS,n,t)}function Pn(n,t,e){var r,u,i=yn();if(n=dn(n),!(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 Un(n){var t=yn();return n?!!Dn(t.tests,n):t.valid}function Gn(n,t){if(!(n=yn().groups[n]))return!1;if(t)return Dn(n,t);for(var e in n)if(!Dn(n,e))return!1;return!0}function Dn(n,t){var e;return!(null===(e=n[t])||void 0===e||!e.valid)}function Xn(){var n=un(),t={stateRef:Q()};return Zt([n],Ut.bind(t,(function(){var n=bn(),t=Q().suiteName()[0],e={summary:n};return ft(n,{getErrors:Ut.bind(e,Tn),getErrorsByGroup:Ut.bind(e,_n),getWarnings:Ut.bind(e,Cn),getWarningsByGroup:Ut.bind(e,kn),hasErrors:Ut.bind(e,wn),hasErrorsByGroup:Ut.bind(e,Fn),hasWarnings:Ut.bind(e,Wn),hasWarningsByGroup:Ut.bind(e,Ln),isValid:Ut.bind(e,Un),isValidByGroup:Ut.bind(e,Gn),suiteName:t})})))}function qn(n){var t=rn();return!b(t)&&(n?t.some((function(t){return pn(t,n)})):Ot(t))}function jn(){var n=un(),t={stateRef:Q()};return $t([n],Ut.bind(t,(function(){return ft({},Xn(),{done:Ut.bind(t,ne)})})))}function Kn(n,e,r){return!(t(n)&&(!e||r.tests[e]&&!b(r.tests[e].testCount)))}function Bn(n){return!(qn()&&(!n||qn(n)))}function Hn(n,t){(0,Q().testCallbacks()[1])((function(e){return t?e.fieldCallbacks[t]=(e.fieldCallbacks[t]||[]).concat(n):e.doneCallbacks.push(n),e}))}function Mn(n){return n.forEach((function(n){return n()}))}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=Q().testCallbacks()[0].fieldCallbacks;t&&!qn(t)&&p(e[t])&&Mn(e[t]),qn()||n.emit(zt.ALL_RUNNING_TESTS_FINISHED)}})),n.on(zt.SUITE_CALLBACK_DONE_RUNNING,(function(){!function(){function n(n){e[n.fieldName]&&(n.omit(),$(n.fieldName,(function(n){return[n[0],!0]})))}if(!b(Q().optionalFields()[0])){var e={};en((function(r){return M(r,(function(r){if(Object.prototype.hasOwnProperty.call(e,r.fieldName))n(r);else{var u=nn(r.fieldName);t(u)&&(e[r.fieldName]=u(),n(r))}return r}))}))}}()})),n.on(zt.ALL_RUNNING_TESTS_FINISHED,(function(){Mn(Q().testCallbacks()[0].doneCallbacks)})),n.on(zt.REMOVE_FIELD,(function(n){un().forEach((function(t){pn(t,n)&&(t.cancel(),function(n){en((function(t){return M(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n.on(zt.RESET_FIELD,(function(n){un().forEach((function(t){pn(t,n)&&t.reset()}))})),n}function Jn(){var n=Ut.useX();return F(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){o(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 e=n.asyncTest,r=n.message;if(e&&t(e.then)){var u=Jn().emit,i=Q(),s=Ut.bind({stateRef:i},(function(){tn(),u(zt.TEST_COMPLETED,n)}));i=Ut.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 et(n){var t=Q().testObjects()[0].prev;if(b(t))return rt(n),n;var e=ln();if(t=J(t,e)[H(e)],!i(n.key)){t=n.key,(e=fn().keys.prev[t])&&(n=e),e=n;var r=fn().keys.current;return i(r[t])?r[t]=e:an('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!Ot(e=t)||e.fieldName===n.fieldName&&e.groupName===n.groupName||(fn().type===st.EACH||an("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();en((function(t){return t.splice(n),t}))}(),t=null),rt(n=x(t,n)),n}function rt(n){var t=ln();en((function(e){return J(e,t)[H(t)]=n,e}))}function ut(n){var e=fn().cursor,r=ct.EAGER;if(Ut.useX().mode[0]===r&&vn(Dt.ERRORS,n.fieldName))return n.skip(),et(n),e.next(),n;if(r=et(n),Ut.useX().omitted)return r.omit(),e.next(),r;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)&&!W(e[t])}(n))return r.skip(!!Ut.useX().skipped),e.next(),r;if(n!==r&&r.fieldName===n.fieldName&&r.groupName===n.groupName&&r.isPending()&&r.cancel(),rt(n),n.isUntested()){r=Jn();var u=function(n){return Ut.run({currentTest:n},(function(){return n.run()}))}(n);try{u&&t(u.then)?(n.asyncTest=u,n.setPending(),tt(n)):r.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(r=n.asyncTest)&&t(r.then)&&(n.setPending(),tt(n));return e.next(),n}function it(n){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var u=t(e[1])?e:U([void 0],e,!0);e=u[0],r=u[1],u=u[2],F(o(n),ot("fieldName","string")),F(t(r),ot("Test callback","function"));var i=Ut.useX();return ut(e=new qt(n,r,{message:e,groupName:i.groupName,key:u}))}function ot(n,t){return"Incompatible params passed to test function. ".concat(n," must be a ").concat(t)}var st,at,ct,ft=Object.assign,lt=e(r),dt=e(u),pt=e(i),vt=e(s),ht=e(a),Nt=e(c),gt=e(l),Et=e(p),mt=e(v),yt=e(g),bt=e(E),Rt=e(m),St=e(y),Ot=e(b),Tt=e(R),Ct=e(S),It=e(O),_t=e(o),kt=e(C),At=e(I),wt=e(k),Wt={condition:function(n,t){try{return t(n)}catch(n){return!1}},doesNotEndWith:vt,doesNotStartWith:e(A),endsWith:s,equals:a,greaterThan:f,greaterThanOrEquals:d,gt:f,gte:d,inside:v,isArray:p,isBetween:g,isBlank:E,isBoolean:m,isEmpty:b,isEven:function(n){return!!c(n)&&0==n%2},isFalsy:kt,isKeyOf:R,isNaN:S,isNegative:function(n){return h(n,0)},isNotArray:Et,isNotBetween:yt,isNotBlank:bt,isNotBoolean:Rt,isNotEmpty:Ot,isNotKeyOf:Tt,isNotNaN:Ct,isNotNull:lt,isNotNullish:pt,isNotNumber:It,isNotNumeric:Nt,isNotString:_t,isNotUndefined:dt,isNotValueOf:At,isNull:r,isNullish:i,isNumber:O,isNumeric:c,isOdd:function(n){return!!c(n)&&0!=n%2},isPositive:T,isString:o,isTruthy:C,isUndefined:u,isValueOf:I,lengthEquals:y,lengthNotEquals:St,lessThan:h,lessThanOrEquals:N,longerThan:_,longerThanOrEquals:function(n,t){return d(n.length,t)},lt:h,lte:N,matches:k,notEquals:ht,notInside:mt,notMatches:wt,numberEquals:l,numberNotEquals:gt,shorterThan:function(n,t){return h(n.length,t)},shorterThanOrEquals:function(n,t){return N(n.length,t)},startsWith:A},xt=L((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?ft(e,{parent:function(){return t?{value:t.value,meta:t.meta,parent:t.parent}:t}}):t:ft(e,{parent:P})})),Ft=function(){function n(){if(!G())return w((function(n){t[n]=K(n)})),ft(q,t)}var t={context:function(){return xt.useX()},extend:function(t){ft(Wt,t),n()}};return n(),new Proxy(ft(q,t),{get:function(n,t){return t in n?n[t]:Wt[t]?K(t):void 0}})}(),Lt=(at=0,function(){return"".concat(at++)});!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=L((function(n,t){return t?null:ft({},{exclusion:{tests:{},groups:{}},inclusion:{},isolate:z(st.DEFAULT),mode:[ct.ALL]},n)})),Gt=B();!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=Lt(),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,u(this.message)&&o(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),tn()},n.prototype.reset=function(){this.status=jt,tn()},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=e((function(n,t){return n.groupName===t})),Zt=B(1),$t=B(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=jn(),Kn(e,n,t))return t;var r=function(){return e(Xn())};return Bn(n)?(r(),t):(Hn(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=ft(it,{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=fn().cursor.current();var i=(r=r.reverse())[0],o=r[1],s=r[2];return u=[Q().suiteId()[0],e,u].concat(i),null===(r=t.get(u))?t(u,(function(){return n(e,s,o)})):r[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(e,s,o)}))):ut(r[1])}}(it)});n.VERSION="4.4.2",n.context=Ut,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=Vn(),i=on();return n={stateRef:sn(i,{suiteId:Lt(),suiteName:n}),bus:u},ft(Ut.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return i.reset(),cn({type:st.SUITE},(function(){r.apply(void 0,n)})),u.emit(zt.SUITE_CALLBACK_DONE_RUNNING),jn()})),{get:Ut.bind(n,Xn),remove:Ut.bind(n,(function(n){u.emit(zt.REMOVE_FIELD,n)})),reset:i.reset,resetField:Ut.bind(n,(function(n){u.emit(zt.RESET_FIELD,n)}))})},n.each=function(n,e){F(t(e),"each callback must be a function"),cn({type:st.EACH},(function(){n.forEach((function(n,t){e(n,t)}))}))},n.eager=function(){var n=ct.EAGER;Ut.useX().mode[0]=n},n.enforce=Ft,n.group=function(n,e){F(o(n),nt("name must be a string")),F(t(e),nt("callback must be a function")),cn({type:st.GROUP},(function(){Ut.run({groupName:n},e)}))},n.include=function(n){var t=Ut.useX(),e=t.inclusion;return t=t.exclusion,F(o(n)),e[n]=x(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)?x(r.tests[n],!0):o(t)?!!r.tests[t]:W(t,W(Xn))}}}},n.omitWhen=function(n,t){cn({type:st.OMIT_WHEN},(function(){Ut.run({omitted:!!Ut.useX().omitted||W(n,W(Xn))},(function(){return t()}))}))},n.only=Yn,n.optional=function(n){if(p(n)||o(n))[].concat(n).forEach((function(n){$(n,[!0,!1])}));else for(var t in n)$(t,[n[t],!1])},n.skip=zn,n.skipWhen=function(n,t){cn({type:st.SKIP_WHEN},(function(){Ut.run({skipped:!!Ut.useX().skipped||W(n,W(Xn))},(function(){return t()}))}))},n.test=te,n.warn=function(){var n=Ut.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.4.
|
|
2
|
+
"version": "4.4.2",
|
|
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": "^2.0.7",
|
|
24
|
+
"n4s": "^4.1.8"
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://vestjs.dev/",
|
|
27
27
|
"exports": {
|
package/testUtils/testObjects.ts
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
import VestTest from 'VestTest';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export function emptyTestObjects(): void {
|
|
5
|
-
const [, setTestObjects] = useTestObjects();
|
|
6
|
-
setTestObjects(({ prev }) => ({ prev, current: [] }));
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function setTestObjects(...args: VestTest[]): void {
|
|
10
|
-
const [, setTestObjects] = useTestObjects();
|
|
11
|
-
setTestObjects(({ prev }) => ({ prev, current: [...args] }));
|
|
12
|
-
}
|
|
2
|
+
import { useSetTests } from 'stateHooks';
|
|
13
3
|
|
|
14
4
|
export function addTestObject(addedTests: VestTest[] | VestTest): void {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
setTestObjects(({ prev, current }) => ({
|
|
18
|
-
prev,
|
|
19
|
-
current: current.concat(addedTests),
|
|
20
|
-
}));
|
|
5
|
+
useSetTests(tests => tests.concat(addedTests));
|
|
21
6
|
}
|
|
@@ -38,7 +38,7 @@ declare function isNumeric(value: string | number): boolean;
|
|
|
38
38
|
declare function isPositive(value: number | string): boolean;
|
|
39
39
|
declare function isStringValue(v: unknown): v is string;
|
|
40
40
|
declare function isTruthy(value: unknown): boolean;
|
|
41
|
-
declare function isUndefined(value?: unknown):
|
|
41
|
+
declare function isUndefined(value?: unknown): value is undefined;
|
|
42
42
|
declare function isValueOf(value: any, objectToCheck: any): boolean;
|
|
43
43
|
declare function lengthEquals(value: string | unknown[], arg1: string | number): boolean;
|
|
44
44
|
declare function lessThan(value: string | number, lt: string | number): boolean;
|
|
@@ -38,7 +38,7 @@ declare function isNumeric(value: string | number): boolean;
|
|
|
38
38
|
declare function isPositive(value: number | string): boolean;
|
|
39
39
|
declare function isStringValue(v: unknown): v is string;
|
|
40
40
|
declare function isTruthy(value: unknown): boolean;
|
|
41
|
-
declare function isUndefined(value?: unknown):
|
|
41
|
+
declare function isUndefined(value?: unknown): value is undefined;
|
|
42
42
|
declare function isValueOf(value: any, objectToCheck: any): boolean;
|
|
43
43
|
declare function lengthEquals(value: string | unknown[], arg1: string | number): boolean;
|
|
44
44
|
declare function lessThan(value: string | number, lt: string | number): boolean;
|
|
@@ -38,7 +38,7 @@ declare function isNumeric(value: string | number): boolean;
|
|
|
38
38
|
declare function isPositive(value: number | string): boolean;
|
|
39
39
|
declare function isStringValue(v: unknown): v is string;
|
|
40
40
|
declare function isTruthy(value: unknown): boolean;
|
|
41
|
-
declare function isUndefined(value?: unknown):
|
|
41
|
+
declare function isUndefined(value?: unknown): value is undefined;
|
|
42
42
|
declare function isValueOf(value: any, objectToCheck: any): boolean;
|
|
43
43
|
declare function lengthEquals(value: string | unknown[], arg1: string | number): boolean;
|
|
44
44
|
declare function lessThan(value: string | number, lt: string | number): boolean;
|
package/types/vest.d.ts
CHANGED
|
@@ -138,13 +138,9 @@ type Suite<T extends CB> = {
|
|
|
138
138
|
*/
|
|
139
139
|
declare function create<T extends CB>(suiteName: string, suiteCallback: T): Suite<T>;
|
|
140
140
|
declare function create<T extends CB>(suiteCallback: T): Suite<T>;
|
|
141
|
-
type
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
getCursor: () => number[];
|
|
145
|
-
next: () => number;
|
|
146
|
-
removeLevel: () => void;
|
|
147
|
-
reset: () => void;
|
|
141
|
+
type IsolateCursor = {
|
|
142
|
+
current: () => number;
|
|
143
|
+
next: () => void;
|
|
148
144
|
};
|
|
149
145
|
declare enum IsolateTypes {
|
|
150
146
|
DEFAULT = 0,
|
|
@@ -158,6 +154,12 @@ type IsolateKeys = {
|
|
|
158
154
|
current: Record<string, VestTest>;
|
|
159
155
|
prev: Record<string, VestTest>;
|
|
160
156
|
};
|
|
157
|
+
type Isolate = {
|
|
158
|
+
type: IsolateTypes;
|
|
159
|
+
keys: IsolateKeys;
|
|
160
|
+
path: number[];
|
|
161
|
+
cursor: IsolateCursor;
|
|
162
|
+
};
|
|
161
163
|
declare enum Modes {
|
|
162
164
|
ALL = 0,
|
|
163
165
|
EAGER = 1
|
|
@@ -186,9 +188,10 @@ type TestCallbacks = {
|
|
|
186
188
|
doneCallbacks: Array<(res: SuiteResult) => void>;
|
|
187
189
|
};
|
|
188
190
|
type TestObjects = {
|
|
189
|
-
prev:
|
|
190
|
-
current:
|
|
191
|
+
prev: VestTests;
|
|
192
|
+
current: VestTests;
|
|
191
193
|
};
|
|
194
|
+
type VestTests = NestedArray<VestTest>;
|
|
192
195
|
declare const _default: {
|
|
193
196
|
run: <R>(ctxRef: Partial<CTXType>, fn: (context: CTXType) => R) => R;
|
|
194
197
|
bind: <Fn extends (...args: any[]) => any>(ctxRef: Partial<CTXType>, fn: Fn) => Fn;
|
|
@@ -196,11 +199,7 @@ declare const _default: {
|
|
|
196
199
|
useX: (errorMessage?: string | undefined) => CTXType;
|
|
197
200
|
};
|
|
198
201
|
type CTXType = {
|
|
199
|
-
isolate:
|
|
200
|
-
type: IsolateTypes;
|
|
201
|
-
keys: IsolateKeys;
|
|
202
|
-
};
|
|
203
|
-
testCursor: Cursor;
|
|
202
|
+
isolate: Isolate;
|
|
204
203
|
stateRef?: StateRef;
|
|
205
204
|
exclusion: {
|
|
206
205
|
tests: Record<string, boolean>;
|
|
@@ -350,6 +349,6 @@ declare const test: typeof testBase & {
|
|
|
350
349
|
* Sets a running test to warn only mode.
|
|
351
350
|
*/
|
|
352
351
|
declare function warn(): void;
|
|
353
|
-
declare const VERSION = "4.4.
|
|
352
|
+
declare const VERSION = "4.4.2";
|
|
354
353
|
export { test, create, each, only, skip, warn, group, optional, skipWhen, omitWhen, enforce, VERSION, context, include, eager };
|
|
355
354
|
export type { SuiteResult, SuiteRunResult, SuiteSummary, VestTest, Suite };
|