vest 4.0.0-dev-31f012 → 4.0.0-next-cfb1a7
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/CHANGELOG.md +58 -52
- package/dist/cjs/enforce-compose.development.js +222 -0
- package/dist/cjs/enforce-compose.js +7 -0
- package/dist/cjs/enforce-compose.production.js +1 -0
- package/dist/cjs/vest.development.js +35 -15
- package/dist/cjs/vest.production.js +1 -1
- package/dist/es/enforce-compose.development.js +220 -0
- package/dist/es/enforce-compose.production.js +1 -0
- package/dist/es/vest.development.js +35 -15
- package/dist/es/vest.production.js +1 -1
- package/dist/umd/enforce-compose.development.js +228 -0
- package/dist/umd/enforce-compose.production.js +1 -0
- package/dist/umd/vest.development.js +35 -15
- package/dist/umd/vest.production.js +1 -1
- package/enforce-compose/package.json +7 -0
- package/package.json +31 -1
- package/types/enforce-compose.d.ts +12 -0
- package/types/vest.d.ts +15 -6
package/CHANGELOG.md
CHANGED
|
@@ -4,75 +4,81 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## 4.0.0 - 2021-10
|
|
7
|
+
## 4.0.0 - 2021-11-10
|
|
8
8
|
### Changed or removed
|
|
9
|
-
-
|
|
10
|
-
-
|
|
9
|
+
- 31f7185 major(context): used named export in context (ealush)
|
|
10
|
+
- f789154 breaking(vest, enforce): prepare next major (ealush)
|
|
11
|
+
- 72eecb5 breaking(vest, enforce): prepare next major (ealush)
|
|
11
12
|
|
|
12
13
|
### Added
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
14
|
+
- ad71cbc feat(vest): support custom optional logic (ealush)
|
|
15
|
+
- e7fd0da feat(vest): Add a parser export (ealush)
|
|
16
|
+
- dd3fe6a feat(vest): isValid with field name (ealush)
|
|
17
|
+
- d0cb5e1 feat(vest): handle execution order state refill with memoized tests (ealush)
|
|
18
|
+
- 6c40b13 feat(vest): Make the state rely on execution order. Make skipWhen set skipped context. (undefined)
|
|
19
|
+
- 89858cd added(n4s): partial rule modifier (undefined)
|
|
20
|
+
- e809f35 feat(n4s): context propagation within enforce (undefined)
|
|
20
21
|
|
|
21
22
|
### Fixed and improved
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
23
|
+
- cfb1a7a types(vest): allow unprovided suite name in tests (ealush)
|
|
24
|
+
- 80166b3 patch(vest): replace warns boolean flag with enum (ealush)
|
|
25
|
+
- 94cc21b patch(vest): Pass draft result to skipWhen conditional (ealush)
|
|
26
|
+
- c340eab patch(vest): add back optional suite name argument (ealush)
|
|
27
|
+
- a1f3bc6 patch(vest): make compose an external export (ealush)
|
|
28
|
+
- c78e0c9 patch(vest): move creation functions to event bus (ealush)
|
|
29
|
+
- 6c426e4 patch: Some cleanups (ealush)
|
|
30
|
+
- b76dd3d fix(vest): prevent pending tests from being marked as skipped (ealush)
|
|
31
|
+
- 52bb16d patch(vest): Add isolate module for containing re-orders (ealush)
|
|
32
|
+
- 013bd54 patch(vest): refresh tests after cancel (ealush)
|
|
33
|
+
- a48cb89 patch: add cursor util (ealush)
|
|
34
|
+
- 82a2386 patch(vest): move cursor into context (ealush)
|
|
35
|
+
- 0c529df patch(vest): automatically purge not-found test results (ealush)
|
|
36
|
+
- 14604e0 vx: correctly pass cli options to build script (ealush)
|
|
37
|
+
- d6c3638 patch(vest): Throw error when tests are called in the wrong order (ealush)
|
|
38
|
+
- 3cd07f6 vx: add types to exports (ealush)
|
|
39
|
+
- 083adf1 organize vest state hooks (ealush)
|
|
40
|
+
- ac62b45 patch(vest): infer omitted optional fields (ealush)
|
|
41
|
+
- bb44b7a vx: add dev bundle to exports (ealush)
|
|
42
|
+
- efae31d fix(vest): prevent changing test status once it was finalized (ealush)
|
|
43
|
+
- a2d8c89 patch(vest): add cache invalidation for canceled tests (ealush)
|
|
44
|
+
- 694b88e types(vest): add safeguard around shouldUseErrorAsMessage (ealush)
|
|
45
|
+
- bb23481 patch(vest): some cleanups (ealush)
|
|
46
|
+
- 33bbe52 patch(vest): remove duplicate code handling perv test registration (ealush)
|
|
47
|
+
- f379875 vx: use context directly from published package (ealush)
|
|
48
|
+
- d435f30 patch: run done callbacks via event (ealush)
|
|
49
|
+
- 4e575c2 patch(vest): removed state subscription (ealush)
|
|
44
50
|
- package.json
|
|
45
51
|
- packages/anyone/package.json
|
|
46
52
|
- packages/anyone/package.json
|
|
47
53
|
- packages/vast/types/vast.d.ts
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
54
|
+
- ffac5fc patch(vest): remove pending and lagging state (ealush)
|
|
55
|
+
- e803851 patch(vest): convert boolean flags to a single status key (ealush)
|
|
56
|
+
- af9f79b patch: simplify fieldname comparison (ealush)
|
|
57
|
+
- 5a8157f patch(vest): add useAllIncomplete hook (ealush)
|
|
58
|
+
- 7f565ce patch(vest): invalid accounts for warning tests as well (ealush)
|
|
59
|
+
- 3e7cbd3 patch(vest): isValid counts all required tests per field (ealush)
|
|
60
|
+
- 0309a9f chore: cleanups (ealush)
|
|
55
61
|
- .eslintrc.js
|
|
56
|
-
-
|
|
62
|
+
- 9d415e0 add(n4s): enforce.condition (ealush)
|
|
57
63
|
- package.json
|
|
58
64
|
- packages/anyone/package.json
|
|
59
|
-
-
|
|
60
|
-
-
|
|
65
|
+
- 98ea7f3 chore: cleanup residue (undefined)
|
|
66
|
+
- ba3d423 chore: remove duplicate types (undefined)
|
|
61
67
|
- packages/anyone/package.json
|
|
62
|
-
-
|
|
63
|
-
-
|
|
68
|
+
- 4941ab3 patch: add nodejs exports (undefined)
|
|
69
|
+
- 603db2c patch: remove unused exports (undefined)
|
|
64
70
|
- packages/anyone/package.json
|
|
65
|
-
-
|
|
71
|
+
- 1bb9fb9 chore: reduce complexity, remove all lint errors (undefined)
|
|
66
72
|
- packages/anyone/.npmignore
|
|
67
73
|
- .github/PULL_REQUEST_TEMPLATE.md
|
|
68
|
-
-
|
|
69
|
-
-
|
|
74
|
+
- 7ad4c81 chore: cleanup unused code (ealush)
|
|
75
|
+
- 2696ab3 lint: handling lint of all packages (ealush)
|
|
70
76
|
- .gitignore
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
77
|
+
- 021c752 patch(n4s): add ruleReturn default values (ealush)
|
|
78
|
+
- a14b02d fix(n4s): make enforce compound runners fall back to correct response (ealush)
|
|
79
|
+
- e70b369 fix(n4s): make enforce chaining work (ealush)
|
|
80
|
+
- b251877 chore: some lint fixes (ealush)
|
|
81
|
+
- c8508e8 add cli options support (ealush)
|
|
76
82
|
|
|
77
83
|
## 3.2.7 - 2021-07-17
|
|
78
84
|
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function mapFirst(array, callback) {
|
|
4
|
+
var broke = false;
|
|
5
|
+
var breakoutValue = null;
|
|
6
|
+
for (var i = 0; i < array.length; i++) {
|
|
7
|
+
callback(array[i], breakout, i);
|
|
8
|
+
if (broke) {
|
|
9
|
+
return breakoutValue;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function breakout(value) {
|
|
13
|
+
broke = true;
|
|
14
|
+
breakoutValue = value;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function isFunction(value) {
|
|
19
|
+
return typeof value === 'function';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function optionalFunctionValue(value) {
|
|
23
|
+
var args = [];
|
|
24
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
25
|
+
args[_i - 1] = arguments[_i];
|
|
26
|
+
}
|
|
27
|
+
return isFunction(value) ? value.apply(void 0, args) : value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function defaultTo(callback, defaultValue) {
|
|
31
|
+
var _a;
|
|
32
|
+
return (_a = optionalFunctionValue(callback)) !== null && _a !== void 0 ? _a : defaultValue;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Throws a timed out error.
|
|
37
|
+
*/
|
|
38
|
+
function throwError(devMessage, productionMessage) {
|
|
39
|
+
throw new Error(devMessage );
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var assign = Object.assign;
|
|
43
|
+
|
|
44
|
+
// eslint-disable-next-line max-lines-per-function
|
|
45
|
+
function createContext(init) {
|
|
46
|
+
var storage = { ancestry: [] };
|
|
47
|
+
return {
|
|
48
|
+
bind: bind,
|
|
49
|
+
run: run,
|
|
50
|
+
use: use,
|
|
51
|
+
useX: useX
|
|
52
|
+
};
|
|
53
|
+
function useX(errorMessage) {
|
|
54
|
+
var _a;
|
|
55
|
+
return ((_a = storage.ctx) !== null && _a !== void 0 ? _a : throwError(defaultTo(errorMessage, 'Context was used after it was closed')));
|
|
56
|
+
}
|
|
57
|
+
function run(ctxRef, fn) {
|
|
58
|
+
var _a;
|
|
59
|
+
var parentContext = use();
|
|
60
|
+
var out = assign({}, parentContext ? parentContext : {}, (_a = optionalFunctionValue(init, ctxRef, parentContext)) !== null && _a !== void 0 ? _a : ctxRef);
|
|
61
|
+
var ctx = set(Object.freeze(out));
|
|
62
|
+
storage.ancestry.unshift(ctx);
|
|
63
|
+
var res = fn(ctx);
|
|
64
|
+
clear();
|
|
65
|
+
return res;
|
|
66
|
+
}
|
|
67
|
+
function bind(ctxRef, fn) {
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
69
|
+
// @ts-ignore - this one's pretty hard to get right
|
|
70
|
+
var returnedFn = function () {
|
|
71
|
+
var runTimeArgs = [];
|
|
72
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
73
|
+
runTimeArgs[_i] = arguments[_i];
|
|
74
|
+
}
|
|
75
|
+
return run(ctxRef, function () {
|
|
76
|
+
return fn.apply(void 0, runTimeArgs);
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
return returnedFn;
|
|
80
|
+
}
|
|
81
|
+
function use() {
|
|
82
|
+
return storage.ctx;
|
|
83
|
+
}
|
|
84
|
+
function set(value) {
|
|
85
|
+
return (storage.ctx = value);
|
|
86
|
+
}
|
|
87
|
+
function clear() {
|
|
88
|
+
var _a;
|
|
89
|
+
storage.ancestry.shift();
|
|
90
|
+
set((_a = storage.ancestry[0]) !== null && _a !== void 0 ? _a : null);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
var ctx = createContext(function (ctxRef, parentContext) {
|
|
95
|
+
var base = {
|
|
96
|
+
value: ctxRef.value,
|
|
97
|
+
meta: ctxRef.meta || {}
|
|
98
|
+
};
|
|
99
|
+
if (!parentContext) {
|
|
100
|
+
return assign(base, {
|
|
101
|
+
parent: emptyParent
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else if (ctxRef.set) {
|
|
105
|
+
return assign(base, {
|
|
106
|
+
parent: function () { return stripContext(parentContext); }
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return parentContext;
|
|
110
|
+
});
|
|
111
|
+
function stripContext(ctx) {
|
|
112
|
+
if (!ctx) {
|
|
113
|
+
return ctx;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
value: ctx.value,
|
|
117
|
+
meta: ctx.meta,
|
|
118
|
+
parent: ctx.parent
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function emptyParent() {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* A safe hasOwnProperty access
|
|
127
|
+
*/
|
|
128
|
+
function hasOwnProperty(obj, key) {
|
|
129
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function isNumber(value) {
|
|
133
|
+
return Boolean(typeof value === 'number');
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function lengthEquals(value, arg1) {
|
|
137
|
+
return value.length === Number(arg1);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function isEmpty(value) {
|
|
141
|
+
if (!value) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
else if (isNumber(value)) {
|
|
145
|
+
return value === 0;
|
|
146
|
+
}
|
|
147
|
+
else if (hasOwnProperty(value, 'length')) {
|
|
148
|
+
return lengthEquals(value, 0);
|
|
149
|
+
}
|
|
150
|
+
else if (typeof value === 'object') {
|
|
151
|
+
return lengthEquals(Object.keys(value), 0);
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function ruleReturn(pass, message) {
|
|
157
|
+
var output = { pass: pass };
|
|
158
|
+
if (message) {
|
|
159
|
+
output.message = message;
|
|
160
|
+
}
|
|
161
|
+
return output;
|
|
162
|
+
}
|
|
163
|
+
function failing() {
|
|
164
|
+
return ruleReturn(false);
|
|
165
|
+
}
|
|
166
|
+
function passing() {
|
|
167
|
+
return ruleReturn(true);
|
|
168
|
+
}
|
|
169
|
+
function defaultToPassing(callback) {
|
|
170
|
+
return defaultTo(callback, passing());
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function runLazyRule(lazyRule, currentValue) {
|
|
174
|
+
try {
|
|
175
|
+
return lazyRule.run(currentValue);
|
|
176
|
+
}
|
|
177
|
+
catch (_a) {
|
|
178
|
+
return failing();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* eslint-disable max-lines-per-function */
|
|
183
|
+
// TODO: This gives me a headache. Instead of `any` we should use `TLazy`
|
|
184
|
+
// but it fails when using compose. The type is very complex.
|
|
185
|
+
function compose() {
|
|
186
|
+
var composites = [];
|
|
187
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
188
|
+
composites[_i] = arguments[_i];
|
|
189
|
+
}
|
|
190
|
+
return Object.assign(function (value) {
|
|
191
|
+
var res = run(value);
|
|
192
|
+
if (!res.pass) {
|
|
193
|
+
if (isEmpty(res.message)) {
|
|
194
|
+
throwError();
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// Explicitly throw a string so that vest.test can pick it up as the validation error message
|
|
198
|
+
throw res.message;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}, {
|
|
202
|
+
run: run,
|
|
203
|
+
test: function (value) { return run(value).pass; }
|
|
204
|
+
});
|
|
205
|
+
function run(value) {
|
|
206
|
+
return ctx.run({ value: value }, function () {
|
|
207
|
+
return defaultToPassing(mapFirst(composites, function (composite, breakout) {
|
|
208
|
+
/* HACK: Just a small white lie. ~~HELP WANTED~~.
|
|
209
|
+
The ideal is that instead of `TLazyRuleRunners` We would simply use `TLazy` to begin with.
|
|
210
|
+
The problem is that lazy rules can't really be passed to this function due to some generic hell
|
|
211
|
+
so we're limiting it to a small set of functions.
|
|
212
|
+
*/
|
|
213
|
+
var res = runLazyRule(composite, value);
|
|
214
|
+
if (!res.pass) {
|
|
215
|
+
breakout(res);
|
|
216
|
+
}
|
|
217
|
+
}));
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
module.exports = compose;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function n(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,o=0;o<n.length;o++)if(t(n[o],r,o),e)return u}function t(n){return"function"==typeof n}function r(n){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return t(n)?n.apply(void 0,r):n}function e(n,t){var e;return null!==(e=r(n))&&void 0!==e?e:t}function u(n,t){throw Error(e(t,n))}var o=Object.assign;var i=function(n){function t(t,e){var u,f,a=i();return t=o({},a||{},null!==(u=r(n,t,a))&&void 0!==u?u:t),u=c.ctx=Object.freeze(t),c.ancestry.unshift(u),e=e(u),c.ancestry.shift(),c.ctx=null!==(f=c.ancestry[0])&&void 0!==f?f:null,e}function i(){return c.ctx}var c={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:i,useX:function(n){var t;return null!==(t=c.ctx)&&void 0!==t?t:u(e(n,"Context was used after it was closed"))}}}((function(n,t){var r={value:n.value,meta:n.meta||{}};return t?n.set?o(r,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:o(r,{parent:c})}));function c(){return null}function f(n,t){return n.length===Number(t)}function a(n){if(n){if(function(n){return"number"==typeof n}(n))return 0===n;if(function(n,t){return Object.prototype.hasOwnProperty.call(n,t)}(n,"length"))return f(n,0);if("object"==typeof n)return f(Object.keys(n),0)}return!0}function s(n,t){return n={pass:n},t&&(n.message=t),n}function l(n){return e(n,s(!0))}function v(n,t){try{return n.run(t)}catch(n){return s(!1)}}module.exports=function(){function t(t){return i.run({value:t},(function(){return l(n(r,(function(n,r){(n=v(n,t)).pass||r(n)})))}))}for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return Object.assign((function(n){if(!(n=t(n)).pass){if(!a(n.message))throw n.message;u()}}),{run:t,test:function(n){return t(n).pass}})};
|
|
@@ -474,7 +474,7 @@ function createContext(init) {
|
|
|
474
474
|
function run(ctxRef, fn) {
|
|
475
475
|
var _a;
|
|
476
476
|
var parentContext = use();
|
|
477
|
-
var out = assign({}, parentContext ? parentContext : {}, (_a = init
|
|
477
|
+
var out = assign({}, parentContext ? parentContext : {}, (_a = optionalFunctionValue(init, ctxRef, parentContext)) !== null && _a !== void 0 ? _a : ctxRef);
|
|
478
478
|
var ctx = set(Object.freeze(out));
|
|
479
479
|
storage.ancestry.unshift(ctx);
|
|
480
480
|
var res = fn(ctx);
|
|
@@ -875,10 +875,11 @@ var IsolateTypes;
|
|
|
875
875
|
})(IsolateTypes || (IsolateTypes = {}));
|
|
876
876
|
|
|
877
877
|
function createStateRef(state, _a) {
|
|
878
|
-
var suiteId = _a.suiteId;
|
|
878
|
+
var suiteId = _a.suiteId, suiteName = _a.suiteName;
|
|
879
879
|
return {
|
|
880
880
|
optionalFields: state.registerStateKey(function () { return ({}); }),
|
|
881
881
|
suiteId: state.registerStateKey(suiteId),
|
|
882
|
+
suiteName: state.registerStateKey(suiteName),
|
|
882
883
|
testCallbacks: state.registerStateKey(function () { return ({
|
|
883
884
|
fieldCallbacks: {},
|
|
884
885
|
doneCallbacks: []
|
|
@@ -1039,7 +1040,10 @@ function useStateRef() {
|
|
|
1039
1040
|
}
|
|
1040
1041
|
// STATE KEYS
|
|
1041
1042
|
function useSuiteId() {
|
|
1042
|
-
return useStateRef().suiteId();
|
|
1043
|
+
return useStateRef().suiteId()[0];
|
|
1044
|
+
}
|
|
1045
|
+
function useSuiteName() {
|
|
1046
|
+
return useStateRef().suiteName()[0];
|
|
1043
1047
|
}
|
|
1044
1048
|
function useTestCallbacks() {
|
|
1045
1049
|
return useStateRef().testCallbacks();
|
|
@@ -1231,7 +1235,7 @@ function either(a, b) {
|
|
|
1231
1235
|
* Checks that a given test object matches the currently specified severity level
|
|
1232
1236
|
*/
|
|
1233
1237
|
function nonMatchingSeverityProfile(severity, testObject) {
|
|
1234
|
-
return either(severity === 'warnings', testObject.warns);
|
|
1238
|
+
return either(severity === 'warnings', testObject.warns());
|
|
1235
1239
|
}
|
|
1236
1240
|
|
|
1237
1241
|
function collectFailureMessages(severity, testObjects, options) {
|
|
@@ -1417,6 +1421,7 @@ function produceDraft() {
|
|
|
1417
1421
|
var testObjects = useTestsFlat();
|
|
1418
1422
|
var ctxRef = { stateRef: useStateRef() };
|
|
1419
1423
|
return cache$1([testObjects], ctx.bind(ctxRef, function () {
|
|
1424
|
+
var suiteName = useSuiteName();
|
|
1420
1425
|
return assign(genTestsSummary(), {
|
|
1421
1426
|
getErrors: ctx.bind(ctxRef, getErrors),
|
|
1422
1427
|
getErrorsByGroup: ctx.bind(ctxRef, getErrorsByGroup),
|
|
@@ -1428,7 +1433,8 @@ function produceDraft() {
|
|
|
1428
1433
|
hasWarningsByGroup: ctx.bind(ctxRef, hasWarningsByGroup),
|
|
1429
1434
|
isValid: ctx.bind(ctxRef, function (fieldName) {
|
|
1430
1435
|
return isValid(produceDraft(), fieldName);
|
|
1431
|
-
})
|
|
1436
|
+
}),
|
|
1437
|
+
suiteName: suiteName
|
|
1432
1438
|
});
|
|
1433
1439
|
}));
|
|
1434
1440
|
}
|
|
@@ -1626,7 +1632,12 @@ var Events;
|
|
|
1626
1632
|
})(Events || (Events = {}));
|
|
1627
1633
|
|
|
1628
1634
|
// eslint-disable-next-line max-lines-per-function
|
|
1629
|
-
function create(
|
|
1635
|
+
function create() {
|
|
1636
|
+
var args = [];
|
|
1637
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1638
|
+
args[_i] = arguments[_i];
|
|
1639
|
+
}
|
|
1640
|
+
var _a = args.reverse(), suiteCallback = _a[0], suiteName = _a[1];
|
|
1630
1641
|
if (!isFunction(suiteCallback)) {
|
|
1631
1642
|
throwError('vest.create: Expected callback to be a function.');
|
|
1632
1643
|
}
|
|
@@ -1635,7 +1646,7 @@ function create(suiteCallback) {
|
|
|
1635
1646
|
// State initialization
|
|
1636
1647
|
var state = createState();
|
|
1637
1648
|
// State reference - this holds the actual state values
|
|
1638
|
-
var stateRef = createStateRef(state, { suiteId: genId() });
|
|
1649
|
+
var stateRef = createStateRef(state, { suiteId: genId(), suiteName: suiteName });
|
|
1639
1650
|
// Create base context reference. All hooks will derive their data from this
|
|
1640
1651
|
var ctxRef = { stateRef: stateRef, bus: bus };
|
|
1641
1652
|
var suite = assign(
|
|
@@ -1779,7 +1790,9 @@ function hasIncludedTests(keyTests) {
|
|
|
1779
1790
|
|
|
1780
1791
|
function skipWhen(conditional, callback) {
|
|
1781
1792
|
isolate({ type: IsolateTypes.SKIP_WHEN }, function () {
|
|
1782
|
-
ctx.run({
|
|
1793
|
+
ctx.run({
|
|
1794
|
+
skipped: optionalFunctionValue(conditional, optionalFunctionValue(produceDraft))
|
|
1795
|
+
}, function () { return callback(); });
|
|
1783
1796
|
});
|
|
1784
1797
|
}
|
|
1785
1798
|
|
|
@@ -1839,11 +1852,16 @@ function shouldUseErrorAsMessage(message, error) {
|
|
|
1839
1852
|
return isUndefined(message) && isStringValue(error);
|
|
1840
1853
|
}
|
|
1841
1854
|
|
|
1855
|
+
var TestSeverity;
|
|
1856
|
+
(function (TestSeverity) {
|
|
1857
|
+
TestSeverity["Error"] = "error";
|
|
1858
|
+
TestSeverity["Warning"] = "warning";
|
|
1859
|
+
})(TestSeverity || (TestSeverity = {}));
|
|
1842
1860
|
var VestTest = /** @class */ (function () {
|
|
1843
1861
|
function VestTest(fieldName, testFn, _a) {
|
|
1844
1862
|
var _b = _a === void 0 ? {} : _a, message = _b.message, groupName = _b.groupName;
|
|
1845
1863
|
this.id = genId();
|
|
1846
|
-
this.
|
|
1864
|
+
this.severity = TestSeverity.Error;
|
|
1847
1865
|
this.status = STATUS_UNTESTED;
|
|
1848
1866
|
this.fieldName = fieldName;
|
|
1849
1867
|
this.testFn = testFn;
|
|
@@ -1876,11 +1894,14 @@ var VestTest = /** @class */ (function () {
|
|
|
1876
1894
|
}
|
|
1877
1895
|
this.status = status;
|
|
1878
1896
|
};
|
|
1897
|
+
VestTest.prototype.warns = function () {
|
|
1898
|
+
return this.severity === TestSeverity.Warning;
|
|
1899
|
+
};
|
|
1879
1900
|
VestTest.prototype.setPending = function () {
|
|
1880
1901
|
this.setStatus(STATUS_PENDING);
|
|
1881
1902
|
};
|
|
1882
1903
|
VestTest.prototype.fail = function () {
|
|
1883
|
-
this.setStatus(this.warns ? STATUS_WARNING : STATUS_FAILED);
|
|
1904
|
+
this.setStatus(this.warns() ? STATUS_WARNING : STATUS_FAILED);
|
|
1884
1905
|
};
|
|
1885
1906
|
VestTest.prototype.done = function () {
|
|
1886
1907
|
if (this.isFinalStatus()) {
|
|
@@ -1889,7 +1910,7 @@ var VestTest = /** @class */ (function () {
|
|
|
1889
1910
|
this.setStatus(STATUS_PASSING);
|
|
1890
1911
|
};
|
|
1891
1912
|
VestTest.prototype.warn = function () {
|
|
1892
|
-
this.
|
|
1913
|
+
this.severity = TestSeverity.Warning;
|
|
1893
1914
|
};
|
|
1894
1915
|
VestTest.prototype.isFinalStatus = function () {
|
|
1895
1916
|
return this.hasFailures() || this.isCanceled() || this.isPassing();
|
|
@@ -2175,11 +2196,10 @@ function bindTestMemo(test) {
|
|
|
2175
2196
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
2176
2197
|
args[_i - 1] = arguments[_i];
|
|
2177
2198
|
}
|
|
2178
|
-
var suiteId = useSuiteId()[0];
|
|
2179
2199
|
var cursorAt = useCursorAt();
|
|
2180
2200
|
var _a = args.reverse(), deps = _a[0], testFn = _a[1], msg = _a[2];
|
|
2181
2201
|
// Implicit dependency for more specificity
|
|
2182
|
-
var dependencies = [
|
|
2202
|
+
var dependencies = [useSuiteId(), fieldName, cursorAt].concat(deps);
|
|
2183
2203
|
var cached = cache.get(dependencies);
|
|
2184
2204
|
if (isNull(cached)) {
|
|
2185
2205
|
// cache miss
|
|
@@ -2204,7 +2224,7 @@ function testBase(fieldName) {
|
|
|
2204
2224
|
var context = ctx.useX();
|
|
2205
2225
|
var testObject = new VestTest(fieldName, testFn, {
|
|
2206
2226
|
message: message,
|
|
2207
|
-
groupName: context
|
|
2227
|
+
groupName: context.groupName
|
|
2208
2228
|
});
|
|
2209
2229
|
return registerPrevRunTest(testObject);
|
|
2210
2230
|
}
|
|
@@ -2213,7 +2233,7 @@ var test = assign(testBase, {
|
|
|
2213
2233
|
memo: bindTestMemo(testBase)
|
|
2214
2234
|
});
|
|
2215
2235
|
|
|
2216
|
-
var VERSION = "4.0.0-
|
|
2236
|
+
var VERSION = "4.0.0-next-cfb1a7";
|
|
2217
2237
|
|
|
2218
2238
|
exports.VERSION = VERSION;
|
|
2219
2239
|
exports.create = create;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(){return s(!1)}function c(){return s(!0)}function f(n){return o(n,a())}function l(n){return o(n,c())}function p(n,t){try{return n.run(t)}catch(n){return a()}}function v(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=p(t,n)).pass||r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return f(u(t,(function(t,r){(t=p(t,n)).pass&&r(t)})))}function h(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){p(t,n).pass&&r(a())})))}function g(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function m(n,t){return n.length===Number(t)}var y=g(m);function N(n,t){return n.length>Number(t)}function E(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=p(t,n)).pass&&e.push(t)})),s(m(e,1))}function b(n){return null===n}var C=g(b);function T(n){return void 0===n}var O=g(T);function S(n,t){return T(n)||b(n)?c():p(t,n)}function w(n){return String(n)===n}function x(n,t){return w(n)&&w(t)&&n.endsWith(t)}var P=g(x);function F(n,t){return n===t}var I=g(F);function k(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var A=g(k);function D(n,t){return k(n)&&k(t)&&Number(n)>Number(t)}function L(n,t){return k(n)&&k(t)&&Number(n)>=Number(t)}function W(n){return!!Array.isArray(n)}var U=g(W);function R(n,t){return!!(W(t)||w(t)&&w(n))&&-1!==t.indexOf(n)}var _=g(R);function X(n,t){return k(n)&&k(t)&&Number(n)<=Number(t)}function M(n,t,r){return L(n,t)&&X(n,r)}var G=g(M);function j(n){return w(n)&&!n.trim()}var q=g(j);function B(n){return!!n===n}var K=g(B);function H(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function V(n){return"number"==typeof n}var J=g(V);function z(n){if(n){if(V(n))return 0===n;if(H(n,"length"))return m(n,0);if("object"==typeof n)return m(Object.keys(n),0)}return!0}var Y=g(z),Q=function(n){return!!k(n)&&0==n%2};function Z(n){return Number.isNaN(n)}var $=g(Z);function nn(n){return!!k(n)&&0>Number(n)}var tn=g(nn),rn=function(n){return!!k(n)&&0!=n%2},en=g(w);function un(n){return!!n}var on=g(un);function sn(n,t){return k(n)&&k(t)&&Number(n)<Number(t)}function an(n,t){return n.length>=Number(t)}function cn(n,t){return t instanceof RegExp?t.test(n):!!w(t)&&new RegExp(t).test(n)}var fn=g(cn);function ln(n,t){return k(n)&&k(t)&&Number(n)===Number(t)}var pn=g(ln);function vn(n,t){try{return t(n)}catch(n){return!1}}function dn(n,t){return n.length<Number(t)}function hn(n,t){return n.length<=Number(t)}function gn(n,t){return w(n)&&w(t)&&n.startsWith(t)}var mn=g(gn);function yn(n,t){throw Error(o(t,n))}function Nn(n){function t(t,i){var o,s,a=e();return t=r({},a||{},null!==(o=null==n?void 0:n(t,a))&&void 0!==o?o:t),o=u.ctx=Object.freeze(t),u.ancestry.unshift(o),i=i(o),u.ancestry.shift(),u.ctx=null!==(s=u.ancestry[0])&&void 0!==s?s:null,i}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:yn(o(n,"Context was used after it was closed"))}}}var En=Nn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:bn})}));function bn(){return null}function Cn(n,t){return l(u(n,(function(n,r,e){(e=En.run({value:n,set:!0,meta:{index:e}},(function(){return p(t,n)}))).pass||r(e)})))}function Tn(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=En.run({value:e,set:!0,meta:{key:r}},(function(){return p(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return c()}function On(n,t){var r=Tn(n,t);if(!r.pass)return r;for(var e in n)if(!H(t,e))return a();return c()}var Sn=r({condition:vn,doesNotEndWith:P,doesNotStartWith:mn,endsWith:x,equals:F,greaterThan:D,greaterThanOrEquals:L,gt:D,gte:L,inside:R,isArray:W,isBetween:M,isBlank:j,isBoolean:B,isEmpty:z,isEven:Q,isFalsy:on,isNaN:Z,isNegative:nn,isNotArray:U,isNotBetween:G,isNotBlank:q,isNotBoolean:K,isNotEmpty:Y,isNotNaN:$,isNotNull:C,isNotNumber:J,isNotNumeric:A,isNotString:en,isNotUndefined:O,isNull:b,isNumber:V,isNumeric:k,isOdd:rn,isPositive:tn,isString:w,isTruthy:un,isUndefined:T,lengthEquals:m,lengthNotEquals:y,lessThan:sn,lessThanOrEquals:X,longerThan:N,longerThanOrEquals:an,lt:sn,lte:X,matches:cn,notEquals:I,notInside:_,notMatches:fn,numberEquals:ln,numberNotEquals:pn,shorterThan:dn,shorterThanOrEquals:hn,startsWith:gn},{allOf:v,anyOf:d,noneOf:h,oneOf:E,optional:S},{shape:On,loose:Tn,isArrayOf:Cn});function wn(n){return Sn[n]}function xn(n){for(var t in Sn){var r=wn(t);e(r)&&n(t,r)}}function Pn(){try{return e(Proxy)}catch(n){return!1}}function Fn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return In(n),B(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function In(n){B(n)||n&&B(n.pass)||yn("Incorrect return value for rule: "+JSON.stringify(n))}function kn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=Fn.apply(void 0,t([En.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!z(o.message))throw o.message;yn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Pn())return xn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=wn(t))return r(u,n,t)}});return u}function An(n){var r,e=[];return function n(o){return function(){for(var a=[],c=0;c<arguments.length;c++)a[c]=arguments[c];var f=wn(o);e.push((function(n){return Fn.apply(void 0,t([f.apply(void 0,t([n],a)),o,n],a))}));var p={run:function(n){return l(u(e,(function(t,e){var u,o=En.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})))},test:function(n){return p.run(n).pass},message:function(n){return n&&(r=n),p}};return Pn()?p=new Proxy(p,{get:function(t,r){return wn(r)?n(r):t[r]}}):(xn((function(t){p[t]=n(t)})),p)}}(n)}function Dn(n){var t,r={};for(t in n)r[t]=Un.optional(n[t]);return r}var Ln,Wn,Un=(Ln=n({context:function(){return En.useX()},extend:function(n){r(Sn,n)}},{partial:Dn}),Pn()?new Proxy(r(kn,Ln),{get:function(n,t){return t in n?n[t]:wn(t)?An(t):void 0}}):(xn((function(n){Ln[n]=An(n)})),Ln)),Rn=function(n){return function(){return""+n++}}(0);function _n(n,t){return t=t.suiteId,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function Xn(n){return[].concat(n)}function Mn(n){return(n=Xn(n))[n.length-1]}function Gn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Mn(t)},getCursor:function(){return Xn(t)},next:function(){return t[t.length-1]++,Mn(t)},removeLevel:function(){t.pop()},reset:n}}!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.GROUP=4]="GROUP"}(Wn||(Wn={}));var jn=Nn((function(n,t){return t?null:r({},{isolate:{type:Wn.DEFAULT},testCursor:Gn(),exclusion:{tests:{},groups:{}}},n)}));function qn(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];W(u)?r.push(qn(u,t)):(u=t(u),C(u)&&r.push(u))}return r}function Bn(n,t,r){return Hn(n,t)[Mn(t)]=r,n}function Kn(n){return Xn(n).reduce((function(n,t){return W(t)?n.concat(Kn(t)):Xn(n).concat(t)}),[])}function Hn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function Vn(n){void 0===n&&(n=1);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),N(t,n)&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function Jn(){return jn.useX().stateRef}function zn(){return Jn().suiteId()}function Yn(){return Jn().testCallbacks()}function Qn(){return Jn().optionalFields()}function Zn(){return Jn().testObjects()}function $n(){(0,Zn()[1])((function(n){return{prev:n.prev,current:Xn(n.current)}}))}function nt(n){(0,Zn()[1])((function(t){return{prev:t.prev,current:Xn(n(t.current))}}))}function tt(){return Kn(qn(Zn()[0].current,(function(n){return n.isPending()?n:null})))}var rt=Vn();function et(){var n=Zn()[0].current;return rt([n],(function(){return Kn(n)}))}function ut(){return jn.useX().testCursor.getCursor()}function it(){return jn.useX().testCursor.cursorAt()}function ot(){return jn.useX().testCursor.next()}function st(n,t){if(n=void 0===(n=n.type)?Wn.DEFAULT:n,e(t)){var r=ut();return jn.run({isolate:{type:n}},(function(){jn.useX().testCursor.addLevel(),nt((function(n){return Bn(n,r,[])}));var n=t();return jn.useX().testCursor.removeLevel(),ot(),n}))}}function at(n,t){return!!t&&!ct(n,t)}function ct(n,t){return!(!t||n.fieldName!==t)}function ft(n){var t=tt();return!z(t)&&(n?t.some((function(t){return ct(t,n)})):Y(t))}function lt(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function pt(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns)}function vt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||at(n,e)||pt(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function dt(n,t){return t?n[t]:n}function ht(n){return mt("errors",n)}function gt(n){return mt("warnings",n)}function mt(n,t){return dt(n=vt(n,et(),{fieldName:t}),t)}function yt(n,t){return dt(n=Et("errors",n,t),t)}function Nt(n,t){return dt(n=Et("warnings",n,t),t)}function Et(n,t,r){return t||yn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),vt(n,et(),{group:t,fieldName:r})}function bt(n,t,r){return!(!n.hasFailures()||at(n,r)||pt(t,n))}function Ct(n){return Ot("errors",n)}function Tt(n){return Ot("warnings",n)}function Ot(n,t){return et().some((function(r){return bt(r,n,t)}))}function St(n,t){return xt("errors",n,t)}function wt(n,t){return xt("warnings",n,t)}function xt(n,t,r){return et().some((function(e){return t===e.groupName&&bt(e,n,r)}))}function Pt(n,t){return!!function(n){var t=et().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(z(et())||function(n,t){return!!t&&z(n.tests[t])}(n,t)||function(n){var t=Qn()[0];return Y(tt().filter((function(r){return!at(r,n)&&!0!==t[r.fieldName]})))}(t))&&function(n){var t=et(),r=Qn()[0];return t.every((function(t){return!!at(t,n)||(!0===r[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var Ft=Vn(20);function It(){var n=et(),t={stateRef:Jn()};return Ft([n],jn.bind(t,(function(){return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return et().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=lt(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=lt(n.groups[e],t))})),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}(n)}(),{getErrors:jn.bind(t,ht),getErrorsByGroup:jn.bind(t,yt),getWarnings:jn.bind(t,gt),getWarningsByGroup:jn.bind(t,Nt),hasErrors:jn.bind(t,Ct),hasErrorsByGroup:jn.bind(t,St),hasWarnings:jn.bind(t,Tt),hasWarningsByGroup:jn.bind(t,wt),isValid:jn.bind(t,(function(n){return Pt(It(),n)}))})})))}var kt=Vn(20);function At(){var n=et(),t={stateRef:Jn()};return kt([n],jn.bind(t,(function(){return r({},It(),{done:jn.bind(t,Ut)})})))}function Dt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Lt(n){return!(ft()&&(!n||ft(n)))}var Wt,Ut=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=At(),Dt(r,n,t))return t;var e=function(){return r(It())};return Lt(n)?(e(),t):(Rt(e,n),t)};function Rt(n,t){var r=jn.bind({},n);(0,Yn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function _t(n){return n.forEach((function(n){return n()}))}function Xt(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(Wt.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=Yn()[0].fieldCallbacks;n&&!ft(n)&&W(t[n])&&_t(t[n])}(n.fieldName),function(){var n=Yn()[0].doneCallbacks;ft()||_t(n)}())})),n.on(Wt.SUITE_COMPLETED,(function(){!function(){var n=Qn()[0];if(!z(n)){var t={};nt((function(r){return qn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Wt.REMOVE_FIELD,(function(n){et().forEach((function(t){ct(t,n)&&(t.cancel(),function(n){nt((function(t){return qn(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n}function Mt(){var n=jn.useX();return n.bus||yn(),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.REMOVE_FIELD="remove_field",n.SUITE_COMPLETED="suite_completed"}(Wt||(Wt={}));function Gt(n){return Bt(0,"tests",n)}function jt(n){return Bt(1,"tests",n)}function qt(n){var t=n.fieldName;n=n.groupName;var r=jn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){if(function(n){var t=jn.useX().exclusion.groups;if(H(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!Kt(e)||!1===e[t])}return!u&&Kt(e)}function Bt(n,t,r){var e=jn.useX("hook called outside of a running suite.");r&&Xn(r).forEach((function(r){w(r)&&(e.exclusion[t][r]=0===n)}))}function Kt(n){for(var t in n)if(!0===n[t])return!0;return!1}Gt.group=function(n){return Bt(0,"groups",n)},jt.group=function(n){return Bt(1,"groups",n)};function Ht(n){yn("Wrong arguments passed to group. Group "+n+".")}function Vt(n,t){return T(n)&&w(t)}var Jt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Rn(),this.warns=!1,this.status=zt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){Vt(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==rr||(this.status=n)},n.prototype.setPending=function(){this.setStatus(nr)},n.prototype.fail=function(){this.setStatus(this.warns?Zt:Qt)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus($t)},n.prototype.warn=function(){this.warns=!0},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.isPending()||this.setStatus(Yt)},n.prototype.cancel=function(){this.setStatus(tr),$n()},n.prototype.omit=function(){this.setStatus(rr)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===nr},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===rr},n.prototype.isUntested=function(){return this.status===zt},n.prototype.isFailing=function(){return this.status===Qt},n.prototype.isCanceled=function(){return this.status===tr},n.prototype.isSkipped=function(){return this.status===Yt},n.prototype.isPassing=function(){return this.status===$t},n.prototype.isWarning=function(){return this.status===Zt},n}(),zt="UNTESTED",Yt="SKIPPED",Qt="FAILED",Zt="WARNING",$t="PASSING",nr="PENDING",tr="CANCELED",rr="OMITTED";function er(n){return n&&e(n.then)}function ur(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function ir(n){var t=n.asyncTest,r=n.message;if(er(t)){var e=Mt().emit,u=Jn(),i=jn.bind({stateRef:u},(function(){$n(),e(Wt.TEST_COMPLETED,n)}));u=jn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=w(t)?t:r,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function or(n){var t=Mt(),r=function(n){return jn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){Vt(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{er(r)?(n.asyncTest=r,n.setPending(),ir(n)):t.emit(Wt.TEST_COMPLETED,n)}catch(t){yn("Your test function "+n.fieldName+' returned a value. Only "false" or Promise returns are supported.')}}function sr(n){var t=Zn(),r=t[1],e=t[0].prev;if(z(e))return ar(n),n;if(function(n,t){return Y(n)&&!ur(n,t)}(t=function(n){var t=ut();return function(n,t){return Hn(n,t)[Mn(t)]}(n,t)}(e),n)){!function(n,t){jn.useX().isolate.type===Wn.EACH||function(n,t){setTimeout((function(){yn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=Hn(e,ut());var u=it();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return ar(n=o(t,n)),n}function ar(n){var t=ut();nt((function(r){return Bn(r,t,n)}))}function cr(n){var t=sr(n);return qt(n)?(n.skip(),ot(),t):(function(n,t){t!==n&&ur(n,t)&&n.isPending()&&n.cancel()}(t,n),ar(n),ot(),function(n){n.isUntested()?or(n):er(n.asyncTest)&&(n.setPending(),ir(n))}(n),n)}function fr(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=jn.useX();return cr(t=new Jt(n,t,{message:r,groupName:null==e?void 0:e.groupName}))}var lr=r(fr,{each:function(n){return function(r){return W(r)||yn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return st({type:Wn.EACH},(function(){return r.map((function(r){return r=Xn(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(fr),memo:function(n){var t=Vn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=zn()[0];var i=it(),o=(e=e.reverse())[1],s=e[2];return e=[u,r,i].concat(e[0]),b(u=t.get(e))?t(e,(function(){return n(r,s,o)})):u[1].isCanceled()?(t.invalidate(e),t(e,(function(){return n(r,s,o)}))):cr(u[1])}}(fr)});exports.VERSION="4.0.0-dev-31f012",exports.create=function(n){e(n)||yn("vest.create: Expected callback to be a function.");var t=Xt(),u=function(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}(),o={stateRef:_n(u,{suiteId:Rn()}),bus:t};return r(jn.bind(o,(function(){for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return u.reset(),st({type:Wn.SUITE},(function(){n.apply(void 0,r)})),t.emit(Wt.SUITE_COMPLETED),At()})),{get:jn.bind(o,It),reset:u.reset,remove:jn.bind(o,(function(n){t.emit(Wt.REMOVE_FIELD,n)}))})},exports.enforce=Un,exports.group=function(n,t){w(n)||Ht("name must be a string"),e(t)||Ht("callback must be a function"),st({type:Wn.GROUP},(function(){jn.run({groupName:n},t)}))},exports.only=Gt,exports.optional=function(n){(0,Qn()[1])((function(t){if(W(n)||w(n))Xn(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))},exports.skip=jt,exports.skipWhen=function(n,t){st({type:Wn.SKIP_WHEN},(function(){jn.run({skipped:i(n)},(function(){return t()}))}))},exports.test=lr,exports.warn=function(){var n=jn.useX("warn hook called outside of a running suite.");n.currentTest||yn("warn called outside of a test."),n.currentTest.warn()};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=function(){return(n=Object.assign||function(n){for(var t,r=1,e=arguments.length;r<e;r++)for(var u in t=arguments[r])Object.prototype.hasOwnProperty.call(t,u)&&(n[u]=t[u]);return n}).apply(this,arguments)};function t(n,t,r){if(r||2===arguments.length)for(var e,u=0,i=t.length;u<i;u++)!e&&u in t||(e||(e=Array.prototype.slice.call(t,0,u)),e[u]=t[u]);return n.concat(e||t)}var r=Object.assign;function e(n){return"function"==typeof n}function u(n,t){function r(n){e=!0,u=n}for(var e=!1,u=null,i=0;i<n.length;i++)if(t(n[i],r,i),e)return u}function i(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return e(n)?n.apply(void 0,t):n}function o(n,t){var r;return null!==(r=i(n))&&void 0!==r?r:t}function s(n,t){return n={pass:n},t&&(n.message=t),n}function a(){return s(!1)}function c(){return s(!0)}function f(n){return o(n,a())}function l(n){return o(n,c())}function v(n,t){try{return n.run(t)}catch(n){return a()}}function p(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){(t=v(t,n)).pass||r(t)})))}function d(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return f(u(t,(function(t,r){(t=v(t,n)).pass&&r(t)})))}function g(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return l(u(t,(function(t,r){v(t,n).pass&&r(a())})))}function h(n){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!n.apply(void 0,t)}}function m(n,t){return n.length===Number(t)}var y=h(m);function N(n,t){return n.length>Number(t)}function E(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];var e=[];return t.some((function(t){if(N(e,1))return!1;(t=v(t,n)).pass&&e.push(t)})),s(m(e,1))}function b(n){return null===n}var C=h(b);function T(n){return void 0===n}var O=h(T);function S(n,t){return T(n)||b(n)?c():v(t,n)}function x(n){return String(n)===n}function w(n,t){return x(n)&&x(t)&&n.endsWith(t)}var P=h(w);function F(n,t){return n===t}var I=h(F);function k(n){var t=Number(n);return!(isNaN(parseFloat(String(n)))||isNaN(Number(n))||!isFinite(t))}var W=h(k);function A(n,t){return k(n)&&k(t)&&Number(n)>Number(t)}function D(n,t){return k(n)&&k(t)&&Number(n)>=Number(t)}function L(n){return!!Array.isArray(n)}var U=h(L);function R(n,t){return!!(L(t)||x(t)&&x(n))&&-1!==t.indexOf(n)}var _=h(R);function X(n,t){return k(n)&&k(t)&&Number(n)<=Number(t)}function M(n,t,r){return D(n,t)&&X(n,r)}var G=h(M);function j(n){return x(n)&&!n.trim()}var q=h(j);function B(n){return!!n===n}var K=h(B);function H(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function V(n){return"number"==typeof n}var J=h(V);function z(n){if(n){if(V(n))return 0===n;if(H(n,"length"))return m(n,0);if("object"==typeof n)return m(Object.keys(n),0)}return!0}var Y=h(z),Q=function(n){return!!k(n)&&0==n%2};function Z(n){return Number.isNaN(n)}var $=h(Z);function nn(n){return!!k(n)&&0>Number(n)}var tn=h(nn),rn=function(n){return!!k(n)&&0!=n%2},en=h(x);function un(n){return!!n}var on=h(un);function sn(n,t){return k(n)&&k(t)&&Number(n)<Number(t)}function an(n,t){return n.length>=Number(t)}function cn(n,t){return t instanceof RegExp?t.test(n):!!x(t)&&new RegExp(t).test(n)}var fn=h(cn);function ln(n,t){return k(n)&&k(t)&&Number(n)===Number(t)}var vn=h(ln);function pn(n,t){try{return t(n)}catch(n){return!1}}function dn(n,t){return n.length<Number(t)}function gn(n,t){return n.length<=Number(t)}function hn(n,t){return x(n)&&x(t)&&n.startsWith(t)}var mn=h(hn);function yn(n,t){throw Error(o(t,n))}function Nn(n){function t(t,o){var s,a,c=e();return t=r({},c||{},null!==(s=i(n,t,c))&&void 0!==s?s:t),s=u.ctx=Object.freeze(t),u.ancestry.unshift(s),o=o(s),u.ancestry.shift(),u.ctx=null!==(a=u.ancestry[0])&&void 0!==a?a:null,o}function e(){return u.ctx}var u={ancestry:[]};return{bind:function(n,r){return function(){for(var e=[],u=0;u<arguments.length;u++)e[u]=arguments[u];return t(n,(function(){return r.apply(void 0,e)}))}},run:t,use:e,useX:function(n){var t;return null!==(t=u.ctx)&&void 0!==t?t:yn(o(n,"Context was used after it was closed"))}}}var En=Nn((function(n,t){var e={value:n.value,meta:n.meta||{}};return t?n.set?r(e,{parent:function(){return function(n){return n?{value:n.value,meta:n.meta,parent:n.parent}:n}(t)}}):t:r(e,{parent:bn})}));function bn(){return null}function Cn(n,t){return l(u(n,(function(n,r,e){(e=En.run({value:n,set:!0,meta:{index:e}},(function(){return v(t,n)}))).pass||r(e)})))}function Tn(n,t){var r,e=function(r){var e=n[r],u=t[r];if(!(r=En.run({value:e,set:!0,meta:{key:r}},(function(){return v(u,e)}))).pass)return{value:r}};for(r in t){var u=e(r);if("object"==typeof u)return u.value}return c()}function On(n,t){var r=Tn(n,t);if(!r.pass)return r;for(var e in n)if(!H(t,e))return a();return c()}var Sn=r({condition:pn,doesNotEndWith:P,doesNotStartWith:mn,endsWith:w,equals:F,greaterThan:A,greaterThanOrEquals:D,gt:A,gte:D,inside:R,isArray:L,isBetween:M,isBlank:j,isBoolean:B,isEmpty:z,isEven:Q,isFalsy:on,isNaN:Z,isNegative:nn,isNotArray:U,isNotBetween:G,isNotBlank:q,isNotBoolean:K,isNotEmpty:Y,isNotNaN:$,isNotNull:C,isNotNumber:J,isNotNumeric:W,isNotString:en,isNotUndefined:O,isNull:b,isNumber:V,isNumeric:k,isOdd:rn,isPositive:tn,isString:x,isTruthy:un,isUndefined:T,lengthEquals:m,lengthNotEquals:y,lessThan:sn,lessThanOrEquals:X,longerThan:N,longerThanOrEquals:an,lt:sn,lte:X,matches:cn,notEquals:I,notInside:_,notMatches:fn,numberEquals:ln,numberNotEquals:vn,shorterThan:dn,shorterThanOrEquals:gn,startsWith:hn},{allOf:p,anyOf:d,noneOf:g,oneOf:E,optional:S},{shape:On,loose:Tn,isArrayOf:Cn});function xn(n){return Sn[n]}function wn(n){for(var t in Sn){var r=xn(t);e(r)&&n(t,r)}}function Pn(){try{return e(Proxy)}catch(n){return!1}}function Fn(n,r,e){for(var u=[],o=3;o<arguments.length;o++)u[o-3]=arguments[o];return In(n),B(n)?s(n):s(n.pass,i.apply(void 0,t([n.message,r,e],u)))}function In(n){B(n)||n&&B(n.pass)||yn("Incorrect return value for rule: "+JSON.stringify(n))}function kn(n){function r(r,e,u){return function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];if(!(o=Fn.apply(void 0,t([En.run({value:n},(function(){return e.apply(void 0,t([n],i))})),u,n],i))).pass){if(!z(o.message))throw o.message;yn("enforce/"+u+" failed with "+JSON.stringify(n))}return r}}var e={};if(!Pn())return wn((function(n,t){e[n]=r(e,t,n)})),e;var u=new Proxy(e,{get:function(n,t){if(n=xn(t))return r(u,n,t)}});return u}function Wn(n){var r,e=[];return function n(o){return function(){for(var a=[],c=0;c<arguments.length;c++)a[c]=arguments[c];var f=xn(o);e.push((function(n){return Fn.apply(void 0,t([f.apply(void 0,t([n],a)),o,n],a))}));var v={run:function(n){return l(u(e,(function(t,e){var u,o=En.run({value:n},(function(){return t(n)}));o.pass||e(s(!!o.pass,null!==(u=i(r,n,o.message))&&void 0!==u?u:o.message))})))},test:function(n){return v.run(n).pass},message:function(n){return n&&(r=n),v}};return Pn()?v=new Proxy(v,{get:function(t,r){return xn(r)?n(r):t[r]}}):(wn((function(t){v[t]=n(t)})),v)}}(n)}function An(n){var t,r={};for(t in n)r[t]=Un.optional(n[t]);return r}var Dn,Ln,Un=(Dn=n({context:function(){return En.useX()},extend:function(n){r(Sn,n)}},{partial:An}),Pn()?new Proxy(r(kn,Dn),{get:function(n,t){return t in n?n[t]:xn(t)?Wn(t):void 0}}):(wn((function(n){Dn[n]=Wn(n)})),Dn)),Rn=function(n){return function(){return""+n++}}(0);function _n(n){function t(n,t,e){return u.references.push(),r(n,i(t,e)),function(){return[u.references[n],function(t){return r(n,i(t,u.references[n]))}]}}function r(t,r){var i=u.references[t];u.references[t]=r,e(t=o[t][1])&&t(r,i),e(n)&&n()}var u={references:[]},o=[];return{registerStateKey:function(n,r){var e=o.length;return o.push([n,r]),t(e,n)},reset:function(){var n=u.references;u.references=[],o.forEach((function(r,e){return t(e,r[0],n[e])}))}}}function Xn(n,t){var r=t.suiteId;return t=t.suiteName,{optionalFields:n.registerStateKey((function(){return{}})),suiteId:n.registerStateKey(r),suiteName:n.registerStateKey(t),testCallbacks:n.registerStateKey((function(){return{fieldCallbacks:{},doneCallbacks:[]}})),testObjects:n.registerStateKey((function(n){return{prev:n?n.current:[],current:[]}}))}}function Mn(n){return[].concat(n)}function Gn(n){return(n=Mn(n))[n.length-1]}function jn(){function n(){t=[0]}var t=[];return n(),{addLevel:function(){t.push(0)},cursorAt:function(){return Gn(t)},getCursor:function(){return Mn(t)},next:function(){return t[t.length-1]++,Gn(t)},removeLevel:function(){t.pop()},reset:n}}!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.GROUP=4]="GROUP"}(Ln||(Ln={}));var qn=Nn((function(n,t){return t?null:r({},{isolate:{type:Ln.DEFAULT},testCursor:jn(),exclusion:{tests:{},groups:{}}},n)}));function Bn(n,t){for(var r=[],e=0;e<n.length;e++){var u=n[e];L(u)?r.push(Bn(u,t)):(u=t(u),C(u)&&r.push(u))}return r}function Kn(n,t,r){return Vn(n,t)[Gn(t)]=r,n}function Hn(n){return Mn(n).reduce((function(n,t){return L(t)?n.concat(Hn(t)):Mn(n).concat(t)}),[])}function Vn(n,t){var r=0;for(t=t.slice(0,-1);r<t.length;r++){var e=t[r];n[e]=o(n[e],[]),n=n[e]}return n}function Jn(n){void 0===n&&(n=1);var t=[],r=function(e,u){var i=r.get(e);return i?i[1]:(u=u(),t.unshift([e.concat(),u]),N(t,n)&&(t.length=n),u)};return r.invalidate=function(n){var r=t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}));-1<r&&t.splice(r,1)},r.get=function(n){return t[t.findIndex((function(t){var r=t[0];return m(n,r.length)&&n.every((function(n,t){return n===r[t]}))}))]||null},r}function zn(){return qn.useX().stateRef}function Yn(){return zn().suiteId()[0]}function Qn(){return zn().testCallbacks()}function Zn(){return zn().optionalFields()}function $n(){return zn().testObjects()}function nt(){(0,$n()[1])((function(n){return{prev:n.prev,current:Mn(n.current)}}))}function tt(n){(0,$n()[1])((function(t){return{prev:t.prev,current:Mn(n(t.current))}}))}function rt(){return Hn(Bn($n()[0].current,(function(n){return n.isPending()?n:null})))}var et=Jn();function ut(){var n=$n()[0].current;return et([n],(function(){return Hn(n)}))}function it(){return qn.useX().testCursor.getCursor()}function ot(){return qn.useX().testCursor.cursorAt()}function st(){return qn.useX().testCursor.next()}function at(n,t){if(n=void 0===(n=n.type)?Ln.DEFAULT:n,e(t)){var r=it();return qn.run({isolate:{type:n}},(function(){qn.useX().testCursor.addLevel(),tt((function(n){return Kn(n,r,[])}));var n=t();return qn.useX().testCursor.removeLevel(),st(),n}))}}function ct(n,t){return!!t&&!ft(n,t)}function ft(n,t){return!(!t||n.fieldName!==t)}function lt(n){var t=rt();return!z(t)&&(n?t.some((function(t){return ft(t,n)})):Y(t))}function vt(n,t){function r(n,t){i[n]++,u&&(i[t]=(i[t]||[]).concat(u))}var e=t.fieldName,u=t.message;n[e]=n[e]||{errorCount:0,warnCount:0,testCount:0};var i=n[e];return t.isSkipped()||(n[e].testCount++,t.isFailing()?r("errorCount","errors"):t.isWarning()&&r("warnCount","warnings")),i}function pt(n,t){return function(n,t){return!!n!=!!t}("warnings"===n,t.warns())}function dt(t,r,e){var u;void 0===e&&(e={});var i=(e=e||{}).group,o=e.fieldName;return r.reduce((function(n,r){return function(n,t,r,e){return!!(function(n,t){return!(!t||n.groupName===t)}(n,r)||ct(n,e)||pt(t,n))}(r,t,i,o)||!r.hasFailures()||(n[r.fieldName]=(n[r.fieldName]||[]).concat(r.message||[])),n}),n({},o&&((u={})[o]=[],u)))}function gt(n,t){return t?n[t]:n}function ht(n){return yt("errors",n)}function mt(n){return yt("warnings",n)}function yt(n,t){return gt(n=dt(n,ut(),{fieldName:t}),t)}function Nt(n,t){return gt(n=bt("errors",n,t),t)}function Et(n,t){return gt(n=bt("warnings",n,t),t)}function bt(n,t,r){return t||yn("get"+n[0].toUpperCase()+n.slice(1)+"ByGroup requires a group name. Received `"+t+"` instead."),dt(n,ut(),{group:t,fieldName:r})}function Ct(n,t,r){return!(!n.hasFailures()||ct(n,r)||pt(t,n))}function Tt(n){return St("errors",n)}function Ot(n){return St("warnings",n)}function St(n,t){return ut().some((function(r){return Ct(r,n,t)}))}function xt(n,t){return Pt("errors",n,t)}function wt(n,t){return Pt("warnings",n,t)}function Pt(n,t,r){return ut().some((function(e){return t===e.groupName&&Ct(e,n,r)}))}function Ft(n,t){return!!function(n){var t=ut().reduce((function(n,t){return n[t.fieldName]||t.isOmitted()&&(n[t.fieldName]=!0),n}),{});return!!n&&!!t[n]}(t)||!n.hasErrors(t)&&(!(z(ut())||function(n,t){return!!t&&z(n.tests[t])}(n,t)||function(n){var t=Zn()[0];return Y(rt().filter((function(r){return!ct(r,n)&&!0!==t[r.fieldName]})))}(t))&&function(n){var t=ut(),r=Zn()[0];return t.every((function(t){return!!ct(t,n)||(!0===r[t.fieldName]||t.isTested()||t.isOmitted())}))}(t))}var It=Jn(20);function kt(){var n=ut(),t={stateRef:zn()};return It([n],qn.bind(t,(function(){var n=zn().suiteName()[0];return r(function(){var n={errorCount:0,groups:{},testCount:0,tests:{},warnCount:0};return ut().forEach((function(t){var r=t.fieldName,e=t.groupName;n.tests[r]=vt(n.tests,t),e&&(n.groups[e]=n.groups[e]||{},n.groups[e][r]=vt(n.groups[e],t))})),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}(n)}(),{getErrors:qn.bind(t,ht),getErrorsByGroup:qn.bind(t,Nt),getWarnings:qn.bind(t,mt),getWarningsByGroup:qn.bind(t,Et),hasErrors:qn.bind(t,Tt),hasErrorsByGroup:qn.bind(t,xt),hasWarnings:qn.bind(t,Ot),hasWarningsByGroup:qn.bind(t,wt),isValid:qn.bind(t,(function(n){return Ft(kt(),n)})),suiteName:n})})))}var Wt=Jn(20);function At(){var n=ut(),t={stateRef:zn()};return Wt([n],qn.bind(t,(function(){return r({},kt(),{done:qn.bind(t,Rt)})})))}function Dt(n,t,r){return!(e(n)&&(!t||r.tests[t]&&0!==r.tests[t].testCount))}function Lt(n){return!(lt()&&(!n||lt(n)))}var Ut,Rt=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var r=(n=n.reverse())[0];if(n=n[1],t=At(),Dt(r,n,t))return t;var e=function(){return r(kt())};return Lt(n)?(e(),t):(_t(e,n),t)};function _t(n,t){var r=qn.bind({},n);(0,Qn()[1])((function(n){return t?n.fieldCallbacks[t]=(n.fieldCallbacks[t]||[]).concat(r):n.doneCallbacks.push(r),n}))}function Xt(n){return n.forEach((function(n){return n()}))}function Mt(){var n=function(){var n={};return{emit:function(t,r){n[t]&&n[t].forEach((function(n){n(r)}))},on:function(t,r){return n[t]||(n[t]=[]),n[t].push(r),{off:function(){n[t]=n[t].filter((function(n){return n!==r}))}}}}}();return n.on(Ut.TEST_COMPLETED,(function(n){n.isCanceled()||(n.done(),function(n){var t=Qn()[0].fieldCallbacks;n&&!lt(n)&&L(t[n])&&Xt(t[n])}(n.fieldName),function(){var n=Qn()[0].doneCallbacks;lt()||Xt(n)}())})),n.on(Ut.SUITE_COMPLETED,(function(){!function(){var n=Zn()[0];if(!z(n)){var t={};tt((function(r){return Bn(r,(function(r){var u=r.fieldName;if(t.hasOwnProperty(u))t[r.fieldName]&&r.omit();else{var i=n[u];e(i)&&(t[u]=i(),t[r.fieldName]&&r.omit())}return r}))}))}}()})),n.on(Ut.REMOVE_FIELD,(function(n){ut().forEach((function(t){ft(t,n)&&(t.cancel(),function(n){tt((function(t){return Bn(t,(function(t){return n!==t?t:null}))}))}(t))}))})),n}function Gt(){var n=qn.useX();return n.bus||yn(),n.bus}!function(n){n.TEST_COMPLETED="test_completed",n.REMOVE_FIELD="remove_field",n.SUITE_COMPLETED="suite_completed"}(Ut||(Ut={}));function jt(n){return Kt(0,"tests",n)}function qt(n){return Kt(1,"tests",n)}function Bt(n){var t=n.fieldName;n=n.groupName;var r=qn.useX();if(r.skipped)return!0;var e=(r=r.exclusion).tests,u=e[t];if(!1===u)return!0;if(u=!0===u,n){if(function(n){var t=qn.useX().exclusion.groups;if(H(t,n))return!1===t[n];for(var r in t)if(!0===t[r])return!0;return!1}(n))return!0;if(!0===r.groups[n])return!u&&(!!Ht(e)||!1===e[t])}return!u&&Ht(e)}function Kt(n,t,r){var e=qn.useX("hook called outside of a running suite.");r&&Mn(r).forEach((function(r){x(r)&&(e.exclusion[t][r]=0===n)}))}function Ht(n){for(var t in n)if(!0===n[t])return!0;return!1}jt.group=function(n){return Kt(0,"groups",n)},qt.group=function(n){return Kt(1,"groups",n)};var Vt;function Jt(n){yn("Wrong arguments passed to group. Group "+n+".")}function zt(n,t){return T(n)&&x(t)}!function(n){n.Error="error",n.Warning="warning"}(Vt||(Vt={}));var Yt=function(){function n(n,t,r){var e=void 0===r?{}:r;r=e.message,e=e.groupName,this.id=Rn(),this.severity=Vt.Error,this.status=Qt,this.fieldName=n,this.testFn=t,e&&(this.groupName=e),r&&(this.message=r)}return n.prototype.run=function(){try{var n=this.testFn()}catch(t){zt(this.message,t)&&(this.message=t),n=!1}return!1===n&&this.fail(),n},n.prototype.setStatus=function(n){this.isFinalStatus()&&n!==ur||(this.status=n)},n.prototype.warns=function(){return this.severity===Vt.Warning},n.prototype.setPending=function(){this.setStatus(rr)},n.prototype.fail=function(){this.setStatus(this.warns()?nr:$t)},n.prototype.done=function(){this.isFinalStatus()||this.setStatus(tr)},n.prototype.warn=function(){this.severity=Vt.Warning},n.prototype.isFinalStatus=function(){return this.hasFailures()||this.isCanceled()||this.isPassing()},n.prototype.skip=function(){this.isPending()||this.setStatus(Zt)},n.prototype.cancel=function(){this.setStatus(er),nt()},n.prototype.omit=function(){this.setStatus(ur)},n.prototype.valueOf=function(){return!this.isFailing()},n.prototype.hasFailures=function(){return this.isFailing()||this.isWarning()},n.prototype.isPending=function(){return this.status===rr},n.prototype.isTested=function(){return this.hasFailures()||this.isPassing()},n.prototype.isOmitted=function(){return this.status===ur},n.prototype.isUntested=function(){return this.status===Qt},n.prototype.isFailing=function(){return this.status===$t},n.prototype.isCanceled=function(){return this.status===er},n.prototype.isSkipped=function(){return this.status===Zt},n.prototype.isPassing=function(){return this.status===tr},n.prototype.isWarning=function(){return this.status===nr},n}(),Qt="UNTESTED",Zt="SKIPPED",$t="FAILED",nr="WARNING",tr="PASSING",rr="PENDING",er="CANCELED",ur="OMITTED";function ir(n){return n&&e(n.then)}function or(n,t){return n.fieldName===t.fieldName&&n.groupName===t.groupName}function sr(n){var t=n.asyncTest,r=n.message;if(ir(t)){var e=Gt().emit,u=zn(),i=qn.bind({stateRef:u},(function(){nt(),e(Ut.TEST_COMPLETED,n)}));u=qn.bind({stateRef:u},(function(t){n.isCanceled()||(n.message=x(t)?t:r,n.fail(),i())}));try{t.then(i,u)}catch(n){u()}}}function ar(n){var t=Gt(),r=function(n){return qn.run({currentTest:n},(function(){try{var t=n.testFn()}catch(r){zt(n.message,r)&&(n.message=r),t=!1}return!1===t&&n.fail(),t}))}(n);try{ir(r)?(n.asyncTest=r,n.setPending(),sr(n)):t.emit(Ut.TEST_COMPLETED,n)}catch(t){yn("Your test function "+n.fieldName+' returned a value. Only "false" or Promise returns are supported.')}}function cr(n){var t=$n(),r=t[1],e=t[0].prev;if(z(e))return fr(n),n;if(function(n,t){return Y(n)&&!or(n,t)}(t=function(n){var t=it();return function(n,t){return Vn(n,t)[Gn(t)]}(n,t)}(e),n)){!function(n,t){qn.useX().isolate.type===Ln.EACH||function(n,t){setTimeout((function(){yn(n,t)}),0)}("Vest Critical Error: Tests called in different order than previous run.\n expected: "+n.fieldName+"\n received: "+t.fieldName+"\n This happens when you conditionally call your tests using if/else.\n This might lead to incorrect validation results.\n Replacing if/else with skipWhen solves these issues.")}(t,n),t=Vn(e,it());var u=ot();t.splice(u),r((function(n){return{prev:e,current:n.current}})),t=null}return fr(n=o(t,n)),n}function fr(n){var t=it();tt((function(r){return Kn(r,t,n)}))}function lr(n){var t=cr(n);return Bt(n)?(n.skip(),st(),t):(function(n,t){t!==n&&or(n,t)&&n.isPending()&&n.cancel()}(t,n),fr(n),st(),function(n){n.isUntested()?ar(n):ir(n.asyncTest)&&(n.setPending(),sr(n))}(n),n)}function vr(n){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];r=t.reverse(),t=r[0],r=r[1];var e=qn.useX();return lr(t=new Yt(n,t,{message:r,groupName:e.groupName}))}var pr=r(vr,{each:function(n){return function(r){return L(r)||yn("test.each: Expected table to be an array."),function(e){for(var u=[],o=1;o<arguments.length;o++)u[o-1]=arguments[o];var s=(u=u.reverse())[0],a=u[1];return at({type:Ln.EACH},(function(){return r.map((function(r){return r=Mn(r),n(i.apply(void 0,t([e],r)),i.apply(void 0,t([a],r)),(function(){return s.apply(void 0,r)}))}))}))}}}(vr),memo:function(n){var t=Jn(100);return function(r){for(var e=[],u=1;u<arguments.length;u++)e[u-1]=arguments[u];u=ot();var i=(e=e.reverse())[0],o=e[1],s=e[2];return u=[Yn(),r,u].concat(i),b(e=t.get(u))?t(u,(function(){return n(r,s,o)})):e[1].isCanceled()?(t.invalidate(u),t(u,(function(){return n(r,s,o)}))):lr(e[1])}}(vr)});exports.VERSION="4.0.0-next-cfb1a7",exports.create=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var u=(n=n.reverse())[0];n=n[1],e(u)||yn("vest.create: Expected callback to be a function.");var i=Mt(),o=_n();return n={stateRef:Xn(o,{suiteId:Rn(),suiteName:n}),bus:i},r(qn.bind(n,(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return o.reset(),at({type:Ln.SUITE},(function(){u.apply(void 0,n)})),i.emit(Ut.SUITE_COMPLETED),At()})),{get:qn.bind(n,kt),reset:o.reset,remove:qn.bind(n,(function(n){i.emit(Ut.REMOVE_FIELD,n)}))})},exports.enforce=Un,exports.group=function(n,t){x(n)||Jt("name must be a string"),e(t)||Jt("callback must be a function"),at({type:Ln.GROUP},(function(){qn.run({groupName:n},t)}))},exports.only=jt,exports.optional=function(n){(0,Zn()[1])((function(t){if(L(n)||x(n))Mn(n).forEach((function(n){t[n]=!0}));else for(var r in n)t[r]=n[r];return t}))},exports.skip=qt,exports.skipWhen=function(n,t){at({type:Ln.SKIP_WHEN},(function(){qn.run({skipped:i(n,i(kt))},(function(){return t()}))}))},exports.test=pr,exports.warn=function(){var n=qn.useX("warn hook called outside of a running suite.");n.currentTest||yn("warn called outside of a test."),n.currentTest.warn()};
|