vitest 0.0.129 → 0.0.133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_commonjsHelpers-c9e3b764.js +1 -0
- package/dist/cli.js +10 -9
- package/dist/constants-0211a379.js +34 -0
- package/dist/diff-18d4a7eb.js +4750 -0
- package/dist/entry.js +94 -33
- package/dist/externalize-2f63779d.js +1 -0
- package/dist/global-5d1fb309.js +21 -0
- package/dist/index-26cb6e63.js +1644 -0
- package/dist/index-354a6abd.js +40 -0
- package/dist/index-4cd25949.js +782 -0
- package/dist/index-720a83c6.js +396 -0
- package/dist/index-7975be53.js +331 -0
- package/dist/index-7f7acd60.js +8548 -0
- package/dist/index-e909c175.js +63 -0
- package/dist/index-fa899e66.js +5708 -0
- package/dist/index.d.ts +142 -27
- package/dist/index.js +4 -3
- package/dist/jest-mock-30625866.js +1 -0
- package/dist/magic-string.es-94000aea.js +1361 -0
- package/dist/node.d.ts +111 -4
- package/dist/node.js +9 -8
- package/dist/rpc-8c7cc374.js +1 -0
- package/dist/setup-5aaf533e.js +4365 -0
- package/dist/vi-aec007e7.js +3461 -0
- package/dist/worker.js +11 -7
- package/package.json +9 -9
- package/dist/constants-868b9a2e.js +0 -33
- package/dist/diff-be830986.js +0 -4751
- package/dist/global-0254dd68.js +0 -20
- package/dist/index-06712022.js +0 -39
- package/dist/index-42a3a132.js +0 -366
- package/dist/index-42d44ee5.js +0 -1643
- package/dist/index-93dcb598.js +0 -5707
- package/dist/index-a73f33e0.js +0 -62
- package/dist/index-cb02ee01.js +0 -330
- package/dist/index-cce5de77.js +0 -781
- package/dist/index-d30b5ed0.js +0 -8579
- package/dist/magic-string.es-98a8bfa0.js +0 -1360
- package/dist/setup-6e09a65a.js +0 -4364
- package/dist/vi-fe26a646.js +0 -3460
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { fileURLToPath, pathToFileURL } from 'url';
|
|
2
|
+
import require$$0 from 'tty';
|
|
3
|
+
import { isPackageExists } from 'local-pkg';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
|
|
6
|
+
var picocolors = {exports: {}};
|
|
7
|
+
|
|
8
|
+
let tty = require$$0;
|
|
9
|
+
|
|
10
|
+
let isColorSupported =
|
|
11
|
+
!("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
|
|
12
|
+
("FORCE_COLOR" in process.env ||
|
|
13
|
+
process.argv.includes("--color") ||
|
|
14
|
+
process.platform === "win32" ||
|
|
15
|
+
(tty.isatty(1) && process.env.TERM !== "dumb") ||
|
|
16
|
+
"CI" in process.env);
|
|
17
|
+
|
|
18
|
+
let formatter =
|
|
19
|
+
(open, close, replace = open) =>
|
|
20
|
+
input => {
|
|
21
|
+
let string = "" + input;
|
|
22
|
+
let index = string.indexOf(close, open.length);
|
|
23
|
+
return ~index
|
|
24
|
+
? open + replaceClose(string, close, replace, index) + close
|
|
25
|
+
: open + string + close
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
let replaceClose = (string, close, replace, index) => {
|
|
29
|
+
let start = string.substring(0, index) + replace;
|
|
30
|
+
let end = string.substring(index + close.length);
|
|
31
|
+
let nextIndex = end.indexOf(close);
|
|
32
|
+
return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
let createColors = (enabled = isColorSupported) => ({
|
|
36
|
+
isColorSupported: enabled,
|
|
37
|
+
reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
|
|
38
|
+
bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
|
|
39
|
+
dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
|
|
40
|
+
italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
|
|
41
|
+
underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
|
|
42
|
+
inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
|
|
43
|
+
hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
|
|
44
|
+
strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
|
|
45
|
+
black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
|
|
46
|
+
red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
|
|
47
|
+
green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
|
|
48
|
+
yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
|
|
49
|
+
blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
|
|
50
|
+
magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
|
|
51
|
+
cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
|
|
52
|
+
white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
|
|
53
|
+
gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
|
|
54
|
+
bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
|
|
55
|
+
bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
|
|
56
|
+
bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
|
|
57
|
+
bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
|
|
58
|
+
bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
|
|
59
|
+
bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
|
|
60
|
+
bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
|
|
61
|
+
bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
picocolors.exports = createColors();
|
|
65
|
+
picocolors.exports.createColors = createColors;
|
|
66
|
+
|
|
67
|
+
var c = picocolors.exports;
|
|
68
|
+
|
|
69
|
+
function normalizeWindowsPath(input = "") {
|
|
70
|
+
if (!input.includes("\\")) {
|
|
71
|
+
return input;
|
|
72
|
+
}
|
|
73
|
+
return input.replace(/\\/g, "/");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const _UNC_REGEX = /^[/][/]/;
|
|
77
|
+
const _UNC_DRIVE_REGEX = /^[/][/]([.]{1,2}[/])?([a-zA-Z]):[/]/;
|
|
78
|
+
const _IS_ABSOLUTE_RE = /^\/|^\\|^[a-zA-Z]:[/\\]/;
|
|
79
|
+
const sep = "/";
|
|
80
|
+
const delimiter = ":";
|
|
81
|
+
const normalize = function(path2) {
|
|
82
|
+
if (path2.length === 0) {
|
|
83
|
+
return ".";
|
|
84
|
+
}
|
|
85
|
+
path2 = normalizeWindowsPath(path2);
|
|
86
|
+
const isUNCPath = path2.match(_UNC_REGEX);
|
|
87
|
+
const hasUNCDrive = isUNCPath && path2.match(_UNC_DRIVE_REGEX);
|
|
88
|
+
const isPathAbsolute = isAbsolute(path2);
|
|
89
|
+
const trailingSeparator = path2[path2.length - 1] === "/";
|
|
90
|
+
path2 = normalizeString(path2, !isPathAbsolute);
|
|
91
|
+
if (path2.length === 0) {
|
|
92
|
+
if (isPathAbsolute) {
|
|
93
|
+
return "/";
|
|
94
|
+
}
|
|
95
|
+
return trailingSeparator ? "./" : ".";
|
|
96
|
+
}
|
|
97
|
+
if (trailingSeparator) {
|
|
98
|
+
path2 += "/";
|
|
99
|
+
}
|
|
100
|
+
if (isUNCPath) {
|
|
101
|
+
if (hasUNCDrive) {
|
|
102
|
+
return `//./${path2}`;
|
|
103
|
+
}
|
|
104
|
+
return `//${path2}`;
|
|
105
|
+
}
|
|
106
|
+
return isPathAbsolute && !isAbsolute(path2) ? `/${path2}` : path2;
|
|
107
|
+
};
|
|
108
|
+
const join = function(...args) {
|
|
109
|
+
if (args.length === 0) {
|
|
110
|
+
return ".";
|
|
111
|
+
}
|
|
112
|
+
let joined;
|
|
113
|
+
for (let i = 0; i < args.length; ++i) {
|
|
114
|
+
const arg = args[i];
|
|
115
|
+
if (arg.length > 0) {
|
|
116
|
+
if (joined === void 0) {
|
|
117
|
+
joined = arg;
|
|
118
|
+
} else {
|
|
119
|
+
joined += `/${arg}`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (joined === void 0) {
|
|
124
|
+
return ".";
|
|
125
|
+
}
|
|
126
|
+
return normalize(joined);
|
|
127
|
+
};
|
|
128
|
+
const resolve = function(...args) {
|
|
129
|
+
args = args.map((arg) => normalizeWindowsPath(arg));
|
|
130
|
+
let resolvedPath = "";
|
|
131
|
+
let resolvedAbsolute = false;
|
|
132
|
+
for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
|
133
|
+
const path2 = i >= 0 ? args[i] : process.cwd();
|
|
134
|
+
if (path2.length === 0) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
resolvedPath = `${path2}/${resolvedPath}`;
|
|
138
|
+
resolvedAbsolute = isAbsolute(path2);
|
|
139
|
+
}
|
|
140
|
+
resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
|
|
141
|
+
if (resolvedAbsolute && !isAbsolute(resolvedPath)) {
|
|
142
|
+
return `/${resolvedPath}`;
|
|
143
|
+
}
|
|
144
|
+
return resolvedPath.length > 0 ? resolvedPath : ".";
|
|
145
|
+
};
|
|
146
|
+
function normalizeString(path2, allowAboveRoot) {
|
|
147
|
+
let res = "";
|
|
148
|
+
let lastSegmentLength = 0;
|
|
149
|
+
let lastSlash = -1;
|
|
150
|
+
let dots = 0;
|
|
151
|
+
let char = null;
|
|
152
|
+
for (let i = 0; i <= path2.length; ++i) {
|
|
153
|
+
if (i < path2.length) {
|
|
154
|
+
char = path2[i];
|
|
155
|
+
} else if (char === "/") {
|
|
156
|
+
break;
|
|
157
|
+
} else {
|
|
158
|
+
char = "/";
|
|
159
|
+
}
|
|
160
|
+
if (char === "/") {
|
|
161
|
+
if (lastSlash === i - 1 || dots === 1) ; else if (dots === 2) {
|
|
162
|
+
if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
|
|
163
|
+
if (res.length > 2) {
|
|
164
|
+
const lastSlashIndex = res.lastIndexOf("/");
|
|
165
|
+
if (lastSlashIndex === -1) {
|
|
166
|
+
res = "";
|
|
167
|
+
lastSegmentLength = 0;
|
|
168
|
+
} else {
|
|
169
|
+
res = res.slice(0, lastSlashIndex);
|
|
170
|
+
lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
|
|
171
|
+
}
|
|
172
|
+
lastSlash = i;
|
|
173
|
+
dots = 0;
|
|
174
|
+
continue;
|
|
175
|
+
} else if (res.length !== 0) {
|
|
176
|
+
res = "";
|
|
177
|
+
lastSegmentLength = 0;
|
|
178
|
+
lastSlash = i;
|
|
179
|
+
dots = 0;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (allowAboveRoot) {
|
|
184
|
+
res += res.length > 0 ? "/.." : "..";
|
|
185
|
+
lastSegmentLength = 2;
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
if (res.length > 0) {
|
|
189
|
+
res += `/${path2.slice(lastSlash + 1, i)}`;
|
|
190
|
+
} else {
|
|
191
|
+
res = path2.slice(lastSlash + 1, i);
|
|
192
|
+
}
|
|
193
|
+
lastSegmentLength = i - lastSlash - 1;
|
|
194
|
+
}
|
|
195
|
+
lastSlash = i;
|
|
196
|
+
dots = 0;
|
|
197
|
+
} else if (char === "." && dots !== -1) {
|
|
198
|
+
++dots;
|
|
199
|
+
} else {
|
|
200
|
+
dots = -1;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return res;
|
|
204
|
+
}
|
|
205
|
+
const isAbsolute = function(p) {
|
|
206
|
+
return _IS_ABSOLUTE_RE.test(p);
|
|
207
|
+
};
|
|
208
|
+
const toNamespacedPath = function(p) {
|
|
209
|
+
return normalizeWindowsPath(p);
|
|
210
|
+
};
|
|
211
|
+
const extname = function(p) {
|
|
212
|
+
return path.posix.extname(normalizeWindowsPath(p));
|
|
213
|
+
};
|
|
214
|
+
const relative = function(from, to) {
|
|
215
|
+
return path.posix.relative(normalizeWindowsPath(from), normalizeWindowsPath(to));
|
|
216
|
+
};
|
|
217
|
+
const dirname = function(p) {
|
|
218
|
+
return path.posix.dirname(normalizeWindowsPath(p));
|
|
219
|
+
};
|
|
220
|
+
const format = function(p) {
|
|
221
|
+
return normalizeWindowsPath(path.posix.format(p));
|
|
222
|
+
};
|
|
223
|
+
const basename = function(p, ext) {
|
|
224
|
+
return path.posix.basename(normalizeWindowsPath(p), ext);
|
|
225
|
+
};
|
|
226
|
+
const parse = function(p) {
|
|
227
|
+
return path.posix.parse(normalizeWindowsPath(p));
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const _path = /*#__PURE__*/Object.freeze({
|
|
231
|
+
__proto__: null,
|
|
232
|
+
sep: sep,
|
|
233
|
+
delimiter: delimiter,
|
|
234
|
+
normalize: normalize,
|
|
235
|
+
join: join,
|
|
236
|
+
resolve: resolve,
|
|
237
|
+
normalizeString: normalizeString,
|
|
238
|
+
isAbsolute: isAbsolute,
|
|
239
|
+
toNamespacedPath: toNamespacedPath,
|
|
240
|
+
extname: extname,
|
|
241
|
+
relative: relative,
|
|
242
|
+
dirname: dirname,
|
|
243
|
+
format: format,
|
|
244
|
+
basename: basename,
|
|
245
|
+
parse: parse
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
const index = {
|
|
249
|
+
..._path
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
function notNullish(v) {
|
|
253
|
+
return v != null;
|
|
254
|
+
}
|
|
255
|
+
function slash(str) {
|
|
256
|
+
return str.replace(/\\/g, "/");
|
|
257
|
+
}
|
|
258
|
+
function mergeSlashes(str) {
|
|
259
|
+
return str.replace(/\/\//g, "/");
|
|
260
|
+
}
|
|
261
|
+
const noop = () => {
|
|
262
|
+
};
|
|
263
|
+
function toArray(array) {
|
|
264
|
+
array = array || [];
|
|
265
|
+
if (Array.isArray(array))
|
|
266
|
+
return array;
|
|
267
|
+
return [array];
|
|
268
|
+
}
|
|
269
|
+
function getTests(suite) {
|
|
270
|
+
return toArray(suite).flatMap((s) => s.type === "test" ? [s] : s.tasks.flatMap((c) => c.type === "test" ? [c] : getTests(c)));
|
|
271
|
+
}
|
|
272
|
+
function getSuites(suite) {
|
|
273
|
+
return toArray(suite).flatMap((s) => s.type === "suite" ? [s, ...getSuites(s.tasks)] : []);
|
|
274
|
+
}
|
|
275
|
+
function hasTests(suite) {
|
|
276
|
+
return toArray(suite).some((s) => s.tasks.some((c) => c.type === "test" || hasTests(c)));
|
|
277
|
+
}
|
|
278
|
+
function hasFailed(suite) {
|
|
279
|
+
return toArray(suite).some((s) => {
|
|
280
|
+
var _a;
|
|
281
|
+
return ((_a = s.result) == null ? void 0 : _a.state) === "fail" || s.type === "suite" && hasFailed(s.tasks);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
function getNames(task) {
|
|
285
|
+
const names = [task.name];
|
|
286
|
+
let current = task;
|
|
287
|
+
while ((current == null ? void 0 : current.suite) || (current == null ? void 0 : current.file)) {
|
|
288
|
+
current = current.suite || current.file;
|
|
289
|
+
if (current == null ? void 0 : current.name)
|
|
290
|
+
names.unshift(current.name);
|
|
291
|
+
}
|
|
292
|
+
return names;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
var __defProp = Object.defineProperty;
|
|
296
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
297
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
298
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
299
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
300
|
+
var __spreadValues = (a, b) => {
|
|
301
|
+
for (var prop in b || (b = {}))
|
|
302
|
+
if (__hasOwnProp.call(b, prop))
|
|
303
|
+
__defNormalProp(a, prop, b[prop]);
|
|
304
|
+
if (__getOwnPropSymbols)
|
|
305
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
306
|
+
if (__propIsEnum.call(b, prop))
|
|
307
|
+
__defNormalProp(a, prop, b[prop]);
|
|
308
|
+
}
|
|
309
|
+
return a;
|
|
310
|
+
};
|
|
311
|
+
const isWindows = process.platform === "win32";
|
|
312
|
+
function partitionSuiteChildren(suite) {
|
|
313
|
+
let tasksGroup = [];
|
|
314
|
+
const tasksGroups = [];
|
|
315
|
+
for (const c2 of suite.tasks) {
|
|
316
|
+
if (tasksGroup.length === 0 || c2.concurrent === tasksGroup[0].concurrent) {
|
|
317
|
+
tasksGroup.push(c2);
|
|
318
|
+
} else {
|
|
319
|
+
tasksGroups.push(tasksGroup);
|
|
320
|
+
tasksGroup = [c2];
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (tasksGroup.length > 0)
|
|
324
|
+
tasksGroups.push(tasksGroup);
|
|
325
|
+
return tasksGroups;
|
|
326
|
+
}
|
|
327
|
+
function getFullName(task) {
|
|
328
|
+
return getNames(task).join(c.dim(" > "));
|
|
329
|
+
}
|
|
330
|
+
async function ensurePackageInstalled(dependency, promptInstall = !process.env.CI && process.stdout.isTTY) {
|
|
331
|
+
if (isPackageExists(dependency))
|
|
332
|
+
return true;
|
|
333
|
+
process.stderr.write(c.red(`${c.inverse(c.red(" MISSING DEP "))} Can not find dependency '${dependency}'
|
|
334
|
+
|
|
335
|
+
`));
|
|
336
|
+
if (!promptInstall)
|
|
337
|
+
return false;
|
|
338
|
+
const prompts = await import('./index-fa899e66.js').then(function (n) { return n.i; });
|
|
339
|
+
const { install } = await prompts.prompt({
|
|
340
|
+
type: "confirm",
|
|
341
|
+
name: "install",
|
|
342
|
+
message: c.reset(`Do you want to install ${c.green(dependency)}?`)
|
|
343
|
+
});
|
|
344
|
+
if (install) {
|
|
345
|
+
await (await import('./index-26cb6e63.js')).installPackage(dependency, { dev: true });
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
function isObject(item) {
|
|
351
|
+
return item != null && typeof item === "object" && !Array.isArray(item);
|
|
352
|
+
}
|
|
353
|
+
function deepMergeArray(target = [], source = []) {
|
|
354
|
+
const mergedOutput = Array.from(target);
|
|
355
|
+
source.forEach((sourceElement, index) => {
|
|
356
|
+
const targetElement = mergedOutput[index];
|
|
357
|
+
if (Array.isArray(target[index])) {
|
|
358
|
+
mergedOutput[index] = deepMergeArray(target[index], sourceElement);
|
|
359
|
+
} else if (isObject(targetElement)) {
|
|
360
|
+
mergedOutput[index] = deepMerge(target[index], sourceElement);
|
|
361
|
+
} else {
|
|
362
|
+
mergedOutput[index] = sourceElement;
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
return mergedOutput;
|
|
366
|
+
}
|
|
367
|
+
function deepMerge(target, source) {
|
|
368
|
+
if (isObject(target) && isObject(source)) {
|
|
369
|
+
const mergedOutput = __spreadValues({}, target);
|
|
370
|
+
Object.keys(source).forEach((key) => {
|
|
371
|
+
if (isObject(source[key]) && !source[key].$$typeof) {
|
|
372
|
+
if (!(key in target))
|
|
373
|
+
Object.assign(mergedOutput, { [key]: source[key] });
|
|
374
|
+
else
|
|
375
|
+
mergedOutput[key] = deepMerge(target[key], source[key]);
|
|
376
|
+
} else if (Array.isArray(source[key])) {
|
|
377
|
+
mergedOutput[key] = deepMergeArray(target[key], source[key]);
|
|
378
|
+
} else {
|
|
379
|
+
Object.assign(mergedOutput, { [key]: source[key] });
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
return mergedOutput;
|
|
383
|
+
} else if (Array.isArray(target) && Array.isArray(source)) {
|
|
384
|
+
return deepMergeArray(target, source);
|
|
385
|
+
}
|
|
386
|
+
return target;
|
|
387
|
+
}
|
|
388
|
+
function toFilePath(id, root) {
|
|
389
|
+
let absolute = slash(id).startsWith("/@fs/") ? id.slice(4) : id.startsWith(dirname(root)) ? id : id.startsWith("/") ? slash(resolve(root, id.slice(1))) : id;
|
|
390
|
+
if (absolute.startsWith("//"))
|
|
391
|
+
absolute = absolute.slice(1);
|
|
392
|
+
return isWindows && absolute.startsWith("/") ? fileURLToPath(pathToFileURL(absolute.slice(1)).href) : absolute;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export { isAbsolute as a, basename as b, c, dirname as d, ensurePackageInstalled as e, getSuites as f, getFullName as g, hasFailed as h, isObject as i, getTests as j, resolve as k, deepMerge as l, toFilePath as m, noop as n, notNullish as o, mergeSlashes as p, join as q, relative as r, slash as s, toArray as t, index as u, getNames as v, partitionSuiteChildren as w, hasTests as x };
|
|
396
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtNzIwYTgzYzYuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9waWNvY29sb3JzQDEuMC4wL25vZGVfbW9kdWxlcy9waWNvY29sb3JzL3BpY29jb2xvcnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGF0aGVAMC4yLjAvbm9kZV9tb2R1bGVzL3BhdGhlL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL3V0aWxzL3Rhc2tzLnRzIiwiLi4vc3JjL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImxldCB0dHkgPSByZXF1aXJlKFwidHR5XCIpXG5cbmxldCBpc0NvbG9yU3VwcG9ydGVkID1cblx0IShcIk5PX0NPTE9SXCIgaW4gcHJvY2Vzcy5lbnYgfHwgcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0KFwiRk9SQ0VfQ09MT1JcIiBpbiBwcm9jZXNzLmVudiB8fFxuXHRcdHByb2Nlc3MuYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHxcblx0XHRwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgfHxcblx0XHQodHR5LmlzYXR0eSgxKSAmJiBwcm9jZXNzLmVudi5URVJNICE9PSBcImR1bWJcIikgfHxcblx0XHRcIkNJXCIgaW4gcHJvY2Vzcy5lbnYpXG5cbmxldCBmb3JtYXR0ZXIgPVxuXHQob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKSA9PlxuXHRpbnB1dCA9PiB7XG5cdFx0bGV0IHN0cmluZyA9IFwiXCIgKyBpbnB1dFxuXHRcdGxldCBpbmRleCA9IHN0cmluZy5pbmRleE9mKGNsb3NlLCBvcGVuLmxlbmd0aClcblx0XHRyZXR1cm4gfmluZGV4XG5cdFx0XHQ/IG9wZW4gKyByZXBsYWNlQ2xvc2Uoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpICsgY2xvc2Vcblx0XHRcdDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdH1cblxubGV0IHJlcGxhY2VDbG9zZSA9IChzdHJpbmcsIGNsb3NlLCByZXBsYWNlLCBpbmRleCkgPT4ge1xuXHRsZXQgc3RhcnQgPSBzdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2Vcblx0bGV0IGVuZCA9IHN0cmluZy5zdWJzdHJpbmcoaW5kZXggKyBjbG9zZS5sZW5ndGgpXG5cdGxldCBuZXh0SW5kZXggPSBlbmQuaW5kZXhPZihjbG9zZSlcblx0cmV0dXJuIH5uZXh0SW5kZXggPyBzdGFydCArIHJlcGxhY2VDbG9zZShlbmQsIGNsb3NlLCByZXBsYWNlLCBuZXh0SW5kZXgpIDogc3RhcnQgKyBlbmRcbn1cblxubGV0IGNyZWF0ZUNvbG9ycyA9IChlbmFibGVkID0gaXNDb2xvclN1cHBvcnRlZCkgPT4gKHtcblx0aXNDb2xvclN1cHBvcnRlZDogZW5hYmxlZCxcblx0cmVzZXQ6IGVuYWJsZWQgPyBzID0+IGBcXHgxYlswbSR7c31cXHgxYlswbWAgOiBTdHJpbmcsXG5cdGJvbGQ6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlsxbVwiLCBcIlxceDFiWzIybVwiLCBcIlxceDFiWzIybVxceDFiWzFtXCIpIDogU3RyaW5nLFxuXHRkaW06IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlsybVwiLCBcIlxceDFiWzIybVwiLCBcIlxceDFiWzIybVxceDFiWzJtXCIpIDogU3RyaW5nLFxuXHRpdGFsaWM6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszbVwiLCBcIlxceDFiWzIzbVwiKSA6IFN0cmluZyxcblx0dW5kZXJsaW5lOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNG1cIiwgXCJcXHgxYlsyNG1cIikgOiBTdHJpbmcsXG5cdGludmVyc2U6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls3bVwiLCBcIlxceDFiWzI3bVwiKSA6IFN0cmluZyxcblx0aGlkZGVuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbOG1cIiwgXCJcXHgxYlsyOG1cIikgOiBTdHJpbmcsXG5cdHN0cmlrZXRocm91Z2g6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls5bVwiLCBcIlxceDFiWzI5bVwiKSA6IFN0cmluZyxcblx0YmxhY2s6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdHJlZDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMxbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0Z3JlZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszMm1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdHllbGxvdzogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0Ymx1ZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzM0bVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0bWFnZW50YTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzM1bVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0Y3lhbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0d2hpdGU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYlszN21cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdGdyYXk6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls5MG1cIiwgXCJcXHgxYlszOW1cIikgOiBTdHJpbmcsXG5cdGJnQmxhY2s6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0MG1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnUmVkOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDFtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ0dyZWVuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDJtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ1llbGxvdzogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQzbVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdCbHVlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDRtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ01hZ2VudGE6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0NW1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnQ3lhbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQ2bVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdXaGl0ZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQ3bVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQ29sb3JzKClcbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUNvbG9ycyA9IGNyZWF0ZUNvbG9yc1xuIiwiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGlucHV0ID0gXCJcIikge1xuICBpZiAoIWlucHV0LmluY2x1ZGVzKFwiXFxcXFwiKSkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG59XG5cbmNvbnN0IF9VTkNfUkVHRVggPSAvXlsvXVsvXS87XG5jb25zdCBfVU5DX0RSSVZFX1JFR0VYID0gL15bL11bL10oWy5dezEsMn1bL10pPyhbYS16QS1aXSk6Wy9dLztcbmNvbnN0IF9JU19BQlNPTFVURV9SRSA9IC9eXFwvfF5cXFxcfF5bYS16QS1aXTpbL1xcXFxdLztcbmNvbnN0IHNlcCA9IFwiL1wiO1xuY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5jb25zdCBub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoMikge1xuICBpZiAocGF0aDIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHBhdGgyID0gbm9ybWFsaXplV2luZG93c1BhdGgocGF0aDIpO1xuICBjb25zdCBpc1VOQ1BhdGggPSBwYXRoMi5tYXRjaChfVU5DX1JFR0VYKTtcbiAgY29uc3QgaGFzVU5DRHJpdmUgPSBpc1VOQ1BhdGggJiYgcGF0aDIubWF0Y2goX1VOQ19EUklWRV9SRUdFWCk7XG4gIGNvbnN0IGlzUGF0aEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoMik7XG4gIGNvbnN0IHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aDJbcGF0aDIubGVuZ3RoIC0gMV0gPT09IFwiL1wiO1xuICBwYXRoMiA9IG5vcm1hbGl6ZVN0cmluZyhwYXRoMiwgIWlzUGF0aEFic29sdXRlKTtcbiAgaWYgKHBhdGgyLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChpc1BhdGhBYnNvbHV0ZSkge1xuICAgICAgcmV0dXJuIFwiL1wiO1xuICAgIH1cbiAgICByZXR1cm4gdHJhaWxpbmdTZXBhcmF0b3IgPyBcIi4vXCIgOiBcIi5cIjtcbiAgfVxuICBpZiAodHJhaWxpbmdTZXBhcmF0b3IpIHtcbiAgICBwYXRoMiArPSBcIi9cIjtcbiAgfVxuICBpZiAoaXNVTkNQYXRoKSB7XG4gICAgaWYgKGhhc1VOQ0RyaXZlKSB7XG4gICAgICByZXR1cm4gYC8vLi8ke3BhdGgyfWA7XG4gICAgfVxuICAgIHJldHVybiBgLy8ke3BhdGgyfWA7XG4gIH1cbiAgcmV0dXJuIGlzUGF0aEFic29sdXRlICYmICFpc0Fic29sdXRlKHBhdGgyKSA/IGAvJHtwYXRoMn1gIDogcGF0aDI7XG59O1xuY29uc3Qgam9pbiA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIGxldCBqb2luZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoam9pbmVkID09PSB2b2lkIDApIHtcbiAgICAgICAgam9pbmVkID0gYXJnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgam9pbmVkICs9IGAvJHthcmd9YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGpvaW5lZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHJldHVybiBub3JtYWxpemUoam9pbmVkKTtcbn07XG5jb25zdCByZXNvbHZlID0gZnVuY3Rpb24oLi4uYXJncykge1xuICBhcmdzID0gYXJncy5tYXAoKGFyZykgPT4gbm9ybWFsaXplV2luZG93c1BhdGgoYXJnKSk7XG4gIGxldCByZXNvbHZlZFBhdGggPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gYXJncy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICBjb25zdCBwYXRoMiA9IGkgPj0gMCA/IGFyZ3NbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuICAgIGlmIChwYXRoMi5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRoMn0vJHtyZXNvbHZlZFBhdGh9YDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoMik7XG4gIH1cbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplU3RyaW5nKHJlc29sdmVkUGF0aCwgIXJlc29sdmVkQWJzb2x1dGUpO1xuICBpZiAocmVzb2x2ZWRBYnNvbHV0ZSAmJiAhaXNBYnNvbHV0ZShyZXNvbHZlZFBhdGgpKSB7XG4gICAgcmV0dXJuIGAvJHtyZXNvbHZlZFBhdGh9YDtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDAgPyByZXNvbHZlZFBhdGggOiBcIi5cIjtcbn07XG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmcocGF0aDIsIGFsbG93QWJvdmVSb290KSB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNoYXIgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSBwYXRoMi5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aDIubGVuZ3RoKSB7XG4gICAgICBjaGFyID0gcGF0aDJbaV07XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoYXIgPSBcIi9cIjtcbiAgICB9XG4gICAgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpIC0gMSB8fCBkb3RzID09PSAxKSA7IGVsc2UgaWYgKGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPCAyIHx8IGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8IHJlc1tyZXMubGVuZ3RoIC0gMV0gIT09IFwiLlwiIHx8IHJlc1tyZXMubGVuZ3RoIC0gMl0gIT09IFwiLlwiKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHJlcy5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIHJlcyArPSByZXMubGVuZ3RoID4gMCA/IFwiLy4uXCIgOiBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXMgKz0gYC8ke3BhdGgyLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzID0gcGF0aDIuc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiLlwiICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmNvbnN0IGlzQWJzb2x1dGUgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBfSVNfQUJTT0xVVEVfUkUudGVzdChwKTtcbn07XG5jb25zdCB0b05hbWVzcGFjZWRQYXRoID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gbm9ybWFsaXplV2luZG93c1BhdGgocCk7XG59O1xuY29uc3QgZXh0bmFtZSA9IGZ1bmN0aW9uKHApIHtcbiAgcmV0dXJuIHBhdGgucG9zaXguZXh0bmFtZShub3JtYWxpemVXaW5kb3dzUGF0aChwKSk7XG59O1xuY29uc3QgcmVsYXRpdmUgPSBmdW5jdGlvbihmcm9tLCB0bykge1xuICByZXR1cm4gcGF0aC5wb3NpeC5yZWxhdGl2ZShub3JtYWxpemVXaW5kb3dzUGF0aChmcm9tKSwgbm9ybWFsaXplV2luZG93c1BhdGgodG8pKTtcbn07XG5jb25zdCBkaXJuYW1lID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gcGF0aC5wb3NpeC5kaXJuYW1lKG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApKTtcbn07XG5jb25zdCBmb3JtYXQgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBub3JtYWxpemVXaW5kb3dzUGF0aChwYXRoLnBvc2l4LmZvcm1hdChwKSk7XG59O1xuY29uc3QgYmFzZW5hbWUgPSBmdW5jdGlvbihwLCBleHQpIHtcbiAgcmV0dXJuIHBhdGgucG9zaXguYmFzZW5hbWUobm9ybWFsaXplV2luZG93c1BhdGgocCksIGV4dCk7XG59O1xuY29uc3QgcGFyc2UgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBwYXRoLnBvc2l4LnBhcnNlKG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApKTtcbn07XG5cbmNvbnN0IF9wYXRoID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIHNlcDogc2VwLFxuICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gIGpvaW46IGpvaW4sXG4gIHJlc29sdmU6IHJlc29sdmUsXG4gIG5vcm1hbGl6ZVN0cmluZzogbm9ybWFsaXplU3RyaW5nLFxuICBpc0Fic29sdXRlOiBpc0Fic29sdXRlLFxuICB0b05hbWVzcGFjZWRQYXRoOiB0b05hbWVzcGFjZWRQYXRoLFxuICBleHRuYW1lOiBleHRuYW1lLFxuICByZWxhdGl2ZTogcmVsYXRpdmUsXG4gIGRpcm5hbWU6IGRpcm5hbWUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBiYXNlbmFtZTogYmFzZW5hbWUsXG4gIHBhcnNlOiBwYXJzZVxufSk7XG5cbmNvbnN0IGluZGV4ID0ge1xuICAuLi5fcGF0aFxufTtcblxuZXhwb3J0IHsgYmFzZW5hbWUsIGluZGV4IGFzIGRlZmF1bHQsIGRlbGltaXRlciwgZGlybmFtZSwgZXh0bmFtZSwgZm9ybWF0LCBpc0Fic29sdXRlLCBqb2luLCBub3JtYWxpemUsIG5vcm1hbGl6ZVN0cmluZywgcGFyc2UsIHJlbGF0aXZlLCByZXNvbHZlLCBzZXAsIHRvTmFtZXNwYWNlZFBhdGggfTtcbiIsImltcG9ydCB0eXBlIHsgQXJyYXlhYmxlLCBOdWxsYWJsZSwgU3VpdGUsIFRhc2ssIFRlc3QgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIG5vdE51bGxpc2g8VD4odjogVCB8IG51bGwgfCB1bmRlZmluZWQpOiB2IGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgcmV0dXJuIHYgIT0gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2xhc2goc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXFxcL2csICcvJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlU2xhc2hlcyhzdHI6IHN0cmluZykge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpXG59XG5cbmV4cG9ydCBjb25zdCBub29wID0gKCkgPT4ge31cblxuLyoqXG4gKiBDb252ZXJ0IGBBcnJheWFibGU8VD5gIHRvIGBBcnJheTxUPmBcbiAqXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXk8VD4oYXJyYXk/OiBOdWxsYWJsZTxBcnJheWFibGU8VD4+KTogQXJyYXk8VD4ge1xuICBhcnJheSA9IGFycmF5IHx8IFtdXG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5KSlcbiAgICByZXR1cm4gYXJyYXlcbiAgcmV0dXJuIFthcnJheV1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlc3RzKHN1aXRlOiBBcnJheWFibGU8VGFzaz4pOiBUZXN0W10ge1xuICByZXR1cm4gdG9BcnJheShzdWl0ZSkuZmxhdE1hcChzID0+IHMudHlwZSA9PT0gJ3Rlc3QnID8gW3NdIDogcy50YXNrcy5mbGF0TWFwKGMgPT4gYy50eXBlID09PSAndGVzdCcgPyBbY10gOiBnZXRUZXN0cyhjKSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXNrcyh0YXNrczogQXJyYXlhYmxlPFRhc2s+KTogVGFza1tdIHtcbiAgcmV0dXJuIHRvQXJyYXkodGFza3MpLmZsYXRNYXAocyA9PiBzLnR5cGUgPT09ICd0ZXN0JyA/IFtzXSA6IFtzLCAuLi5nZXRUYXNrcyhzLnRhc2tzKV0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWl0ZXMoc3VpdGU6IEFycmF5YWJsZTxUYXNrPik6IFN1aXRlW10ge1xuICByZXR1cm4gdG9BcnJheShzdWl0ZSkuZmxhdE1hcChzID0+IHMudHlwZSA9PT0gJ3N1aXRlJyA/IFtzLCAuLi5nZXRTdWl0ZXMocy50YXNrcyldIDogW10pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNUZXN0cyhzdWl0ZTogQXJyYXlhYmxlPFN1aXRlPik6IGJvb2xlYW4ge1xuICByZXR1cm4gdG9BcnJheShzdWl0ZSkuc29tZShzID0+IHMudGFza3Muc29tZShjID0+IGMudHlwZSA9PT0gJ3Rlc3QnIHx8IGhhc1Rlc3RzKGMgYXMgU3VpdGUpKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ZhaWxlZChzdWl0ZTogQXJyYXlhYmxlPFRhc2s+KTogYm9vbGVhbiB7XG4gIHJldHVybiB0b0FycmF5KHN1aXRlKS5zb21lKHMgPT4gcy5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcgfHwgKHMudHlwZSA9PT0gJ3N1aXRlJyAmJiBoYXNGYWlsZWQocy50YXNrcykpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZXModGFzazogVGFzaykge1xuICBjb25zdCBuYW1lcyA9IFt0YXNrLm5hbWVdXG4gIGxldCBjdXJyZW50OiBUYXNrIHwgdW5kZWZpbmVkID0gdGFza1xuXG4gIHdoaWxlIChjdXJyZW50Py5zdWl0ZSB8fCBjdXJyZW50Py5maWxlKSB7XG4gICAgY3VycmVudCA9IGN1cnJlbnQuc3VpdGUgfHwgY3VycmVudC5maWxlXG4gICAgaWYgKGN1cnJlbnQ/Lm5hbWUpXG4gICAgICBuYW1lcy51bnNoaWZ0KGN1cnJlbnQubmFtZSlcbiAgfVxuXG4gIHJldHVybiBuYW1lc1xufVxuIiwiaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgeyBpc1BhY2thZ2VFeGlzdHMgfSBmcm9tICdsb2NhbC1wa2cnXG5pbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IFN1aXRlLCBUYXNrIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXROYW1lcywgc2xhc2ggfSBmcm9tICcuL3Rhc2tzJ1xuXG5leHBvcnQgKiBmcm9tICcuL3Rhc2tzJ1xuXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuXG4vKipcbiAqIFBhcnRpdGlvbiBpbiB0YXNrcyBncm91cHMgYnkgY29uc2VjdXRpdmUgY29uY3VycmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZTogU3VpdGUpIHtcbiAgbGV0IHRhc2tzR3JvdXA6IFRhc2tbXSA9IFtdXG4gIGNvbnN0IHRhc2tzR3JvdXBzOiBUYXNrW11bXSA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBzdWl0ZS50YXNrcykge1xuICAgIGlmICh0YXNrc0dyb3VwLmxlbmd0aCA9PT0gMCB8fCBjLmNvbmN1cnJlbnQgPT09IHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCkge1xuICAgICAgdGFza3NHcm91cC5wdXNoKGMpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGFza3NHcm91cHMucHVzaCh0YXNrc0dyb3VwKVxuICAgICAgdGFza3NHcm91cCA9IFtjXVxuICAgIH1cbiAgfVxuICBpZiAodGFza3NHcm91cC5sZW5ndGggPiAwKVxuICAgIHRhc2tzR3JvdXBzLnB1c2godGFza3NHcm91cClcblxuICByZXR1cm4gdGFza3NHcm91cHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bGxOYW1lKHRhc2s6IFRhc2spIHtcbiAgcmV0dXJuIGdldE5hbWVzKHRhc2spLmpvaW4oYy5kaW0oJyA+ICcpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlUGFja2FnZUluc3RhbGxlZChcbiAgZGVwZW5kZW5jeTogc3RyaW5nLFxuICBwcm9tcHRJbnN0YWxsID0gIXByb2Nlc3MuZW52LkNJICYmIHByb2Nlc3Muc3Rkb3V0LmlzVFRZLFxuKSB7XG4gIGlmIChpc1BhY2thZ2VFeGlzdHMoZGVwZW5kZW5jeSkpXG4gICAgcmV0dXJuIHRydWVcblxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShjLnJlZChgJHtjLmludmVyc2UoYy5yZWQoJyBNSVNTSU5HIERFUCAnKSl9IENhbiBub3QgZmluZCBkZXBlbmRlbmN5ICcke2RlcGVuZGVuY3l9J1xcblxcbmApKVxuXG4gIGlmICghcHJvbXB0SW5zdGFsbClcbiAgICByZXR1cm4gZmFsc2VcblxuICBjb25zdCBwcm9tcHRzID0gYXdhaXQgaW1wb3J0KCdwcm9tcHRzJylcbiAgY29uc3QgeyBpbnN0YWxsIH0gPSBhd2FpdCBwcm9tcHRzLnByb21wdCh7XG4gICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgIG5hbWU6ICdpbnN0YWxsJyxcbiAgICBtZXNzYWdlOiBjLnJlc2V0KGBEbyB5b3Ugd2FudCB0byBpbnN0YWxsICR7Yy5ncmVlbihkZXBlbmRlbmN5KX0/YCksXG4gIH0pXG5cbiAgaWYgKGluc3RhbGwpIHtcbiAgICBhd2FpdCAoYXdhaXQgaW1wb3J0KCdAYW50ZnUvaW5zdGFsbC1wa2cnKSkuaW5zdGFsbFBhY2thZ2UoZGVwZW5kZW5jeSwgeyBkZXY6IHRydWUgfSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChpdGVtOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiBpdGVtICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGl0ZW0pXG59XG5cbmZ1bmN0aW9uIGRlZXBNZXJnZUFycmF5KHRhcmdldDogYW55W10gPSBbXSwgc291cmNlOiBhbnlbXSA9IFtdKSB7XG4gIGNvbnN0IG1lcmdlZE91dHB1dCA9IEFycmF5LmZyb20odGFyZ2V0KVxuXG4gIHNvdXJjZS5mb3JFYWNoKChzb3VyY2VFbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBtZXJnZWRPdXRwdXRbaW5kZXhdXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXRbaW5kZXhdKSkge1xuICAgICAgbWVyZ2VkT3V0cHV0W2luZGV4XSA9IGRlZXBNZXJnZUFycmF5KHRhcmdldFtpbmRleF0sIHNvdXJjZUVsZW1lbnQpXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICBtZXJnZWRPdXRwdXRbaW5kZXhdID0gZGVlcE1lcmdlKHRhcmdldFtpbmRleF0sIHNvdXJjZUVsZW1lbnQpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gU291cmNlIGRvZXMgbm90IGV4aXN0IGluIHRhcmdldCBvciB0YXJnZXQgaXMgcHJpbWl0aXZlIGFuZCBjYW5ub3QgYmUgZGVlcCBtZXJnZWRcbiAgICAgIG1lcmdlZE91dHB1dFtpbmRleF0gPSBzb3VyY2VFbGVtZW50XG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBtZXJnZWRPdXRwdXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnkpOiBhbnkge1xuICBpZiAoaXNPYmplY3QodGFyZ2V0KSAmJiBpc09iamVjdChzb3VyY2UpKSB7XG4gICAgY29uc3QgbWVyZ2VkT3V0cHV0ID0geyAuLi50YXJnZXQgfVxuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoaXNPYmplY3Qoc291cmNlW2tleV0pICYmICFzb3VyY2Vba2V5XS4kJHR5cGVvZikge1xuICAgICAgICBpZiAoIShrZXkgaW4gdGFyZ2V0KSkgT2JqZWN0LmFzc2lnbihtZXJnZWRPdXRwdXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pXG4gICAgICAgIGVsc2UgbWVyZ2VkT3V0cHV0W2tleV0gPSBkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgbWVyZ2VkT3V0cHV0W2tleV0gPSBkZWVwTWVyZ2VBcnJheSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihtZXJnZWRPdXRwdXQsIHsgW2tleV06IHNvdXJjZVtrZXldIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtZXJnZWRPdXRwdXRcbiAgfVxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgcmV0dXJuIGRlZXBNZXJnZUFycmF5KHRhcmdldCwgc291cmNlKVxuICB9XG4gIHJldHVybiB0YXJnZXRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRmlsZVBhdGgoaWQ6IHN0cmluZywgcm9vdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IGFic29sdXRlID0gc2xhc2goaWQpLnN0YXJ0c1dpdGgoJy9AZnMvJylcbiAgICA/IGlkLnNsaWNlKDQpXG4gICAgOiBpZC5zdGFydHNXaXRoKGRpcm5hbWUocm9vdCkpXG4gICAgICA/IGlkXG4gICAgICA6IGlkLnN0YXJ0c1dpdGgoJy8nKVxuICAgICAgICA/IHNsYXNoKHJlc29sdmUocm9vdCwgaWQuc2xpY2UoMSkpKVxuICAgICAgICA6IGlkXG5cbiAgaWYgKGFic29sdXRlLnN0YXJ0c1dpdGgoJy8vJykpXG4gICAgYWJzb2x1dGUgPSBhYnNvbHV0ZS5zbGljZSgxKVxuXG4gIC8vIGRpc2FtYmlndWF0ZSB0aGUgYDxVTklUPjovYCBvbiB3aW5kb3dzOiBzZWUgbm9kZWpzL25vZGUjMzE3MTBcbiAgcmV0dXJuIGlzV2luZG93cyAmJiBhYnNvbHV0ZS5zdGFydHNXaXRoKCcvJylcbiAgICA/IGZpbGVVUkxUb1BhdGgocGF0aFRvRmlsZVVSTChhYnNvbHV0ZS5zbGljZSgxKSkuaHJlZilcbiAgICA6IGFic29sdXRlXG59XG5cbmV4cG9ydCB7IHJlc29sdmUgYXMgcmVzb2x2ZVBhdGggfVxuIl0sIm5hbWVzIjpbInBpY29jb2xvcnNNb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFJLEdBQUcsR0FBRyxXQUFjO0FBQ3hCO0FBQ0EsSUFBSSxnQkFBZ0I7QUFDcEIsQ0FBQyxFQUFFLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BFLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHO0FBQzlCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQ2xDLEVBQUUsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPO0FBQzlCLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxN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QUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUMzRCxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQzlELENBQUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDM0QsQ0FBQyxLQUFLLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUM1RCxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQzNELENBQUMsT0FBTyxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDOUQsQ0FBQyxLQUFLLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUM1RCxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQzlELENBQUMsUUFBUSxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDL0QsQ0FBQyxNQUFNLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsTUFBTTtBQUM3RCxDQUFDLFNBQVMsRUFBRSxPQUFPLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxNQUFNO0FBQ2hFLENBQUMsTUFBTSxFQUFFLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU07QUFDN0QsQ0FBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcs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
|