vitest 0.1.19 → 0.1.24

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.
@@ -0,0 +1,244 @@
1
+ import require$$0 from 'tty';
2
+ import { isPackageExists } from 'local-pkg';
3
+
4
+ var picocolors = {exports: {}};
5
+
6
+ let tty = require$$0;
7
+
8
+ let isColorSupported =
9
+ !("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
10
+ ("FORCE_COLOR" in process.env ||
11
+ process.argv.includes("--color") ||
12
+ process.platform === "win32" ||
13
+ (tty.isatty(1) && process.env.TERM !== "dumb") ||
14
+ "CI" in process.env);
15
+
16
+ let formatter =
17
+ (open, close, replace = open) =>
18
+ input => {
19
+ let string = "" + input;
20
+ let index = string.indexOf(close, open.length);
21
+ return ~index
22
+ ? open + replaceClose(string, close, replace, index) + close
23
+ : open + string + close
24
+ };
25
+
26
+ let replaceClose = (string, close, replace, index) => {
27
+ let start = string.substring(0, index) + replace;
28
+ let end = string.substring(index + close.length);
29
+ let nextIndex = end.indexOf(close);
30
+ return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
31
+ };
32
+
33
+ let createColors = (enabled = isColorSupported) => ({
34
+ isColorSupported: enabled,
35
+ reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
36
+ bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
37
+ dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
38
+ italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
39
+ underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
40
+ inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
41
+ hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
42
+ strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
43
+ black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
44
+ red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
45
+ green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
46
+ yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
47
+ blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
48
+ magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
49
+ cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
50
+ white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
51
+ gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
52
+ bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
53
+ bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
54
+ bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
55
+ bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
56
+ bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
57
+ bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
58
+ bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
59
+ bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
60
+ });
61
+
62
+ picocolors.exports = createColors();
63
+ picocolors.exports.createColors = createColors;
64
+
65
+ var c = picocolors.exports;
66
+
67
+ function notNullish(v) {
68
+ return v != null;
69
+ }
70
+ function slash(str) {
71
+ return str.replace(/\\/g, "/");
72
+ }
73
+ function mergeSlashes(str) {
74
+ return str.replace(/\/\//g, "/");
75
+ }
76
+ const noop = () => {
77
+ };
78
+ function clone(val) {
79
+ let k, out, tmp;
80
+ if (Array.isArray(val)) {
81
+ out = Array(k = val.length);
82
+ while (k--)
83
+ out[k] = (tmp = val[k]) && typeof tmp === "object" ? clone(tmp) : tmp;
84
+ return out;
85
+ }
86
+ if (Object.prototype.toString.call(val) === "[object Object]") {
87
+ out = {};
88
+ for (k in val) {
89
+ if (k === "__proto__") {
90
+ Object.defineProperty(out, k, {
91
+ value: clone(val[k]),
92
+ configurable: true,
93
+ enumerable: true,
94
+ writable: true
95
+ });
96
+ } else {
97
+ out[k] = (tmp = val[k]) && typeof tmp === "object" ? clone(tmp) : tmp;
98
+ }
99
+ }
100
+ return out;
101
+ }
102
+ return val;
103
+ }
104
+ function toArray(array) {
105
+ array = array || [];
106
+ if (Array.isArray(array))
107
+ return array;
108
+ return [array];
109
+ }
110
+ const toString = (v) => Object.prototype.toString.call(v);
111
+ const isPlainObject = (val) => toString(val) === "[object Object]";
112
+ function isObject(item) {
113
+ return item != null && typeof item === "object" && !Array.isArray(item);
114
+ }
115
+ function deepMerge(target, ...sources) {
116
+ if (!sources.length)
117
+ return target;
118
+ const source = sources.shift();
119
+ if (source === void 0)
120
+ return target;
121
+ if (isMergableObject(target) && isMergableObject(source)) {
122
+ Object.keys(source).forEach((key) => {
123
+ if (isMergableObject(source[key])) {
124
+ if (!target[key])
125
+ target[key] = {};
126
+ deepMerge(target[key], source[key]);
127
+ } else if (Array.isArray(source[key])) {
128
+ if (!target[key])
129
+ target[key] = [];
130
+ target[key].push(...source[key]);
131
+ } else {
132
+ target[key] = source[key];
133
+ }
134
+ });
135
+ }
136
+ return deepMerge(target, ...sources);
137
+ }
138
+ function isMergableObject(item) {
139
+ return isPlainObject(item) && !Array.isArray(item);
140
+ }
141
+
142
+ function getTests(suite) {
143
+ return toArray(suite).flatMap((s) => s.type === "test" ? [s] : s.tasks.flatMap((c) => c.type === "test" ? [c] : getTests(c)));
144
+ }
145
+ function getSuites(suite) {
146
+ return toArray(suite).flatMap((s) => s.type === "suite" ? [s, ...getSuites(s.tasks)] : []);
147
+ }
148
+ function hasTests(suite) {
149
+ return toArray(suite).some((s) => s.tasks.some((c) => c.type === "test" || hasTests(c)));
150
+ }
151
+ function hasFailed(suite) {
152
+ return toArray(suite).some((s) => {
153
+ var _a;
154
+ return ((_a = s.result) == null ? void 0 : _a.state) === "fail" || s.type === "suite" && hasFailed(s.tasks);
155
+ });
156
+ }
157
+ function hasFailedSnapshot(suite) {
158
+ return getTests(suite).some((s) => {
159
+ var _a, _b;
160
+ const message = (_b = (_a = s.result) == null ? void 0 : _a.error) == null ? void 0 : _b.message;
161
+ return message == null ? void 0 : message.match(/Snapshot .* mismatched/);
162
+ });
163
+ }
164
+ function getNames(task) {
165
+ const names = [task.name];
166
+ let current = task;
167
+ while ((current == null ? void 0 : current.suite) || (current == null ? void 0 : current.file)) {
168
+ current = current.suite || current.file;
169
+ if (current == null ? void 0 : current.name)
170
+ names.unshift(current.name);
171
+ }
172
+ return names;
173
+ }
174
+
175
+ process.platform === "win32";
176
+ function partitionSuiteChildren(suite) {
177
+ let tasksGroup = [];
178
+ const tasksGroups = [];
179
+ for (const c2 of suite.tasks) {
180
+ if (tasksGroup.length === 0 || c2.concurrent === tasksGroup[0].concurrent) {
181
+ tasksGroup.push(c2);
182
+ } else {
183
+ tasksGroups.push(tasksGroup);
184
+ tasksGroup = [c2];
185
+ }
186
+ }
187
+ if (tasksGroup.length > 0)
188
+ tasksGroups.push(tasksGroup);
189
+ return tasksGroups;
190
+ }
191
+ function getFullName(task) {
192
+ return getNames(task).join(c.dim(" > "));
193
+ }
194
+ async function ensurePackageInstalled(dependency, promptInstall = !process.env.CI && process.stdout.isTTY) {
195
+ if (isPackageExists(dependency))
196
+ return true;
197
+ process.stderr.write(c.red(`${c.inverse(c.red(" MISSING DEP "))} Can not find dependency '${dependency}'
198
+
199
+ `));
200
+ if (!promptInstall)
201
+ return false;
202
+ const prompts = await import('./index-fa899e66.js').then(function (n) { return n.i; });
203
+ const { install } = await prompts.prompt({
204
+ type: "confirm",
205
+ name: "install",
206
+ message: c.reset(`Do you want to install ${c.green(dependency)}?`)
207
+ });
208
+ if (install) {
209
+ await (await import('./index-26cb6e63.js')).installPackage(dependency, { dev: true });
210
+ return true;
211
+ }
212
+ return false;
213
+ }
214
+ function getCallLastIndex(code) {
215
+ let charIndex = -1;
216
+ let inString = null;
217
+ let startedBracers = 0;
218
+ let endedBracers = 0;
219
+ let beforeChar = null;
220
+ while (charIndex <= code.length) {
221
+ beforeChar = code[charIndex];
222
+ charIndex++;
223
+ const char = code[charIndex];
224
+ const isCharString = char === '"' || char === "'" || char === "`";
225
+ if (isCharString && beforeChar !== "\\") {
226
+ if (inString === char)
227
+ inString = null;
228
+ else if (!inString)
229
+ inString = char;
230
+ }
231
+ if (!inString) {
232
+ if (char === "(")
233
+ startedBracers++;
234
+ if (char === ")")
235
+ endedBracers++;
236
+ }
237
+ if (startedBracers && endedBracers && startedBracers === endedBracers)
238
+ return charIndex;
239
+ }
240
+ return null;
241
+ }
242
+
243
+ export { notNullish as a, hasFailedSnapshot as b, c, getSuites as d, ensurePackageInstalled as e, getTests as f, getFullName as g, hasFailed as h, isObject as i, deepMerge as j, clone as k, getCallLastIndex as l, mergeSlashes as m, noop as n, getNames as o, partitionSuiteChildren as p, hasTests as q, slash as s, toArray as t };
244
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtZjdmYjBiOGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9waWNvY29sb3JzQDEuMC4wL25vZGVfbW9kdWxlcy9waWNvY29sb3JzL3BpY29jb2xvcnMuanMiLCIuLi9zcmMvdXRpbHMvYmFzZS50cyIsIi4uL3NyYy91dGlscy90YXNrcy50cyIsIi4uL3NyYy91dGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgdHR5ID0gcmVxdWlyZShcInR0eVwiKVxuXG5sZXQgaXNDb2xvclN1cHBvcnRlZCA9XG5cdCEoXCJOT19DT0xPUlwiIGluIHByb2Nlc3MuZW52IHx8IHByb2Nlc3MuYXJndi5pbmNsdWRlcyhcIi0tbm8tY29sb3JcIikpICYmXG5cdChcIkZPUkNFX0NPTE9SXCIgaW4gcHJvY2Vzcy5lbnYgfHxcblx0XHRwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoXCItLWNvbG9yXCIpIHx8XG5cdFx0cHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiIHx8XG5cdFx0KHR0eS5pc2F0dHkoMSkgJiYgcHJvY2Vzcy5lbnYuVEVSTSAhPT0gXCJkdW1iXCIpIHx8XG5cdFx0XCJDSVwiIGluIHByb2Nlc3MuZW52KVxuXG5sZXQgZm9ybWF0dGVyID1cblx0KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbikgPT5cblx0aW5wdXQgPT4ge1xuXHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXRcblx0XHRsZXQgaW5kZXggPSBzdHJpbmcuaW5kZXhPZihjbG9zZSwgb3Blbi5sZW5ndGgpXG5cdFx0cmV0dXJuIH5pbmRleFxuXHRcdFx0PyBvcGVuICsgcmVwbGFjZUNsb3NlKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSArIGNsb3NlXG5cdFx0XHQ6IG9wZW4gKyBzdHJpbmcgKyBjbG9zZVxuXHR9XG5cbmxldCByZXBsYWNlQ2xvc2UgPSAoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpID0+IHtcblx0bGV0IHN0YXJ0ID0gc3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlXG5cdGxldCBlbmQgPSBzdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgY2xvc2UubGVuZ3RoKVxuXHRsZXQgbmV4dEluZGV4ID0gZW5kLmluZGV4T2YoY2xvc2UpXG5cdHJldHVybiB+bmV4dEluZGV4ID8gc3RhcnQgKyByZXBsYWNlQ2xvc2UoZW5kLCBjbG9zZSwgcmVwbGFjZSwgbmV4dEluZGV4KSA6IHN0YXJ0ICsgZW5kXG59XG5cbmxldCBjcmVhdGVDb2xvcnMgPSAoZW5hYmxlZCA9IGlzQ29sb3JTdXBwb3J0ZWQpID0+ICh7XG5cdGlzQ29sb3JTdXBwb3J0ZWQ6IGVuYWJsZWQsXG5cdHJlc2V0OiBlbmFibGVkID8gcyA9PiBgXFx4MWJbMG0ke3N9XFx4MWJbMG1gIDogU3RyaW5nLFxuXHRib2xkOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMW1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsxbVwiKSA6IFN0cmluZyxcblx0ZGltOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMm1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsybVwiKSA6IFN0cmluZyxcblx0aXRhbGljOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbM21cIiwgXCJcXHgxYlsyM21cIikgOiBTdHJpbmcsXG5cdHVuZGVybGluZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzRtXCIsIFwiXFx4MWJbMjRtXCIpIDogU3RyaW5nLFxuXHRpbnZlcnNlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbN21cIiwgXCJcXHgxYlsyN21cIikgOiBTdHJpbmcsXG5cdGhpZGRlbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzhtXCIsIFwiXFx4MWJbMjhtXCIpIDogU3RyaW5nLFxuXHRzdHJpa2V0aHJvdWdoOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbOW1cIiwgXCJcXHgxYlsyOW1cIikgOiBTdHJpbmcsXG5cdGJsYWNrOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzBtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRyZWQ6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszMW1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdGdyZWVuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzJtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHR5ZWxsb3c6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszM21cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdGJsdWU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszNG1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdG1hZ2VudGE6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszNW1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdGN5YW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszNm1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdHdoaXRlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzdtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRncmF5OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbOTBtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRiZ0JsYWNrOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDBtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ1JlZDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQxbVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdHcmVlbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQybVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdZZWxsb3c6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0M21cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnQmx1ZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQ0bVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdNYWdlbnRhOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDVtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ0N5YW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0Nm1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnV2hpdGU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0N21cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVDb2xvcnMgPSBjcmVhdGVDb2xvcnNcbiIsImltcG9ydCB0eXBlIHsgQXJyYXlhYmxlLCBEZWVwTWVyZ2UsIE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiBub3ROdWxsaXNoPFQ+KHY6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogdiBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIHJldHVybiB2ICE9IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsYXNoKHN0cjogc3RyaW5nKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXC9nLCAnLycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVNsYXNoZXMoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXC9cXC8vZywgJy8nKVxufVxuXG5leHBvcnQgY29uc3Qgbm9vcCA9ICgpID0+IHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmU8VD4odmFsOiBUKTogVCB7XG4gIGxldCBrOiBhbnksIG91dDogYW55LCB0bXA6IGFueVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICBvdXQgPSBBcnJheShrID0gdmFsLmxlbmd0aClcbiAgICB3aGlsZSAoay0tKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgICBvdXRba10gPSAodG1wID0gdmFsW2tdKSAmJiB0eXBlb2YgdG1wID09PSAnb2JqZWN0JyA/IGNsb25lKHRtcCkgOiB0bXBcbiAgICByZXR1cm4gb3V0IGFzIGFueVxuICB9XG5cbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIG91dCA9IHt9IC8vIG51bGxcbiAgICBmb3IgKGsgaW4gdmFsKSB7XG4gICAgICBpZiAoayA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG91dCwgaywge1xuICAgICAgICAgIHZhbHVlOiBjbG9uZSgodmFsIGFzIGFueSlba10pLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICAgICAgICBvdXRba10gPSAodG1wID0gKHZhbCBhcyBhbnkpW2tdKSAmJiB0eXBlb2YgdG1wID09PSAnb2JqZWN0JyA/IGNsb25lKHRtcCkgOiB0bXBcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuLyoqXG4gKiBDb252ZXJ0IGBBcnJheWFibGU8VD5gIHRvIGBBcnJheTxUPmBcbiAqXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheTxUPihhcnJheT86IE51bGxhYmxlPEFycmF5YWJsZTxUPj4pOiBBcnJheTxUPiB7XG4gIGFycmF5ID0gYXJyYXkgfHwgW11cbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXkpKVxuICAgIHJldHVybiBhcnJheVxuICByZXR1cm4gW2FycmF5XVxufVxuXG5leHBvcnQgY29uc3QgdG9TdHJpbmcgPSAodjogYW55KSA9PiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodilcbmV4cG9ydCBjb25zdCBpc1BsYWluT2JqZWN0ID0gKHZhbDogYW55KTogdmFsIGlzIG9iamVjdCA9PiB0b1N0cmluZyh2YWwpID09PSAnW29iamVjdCBPYmplY3RdJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoaXRlbTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXRlbSAhPSBudWxsICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKVxufVxuXG4vKipcbiAqIERlZXAgbWVyZ2UgOlBcbiAqXG4gKiBXaWxsIG1lcmdlIG9iamVjdHMgb25seSBpZiB0aGV5IGFyZSBwbGFpblxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlPFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3QsIFMgZXh0ZW5kcyBvYmplY3QgPSBUPih0YXJnZXQ6IFQsIC4uLnNvdXJjZXM6IFNbXSk6IERlZXBNZXJnZTxULCBTPiB7XG4gIGlmICghc291cmNlcy5sZW5ndGgpXG4gICAgcmV0dXJuIHRhcmdldCBhcyBhbnlcblxuICBjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KClcbiAgaWYgKHNvdXJjZSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiB0YXJnZXQgYXMgYW55XG5cbiAgaWYgKGlzTWVyZ2FibGVPYmplY3QodGFyZ2V0KSAmJiBpc01lcmdhYmxlT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAoT2JqZWN0LmtleXMoc291cmNlKSBhcyAoa2V5b2YgUyAmIGtleW9mIFQpW10pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGlzTWVyZ2FibGVPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgIGlmICghdGFyZ2V0W2tleV0pXG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB7fSBhcyBhbnlcblxuICAgICAgICBkZWVwTWVyZ2UodGFyZ2V0W2tleV0gYXMgYW55LCBzb3VyY2Vba2V5XSBhcyBhbnkpXG4gICAgICB9XG4gICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZVtrZXldKSkge1xuICAgICAgICBpZiAoIXRhcmdldFtrZXldKVxuICAgICAgICAgIHRhcmdldFtrZXldID0gW10gYXMgYW55XG5cbiAgICAgICAgKHRhcmdldFtrZXldIGFzIGFueSkucHVzaCguLi5zb3VyY2Vba2V5XSBhcyBhbnkpXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XSBhcyBhbnlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGRlZXBNZXJnZSh0YXJnZXQsIC4uLnNvdXJjZXMpXG59XG5cbmZ1bmN0aW9uIGlzTWVyZ2FibGVPYmplY3QoaXRlbTogYW55KTogaXRlbSBpcyBPYmplY3Qge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChpdGVtKSAmJiAhQXJyYXkuaXNBcnJheShpdGVtKVxufVxuIiwiaW1wb3J0IHR5cGUgeyBBcnJheWFibGUsIFN1aXRlLCBUYXNrLCBUZXN0IH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi9iYXNlJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVzdHMoc3VpdGU6IEFycmF5YWJsZTxUYXNrPik6IFRlc3RbXSB7XG4gIHJldHVybiB0b0FycmF5KHN1aXRlKS5mbGF0TWFwKHMgPT4gcy50eXBlID09PSAndGVzdCcgPyBbc10gOiBzLnRhc2tzLmZsYXRNYXAoYyA9PiBjLnR5cGUgPT09ICd0ZXN0JyA/IFtjXSA6IGdldFRlc3RzKGMpKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhc2tzKHRhc2tzOiBBcnJheWFibGU8VGFzaz4gPSBbXSk6IFRhc2tbXSB7XG4gIHJldHVybiB0b0FycmF5KHRhc2tzKS5mbGF0TWFwKHMgPT4gcy50eXBlID09PSAndGVzdCcgPyBbc10gOiBbcywgLi4uZ2V0VGFza3Mocy50YXNrcyldKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VpdGVzKHN1aXRlOiBBcnJheWFibGU8VGFzaz4pOiBTdWl0ZVtdIHtcbiAgcmV0dXJuIHRvQXJyYXkoc3VpdGUpLmZsYXRNYXAocyA9PiBzLnR5cGUgPT09ICdzdWl0ZScgPyBbcywgLi4uZ2V0U3VpdGVzKHMudGFza3MpXSA6IFtdKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzVGVzdHMoc3VpdGU6IEFycmF5YWJsZTxTdWl0ZT4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHRvQXJyYXkoc3VpdGUpLnNvbWUocyA9PiBzLnRhc2tzLnNvbWUoYyA9PiBjLnR5cGUgPT09ICd0ZXN0JyB8fCBoYXNUZXN0cyhjIGFzIFN1aXRlKSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNGYWlsZWQoc3VpdGU6IEFycmF5YWJsZTxUYXNrPik6IGJvb2xlYW4ge1xuICByZXR1cm4gdG9BcnJheShzdWl0ZSkuc29tZShzID0+IHMucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnIHx8IChzLnR5cGUgPT09ICdzdWl0ZScgJiYgaGFzRmFpbGVkKHMudGFza3MpKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ZhaWxlZFNuYXBzaG90KHN1aXRlOiBBcnJheWFibGU8VGFzaz4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFRlc3RzKHN1aXRlKS5zb21lKChzKSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHMucmVzdWx0Py5lcnJvcj8ubWVzc2FnZVxuICAgIHJldHVybiBtZXNzYWdlPy5tYXRjaCgvU25hcHNob3QgLiogbWlzbWF0Y2hlZC8pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lcyh0YXNrOiBUYXNrKSB7XG4gIGNvbnN0IG5hbWVzID0gW3Rhc2submFtZV1cbiAgbGV0IGN1cnJlbnQ6IFRhc2sgfCB1bmRlZmluZWQgPSB0YXNrXG5cbiAgd2hpbGUgKGN1cnJlbnQ/LnN1aXRlIHx8IGN1cnJlbnQ/LmZpbGUpIHtcbiAgICBjdXJyZW50ID0gY3VycmVudC5zdWl0ZSB8fCBjdXJyZW50LmZpbGVcbiAgICBpZiAoY3VycmVudD8ubmFtZSlcbiAgICAgIG5hbWVzLnVuc2hpZnQoY3VycmVudC5uYW1lKVxuICB9XG5cbiAgcmV0dXJuIG5hbWVzXG59XG4iLCJpbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHsgaXNQYWNrYWdlRXhpc3RzIH0gZnJvbSAnbG9jYWwtcGtnJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBTdWl0ZSwgVGFzayB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0TmFtZXMgfSBmcm9tICcuL3Rhc2tzJ1xuXG5leHBvcnQgKiBmcm9tICcuL3Rhc2tzJ1xuZXhwb3J0ICogZnJvbSAnLi9wYXRoJ1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlJ1xuXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuXG4vKipcbiAqIFBhcnRpdGlvbiBpbiB0YXNrcyBncm91cHMgYnkgY29uc2VjdXRpdmUgY29uY3VycmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZTogU3VpdGUpIHtcbiAgbGV0IHRhc2tzR3JvdXA6IFRhc2tbXSA9IFtdXG4gIGNvbnN0IHRhc2tzR3JvdXBzOiBUYXNrW11bXSA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBzdWl0ZS50YXNrcykge1xuICAgIGlmICh0YXNrc0dyb3VwLmxlbmd0aCA9PT0gMCB8fCBjLmNvbmN1cnJlbnQgPT09IHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCkge1xuICAgICAgdGFza3NHcm91cC5wdXNoKGMpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGFza3NHcm91cHMucHVzaCh0YXNrc0dyb3VwKVxuICAgICAgdGFza3NHcm91cCA9IFtjXVxuICAgIH1cbiAgfVxuICBpZiAodGFza3NHcm91cC5sZW5ndGggPiAwKVxuICAgIHRhc2tzR3JvdXBzLnB1c2godGFza3NHcm91cClcblxuICByZXR1cm4gdGFza3NHcm91cHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bGxOYW1lKHRhc2s6IFRhc2spIHtcbiAgcmV0dXJuIGdldE5hbWVzKHRhc2spLmpvaW4oYy5kaW0oJyA+ICcpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlUGFja2FnZUluc3RhbGxlZChcbiAgZGVwZW5kZW5jeTogc3RyaW5nLFxuICBwcm9tcHRJbnN0YWxsID0gIXByb2Nlc3MuZW52LkNJICYmIHByb2Nlc3Muc3Rkb3V0LmlzVFRZLFxuKSB7XG4gIGlmIChpc1BhY2thZ2VFeGlzdHMoZGVwZW5kZW5jeSkpXG4gICAgcmV0dXJuIHRydWVcblxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShjLnJlZChgJHtjLmludmVyc2UoYy5yZWQoJyBNSVNTSU5HIERFUCAnKSl9IENhbiBub3QgZmluZCBkZXBlbmRlbmN5ICcke2RlcGVuZGVuY3l9J1xcblxcbmApKVxuXG4gIGlmICghcHJvbXB0SW5zdGFsbClcbiAgICByZXR1cm4gZmFsc2VcblxuICBjb25zdCBwcm9tcHRzID0gYXdhaXQgaW1wb3J0KCdwcm9tcHRzJylcbiAgY29uc3QgeyBpbnN0YWxsIH0gPSBhd2FpdCBwcm9tcHRzLnByb21wdCh7XG4gICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgIG5hbWU6ICdpbnN0YWxsJyxcbiAgICBtZXNzYWdlOiBjLnJlc2V0KGBEbyB5b3Ugd2FudCB0byBpbnN0YWxsICR7Yy5ncmVlbihkZXBlbmRlbmN5KX0/YCksXG4gIH0pXG5cbiAgaWYgKGluc3RhbGwpIHtcbiAgICBhd2FpdCAoYXdhaXQgaW1wb3J0KCdAYW50ZnUvaW5zdGFsbC1wa2cnKSkuaW5zdGFsbFBhY2thZ2UoZGVwZW5kZW5jeSwgeyBkZXY6IHRydWUgfSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogSWYgY29kZSBzdGFydHMgd2l0aCBhIGZ1bmN0aW9uIGNhbGwsIHdpbGwgcmV0dXJuIGl0cyBsYXN0IGluZGV4LCByZXNwZWN0aW5nIGFyZ3VtZW50cy5cbiAqIFRoaXMgd2lsbCByZXR1cm4gMjUgLSBsYXN0IGVuZGluZyBjaGFyYWN0ZXIgb2YgdG9NYXRjaCBcIilcIlxuICogQWxzbyB3b3JrcyB3aXRoIGNhbGxiYWNrc1xuICogYGBgXG4gKiB0b01hdGNoKHsgdGVzdDogJzEyMycgfSk7XG4gKiB0b0JlQWxpYXNlZCgnMTIzJylcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsbExhc3RJbmRleChjb2RlOiBzdHJpbmcpIHtcbiAgbGV0IGNoYXJJbmRleCA9IC0xXG4gIGxldCBpblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IHN0YXJ0ZWRCcmFjZXJzID0gMFxuICBsZXQgZW5kZWRCcmFjZXJzID0gMFxuICBsZXQgYmVmb3JlQ2hhcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgd2hpbGUgKGNoYXJJbmRleCA8PSBjb2RlLmxlbmd0aCkge1xuICAgIGJlZm9yZUNoYXIgPSBjb2RlW2NoYXJJbmRleF1cbiAgICBjaGFySW5kZXgrK1xuICAgIGNvbnN0IGNoYXIgPSBjb2RlW2NoYXJJbmRleF1cblxuICAgIGNvbnN0IGlzQ2hhclN0cmluZyA9IGNoYXIgPT09ICdcIicgfHwgY2hhciA9PT0gJ1xcJycgfHwgY2hhciA9PT0gJ2AnXG5cbiAgICBpZiAoaXNDaGFyU3RyaW5nICYmIGJlZm9yZUNoYXIgIT09ICdcXFxcJykge1xuICAgICAgaWYgKGluU3RyaW5nID09PSBjaGFyKVxuICAgICAgICBpblN0cmluZyA9IG51bGxcbiAgICAgIGVsc2UgaWYgKCFpblN0cmluZylcbiAgICAgICAgaW5TdHJpbmcgPSBjaGFyXG4gICAgfVxuXG4gICAgaWYgKCFpblN0cmluZykge1xuICAgICAgaWYgKGNoYXIgPT09ICcoJylcbiAgICAgICAgc3RhcnRlZEJyYWNlcnMrK1xuICAgICAgaWYgKGNoYXIgPT09ICcpJylcbiAgICAgICAgZW5kZWRCcmFjZXJzKytcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRlZEJyYWNlcnMgJiYgZW5kZWRCcmFjZXJzICYmIHN0YXJ0ZWRCcmFjZXJzID09PSBlbmRlZEJyYWNlcnMpXG4gICAgICByZXR1cm4gY2hhckluZGV4XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9XG4iXSwibmFtZXMiOlsicGljb2NvbG9yc01vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFJLEdBQUcsR0FBRyxXQUFjO0FBQ3hCO0FBQ0EsSUFBSSxnQkFBZ0I7QUFDcEIsQ0FBQyxFQUFFLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHO0FBQzlCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQ2xDLEVBQUUsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPO0FBQzlCLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7QUFDaEQsRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBQztBQUN0QjtBQUNBLElBQUksU0FBUztBQUNiLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sR0FBRyxJQUFJO0FBQzdCLENBQUMsS0FBSyxJQUFJO0FBQ1YsRUFBRSxJQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBSztBQUN6QixFQUFFLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUM7QUFDaEQsRUFBRSxPQUFPLENBQUMsS0FBSztBQUNmLEtBQUssSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLO0FBQy9ELEtBQUssSUFBSSxHQUFHLE1BQU0sR0FBRyxLQUFLO0FBQzFCLEdBQUU7QUFDRjtBQUNBLElBQUksWUFBWSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxLQUFLO0FBQ3RELENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsUUFBTztBQUNqRCxDQUFDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUM7QUFDakQsQ0FBQyxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQztBQUNuQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRztBQUN2RixFQUFDO0FBQ0Q7QUFDQSxJQUFJLFlBQVksR0FBRyxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsTUFBTTtBQUNwRCxDQUFDLGdCQUFnQixFQUFFLE9BQU87QUFDMUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTTtBQUNwRCxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxNQUFNO0FBQzdFLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLE1BQU07QUFDNUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUM1RCxDQUFDLFNBQVMsRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQy9ELENBQUMsT0FBTyxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDN0QsQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUM1RCxDQUFDLGFBQWEsRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQ25FLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDNUQsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUMxRCxDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQzVELENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDN0QsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUMzRCxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQzlELENBQUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDM0QsQ0FBQyxLQUFLLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxV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RTtBQUNoQyxFQUFFLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRDs7QUN4RU8sU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0FBQ2hDLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hJLENBQUM7QUFJTSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDakMsRUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDN0YsQ0FBQztBQUNNLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUNoQyxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUFDTSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUU7QUFDakMsRUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEgsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ00sU0FBUyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7QUFDekMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDckMsSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDZixJQUFJLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7QUFDckcsSUFBSSxPQUFPLE9BQU8sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQzlFLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNNLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRTtBQUMvQixFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDNUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUk7QUFDL0MsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxHQUFHO0FBQ0gsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNmOztBQzVCeUIsT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRO0FBQy9DLFNBQVMsc0JBQXNCLENBQUMsS0FBSyxFQUFFO0FBQzlDLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLEVBQUUsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLEVBQUUsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQ2hDLElBQUksSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUU7QUFDL0UsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFCLEtBQUssTUFBTTtBQUNYLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTCxHQUFHO0FBQ0gsRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUMzQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakMsRUFBRSxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBQ00sU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQ2xDLEVBQUUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBQ00sZUFBZSxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsYUFBYSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7QUFDbEgsRUFBRSxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDakMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixFQUFFLFVBQVUsQ0FBQztBQUN6RztBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixFQUFFLElBQUksQ0FBQyxhQUFhO0FBQ3BCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsRUFBRSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8scUJBQVMsb0NBQUMsQ0FBQztBQUMxQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDM0MsSUFBSSxJQUFJLEVBQUUsU0FBUztBQUNuQixJQUFJLElBQUksRUFBRSxTQUFTO0FBQ25CLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRSxJQUFJLE9BQU8sRUFBRTtBQUNmLElBQUksTUFBTSxDQUFDLE1BQU0sT0FBTyxxQkFBb0IsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUNNLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLEVBQUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckIsRUFBRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDdEIsRUFBRSxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFDekIsRUFBRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsRUFBRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDeEIsRUFBRSxPQUFPLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ25DLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqQyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ2hCLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksTUFBTSxZQUFZLEdBQUcsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUM7QUFDdEUsSUFBSSxJQUFJLFlBQVksSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO0FBQzdDLE1BQU0sSUFBSSxRQUFRLEtBQUssSUFBSTtBQUMzQixRQUFRLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDeEIsV0FBVyxJQUFJLENBQUMsUUFBUTtBQUN4QixRQUFRLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDeEIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNuQixNQUFNLElBQUksSUFBSSxLQUFLLEdBQUc7QUFDdEIsUUFBUSxjQUFjLEVBQUUsQ0FBQztBQUN6QixNQUFNLElBQUksSUFBSSxLQUFLLEdBQUc7QUFDdEIsUUFBUSxZQUFZLEVBQUUsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxJQUFJLGNBQWMsSUFBSSxZQUFZLElBQUksY0FBYyxLQUFLLFlBQVk7QUFDekUsTUFBTSxPQUFPLFNBQVMsQ0FBQztBQUN2QixHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkOzsifQ==
package/dist/index.d.ts CHANGED
@@ -228,19 +228,6 @@ declare class Any extends AsymmetricMatcher<any> {
228
228
  toAsymmetricMatcher(): string;
229
229
  }
230
230
 
231
- interface StartOfSourceMap {
232
- file?: string;
233
- sourceRoot?: string;
234
- }
235
-
236
- interface RawSourceMap extends StartOfSourceMap {
237
- version: string;
238
- sources: string[];
239
- names: string[];
240
- sourcesContent?: string[];
241
- mappings: string;
242
- }
243
-
244
231
  interface DepsHandlingOptions {
245
232
  external?: (string | RegExp)[];
246
233
  inline?: (string | RegExp)[];
@@ -349,7 +336,7 @@ declare class Vitest {
349
336
  private _onRestartListeners;
350
337
  constructor();
351
338
  setServer(options: UserConfig, server: ViteDevServer): Promise<void>;
352
- getConfig(): any;
339
+ getConfig(): ResolvedConfig;
353
340
  start(filters?: string[]): Promise<void>;
354
341
  private getTestDependencies;
355
342
  filterTestsBySource(tests: string[]): Promise<string[]>;
@@ -525,6 +512,7 @@ interface C8Options {
525
512
  include?: string[];
526
513
  skipFull?: boolean;
527
514
  extension?: string | string[];
515
+ all?: boolean;
528
516
  }
529
517
  interface ResolvedC8Options extends Required<C8Options> {
530
518
  tempDirectory: string;
@@ -614,6 +602,12 @@ declare type Awaitable<T> = T | PromiseLike<T>;
614
602
  declare type Nullable<T> = T | null | undefined;
615
603
  declare type Arrayable<T> = T | Array<T>;
616
604
  declare type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
605
+ declare type MergeInsertions<T> = T extends object ? {
606
+ [K in keyof T]: MergeInsertions<T[K]>;
607
+ } : T;
608
+ declare type DeepMerge<F, S> = MergeInsertions<{
609
+ [K in keyof F | keyof S]: K extends keyof S & keyof F ? DeepMerge<F[K], S[K]> : K extends keyof S ? S[K] : K extends keyof F ? F[K] : never;
610
+ }>;
617
611
  interface Constructable {
618
612
  new (...args: any[]): any;
619
613
  }
@@ -662,6 +656,17 @@ interface ModuleGraphData {
662
656
  externalized: string[];
663
657
  inlined: string[];
664
658
  }
659
+ interface StartOfSourceMap {
660
+ file?: string;
661
+ sourceRoot?: string;
662
+ }
663
+ interface RawSourceMap extends StartOfSourceMap {
664
+ version: string;
665
+ sources: string[];
666
+ names: string[];
667
+ sourcesContent?: string[];
668
+ mappings: string;
669
+ }
665
670
 
666
671
  declare type ChainableFunction<T extends string, Args extends any[], R = any> = {
667
672
  (...args: Args): R;
@@ -834,7 +839,7 @@ interface InlineConfig {
834
839
  *
835
840
  * @default true
836
841
  */
837
- interpretDefault?: boolean;
842
+ interopDefault?: boolean;
838
843
  /**
839
844
  * When a dependency is a valid ESM package, try to guess the cjs version based on the path.
840
845
  * This will significantly improve the performance in huge repo, but might potentially
@@ -845,9 +850,13 @@ interface InlineConfig {
845
850
  fallbackCJS?: boolean;
846
851
  };
847
852
  /**
848
- * Register apis globally
849
- *
850
- * @default false
853
+ * Register apis globally
854
+ *
855
+ * @default false
856
+ */
857
+ globals?: boolean;
858
+ /**
859
+ * @deprecated
851
860
  */
852
861
  global?: boolean;
853
862
  /**
@@ -1176,6 +1185,7 @@ declare function fn<TArgs extends any[] = any[], R = any>(implementation: (...ar
1176
1185
  declare class VitestUtils {
1177
1186
  private _timers;
1178
1187
  private _mockedDate;
1188
+ private _mocker;
1179
1189
  constructor();
1180
1190
  useFakeTimers(): void;
1181
1191
  useRealTimers(): void;
@@ -1189,6 +1199,7 @@ declare class VitestUtils {
1189
1199
  getMockedDate(): string | number | Date | null;
1190
1200
  spyOn: typeof spyOn;
1191
1201
  fn: typeof fn;
1202
+ private getImporter;
1192
1203
  /**
1193
1204
  * Makes all `imports` to passed module to be mocked.
1194
1205
  * - If there is a factory, will return it's result. The call to `vi.mock` is hoisted to the top of the file,
@@ -1207,6 +1218,8 @@ declare class VitestUtils {
1207
1218
  * @param path Path to the module. Can be aliased, if your config suppors it
1208
1219
  */
1209
1220
  unmock(path: string): void;
1221
+ doMock(path: string, factory?: () => any): void;
1222
+ doUnmock(path: string): void;
1210
1223
  /**
1211
1224
  * Imports module, bypassing all checks if it should be mocked.
1212
1225
  * Can be useful if you want to mock module partially.
@@ -1264,6 +1277,7 @@ interface WebSocketHandlers {
1264
1277
  readFile(id: string): Promise<string>;
1265
1278
  writeFile(id: string, content: string): Promise<void>;
1266
1279
  rerun(files: string[]): Promise<void>;
1280
+ updateSnapshot(file: File): Promise<void>;
1267
1281
  }
1268
1282
  interface WebSocketEvents extends Pick<Reporter, 'onCollected' | 'onTaskUpdate' | 'onUserConsoleLog'> {
1269
1283
  }
@@ -1372,4 +1386,4 @@ declare global {
1372
1386
  }
1373
1387
  }
1374
1388
 
1375
- export { ApiConfig, ArgumentsType, Arrayable, Awaitable, BuiltinEnvironment, Constructable, DoneCallback, EnhancedSpy, Environment, EnvironmentOptions, EnvironmentReturn, ErrorWithDiff, FetchFunction, File, HookListener, InlineConfig, JSDOMOptions, JestMockCompat, JestMockCompatContext, JestMockCompatFn, MaybeMocked, MaybeMockedConstructor, MaybeMockedDeep, MockWithArgs, MockedFunction, MockedFunctionDeep, MockedObject, MockedObjectDeep, ModuleCache, ModuleGraphData, Nullable, ParsedStack, Position, Reporter, ResolveIdFunction, ResolvedConfig, RunMode, RuntimeContext, SnapshotData, SnapshotMatchOptions, SnapshotResult, SnapshotStateOptions, SnapshotSummary, SnapshotUpdateState, Suite, SuiteCollector, SuiteHooks, Task, TaskBase, TaskResult, TaskResultPack, TaskState, Test, TestCollector, TestFactory, TestFunction, TransformResultWithSource, UncheckedSnapshot, UserConfig, UserConsoleLog, WebSocketEvents, WebSocketHandlers, WorkerContext, WorkerRPC, afterAll, afterEach, beforeAll, beforeEach, describe, expect, fn, isMockFunction, it, spies, spyOn, suite, test, vi, vitest };
1389
+ export { ApiConfig, ArgumentsType, Arrayable, Awaitable, BuiltinEnvironment, Constructable, DeepMerge, DoneCallback, EnhancedSpy, Environment, EnvironmentOptions, EnvironmentReturn, ErrorWithDiff, FetchFunction, File, HookListener, InlineConfig, JSDOMOptions, JestMockCompat, JestMockCompatContext, JestMockCompatFn, MaybeMocked, MaybeMockedConstructor, MaybeMockedDeep, MergeInsertions, MockWithArgs, MockedFunction, MockedFunctionDeep, MockedObject, MockedObjectDeep, ModuleCache, ModuleGraphData, Nullable, ParsedStack, Position, RawSourceMap, Reporter, ResolveIdFunction, ResolvedConfig, RunMode, RuntimeContext, SnapshotData, SnapshotMatchOptions, SnapshotResult, SnapshotStateOptions, SnapshotSummary, SnapshotUpdateState, StartOfSourceMap, Suite, SuiteCollector, SuiteHooks, Task, TaskBase, TaskResult, TaskResultPack, TaskState, Test, TestCollector, TestFactory, TestFunction, TransformResultWithSource, UncheckedSnapshot, UserConfig, UserConsoleLog, WebSocketEvents, WebSocketHandlers, WorkerContext, WorkerRPC, afterAll, afterEach, beforeAll, beforeEach, describe, expect, fn, isMockFunction, it, spies, spyOn, suite, test, vi, vitest };
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
- export { d as describe, i as it, c as suite, t as test, e as vi, v as vitest } from './vi-b04d9662.js';
2
- export { a as afterAll, d as afterEach, b as beforeAll, c as beforeEach, e as expect } from './index-fb06fa81.js';
1
+ export { d as describe, i as it, c as suite, t as test, e as vi, v as vitest } from './vi-93ff6a1d.js';
2
+ export { a as afterAll, d as afterEach, b as beforeAll, c as beforeEach, e as expect } from './index-3e5e793d.js';
3
3
  export { f as fn, i as isMockFunction, s as spies, a as spyOn } from './jest-mock-113430de.js';
4
4
  export { assert, default as chai, should } from 'chai';
5
- import './index-f2daefb8.js';
5
+ import './index-f7fb0b8e.js';
6
6
  import 'tty';
7
7
  import 'local-pkg';
8
8
  import './_commonjsHelpers-c9e3b764.js';
9
+ import './source-map-1e3d1395.js';
9
10
  import 'tinyspy';
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzsifQ==
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7In0=
package/dist/node.d.ts CHANGED
@@ -1,18 +1,5 @@
1
1
  import { ViteDevServer, TransformResult, CommonServerOptions, UserConfig as UserConfig$1, Plugin as Plugin$1 } from 'vite';
2
2
 
3
- interface StartOfSourceMap {
4
- file?: string;
5
- sourceRoot?: string;
6
- }
7
-
8
- interface RawSourceMap extends StartOfSourceMap {
9
- version: string;
10
- sources: string[];
11
- names: string[];
12
- sourcesContent?: string[];
13
- mappings: string;
14
- }
15
-
16
3
  interface DepsHandlingOptions {
17
4
  external?: (string | RegExp)[];
18
5
  inline?: (string | RegExp)[];
@@ -307,6 +294,7 @@ interface C8Options {
307
294
  include?: string[];
308
295
  skipFull?: boolean;
309
296
  extension?: string | string[];
297
+ all?: boolean;
310
298
  }
311
299
  interface ResolvedC8Options extends Required<C8Options> {
312
300
  tempDirectory: string;
@@ -423,6 +411,17 @@ interface ErrorWithDiff extends Error {
423
411
  expected?: any;
424
412
  operator?: string;
425
413
  }
414
+ interface StartOfSourceMap {
415
+ file?: string;
416
+ sourceRoot?: string;
417
+ }
418
+ interface RawSourceMap extends StartOfSourceMap {
419
+ version: string;
420
+ sources: string[];
421
+ names: string[];
422
+ sourcesContent?: string[];
423
+ mappings: string;
424
+ }
426
425
 
427
426
  declare type RunMode = 'run' | 'skip' | 'only' | 'todo';
428
427
  declare type TaskState = RunMode | 'pass' | 'fail';
@@ -551,7 +550,7 @@ interface InlineConfig {
551
550
  *
552
551
  * @default true
553
552
  */
554
- interpretDefault?: boolean;
553
+ interopDefault?: boolean;
555
554
  /**
556
555
  * When a dependency is a valid ESM package, try to guess the cjs version based on the path.
557
556
  * This will significantly improve the performance in huge repo, but might potentially
@@ -562,9 +561,13 @@ interface InlineConfig {
562
561
  fallbackCJS?: boolean;
563
562
  };
564
563
  /**
565
- * Register apis globally
566
- *
567
- * @default false
564
+ * Register apis globally
565
+ *
566
+ * @default false
567
+ */
568
+ globals?: boolean;
569
+ /**
570
+ * @deprecated
568
571
  */
569
572
  global?: boolean;
570
573
  /**
@@ -821,7 +824,7 @@ declare class Vitest {
821
824
  private _onRestartListeners;
822
825
  constructor();
823
826
  setServer(options: UserConfig, server: ViteDevServer): Promise<void>;
824
- getConfig(): any;
827
+ getConfig(): ResolvedConfig;
825
828
  start(filters?: string[]): Promise<void>;
826
829
  private getTestDependencies;
827
830
  filterTestsBySource(tests: string[]): Promise<string[]>;
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
1
- export { V as VitestPlugin, c as createVitest } from './create-21435b9d.js';
1
+ export { V as VitestPlugin, c as createVitest } from './create-7fb1c46e.js';
2
2
  import './index-1964368a.js';
3
3
  import 'path';
4
4
  import 'vite';
@@ -10,17 +10,18 @@ import 'os';
10
10
  import 'util';
11
11
  import 'stream';
12
12
  import 'events';
13
- import './index-f2daefb8.js';
13
+ import './index-f7fb0b8e.js';
14
14
  import 'tty';
15
15
  import 'local-pkg';
16
- import './index-058a289b.js';
16
+ import './index-ba307c22.js';
17
17
  import 'module';
18
18
  import 'assert';
19
19
  import 'perf_hooks';
20
- import './diff-0d077da9.js';
21
- import './index-648e7ab2.js';
20
+ import './diff-6676ffce.js';
21
+ import './source-map-1e3d1395.js';
22
+ import './index-7975be53.js';
22
23
  import './_commonjsHelpers-c9e3b764.js';
23
24
  import 'worker_threads';
24
25
  import 'tinypool';
25
26
  import './magic-string.es-94000aea.js';
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=