@vitest/browser 5.0.0-beta.7 → 5.0.0-rc.1
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/client/.vite/manifest.json +10 -10
- package/dist/client/__vitest_browser__/{defineProperty-WHpdAQXR.js → defineProperty-BOtRrjRA.js} +13 -1
- package/dist/client/__vitest_browser__/{orchestrator-Bdv4lWwV.js → orchestrator-DJgIeTMM.js} +1 -1
- package/dist/client/__vitest_browser__/{rrweb-snapshot-DkFyu2W8.js → rrweb-snapshot-g5vjbXoV.js} +6 -4
- package/dist/client/__vitest_browser__/{tester-CREI5Ivt.js → tester-Ck66x6M6.js} +38 -18
- package/dist/client/orchestrator.html +2 -2
- package/dist/client/tester/tester.html +2 -2
- package/dist/client/tester/trace.d.ts +3 -3
- package/dist/client.js +14 -14
- package/dist/context.js +2 -0
- package/dist/expect-element.js +30 -30
- package/dist/index.d.ts +1 -1
- package/dist/index.js +68 -42
- package/dist/locators-BTqFw5Up.js +5 -0
- package/dist/locators.js +1 -1
- package/dist/state.js +3 -1
- package/dist/types.d.ts +1 -10
- package/jest-dom.d.ts +5 -5
- package/matchers.d.ts +5 -13
- package/package.json +16 -16
- package/dist/locators-Cxk-0tRh.js +0 -5
package/dist/index.js
CHANGED
|
@@ -209,7 +209,7 @@ const basename = function(p, extension) {
|
|
|
209
209
|
return extension && lastSegment.endsWith(extension) ? lastSegment.slice(0, -extension.length) : lastSegment;
|
|
210
210
|
};
|
|
211
211
|
|
|
212
|
-
var version = "5.0.0-
|
|
212
|
+
var version = "5.0.0-rc.1";
|
|
213
213
|
|
|
214
214
|
const pkgRoot = resolve(fileURLToPath(import.meta.url), "../..");
|
|
215
215
|
const distRoot = resolve(pkgRoot, "dist");
|
|
@@ -509,11 +509,10 @@ var DOM_KEY_LOCATION = /*#__PURE__*/ function(DOM_KEY_LOCATION) {
|
|
|
509
509
|
}
|
|
510
510
|
];
|
|
511
511
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
}(bracketDict || {});
|
|
512
|
+
const bracketDict = {
|
|
513
|
+
'{': '}',
|
|
514
|
+
'[': ']'
|
|
515
|
+
};
|
|
517
516
|
/**
|
|
518
517
|
* Read the next key definition from user input
|
|
519
518
|
*
|
|
@@ -548,16 +547,16 @@ function readPrintableChar(text, pos, context) {
|
|
|
548
547
|
};
|
|
549
548
|
}
|
|
550
549
|
function readTag(text, pos, startBracket, context) {
|
|
550
|
+
var _ref;
|
|
551
551
|
var _text_slice_match, _text_slice_match1;
|
|
552
552
|
const releasePreviousModifier = text[pos] === '/' ? '/' : '';
|
|
553
553
|
pos += releasePreviousModifier.length;
|
|
554
554
|
const escapedDescriptor = startBracket === '{' && text[pos] === '\\';
|
|
555
555
|
pos += Number(escapedDescriptor);
|
|
556
|
-
const descriptor = escapedDescriptor ? text[pos] : (_text_slice_match = text.slice(pos).match(startBracket === '{' ? /^\w+|^[^}>/]/ : /^\w+/)) === null || _text_slice_match ===
|
|
556
|
+
const descriptor = escapedDescriptor ? text[pos] : (_text_slice_match = text.slice(pos).match(startBracket === '{' ? /^\w+|^[^}>/]/ : /^\w+/)) === null || _text_slice_match === void 0 ? void 0 : _text_slice_match[0];
|
|
557
557
|
assertDescriptor(descriptor, text, pos);
|
|
558
558
|
pos += descriptor.length;
|
|
559
|
-
|
|
560
|
-
const repeatModifier = (_text_slice_match_ = (_text_slice_match1 = text.slice(pos).match(/^>\d+/)) === null || _text_slice_match1 === undefined ? undefined : _text_slice_match1[0]) !== null && _text_slice_match_ !== undefined ? _text_slice_match_ : '';
|
|
559
|
+
const repeatModifier = (_ref = (_text_slice_match1 = text.slice(pos).match(/^>\d+/)) === null || _text_slice_match1 === void 0 ? void 0 : _text_slice_match1[0]) !== null && _ref !== void 0 ? _ref : '';
|
|
561
560
|
pos += repeatModifier.length;
|
|
562
561
|
const releaseSelfModifier = text[pos] === '/' || !repeatModifier && text[pos] === '>' ? text[pos] : '';
|
|
563
562
|
pos += releaseSelfModifier.length;
|
|
@@ -593,7 +592,7 @@ function hasReleaseSelf(releaseSelfModifier, repeatModifier) {
|
|
|
593
592
|
}
|
|
594
593
|
}
|
|
595
594
|
function getErrorMessage(expected, found, text, context) {
|
|
596
|
-
return `Expected ${expected} but found "${found !== null && found !==
|
|
595
|
+
return `Expected ${expected} but found "${found !== null && found !== void 0 ? found : ''}" in "${text}"
|
|
597
596
|
See ${`https://testing-library.com/docs/user-event/keyboard`}
|
|
598
597
|
for more information about how userEvent parses your input.`;
|
|
599
598
|
}
|
|
@@ -610,18 +609,18 @@ function getErrorMessage(expected, found, text, context) {
|
|
|
610
609
|
*/ function parseKeyDef$1(keyboardMap, text) {
|
|
611
610
|
const defs = [];
|
|
612
611
|
do {
|
|
613
|
-
const { type, descriptor, consumedLength, releasePrevious, releaseSelf = true, repeat } = readNextDescriptor(text);
|
|
614
612
|
var _keyboardMap_find;
|
|
613
|
+
const { type, descriptor, consumedLength, releasePrevious, releaseSelf = true, repeat } = readNextDescriptor(text);
|
|
615
614
|
const keyDef = (_keyboardMap_find = keyboardMap.find((def)=>{
|
|
616
615
|
if (type === '[') {
|
|
617
616
|
var _def_code;
|
|
618
|
-
return ((_def_code = def.code) === null || _def_code ===
|
|
617
|
+
return ((_def_code = def.code) === null || _def_code === void 0 ? void 0 : _def_code.toLowerCase()) === descriptor.toLowerCase();
|
|
619
618
|
} else if (type === '{') {
|
|
620
619
|
var _def_key;
|
|
621
|
-
return ((_def_key = def.key) === null || _def_key ===
|
|
620
|
+
return ((_def_key = def.key) === null || _def_key === void 0 ? void 0 : _def_key.toLowerCase()) === descriptor.toLowerCase();
|
|
622
621
|
}
|
|
623
622
|
return def.key === descriptor;
|
|
624
|
-
})) !== null && _keyboardMap_find !==
|
|
623
|
+
})) !== null && _keyboardMap_find !== void 0 ? _keyboardMap_find : {
|
|
625
624
|
key: 'Unknown',
|
|
626
625
|
code: 'Unknown',
|
|
627
626
|
[type === '[' ? 'code' : 'key']: descriptor
|
|
@@ -968,6 +967,7 @@ var BrowserPlugin = (contribution) => {
|
|
|
968
967
|
BrowserContext(contribution),
|
|
969
968
|
dynamicImportPlugin({
|
|
970
969
|
globalThisAccessor: "\"__vitest_browser_runner__\"",
|
|
970
|
+
// injected only into the `client` environment via the browser contribution
|
|
971
971
|
filter(id) {
|
|
972
972
|
if (id.includes(distRoot)) {
|
|
973
973
|
return false;
|
|
@@ -1025,6 +1025,8 @@ function cleanUrl(url) {
|
|
|
1025
1025
|
}
|
|
1026
1026
|
|
|
1027
1027
|
class BrowserServerCDPHandler {
|
|
1028
|
+
session;
|
|
1029
|
+
tester;
|
|
1028
1030
|
listenerIds = {};
|
|
1029
1031
|
listeners = {};
|
|
1030
1032
|
constructor(session, tester) {
|
|
@@ -1668,6 +1670,7 @@ function getComparator(comparator, context) {
|
|
|
1668
1670
|
|
|
1669
1671
|
const defaultOptions = {
|
|
1670
1672
|
comparatorName: "pixelmatch",
|
|
1673
|
+
// these are handled by each comparator on its own
|
|
1671
1674
|
comparatorOptions: {},
|
|
1672
1675
|
screenshotOptions: {
|
|
1673
1676
|
animations: "disabled",
|
|
@@ -1722,6 +1725,7 @@ function resolveOptions({ context, name, options, testName }) {
|
|
|
1722
1725
|
resolvedOptions,
|
|
1723
1726
|
paths: {
|
|
1724
1727
|
reference: resolvedOptions.resolveScreenshotPath(resolvePathData),
|
|
1728
|
+
// lazily initialize this, as it might not be needed at all
|
|
1725
1729
|
get diffs() {
|
|
1726
1730
|
const diffs = {
|
|
1727
1731
|
reference: resolvedOptions.resolveDiffPath({
|
|
@@ -1967,6 +1971,7 @@ async function determineOutcome({ comparator, comparatorOptions, paths, referenc
|
|
|
1967
1971
|
diff: comparisonResult.diff && {
|
|
1968
1972
|
image: {
|
|
1969
1973
|
data: comparisonResult.diff,
|
|
1974
|
+
// `comparator` only returns pixel data; diff dimensions always match reference
|
|
1970
1975
|
metadata: reference.metadata
|
|
1971
1976
|
},
|
|
1972
1977
|
path: paths.diffs.diff
|
|
@@ -2202,6 +2207,7 @@ var builtinCommands = {
|
|
|
2202
2207
|
readFile,
|
|
2203
2208
|
removeFile,
|
|
2204
2209
|
writeFile,
|
|
2210
|
+
// private commands
|
|
2205
2211
|
__vitest_markTrace: _markTrace,
|
|
2206
2212
|
__vitest_groupTraceStart: _groupTraceStart,
|
|
2207
2213
|
__vitest_groupTraceEnd: _groupTraceEnd,
|
|
@@ -2217,6 +2223,9 @@ class BrowserServerState {
|
|
|
2217
2223
|
}
|
|
2218
2224
|
|
|
2219
2225
|
class ProjectBrowser {
|
|
2226
|
+
parent;
|
|
2227
|
+
project;
|
|
2228
|
+
base;
|
|
2220
2229
|
testerHtml;
|
|
2221
2230
|
testerFilepath;
|
|
2222
2231
|
// the tester template is read once per server, so the transformed HTML
|
|
@@ -2304,6 +2313,7 @@ function wrapConfig(config) {
|
|
|
2304
2313
|
}
|
|
2305
2314
|
|
|
2306
2315
|
class ParentBrowserProject {
|
|
2316
|
+
base;
|
|
2307
2317
|
orchestratorScripts;
|
|
2308
2318
|
faviconUrl;
|
|
2309
2319
|
prefixOrchestratorUrl;
|
|
@@ -2486,11 +2496,6 @@ class ParentBrowserProject {
|
|
|
2486
2496
|
}
|
|
2487
2497
|
}
|
|
2488
2498
|
|
|
2489
|
-
//#region src/messages.ts
|
|
2490
|
-
const TYPE_REQUEST = "q";
|
|
2491
|
-
const TYPE_RESPONSE = "s";
|
|
2492
|
-
|
|
2493
|
-
//#endregion
|
|
2494
2499
|
//#region src/utils.ts
|
|
2495
2500
|
function createPromiseWithResolvers() {
|
|
2496
2501
|
let resolve;
|
|
@@ -2513,7 +2518,6 @@ function nanoid(size = 21) {
|
|
|
2513
2518
|
return id;
|
|
2514
2519
|
}
|
|
2515
2520
|
|
|
2516
|
-
//#endregion
|
|
2517
2521
|
//#region src/main.ts
|
|
2518
2522
|
const DEFAULT_TIMEOUT = 6e4;
|
|
2519
2523
|
const defaultSerialize = (i) => i;
|
|
@@ -2530,7 +2534,7 @@ function createBirpc($functions, options) {
|
|
|
2530
2534
|
const req = {
|
|
2531
2535
|
m: method,
|
|
2532
2536
|
a: args,
|
|
2533
|
-
t:
|
|
2537
|
+
t: "q"
|
|
2534
2538
|
};
|
|
2535
2539
|
if (optional) req.o = true;
|
|
2536
2540
|
const send = async (_req) => post(serialize(_req));
|
|
@@ -2584,7 +2588,7 @@ function createBirpc($functions, options) {
|
|
|
2584
2588
|
$call: (method, ...args) => _call(method, args, false),
|
|
2585
2589
|
$callOptional: (method, ...args) => _call(method, args, false, true),
|
|
2586
2590
|
$callEvent: (method, ...args) => _call(method, args, true),
|
|
2587
|
-
$callRaw: (options
|
|
2591
|
+
$callRaw: (options) => _call(options.method, options.args, options.event, options.optional),
|
|
2588
2592
|
$rejectPendingCalls,
|
|
2589
2593
|
get $closed() {
|
|
2590
2594
|
return $closed;
|
|
@@ -2596,7 +2600,7 @@ function createBirpc($functions, options) {
|
|
|
2596
2600
|
$functions
|
|
2597
2601
|
};
|
|
2598
2602
|
if (proxify) rpc = new Proxy({}, { get(_, method) {
|
|
2599
|
-
if (Object.
|
|
2603
|
+
if (Object.hasOwn(builtinMethods, method)) return builtinMethods[method];
|
|
2600
2604
|
if (method === "then" && !eventNames.includes("then") && !("then" in $functions)) return void 0;
|
|
2601
2605
|
const sendEvent = (...args) => _call(method, args, true);
|
|
2602
2606
|
if (eventNames.includes(method)) {
|
|
@@ -2640,7 +2644,7 @@ function createBirpc($functions, options) {
|
|
|
2640
2644
|
if (options.onGeneralError?.call(rpc, e) !== true) throw e;
|
|
2641
2645
|
return;
|
|
2642
2646
|
}
|
|
2643
|
-
if (msg.t ===
|
|
2647
|
+
if (msg.t === "q") {
|
|
2644
2648
|
const { m: method, a: args, o: optional } = msg;
|
|
2645
2649
|
let result, error;
|
|
2646
2650
|
let fn = await (resolver ? resolver.call(rpc, method, $functions[method]) : $functions[method]);
|
|
@@ -2657,7 +2661,7 @@ function createBirpc($functions, options) {
|
|
|
2657
2661
|
}
|
|
2658
2662
|
if (!error) try {
|
|
2659
2663
|
await post(serialize({
|
|
2660
|
-
t:
|
|
2664
|
+
t: "s",
|
|
2661
2665
|
i: msg.i,
|
|
2662
2666
|
r: result
|
|
2663
2667
|
}), ...extra);
|
|
@@ -2668,7 +2672,7 @@ function createBirpc($functions, options) {
|
|
|
2668
2672
|
}
|
|
2669
2673
|
try {
|
|
2670
2674
|
await post(serialize({
|
|
2671
|
-
t:
|
|
2675
|
+
t: "s",
|
|
2672
2676
|
i: msg.i,
|
|
2673
2677
|
e: error
|
|
2674
2678
|
}), ...extra);
|
|
@@ -3014,6 +3018,7 @@ function setupBrowserRpc(globalServer, defaultMockerRegistry) {
|
|
|
3014
3018
|
}
|
|
3015
3019
|
return mocker.delete(sessionId, id);
|
|
3016
3020
|
},
|
|
3021
|
+
// CDP
|
|
3017
3022
|
async sendCdpEvent(sessionId, event, payload) {
|
|
3018
3023
|
assertCdpAllowed(project);
|
|
3019
3024
|
const cdp = await globalServer.ensureCDPHandler(sessionId, rpcId);
|
|
@@ -3071,6 +3076,17 @@ function defineBrowserCommand(fn) {
|
|
|
3071
3076
|
return fn;
|
|
3072
3077
|
}
|
|
3073
3078
|
const versionRegexp = /(?:\?|&)v=\w{8}/;
|
|
3079
|
+
// pin a Cache-Control value and stop Vite's later middleware from overriding it
|
|
3080
|
+
function pinCacheControl(res, value) {
|
|
3081
|
+
res.setHeader("Cache-Control", value);
|
|
3082
|
+
const setHeader = res.setHeader.bind(res);
|
|
3083
|
+
res.setHeader = function(name, ...args) {
|
|
3084
|
+
if (name === "Cache-Control") {
|
|
3085
|
+
return res;
|
|
3086
|
+
}
|
|
3087
|
+
return setHeader(name, ...args);
|
|
3088
|
+
};
|
|
3089
|
+
}
|
|
3074
3090
|
/**
|
|
3075
3091
|
* The browser provider's `serverFactory`. Returns a `BrowserServerContribution`
|
|
3076
3092
|
* that Vitest core uses to build the SINGLE Vite server shared by `project.vite`
|
|
@@ -3218,21 +3234,24 @@ body {
|
|
|
3218
3234
|
}
|
|
3219
3235
|
}));
|
|
3220
3236
|
}
|
|
3237
|
+
// vitest's own dist files only change with the vitest version and
|
|
3238
|
+
// browser contexts don't outlive the process, so there is no reason
|
|
3239
|
+
// to revalidate them in every tester iframe. Skipped for persistent
|
|
3240
|
+
// contexts and preview providers — their disk cache would survive a vitest upgrade
|
|
3241
|
+
const persistentContext = (parentServer.config.browser.provider?.options)?.persistentContext;
|
|
3242
|
+
const immutablePrefixes = persistentContext || parentServer.config.browser.provider?.name === "preview" ? [] : [
|
|
3243
|
+
"/__vitest_browser__/",
|
|
3244
|
+
`/@fs${distDir}`,
|
|
3245
|
+
`/@fs${distRoot}`
|
|
3246
|
+
];
|
|
3221
3247
|
server.middlewares.use((req, res, next) => {
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
const setHeader = res.setHeader.bind(res);
|
|
3230
|
-
res.setHeader = function(name, value) {
|
|
3231
|
-
if (name === "Cache-Control") {
|
|
3232
|
-
return res;
|
|
3233
|
-
}
|
|
3234
|
-
return setHeader(name, value);
|
|
3235
|
-
};
|
|
3248
|
+
const url = req.url;
|
|
3249
|
+
if (url) {
|
|
3250
|
+
if (immutablePrefixes.some((prefix) => url.startsWith(prefix))) {
|
|
3251
|
+
pinCacheControl(res, "public,max-age=31536000,immutable");
|
|
3252
|
+
} else if (versionRegexp.test(url) && !url.includes("chunk-")) {
|
|
3253
|
+
pinCacheControl(res, "no-cache");
|
|
3254
|
+
}
|
|
3236
3255
|
}
|
|
3237
3256
|
next();
|
|
3238
3257
|
});
|
|
@@ -3268,6 +3287,9 @@ body {
|
|
|
3268
3287
|
server.middlewares.use("/__vitest__", sirv(distClientRoot));
|
|
3269
3288
|
}
|
|
3270
3289
|
},
|
|
3290
|
+
// Resolution-time config: only what is derivable from the (partial) user
|
|
3291
|
+
// config. The mocks / coverage / meta-env plugins come from the shared
|
|
3292
|
+
// workspace plugin set, not from here.
|
|
3271
3293
|
async config(viteConfig) {
|
|
3272
3294
|
const testConfig = viteConfig.test || {};
|
|
3273
3295
|
const config = {
|
|
@@ -3279,6 +3301,9 @@ body {
|
|
|
3279
3301
|
fs: { allow: [distRoot] },
|
|
3280
3302
|
middlewareMode: false,
|
|
3281
3303
|
watch: null,
|
|
3304
|
+
// Vitest forwards browser console logs and unhandled errors through its
|
|
3305
|
+
// own RPC, so Vite's client forwarding (defaults on under agents) would
|
|
3306
|
+
// double-report them and leak into stderr.
|
|
3282
3307
|
forwardConsole: false
|
|
3283
3308
|
}
|
|
3284
3309
|
};
|
|
@@ -3389,13 +3414,12 @@ function resolveBrowserOptimizeDeps(projectConfigs, testFiles, harness) {
|
|
|
3389
3414
|
// - vitest/browser, @vitest/browser/context, @vitest/browser/utils are
|
|
3390
3415
|
// VIRTUAL modules generated per-server (see pluginContext.ts) — optimizer
|
|
3391
3416
|
// cannot resolve/run their `load`, it would freeze stale/empty content.
|
|
3392
|
-
// - vite/module-runner is small enough to not need pre-bundling.
|
|
3393
3417
|
// - msw is a large, side-effectful service-worker library.
|
|
3394
3418
|
const exclude = [
|
|
3395
3419
|
"vitest/browser",
|
|
3396
|
-
"vite/module-runner",
|
|
3397
3420
|
"@vitest/browser/utils",
|
|
3398
3421
|
"@vitest/browser/context",
|
|
3422
|
+
"@vitest/browser/locators",
|
|
3399
3423
|
"msw",
|
|
3400
3424
|
"msw/browser"
|
|
3401
3425
|
];
|
|
@@ -3432,8 +3456,10 @@ function resolveBrowserOptimizeDeps(projectConfigs, testFiles, harness) {
|
|
|
3432
3456
|
"vitest > expect-type",
|
|
3433
3457
|
"vitest > magic-string",
|
|
3434
3458
|
"vitest > chai",
|
|
3459
|
+
"vitest > vite/module-runner",
|
|
3435
3460
|
"vitest",
|
|
3436
3461
|
"vitest/internal/browser",
|
|
3462
|
+
"vitest/internal/traces",
|
|
3437
3463
|
"@vitest/browser/client"
|
|
3438
3464
|
];
|
|
3439
3465
|
const provider = testConfig.browser?.provider;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{server as e,page as t,utils as n}from"vitest/browser";import{__INTERNAL as r,getSafeTimers as i}from"vitest/internal/browser";const a=globalThis.performance?globalThis.performance.now.bind(globalThis.performance):Date.now;function o(e){let t=c().current;if(!t||t.type!==`test`)return e();let n=!1,r=Error(`STACK_TRACE_ERROR`);t.onFinished??=[],t.onFinished.push(()=>{if(!n){let e=Error(`The call was not awaited. This method is asynchronous and must be awaited; otherwise, the call will not start to avoid unhandled rejections.`);throw e.stack=r.stack?.replace(r.message,e.message),e}});let i;return{then(t,a){return n=!0,(i||=e(r)).then(t,a)},catch(t){return n=!0,(i||=e(r)).catch(t)},finally(t){return n=!0,(i||=e(r)).finally(t)},[Symbol.toStringTag]:`Promise`}}function s(){return window.__vitest_browser_runner__}function c(){let e=window.__vitest_worker__;if(!e)throw Error(`Worker state is not found. This is an issue with Vitest. Please, open an issue.`);return e}function l(e){"@babel/helpers - typeof";return l=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},l(e)}function u(e,t){if(l(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(l(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function d(e){var t=u(e,`string`);return l(t)==`symbol`?t:t+``}function f(e,t,n){return(t=d(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const p=function(e,t,n){return e>=t&&e<=n};function m(e){return p(e,48,57)}function h(e){return m(e)||p(e,65,70)||p(e,97,102)}function g(e){return p(e,65,90)}function ee(e){return p(e,97,122)}function _(e){return g(e)||ee(e)}function v(e){return e>=128}function y(e){return _(e)||v(e)||e===95}function te(e){return y(e)||m(e)||e===45}function ne(e){return p(e,0,8)||e===11||p(e,14,31)||e===127}function b(e){return e===10}function x(e){return b(e)||e===9||e===32}var S=class extends Error{constructor(e){super(e),this.name=`InvalidCharacterError`}};function re(e){let t=[];for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===13&&e.charCodeAt(n+1)===10&&(r=10,n++),(r===13||r===12)&&(r=10),r===0&&(r=65533),p(r,55296,56319)&&p(e.charCodeAt(n+1),56320,57343)){let t=r-55296,i=e.charCodeAt(n+1)-56320;r=2**16+t*2**10+i,n++}t.push(r)}return t}function C(e){if(e<=65535)return String.fromCharCode(e);e-=2**16;let t=Math.floor(e/2**10)+55296,n=e%2**10+56320;return String.fromCharCode(t)+String.fromCharCode(n)}function w(e){let t=re(e),n=-1,r=[],i,a=function(e){return e>=t.length?-1:t[e]},o=function(e){if(e===void 0&&(e=1),e>3)throw`Spec Error: no more than three codepoints of lookahead.`;return a(n+e)},s=function(e){return e===void 0&&(e=1),n+=e,i=a(n),!0},c=function(){return--n,!0},l=function(e){return e===void 0&&(e=i),e===-1},u=function(){if(d(),s(),x(i)){for(;x(o());)s();return new oe}else if(i===34)return g();else if(i===35)if(te(o())||v(o(1),o(2))){let e=new Oe(``);return w(o(1),o(2),o(3))&&(e.type=`id`),e.value=k(),e}else return new D(i);else if(i===36)return o()===61?(s(),new xe):new D(i);else if(i===39)return g();else if(i===40)return new ge;else if(i===41)return new _e;else if(i===42)return o()===61?(s(),new Se):new D(i);else if(i===43)return O()?(c(),f()):new D(i);else if(i===44)return new de;else if(i===45)return O()?(c(),f()):o(1)===45&&o(2)===62?(s(2),new ce):T()?(c(),p()):new D(i);else if(i===46)return O()?(c(),f()):new D(i);else if(i===58)return new le;else if(i===59)return new ue;else if(i===60)return o(1)===33&&o(2)===45&&o(3)===45?(s(3),new se):new D(i);else if(i===64)return w(o(1),o(2),o(3))?new De(k()):new D(i);else if(i===91)return new me;else if(i===92)return S()?(c(),p()):new D(i);else if(i===93)return new he;else if(i===94)return o()===61?(s(),new be):new D(i);else if(i===123)return new fe;else if(i===124)return o()===61?(s(),new ye):o()===124?(s(),new Ce):new D(i);else if(i===125)return new pe;else if(i===126)return o()===61?(s(),new ve):new D(i);else if(m(i))return c(),f();else if(y(i))return c(),p();else if(l())return new we;else return new D(i)},d=function(){for(;o(1)===47&&o(2)===42;)for(s(2);;)if(s(),i===42&&o()===47){s();break}else if(l())return},f=function(){let e=Pe();if(w(o(1),o(2),o(3))){let t=new Ne;return t.value=e.value,t.repr=e.repr,t.type=e.type,t.unit=k(),t}else if(o()===37){s();let t=new Me;return t.value=e.value,t.repr=e.repr,t}else{let t=new je;return t.value=e.value,t.repr=e.repr,t.type=e.type,t}},p=function(){let e=k();if(e.toLowerCase()===`url`&&o()===40){for(s();x(o(1))&&x(o(2));)s();return o()===34||o()===39||x(o())&&(o(2)===34||o(2)===39)?new Ee(e):ee()}else if(o()===40)return s(),new Ee(e);else return new Te(e)},g=function(e){e===void 0&&(e=i);let t=``;for(;s();)if(i===e||l())return new ke(t);else if(b(i))return c(),new ie;else i===92?l(o())||(b(o())?s():t+=C(_())):t+=C(i);throw Error(`Internal error`)},ee=function(){let e=new Ae(``);for(;x(o());)s();if(l(o()))return e;for(;s();)if(i===41||l())return e;else if(x(i)){for(;x(o());)s();return o()===41||l(o())?(s(),e):(A(),new ae)}else if(i===34||i===39||i===40||ne(i))return A(),new ae;else if(i===92)if(S())e.value+=C(_());else return A(),new ae;else e.value+=C(i);throw Error(`Internal error`)},_=function(){if(s(),h(i)){let e=[i];for(let t=0;t<5&&h(o());t++)s(),e.push(i);x(o())&&s();let t=Number.parseInt(e.map(e=>String.fromCharCode(e)).join(``),16);return t>1114111&&(t=65533),t}else if(l())return 65533;else return i},v=function(e,t){return!(e!==92||b(t))},S=function(){return v(i,o())},w=function(e,t,n){return e===45?y(t)||t===45||v(t,n):y(e)?!0:e===92&&v(e,t)},T=function(){return w(i,o(1),o(2))},E=function(e,t,n){return e===43||e===45?!!(m(t)||t===46&&m(n)):e===46?!!m(t):!!m(e)},O=function(){return E(i,o(1),o(2))},k=function(){let e=``;for(;s();)if(te(i))e+=C(i);else if(S())e+=C(_());else return c(),e;throw Error(`Internal parse error`)},Pe=function(){let e=``,t=`integer`;for((o()===43||o()===45)&&(s(),e+=C(i));m(o());)s(),e+=C(i);if(o(1)===46&&m(o(2)))for(s(),e+=C(i),s(),e+=C(i),t=`number`;m(o());)s(),e+=C(i);let n=o(1),r=o(2),a=o(3);if((n===69||n===101)&&m(r))for(s(),e+=C(i),s(),e+=C(i),t=`number`;m(o());)s(),e+=C(i);else if((n===69||n===101)&&(r===43||r===45)&&m(a))for(s(),e+=C(i),s(),e+=C(i),s(),e+=C(i),t=`number`;m(o());)s(),e+=C(i);let c=Fe(e);return{type:t,value:c,repr:e}},Fe=function(e){return+e},A=function(){for(;s();)if(i===41||l())return;else S()&&_()},Ie=0;for(;!l(o());)if(r.push(u()),Ie++,Ie>t.length*2)throw Error(`I'm infinite-looping!`);return r}var T=class{constructor(){f(this,`tokenType`,``),f(this,`value`,void 0)}toJSON(){return{token:this.tokenType}}toString(){return this.tokenType}toSource(){return`${this}`}},ie=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`BADSTRING`)}},ae=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`BADURL`)}},oe=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`WHITESPACE`)}toString(){return`WS`}toSource(){return` `}},se=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`CDO`)}toSource(){return`<!--`}},ce=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`CDC`)}toSource(){return`-->`}},le=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`:`)}},ue=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`;`)}},de=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`,`)}},E=class extends T{constructor(...e){super(...e),f(this,`value`,``),f(this,`mirror`,``)}},fe=class extends E{constructor(){super(),f(this,`tokenType`,`{`),this.value=`{`,this.mirror=`}`}},pe=class extends E{constructor(){super(),f(this,`tokenType`,`}`),this.value=`}`,this.mirror=`{`}},me=class extends E{constructor(){super(),f(this,`tokenType`,`[`),this.value=`[`,this.mirror=`]`}},he=class extends E{constructor(){super(),f(this,`tokenType`,`]`),this.value=`]`,this.mirror=`[`}},ge=class extends E{constructor(){super(),f(this,`tokenType`,`(`),this.value=`(`,this.mirror=`)`}},_e=class extends E{constructor(){super(),f(this,`tokenType`,`)`),this.value=`)`,this.mirror=`(`}},ve=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`~=`)}},ye=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`|=`)}},be=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`^=`)}},xe=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`$=`)}},Se=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`*=`)}},Ce=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`||`)}},we=class extends T{constructor(...e){super(...e),f(this,`tokenType`,`EOF`)}toSource(){return``}},D=class extends T{constructor(e){super(),f(this,`tokenType`,`DELIM`),f(this,`value`,``),this.value=C(e)}toString(){return`DELIM(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}toSource(){return this.value===`\\`?`\\
|
|
2
|
+
`:this.value}},O=class extends T{constructor(...e){super(...e),f(this,`value`,``)}ASCIIMatch(e){return this.value.toLowerCase()===e.toLowerCase()}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}},Te=class extends O{constructor(e){super(),f(this,`tokenType`,`IDENT`),this.value=e}toString(){return`IDENT(${this.value})`}toSource(){return k(this.value)}},Ee=class extends O{constructor(e){super(),f(this,`tokenType`,`FUNCTION`),f(this,`mirror`,void 0),this.value=e,this.mirror=`)`}toString(){return`FUNCTION(${this.value})`}toSource(){return`${k(this.value)}(`}},De=class extends O{constructor(e){super(),f(this,`tokenType`,`AT-KEYWORD`),this.value=e}toString(){return`AT(${this.value})`}toSource(){return`@${k(this.value)}`}},Oe=class extends O{constructor(e){super(),f(this,`tokenType`,`HASH`),f(this,`type`,void 0),this.value=e,this.type=`unrestricted`}toString(){return`HASH(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e}toSource(){return this.type===`id`?`#${k(this.value)}`:`#${Pe(this.value)}`}},ke=class extends O{constructor(e){super(),f(this,`tokenType`,`STRING`),this.value=e}toString(){return`"${Fe(this.value)}"`}},Ae=class extends O{constructor(e){super(),f(this,`tokenType`,`URL`),this.value=e}toString(){return`URL(${this.value})`}toSource(){return`url("${Fe(this.value)}")`}},je=class extends T{constructor(){super(),f(this,`tokenType`,`NUMBER`),f(this,`type`,void 0),f(this,`repr`,void 0),this.type=`integer`,this.repr=``}toString(){return this.type===`integer`?`INT(${this.value})`:`NUMBER(${this.value})`}toJSON(){let e=super.toJSON();return e.value=this.value,e.type=this.type,e.repr=this.repr,e}toSource(){return this.repr}},Me=class extends T{constructor(){super(),f(this,`tokenType`,`PERCENTAGE`),f(this,`repr`,void 0),this.repr=``}toString(){return`PERCENTAGE(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.repr=this.repr,e}toSource(){return`${this.repr}%`}},Ne=class extends T{constructor(){super(),f(this,`tokenType`,`DIMENSION`),f(this,`type`,void 0),f(this,`repr`,void 0),f(this,`unit`,void 0),this.type=`integer`,this.repr=``,this.unit=``}toString(){return`DIM(${this.value},${this.unit})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e.repr=this.repr,e.unit=this.unit,e}toSource(){let e=this.repr,t=k(this.unit);return t[0].toLowerCase()===`e`&&(t[1]===`-`||p(t.charCodeAt(1),48,57))&&(t=`\\65 ${t.slice(1,t.length)}`),e+t}};function k(e){e=`${e}`;let t=``,n=e.charCodeAt(0);for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);if(i===0)throw new S(`Invalid character: the input contains U+0000.`);p(i,1,31)||i===127||r===0&&p(i,48,57)||r===1&&p(i,48,57)&&n===45?t+=`\\${i.toString(16)} `:i>=128||i===45||i===95||p(i,48,57)||p(i,65,90)||p(i,97,122)?t+=e[r]:t+=`\\${e[r]}`}return t}function Pe(e){e=`${e}`;let t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===0)throw new S(`Invalid character: the input contains U+0000.`);r>=128||r===45||r===95||p(r,48,57)||p(r,65,90)||p(r,97,122)?t+=e[n]:t+=`\\${r.toString(16)} `}return t}function Fe(e){e=`${e}`;let t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===0)throw new S(`Invalid character: the input contains U+0000.`);p(r,1,31)||r===127?t+=`\\${r.toString(16)} `:t+=r===34||r===92?`\\${e[n]}`:e[n]}return t}var A=class extends Error{};function Ie(e,t){let n;try{n=w(e),n[n.length-1]instanceof we||n.push(new we)}catch(t){let n=`${t.message} while parsing selector "${e}"`,r=(t.stack||``).indexOf(t.message);throw r!==-1&&(t.stack=t.stack.substring(0,r)+n+t.stack.substring(r+t.message.length)),t.message=n,t}let r=n.find(e=>e instanceof De||e instanceof ie||e instanceof ae||e instanceof Ce||e instanceof se||e instanceof ce||e instanceof ue||e instanceof fe||e instanceof pe||e instanceof Ae||e instanceof Me);if(r)throw new A(`Unsupported token "${r.toSource()}" while parsing selector "${e}"`);let i=0,a=new Set;function o(){return new A(`Unexpected token "${n[i].toSource()}" while parsing selector "${e}"`)}function s(){for(;n[i]instanceof oe;)i++}function c(e=i){return n[e]instanceof Te}function l(e=i){return n[e]instanceof ke}function u(e=i){return n[e]instanceof je}function d(e=i){return n[e]instanceof de}function f(e=i){return n[e]instanceof ge}function p(e=i){return n[e]instanceof _e}function m(e=i){return n[e]instanceof Ee}function h(e=i){return n[e]instanceof D&&n[e].value===`*`}function g(e=i){return n[e]instanceof we}function ee(e=i){return n[e]instanceof D&&[`>`,`+`,`~`].includes(n[e].value)}function _(e=i){return d(e)||p(e)||g(e)||ee(e)||n[e]instanceof oe}function v(){let e=[y()];for(;s(),d();)i++,e.push(y());return e}function y(){return s(),u()||l()?n[i++].value:te()}function te(){let e={simples:[]};for(s(),ee()?e.simples.push({selector:{functions:[{name:`scope`,args:[]}]},combinator:``}):e.simples.push({selector:ne(),combinator:``});;){if(s(),ee())e.simples[e.simples.length-1].combinator=n[i++].value,s();else if(_())break;e.simples.push({combinator:``,selector:ne()})}return e}function ne(){let e=``,r=[];for(;!_();)if(c()||h())e+=n[i++].toSource();else if(n[i]instanceof Oe)e+=n[i++].toSource();else if(n[i]instanceof D&&n[i].value===`.`)if(i++,c())e+=`.${n[i++].toSource()}`;else throw o();else if(n[i]instanceof le)if(i++,c())if(!t.has(n[i].value.toLowerCase()))e+=`:${n[i++].toSource()}`;else{let e=n[i++].value.toLowerCase();r.push({name:e,args:[]}),a.add(e)}else if(m()){let c=n[i++].value.toLowerCase();if(t.has(c)?(r.push({name:c,args:v()}),a.add(c)):e+=`:${c}(${b()})`,s(),!p())throw o();i++}else throw o();else if(n[i]instanceof me){for(e+=`[`,i++;!(n[i]instanceof he)&&!g();)e+=n[i++].toSource();if(!(n[i]instanceof he))throw o();e+=`]`,i++}else throw o();if(!e&&!r.length)throw o();return{css:e||void 0,functions:r}}function b(){let e=``,t=1;for(;!g()&&((f()||m())&&t++,p()&&t--,t);)e+=n[i++].toSource();return e}let x=v();if(!g())throw o();if(x.some(e=>typeof e!=`object`||!(`simples`in e)))throw new A(`Error while parsing selector "${e}"`);return{selector:x,names:Array.from(a)}}const Le=new Set([`internal:has`,`internal:has-not`,`internal:and`,`internal:or`,`internal:chain`,`left-of`,`right-of`,`above`,`below`,`near`]),Re=new Set([`left-of`,`right-of`,`above`,`below`,`near`]),ze=new Set([`not`,`is`,`where`,`has`,`scope`,`light`,`visible`,`text`,`text-matches`,`text-is`,`has-text`,`above`,`below`,`right-of`,`left-of`,`near`,`nth-match`]);function Be(e){let t=Ue(e),n=[];for(let e of t.parts){if(e.name===`css`||e.name===`css:light`){e.name===`css:light`&&(e.body=`:light(${e.body})`);let t=Ie(e.body,ze);n.push({name:`css`,body:t.selector,source:e.body});continue}if(Le.has(e.name)){let t,r;try{let n=JSON.parse(`[${e.body}]`);if(!Array.isArray(n)||n.length<1||n.length>2||typeof n[0]!=`string`)throw new A(`Malformed selector: ${e.name}=${e.body}`);if(t=n[0],n.length===2){if(typeof n[1]!=`number`||!Re.has(e.name))throw new A(`Malformed selector: ${e.name}=${e.body}`);r=n[1]}}catch{throw new A(`Malformed selector: ${e.name}=${e.body}`)}let i={name:e.name,source:e.body,body:{parsed:Be(t),distance:r}},a=[...i.body.parsed.parts].reverse().find(e=>e.name===`internal:control`&&e.body===`enter-frame`),o=a?i.body.parsed.parts.indexOf(a):-1;o!==-1&&Ve(i.body.parsed.parts.slice(0,o+1),n.slice(0,o+1))&&i.body.parsed.parts.splice(0,o+1),n.push(i);continue}n.push({...e,source:e.body})}if(Le.has(n[0].name))throw new A(`"${n[0].name}" selector cannot be first`);return{capture:t.capture,parts:n}}function Ve(e,t){return j({parts:e})===j({parts:t})}function j(e,t){return typeof e==`string`?e:e.parts.map((n,r)=>{let i=!0;!t&&r!==e.capture&&(n.name===`css`||n.name===`xpath`&&n.source.startsWith(`//`)||n.source.startsWith(`..`))&&(i=!1);let a=i?`${n.name}=`:``;return`${r===e.capture?`*`:``}${a}${n.source}`}).join(` >> `)}function He(e,t){let n=(e,r)=>{for(let i of e.parts)t(i,r),Le.has(i.name)&&n(i.body.parsed,!0)};n(e,!1)}function Ue(e){let t=0,n,r=0,i={parts:[]},a=()=>{let n=e.substring(r,t).trim(),a=n.indexOf(`=`),o,s;a!==-1&&n.substring(0,a).trim().match(/^[\w\-+:*]+$/)?(o=n.substring(0,a).trim(),s=n.substring(a+1)):n.length>1&&n[0]===`"`&&n[n.length-1]===`"`||n.length>1&&n[0]===`'`&&n[n.length-1]===`'`?(o=`text`,s=n):/^\(*\/\//.test(n)||n.startsWith(`..`)?(o=`xpath`,s=n):(o=`css`,s=n);let c=!1;if(o[0]===`*`&&(c=!0,o=o.substring(1)),i.parts.push({name:o,body:s}),c){if(i.capture!==void 0)throw new A(`Only one of the selectors can capture using * modifier`);i.capture=i.parts.length-1}};if(!e.includes(`>>`))return t=e.length,a(),i;let o=()=>{let n=e.substring(r,t).match(/^\s*text\s*=(.*)$/);return!!n&&!!n[1]};for(;t<e.length;){let i=e[t];i===`\\`&&t+1<e.length?t+=2:i===n?(n=void 0,t++):!n&&(i===`"`||i===`'`||i==="`")&&!o()?(n=i,t++):!n&&i===`>`&&e[t+1]===`>`?(a(),t+=2,r=t):t++}return a(),i}function M(e,t){let n=0,r=e.length===0,i=()=>e[n]||``,a=()=>{let t=i();return++n,r=n>=e.length,t},o=t=>{throw r?new A(`Unexpected end of selector while parsing selector \`${e}\``):new A(`Error while parsing selector \`${e}\` - unexpected symbol "${i()}" at position ${n}${t?` during ${t}`:``}`)};function s(){for(;!r&&/\s/.test(i());)a()}function c(e){return e>=``||e>=`0`&&e<=`9`||e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e>=`0`&&e<=`9`||e===`_`||e===`-`}function l(){let e=``;for(s();!r&&c(i());)e+=a();return e}function u(e){let t=a();for(t!==e&&o(`parsing quoted string`);!r&&i()!==e;)i()===`\\`&&a(),t+=a();return i()!==e&&o(`parsing quoted string`),t+=a(),t}function d(){a()!==`/`&&o(`parsing regular expression`);let t=``,n=!1;for(;!r;){if(i()===`\\`)t+=a(),r&&o(`parsing regular expression`);else if(n&&i()===`]`)n=!1;else if(!n&&i()===`[`)n=!0;else if(!n&&i()===`/`)break;t+=a()}a()!==`/`&&o(`parsing regular expression`);let s=``;for(;!r&&i().match(/[dgimsuy]/);)s+=a();try{return new RegExp(t,s)}catch(t){throw new A(`Error while parsing selector \`${e}\`: ${t.message}`)}}function f(){let e=``;return s(),e=i()===`'`||i()===`"`?u(i()).slice(1,-1):l(),e||o(`parsing property path`),e}function p(){s();let e=``;return r||(e+=a()),!r&&e!==`=`&&(e+=a()),[`=`,`*=`,`^=`,`$=`,`|=`,`~=`].includes(e)||o(`parsing operator`),e}function m(){a();let t=[];for(t.push(f()),s();i()===`.`;)a(),t.push(f()),s();if(i()===`]`)return a(),{name:t.join(`.`),jsonPath:t,op:`<truthy>`,value:null,caseSensitive:!1};let n=p(),l,m=!0;if(s(),i()===`/`){if(n!==`=`)throw new A(`Error while parsing selector \`${e}\` - cannot use ${n} in attribute with regular expression`);l=d()}else if(i()===`'`||i()===`"`)l=u(i()).slice(1,-1),s(),i()===`i`||i()===`I`?(m=!1,a()):(i()===`s`||i()===`S`)&&(m=!0,a());else{for(l=``;!r&&(c(i())||i()===`+`||i()===`.`);)l+=a();l===`true`?l=!0:l===`false`&&(l=!1)}if(s(),i()!==`]`&&o(`parsing attribute value`),a(),n!==`=`&&typeof l!=`string`)throw new A(`Error while parsing selector \`${e}\` - cannot use ${n} in attribute with non-string matching value - ${l}`);return{name:t.join(`.`),jsonPath:t,op:n,value:l,caseSensitive:m}}let h={name:``,attributes:[]};for(h.name=l(),s();i()===`[`;)h.attributes.push(m()),s();if(r||o(void 0),!h.name&&!h.attributes.length)throw new A(`Error while parsing selector \`${e}\` - selector cannot be empty`);return h}function We(e,t=`'`){let n=JSON.stringify(e),r=n.substring(1,n.length-1).replace(/\\"/g,`"`);if(t===`'`)return t+r.replace(/'/g,`\\'`)+t;if(t===`"`)return t+r.replace(/"/g,`\\"`)+t;if(t==="`")return t+r.replace(/`/g,"`")+t;throw Error(`Invalid escape char`)}function N(e){let t=``;for(let n=0;n<e.length;n++)t+=Ke(e,n);return t}function Ge(e){return`"${N(e).replace(/\\ /g,` `)}"`}function Ke(e,t){let n=e.charCodeAt(t);return n===0?`�`:n>=1&&n<=31||n>=48&&n<=57&&(t===0||t===1&&e.charCodeAt(0)===45)?`\\${n.toString(16)} `:t===0&&n===45&&e.length===1?`\\${e.charAt(t)}`:n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122?e.charAt(t):`\\${e.charAt(t)}`}function P(e){return e.replace(/[\u200b\u00ad]/g,``).trim().replace(/\s+/g,` `)}function qe(e){return e.replace(/(^|[^\\])(\\\\)*\\(['"`])/g,`$1$2$3`)}function Je(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function F(e,t){return typeof e==`string`?`${JSON.stringify(e)}${t?`s`:`i`}`:Je(e)}function I(e,t){return typeof e==`string`?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"${t?`s`:`i`}`:Je(e)}function Ye(e,t,n=``){if(e.length<=t)return e;let r=[...e];return r.length>t?r.slice(0,t-n.length).join(``)+n:r.join(``)}function Xe(e,t){return Ye(e,t,`…`)}function Ze(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function L(e){if(e.parentElement)return e.parentElement;if(e.parentNode&&e.parentNode.nodeType===11&&e.parentNode.host)return e.parentNode.host}function Qe(e){let t=e;for(;t.parentNode;)t=t.parentNode;if(t.nodeType===11||t.nodeType===9)return t}function $e(e){for(;e.parentElement;)e=e.parentElement;return L(e)}function et(e,t){for(;e;){let n=e.closest(t);if(n)return n;e=$e(e)}}function R(e,t){return e.ownerDocument&&e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,t):void 0}function tt(e,t){if(t??=R(e),!t)return!0;if(Element.prototype.checkVisibility&&Q.options.browser!==`webkit`){if(!e.checkVisibility())return!1}else{let t=e.closest(`details,summary`);if(t!==e&&t?.nodeName===`DETAILS`&&!t.open)return!1}return t.visibility===`visible`}function nt(e){let t=R(e);if(!t)return!0;if(t.display===`contents`){for(let t=e.firstChild;t;t=t.nextSibling)if(t.nodeType===1&&nt(t)||t.nodeType===3&&rt(t))return!0;return!1}if(!tt(e,t))return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0}function rt(e){let t=e.ownerDocument.createRange();t.selectNode(e);let n=t.getBoundingClientRect();return n.width>0&&n.height>0}function z(e){return e instanceof HTMLFormElement?`FORM`:e.tagName.toUpperCase()}function it(e){return e.hasAttribute(`aria-label`)||e.hasAttribute(`aria-labelledby`)}const at=`article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]`,ot=new Map([[`aria-atomic`,void 0],[`aria-busy`,void 0],[`aria-controls`,void 0],[`aria-current`,void 0],[`aria-describedby`,void 0],[`aria-details`,void 0],[`aria-dropeffect`,void 0],[`aria-flowto`,void 0],[`aria-grabbed`,void 0],[`aria-hidden`,void 0],[`aria-keyshortcuts`,void 0],[`aria-label`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-labelledby`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-live`,void 0],[`aria-owns`,void 0],[`aria-relevant`,void 0],[`aria-roledescription`,new Set([`generic`])]]);function st(e,t){return[...ot].some(([n,r])=>!r?.has(t||``)&&e.hasAttribute(n))}function ct(e){return!Number.isNaN(Number(String(e.getAttribute(`tabindex`))))}function lt(e){return!qt(e)&&(ut(e)||ct(e))}function ut(e){let t=z(e);return[`BUTTON`,`DETAILS`,`SELECT`,`TEXTAREA`].includes(t)?!0:t===`A`||t===`AREA`?e.hasAttribute(`href`):t===`INPUT`&&!e.hidden}const dt={A:e=>e.hasAttribute(`href`)?`link`:null,AREA:e=>e.hasAttribute(`href`)?`link`:null,ARTICLE:()=>`article`,ASIDE:()=>`complementary`,BLOCKQUOTE:()=>`blockquote`,BUTTON:()=>`button`,CAPTION:()=>`caption`,CODE:()=>`code`,DATALIST:()=>`listbox`,DD:()=>`definition`,DEL:()=>`deletion`,DETAILS:()=>`group`,DFN:()=>`term`,DIALOG:()=>`dialog`,DT:()=>`term`,EM:()=>`emphasis`,FIELDSET:()=>`group`,FIGURE:()=>`figure`,FOOTER:e=>et(e,at)?null:`contentinfo`,FORM:e=>it(e)?`form`:null,H1:()=>`heading`,H2:()=>`heading`,H3:()=>`heading`,H4:()=>`heading`,H5:()=>`heading`,H6:()=>`heading`,HEADER:e=>et(e,at)?null:`banner`,HR:()=>`separator`,HTML:()=>`document`,IMG:e=>e.getAttribute(`alt`)===``&&!e.getAttribute(`title`)&&!st(e)&&!ct(e)?`presentation`:`img`,INPUT:e=>{let t=e.type.toLowerCase();if(t===`search`)return e.hasAttribute(`list`)?`combobox`:`searchbox`;if([`email`,`tel`,`text`,`url`,``].includes(t)){let t=H(e,e.getAttribute(`list`))[0];return t&&z(t)===`DATALIST`?`combobox`:`textbox`}return t===`hidden`?``:t===`file`?`button`:{button:`button`,checkbox:`checkbox`,image:`button`,number:`spinbutton`,radio:`radio`,range:`slider`,reset:`button`,submit:`button`}[t]||`textbox`},INS:()=>`insertion`,LI:()=>`listitem`,MAIN:()=>`main`,MARK:()=>`mark`,MATH:()=>`math`,MENU:()=>`list`,METER:()=>`meter`,NAV:()=>`navigation`,OL:()=>`list`,OPTGROUP:()=>`group`,OPTION:()=>`option`,OUTPUT:()=>`status`,P:()=>`paragraph`,PROGRESS:()=>`progressbar`,SECTION:e=>it(e)?`region`:null,SELECT:e=>e.hasAttribute(`multiple`)||e.size>1?`listbox`:`combobox`,STRONG:()=>`strong`,SUB:()=>`subscript`,SUP:()=>`superscript`,SVG:()=>`img`,TABLE:()=>`table`,TBODY:()=>`rowgroup`,TD:e=>{let t=et(e,`table`),n=t?_t(t):``;return n===`grid`||n===`treegrid`?`gridcell`:`cell`},TEXTAREA:()=>`textbox`,TFOOT:()=>`rowgroup`,TH:e=>{if(e.getAttribute(`scope`)===`col`)return`columnheader`;if(e.getAttribute(`scope`)===`row`)return`rowheader`;let t=et(e,`table`),n=t?_t(t):``;return n===`grid`||n===`treegrid`?`gridcell`:`cell`},THEAD:()=>`rowgroup`,TIME:()=>`time`,TR:()=>`row`,UL:()=>`list`},ft={DD:[`DL`,`DIV`],DIV:[`DL`],DT:[`DL`,`DIV`],LI:[`OL`,`UL`],TBODY:[`TABLE`],TD:[`TR`],TFOOT:[`TABLE`],TH:[`TR`],THEAD:[`TABLE`],TR:[`THEAD`,`TBODY`,`TFOOT`,`TABLE`]};function pt(e){let t=dt[z(e)]?.call(dt,e)||``;if(!t)return null;let n=e;for(;n;){let e=L(n),t=ft[z(n)];if(!t||!e||!t.includes(z(e)))break;let r=_t(e);if((r===`none`||r===`presentation`)&&!vt(e,r))return r;n=e}return t}const mt=`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.command.complementary.composite.contentinfo.definition.deletion.dialog.directory.document.emphasis.feed.figure.form.generic.grid.gridcell.group.heading.img.input.insertion.landmark.link.list.listbox.listitem.log.main.marquee.math.meter.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.range.region.roletype.row.rowgroup.rowheader.scrollbar.search.searchbox.section.sectionhead.select.separator.slider.spinbutton.status.strong.structure.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem.widget.window`.split(`.`),ht=[`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`],gt=mt.filter(e=>!ht.includes(e));function _t(e){return(e.getAttribute(`role`)||``).split(` `).map(e=>e.trim()).find(e=>gt.includes(e))||null}function vt(e,t){return st(e,t)||lt(e)}function B(e){let t=_t(e);if(!t)return pt(e);if(t===`none`||t===`presentation`){let t=pt(e);if(vt(e,t))return t}return t}function yt(e){return e===null?void 0:e.toLowerCase()===`true`}function bt(e){return[`STYLE`,`SCRIPT`,`NOSCRIPT`,`TEMPLATE`].includes(z(e))}function V(e){if(bt(e))return!0;let t=R(e),n=e.nodeName===`SLOT`;if(t?.display===`contents`&&!n){for(let t=e.firstChild;t;t=t.nextSibling)if(t.nodeType===1&&!V(t)||t.nodeType===3&&rt(t))return!1;return!0}return!(e.nodeName===`OPTION`&&e.closest(`select`))&&!n&&!tt(e,t)||xt(e)}function xt(e){let t=tn?.get(e);if(t===void 0){if(t=!1,e.parentElement&&e.parentElement.shadowRoot&&!e.assignedSlot&&(t=!0),!t){let n=R(e);t=!n||n.display===`none`||yt(e.getAttribute(`aria-hidden`))===!0}if(!t){let n=L(e);n&&(t=xt(n))}tn?.set(e,t)}return t}function H(e,t){if(!t)return[];let n=Qe(e);if(!n)return[];try{let e=t.split(` `).filter(e=>!!e),r=new Set;for(let t of e){let e=n.querySelector(`#${CSS.escape(t)}`);e&&r.add(e)}return[...r]}catch{return[]}}function U(e){return e.trim()}function W(e){return e.split(`\xA0`).map(e=>e.replace(/\r\n/g,`
|
|
3
|
+
`).replace(/[\u200b\u00ad]/g,``).replace(/\s\s*/g,` `)).join(`\xA0`).trim()}function St(e,t){let n=[...e.querySelectorAll(t)];for(let r of H(e,e.getAttribute(`aria-owns`)))r.matches(t)&&n.push(r),n.push(...r.querySelectorAll(t));return n}function Ct(e,t){let n=t===`::before`?nn:rn;if(n?.has(e))return n?.get(e)||``;let r=wt(R(e,t));return n&&n.set(e,r),r}function wt(e){if(!e)return``;let t=e.content;if(t[0]===`'`&&t[t.length-1]===`'`||t[0]===`"`&&t[t.length-1]===`"`){let n=t.substring(1,t.length-1);return(e.display||`inline`)===`inline`?n:` ${n} `}return``}function Tt(e){let t=e.getAttribute(`aria-labelledby`);return t===null?null:H(e,t)}function Et(e,t){let n=[`button`,`cell`,`checkbox`,`columnheader`,`gridcell`,`heading`,`link`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`option`,`radio`,`row`,`rowheader`,`switch`,`tab`,`tooltip`,`treeitem`].includes(e),r=t&&[``,`caption`,`code`,`contentinfo`,`definition`,`deletion`,`emphasis`,`insertion`,`list`,`listitem`,`mark`,`none`,`paragraph`,`presentation`,`region`,`row`,`rowgroup`,`section`,`strong`,`subscript`,`superscript`,`table`,`term`,`time`].includes(e);return n||r}function Dt(e,t){let n=t?Qt:Zt,r=n?.get(e);return r===void 0&&(r=``,[`caption`,`code`,`definition`,`deletion`,`emphasis`,`generic`,`insertion`,`mark`,`paragraph`,`presentation`,`strong`,`subscript`,`suggestion`,`superscript`,`term`,`time`].includes(B(e)||``)||(r=W(G(e,{includeHidden:t,visitedElements:new Set,embeddedInDescribedBy:void 0,embeddedInLabelledBy:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0,embeddedInTargetElement:`self`}))),n?.set(e,r)),r}function Ot(e,t){let n=en,r=n?.get(e);return r===void 0&&(r=``,r=e.hasAttribute(`aria-describedby`)?W(H(e,e.getAttribute(`aria-describedby`)).map(e=>G(e,{includeHidden:t,visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:V(e)}})).join(` `)):e.hasAttribute(`aria-description`)?W(e.getAttribute(`aria-description`)||``):W(e.getAttribute(`title`)||``),n?.set(e,r)),r}const kt=[`application`,`checkbox`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`slider`,`spinbutton`,`textbox`,`tree`,`columnheader`,`rowheader`,`searchbox`,`switch`,`treegrid`];function At(e){let t=B(e)||``;if(!t||!kt.includes(t))return`false`;let n=e.getAttribute(`aria-invalid`);return!n||n.trim()===``||n.toLocaleLowerCase()===`false`?`false`:n===`true`||n===`grammar`||n===`spelling`?n:`true`}function jt(e){return`validity`in e&&e.validity?.valid===!1}function Mt(e){let t=$t,n=$t?.get(e);if(n===void 0){n=``;let r=At(e)!==`false`,i=jt(e);(r||i)&&(n=H(e,e.getAttribute(`aria-errormessage`)).map(e=>W(G(e,{visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:V(e)}}))).join(` `).trim()),t?.set(e,n)}return n}function G(e,t){if(t.visitedElements.has(e))return``;let n={...t,embeddedInTargetElement:t.embeddedInTargetElement===`self`?`descendant`:t.embeddedInTargetElement};if(!t.includeHidden){let n=!!t.embeddedInLabelledBy?.hidden||!!t.embeddedInDescribedBy?.hidden||!!t.embeddedInNativeTextAlternative?.hidden||!!t.embeddedInLabel?.hidden;if(bt(e)||!n&&V(e))return t.visitedElements.add(e),``}let r=Tt(e);if(!t.embeddedInLabelledBy){let e=(r||[]).map(e=>G(e,{...t,embeddedInLabelledBy:{element:e,hidden:V(e)},embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0})).join(` `);if(e)return e}let i=B(e)||``,a=z(e);if(t.embeddedInLabel||t.embeddedInLabelledBy||t.embeddedInTargetElement===`descendant`){let o=[...e.labels||[]].includes(e),s=(r||[]).includes(e);if(!o&&!s){if(i===`textbox`)return t.visitedElements.add(e),a===`INPUT`||a===`TEXTAREA`?e.value:e.textContent||``;if([`combobox`,`listbox`].includes(i)){t.visitedElements.add(e);let r;if(a===`SELECT`)r=[...e.selectedOptions],!r.length&&e.options.length&&r.push(e.options[0]);else{let t=i===`combobox`?St(e,`*`).find(e=>B(e)===`listbox`):e;r=t?St(t,`[aria-selected="true"]`).filter(e=>B(e)===`option`):[]}return!r.length&&a===`INPUT`?e.value:r.map(e=>G(e,n)).join(` `)}if([`progressbar`,`scrollbar`,`slider`,`spinbutton`,`meter`].includes(i))return t.visitedElements.add(e),e.hasAttribute(`aria-valuetext`)?e.getAttribute(`aria-valuetext`)||``:e.hasAttribute(`aria-valuenow`)?e.getAttribute(`aria-valuenow`)||``:e.getAttribute(`value`)||``;if([`menu`].includes(i))return t.visitedElements.add(e),``}}let o=e.getAttribute(`aria-label`)||``;if(U(o))return t.visitedElements.add(e),o;if(![`presentation`,`none`].includes(i)){if(a===`INPUT`&&[`button`,`submit`,`reset`].includes(e.type)){t.visitedElements.add(e);let n=e.value||``;return U(n)?n:e.type===`submit`?`Submit`:e.type===`reset`?`Reset`:e.getAttribute(`title`)||``}if(a===`INPUT`&&e.type===`image`){t.visitedElements.add(e);let n=e.labels||[];if(n.length&&!t.embeddedInLabelledBy)return Xt(n,t);let r=e.getAttribute(`alt`)||``;if(U(r))return r;let i=e.getAttribute(`title`)||``;return U(i)?i:`Submit`}if(!r&&a===`BUTTON`){t.visitedElements.add(e);let n=e.labels||[];if(n.length)return Xt(n,t)}if(!r&&a===`OUTPUT`){t.visitedElements.add(e);let n=e.labels||[];return n.length?Xt(n,t):e.getAttribute(`title`)||``}if(!r&&(a===`TEXTAREA`||a===`SELECT`||a===`INPUT`)){t.visitedElements.add(e);let n=e.labels||[];if(n.length)return Xt(n,t);let r=a===`INPUT`&&[`text`,`password`,`search`,`tel`,`email`,`url`].includes(e.type)||a===`TEXTAREA`,i=e.getAttribute(`placeholder`)||``,o=e.getAttribute(`title`)||``;return!r||o?o:i}if(!r&&a===`FIELDSET`){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(z(t)===`LEGEND`)return G(t,{...n,embeddedInNativeTextAlternative:{element:t,hidden:V(t)}});return e.getAttribute(`title`)||``}if(!r&&a===`FIGURE`){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(z(t)===`FIGCAPTION`)return G(t,{...n,embeddedInNativeTextAlternative:{element:t,hidden:V(t)}});return e.getAttribute(`title`)||``}if(a===`IMG`){t.visitedElements.add(e);let n=e.getAttribute(`alt`)||``;return U(n)?n:e.getAttribute(`title`)||``}if(a===`TABLE`){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(z(t)===`CAPTION`)return G(t,{...n,embeddedInNativeTextAlternative:{element:t,hidden:V(t)}});let r=e.getAttribute(`summary`)||``;if(r)return r}if(a===`AREA`){t.visitedElements.add(e);let n=e.getAttribute(`alt`)||``;return U(n)?n:e.getAttribute(`title`)||``}if(a===`SVG`||e.ownerSVGElement){t.visitedElements.add(e);for(let t=e.firstElementChild;t;t=t.nextElementSibling)if(z(t)===`TITLE`&&t.ownerSVGElement)return G(t,{...n,embeddedInLabelledBy:{element:t,hidden:V(t)}})}if(e.ownerSVGElement&&a===`A`){let n=e.getAttribute(`xlink:title`)||``;if(U(n))return t.visitedElements.add(e),n}}let s=a===`SUMMARY`&&![`presentation`,`none`].includes(i);if(Et(i,t.embeddedInTargetElement===`descendant`)||s||t.embeddedInLabelledBy||t.embeddedInDescribedBy||t.embeddedInLabel||t.embeddedInNativeTextAlternative){t.visitedElements.add(e);let r=Nt(e,n);if(t.embeddedInTargetElement===`self`?U(r):r)return r}if(![`presentation`,`none`].includes(i)||a===`IFRAME`){t.visitedElements.add(e);let n=e.getAttribute(`title`)||``;if(U(n))return n}return t.visitedElements.add(e),``}function Nt(e,t){let n=[],r=(e,r)=>{if(!(r&&e.assignedSlot))if(e.nodeType===1){let r=R(e)?.display||`inline`,i=G(e,t);(r!==`inline`||e.nodeName===`BR`)&&(i=` `+i+` `),n.push(i)}else e.nodeType===3&&n.push(e.textContent||``)};n.push(Ct(e,`::before`));let i=e.nodeName===`SLOT`?e.assignedNodes():[];if(i.length)for(let e of i)r(e,!1);else{for(let t=e.firstChild;t;t=t.nextSibling)r(t,!0);if(e.shadowRoot)for(let t=e.shadowRoot.firstChild;t;t=t.nextSibling)r(t,!0);for(let t of H(e,e.getAttribute(`aria-owns`)))r(t,!0)}return n.push(Ct(e,`::after`)),n.join(``)}const Pt=[`gridcell`,`option`,`row`,`tab`,`rowheader`,`columnheader`,`treeitem`];function Ft(e){return z(e)===`OPTION`?e.selected:Pt.includes(B(e)||``)?yt(e.getAttribute(`aria-selected`))===!0:!1}const It=[`checkbox`,`menuitemcheckbox`,`option`,`radio`,`switch`,`menuitemradio`,`treeitem`];function Lt(e){let t=Rt(e);return t!==`error`&&t}function Rt(e,t){let n=z(e);if(n===`INPUT`&&e.indeterminate)return`mixed`;if(n===`INPUT`&&[`checkbox`,`radio`].includes(e.type))return e.checked;if(It.includes(B(e)||``)){let t=e.getAttribute(`aria-checked`);return t===`true`||t===`mixed`&&`mixed`}return`error`}const zt=[`button`];function Bt(e){if(zt.includes(B(e)||``)){let t=e.getAttribute(`aria-pressed`);if(t===`true`)return!0;if(t===`mixed`)return`mixed`}return!1}const Vt=[`application`,`button`,`checkbox`,`combobox`,`gridcell`,`link`,`listbox`,`menuitem`,`row`,`rowheader`,`tab`,`treeitem`,`columnheader`,`menuitemcheckbox`,`menuitemradio`,`rowheader`,`switch`];function Ht(e){if(z(e)===`DETAILS`)return e.open;if(Vt.includes(B(e)||``)){let t=e.getAttribute(`aria-expanded`);return t===null?`none`:t===`true`}return`none`}const Ut=[`heading`,`listitem`,`row`,`treeitem`];function Wt(e){let t={H1:1,H2:2,H3:3,H4:4,H5:5,H6:6}[z(e)];if(t)return t;if(Ut.includes(B(e)||``)){let t=e.getAttribute(`aria-level`),n=t===null?NaN:Number(t);if(Number.isInteger(n)&&n>=1)return n}return 0}const Gt=`application.button.composite.gridcell.group.input.link.menuitem.scrollbar.separator.tab.checkbox.columnheader.combobox.grid.listbox.menu.menubar.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.searchbox.select.slider.spinbutton.switch.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`);function Kt(e){return qt(e)||Yt(e)}function qt(e){return[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`OPTION`,`OPTGROUP`].includes(e.tagName)&&(e.hasAttribute(`disabled`)||Jt(e))}function Jt(e){let t=e?.closest(`FIELDSET[DISABLED]`);if(!t)return!1;let n=t.querySelector(`:scope > LEGEND`);return!n||!n.contains(e)}function Yt(e){if(!e)return!1;if(Gt.includes(B(e)||``)){let t=(e.getAttribute(`aria-disabled`)||``).toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}return Yt(L(e))}function Xt(e,t){return[...e].map(e=>G(e,{...t,embeddedInLabel:{element:e,hidden:V(e)},embeddedInNativeTextAlternative:void 0,embeddedInLabelledBy:void 0,embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0})).filter(e=>!!e).join(` `)}let Zt,Qt,$t,en,tn,nn,rn,an=0;function on(){++an,Zt??=new Map,Qt??=new Map,en??=new Map,$t??=new Map,tn??=new Map,nn??=new Map,rn??=new Map}function sn(){--an||(Zt=void 0,Qt=void 0,en=void 0,$t=void 0,tn=void 0,nn=void 0,rn=void 0)}function cn(e,t){let n=typeof e==`string`&&!t.caseSensitive?e.toUpperCase():e,r=typeof t.value==`string`&&!t.caseSensitive?t.value.toUpperCase():t.value;return t.op===`<truthy>`?!!n:t.op===`=`?r instanceof RegExp?typeof n==`string`&&!!n.match(r):n===r:typeof n!=`string`||typeof r!=`string`?!1:t.op===`*=`?n.includes(r):t.op===`^=`?n.startsWith(r):t.op===`$=`?n.endsWith(r):t.op===`|=`?n===r||n.startsWith(`${r}-`):t.op===`~=`&&n.split(` `).includes(r)}function ln(e){let t=e.ownerDocument;return e.nodeName===`SCRIPT`||e.nodeName===`NOSCRIPT`||e.nodeName===`STYLE`||t.head&&t.head.contains(e)}function K(e,t){let n=e.get(t);if(n===void 0){if(n={full:``,normalized:``,immediate:[]},!ln(t)){let r=``;if(t instanceof HTMLInputElement&&(t.type===`submit`||t.type===`button`))n={full:t.value,normalized:P(t.value),immediate:[t.value]};else{for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType===Node.TEXT_NODE?(n.full+=i.nodeValue||``,r+=i.nodeValue||``):(r&&n.immediate.push(r),r=``,i.nodeType===Node.ELEMENT_NODE&&(n.full+=K(e,i).full));r&&n.immediate.push(r),t.shadowRoot&&(n.full+=K(e,t.shadowRoot).full),n.full&&(n.normalized=P(n.full))}}e.set(t,n)}return n}function un(e,t,n){if(ln(t)||!n(K(e,t)))return`none`;for(let r=t.firstChild;r;r=r.nextSibling)if(r.nodeType===Node.ELEMENT_NODE&&n(K(e,r)))return`selfAndChildren`;return t.shadowRoot&&n(K(e,t.shadowRoot))?`selfAndChildren`:`self`}function dn(e,t){let n=Tt(t);if(n)return n.map(t=>K(e,t));let r=t.getAttribute(`aria-label`);if(r!==null&&r.trim())return[{full:r,normalized:P(r),immediate:[r]}];let i=t.nodeName===`INPUT`&&t.type!==`hidden`;if([`BUTTON`,`METER`,`OUTPUT`,`PROGRESS`,`SELECT`,`TEXTAREA`].includes(t.nodeName)||i){let n=t.labels;if(n)return[...n].map(t=>K(e,t))}return[]}const fn=[`selected`,`checked`,`pressed`,`expanded`,`level`,`disabled`,`name`,`include-hidden`];fn.sort();function pn(e,t,n){if(!t.includes(n))throw Error(`"${e}" attribute is only supported for roles: ${t.slice().sort().map(e=>`"${e}"`).join(`, `)}`)}function q(e,t){if(e.op!==`<truthy>`&&!t.includes(e.value))throw Error(`"${e.name}" must be one of ${t.map(e=>JSON.stringify(e)).join(`, `)}`)}function J(e,t){if(!t.includes(e.op))throw Error(`"${e.name}" does not support "${e.op}" matcher`)}function mn(e,t){let n={role:t};for(let r of e)switch(r.name){case`checked`:pn(r.name,It,t),q(r,[!0,!1,`mixed`]),J(r,[`<truthy>`,`=`]),n.checked=r.op===`<truthy>`||r.value;break;case`pressed`:pn(r.name,zt,t),q(r,[!0,!1,`mixed`]),J(r,[`<truthy>`,`=`]),n.pressed=r.op===`<truthy>`||r.value;break;case`selected`:pn(r.name,Pt,t),q(r,[!0,!1]),J(r,[`<truthy>`,`=`]),n.selected=r.op===`<truthy>`||r.value;break;case`expanded`:pn(r.name,Vt,t),q(r,[!0,!1]),J(r,[`<truthy>`,`=`]),n.expanded=r.op===`<truthy>`||r.value;break;case`level`:if(pn(r.name,Ut,t),typeof r.value==`string`&&(r.value=+r.value),r.op!==`=`||typeof r.value!=`number`||Number.isNaN(r.value))throw Error(`"level" attribute must be compared to a number`);n.level=r.value;break;case`disabled`:q(r,[!0,!1]),J(r,[`<truthy>`,`=`]),n.disabled=r.op===`<truthy>`||r.value;break;case`name`:if(r.op===`<truthy>`)throw Error(`"name" attribute must have a value`);if(typeof r.value!=`string`&&!(r.value instanceof RegExp))throw TypeError(`"name" attribute must be a string or a regular expression`);n.name=r.value,n.nameOp=r.op,n.exact=r.caseSensitive;break;case`include-hidden`:q(r,[!0,!1]),J(r,[`<truthy>`,`=`]),n.includeHidden=r.op===`<truthy>`||r.value;break;default:throw Error(`Unknown attribute "${r.name}", must be one of ${fn.map(e=>`"${e}"`).join(`, `)}.`)}return n}function hn(e,t,n){let r=[],i=e=>{if(B(e)===t.role&&(t.selected===void 0||Ft(e)===t.selected)&&(t.checked===void 0||Lt(e)===t.checked)&&(t.pressed===void 0||Bt(e)===t.pressed)&&(t.expanded===void 0||Ht(e)===t.expanded)&&(t.level===void 0||Wt(e)===t.level)&&(t.disabled===void 0||Kt(e)===t.disabled)&&!(!t.includeHidden&&V(e))){if(t.name!==void 0){let r=P(Dt(e,!!t.includeHidden));if(typeof t.name==`string`&&(t.name=P(t.name)),n&&!t.exact&&t.nameOp===`=`&&(t.nameOp=`*=`),!cn(r,{op:t.nameOp||`=`,value:t.name,caseSensitive:!!t.exact}))return}r.push(e)}},a=e=>{let t=[];e.shadowRoot&&t.push(e.shadowRoot);for(let n of e.querySelectorAll(`*`))i(n),n.shadowRoot&&t.push(n.shadowRoot);t.forEach(a)};return a(e),r}function gn(e){return{queryAll:(t,n)=>{let r=M(n),i=r.name.toLowerCase();if(!i)throw Error(`Role must not be empty`);let a=mn(r.attributes,i);on();try{return hn(t,a,e)}finally{sn()}}}}function _n(e,t,n=!1){return vn(e,t,n)[0]}function vn(e,t,n=!1,r=20,i){try{return Y(new xn[e](i),Be(t),n,r)}catch{return[t]}}function Y(e,t,n=!1,r=20){let i=[...t.parts];for(let e=0;e<i.length-1;e++)if(i[e].name===`nth`&&i[e+1].name===`internal:control`&&i[e+1].body===`enter-frame`){let[t]=i.splice(e,1);i.splice(e+1,0,t)}let a=[],o=n?`frame-locator`:`page`;for(let t=0;t<i.length;t++){let n=i[t],s=o;if(o=`locator`,n.name===`nth`){n.body===`0`?a.push([e.generateLocator(s,`first`,``),e.generateLocator(s,`nth`,`0`)]):n.body===`-1`?a.push([e.generateLocator(s,`last`,``),e.generateLocator(s,`nth`,`-1`)]):a.push([e.generateLocator(s,`nth`,n.body)]);continue}if(n.name===`internal:text`){let{exact:t,text:r}=bn(n.body);a.push([e.generateLocator(s,`text`,r,{exact:t})]);continue}if(n.name===`internal:has-text`){let{exact:t,text:r}=bn(n.body);if(!t){a.push([e.generateLocator(s,`has-text`,r,{exact:t})]);continue}}if(n.name===`internal:has-not-text`){let{exact:t,text:r}=bn(n.body);if(!t){a.push([e.generateLocator(s,`has-not-text`,r,{exact:t})]);continue}}if(n.name===`internal:has`){let t=Y(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`has`,t)));continue}if(n.name===`internal:has-not`){let t=Y(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`hasNot`,t)));continue}if(n.name===`internal:and`){let t=Y(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`and`,t)));continue}if(n.name===`internal:or`){let t=Y(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`or`,t)));continue}if(n.name===`internal:chain`){let t=Y(e,n.body.parsed,!1,r);a.push(t.map(t=>e.generateLocator(s,`chain`,t)));continue}if(n.name===`internal:label`){let{exact:t,text:r}=bn(n.body);a.push([e.generateLocator(s,`label`,r,{exact:t})]);continue}if(n.name===`internal:role`){let t=M(n.body),r={attrs:[]};for(let e of t.attributes)e.name===`name`?(r.exact=e.caseSensitive,r.name=e.value):(e.name===`level`&&typeof e.value==`string`&&(e.value=+e.value),r.attrs.push({name:e.name===`include-hidden`?`includeHidden`:e.name,value:e.value}));a.push([e.generateLocator(s,`role`,t.name,r)]);continue}if(n.name===`internal:testid`){let{value:t}=M(n.body).attributes[0];a.push([e.generateLocator(s,`test-id`,t)]);continue}if(n.name===`internal:attr`){let{name:t,value:r,caseSensitive:i}=M(n.body).attributes[0],o=r,c=!!i;if(t===`placeholder`){a.push([e.generateLocator(s,`placeholder`,o,{exact:c})]);continue}if(t===`alt`){a.push([e.generateLocator(s,`alt`,o,{exact:c})]);continue}if(t===`title`){a.push([e.generateLocator(s,`title`,o,{exact:c})]);continue}}let c=`default`,l=i[t+1];l&&l.name===`internal:control`&&l.body===`enter-frame`&&(c=`frame`,o=`frame-locator`,t++);let u=j({parts:[n]}),d=e.generateLocator(s,c,u);if(c==="default"&&l&&[`internal:has-text`,`internal:has-not-text`].includes(l.name)){let{exact:n,text:r}=bn(l.body);if(!n){let i=e.generateLocator(`locator`,l.name===`internal:has-text`?`has-text`:`has-not-text`,r,{exact:n}),o={};l.name===`internal:has-text`?o.hasText=r:o.hasNotText=r;let c=e.generateLocator(s,`default`,u,o);a.push([e.chainLocators([d,i]),c]),t++;continue}}let f;if([`xpath`,`css`].includes(n.name)){let t=j({parts:[n]},!0);f=e.generateLocator(s,c,t)}a.push([d,f].filter(Boolean))}return yn(e,a,r)}function yn(e,t,n){let r=t.map(()=>``),i=[],a=o=>{if(o===t.length)return i.push(e.chainLocators(r)),r.length<n;for(let e of t[o])if(r[o]=e,!a(o+1))return!1;return!0};return a(0),i}function bn(e){let t=!1,n=e.match(/^\/(.*)\/([igm]*)$/);return n?{text:new RegExp(n[1],n[2])}:(e.endsWith(`"`)?(e=JSON.parse(e),t=!0):e.endsWith(`"s`)?(e=JSON.parse(e.substring(0,e.length-1)),t=!0):e.endsWith(`"i`)&&(e=JSON.parse(e.substring(0,e.length-1)),t=!1),{exact:t,text:e})}const xn={javascript:class{constructor(e){this.preferredQuote=e}generateLocator(e,t,n,r={}){switch(t){case`default`:return r.hasText===void 0?r.hasNotText===void 0?`locator(${this.quote(n)})`:`locator(${this.quote(n)}, { hasNotText: ${this.toHasText(r.hasNotText)} })`:`locator(${this.quote(n)}, { hasText: ${this.toHasText(r.hasText)} })`;case`frame`:return`frameLocator(${this.quote(n)})`;case`nth`:return`nth(${n})`;case`first`:return`first()`;case`last`:return`last()`;case`role`:{let e=[];Sn(r.name)?e.push(`name: ${this.regexToSourceString(r.name)}`):typeof r.name==`string`&&(e.push(`name: ${this.quote(r.name)}`),r.exact!=null&&Q.options.exact!==r.exact&&e.push(`exact: ${r.exact}`));for(let{name:t,value:n}of r.attrs)e.push(`${t}: ${typeof n==`string`?this.quote(n):n}`);let t=e.length?`, { ${e.join(`, `)} }`:``;return`getByRole(${this.quote(n)}${t})`}case`has-text`:return`filter({ hasText: ${this.toHasText(n)} })`;case`has-not-text`:return`filter({ hasNotText: ${this.toHasText(n)} })`;case`has`:return`filter({ has: ${n} })`;case`hasNot`:return`filter({ hasNot: ${n} })`;case`and`:return`and(${n})`;case`or`:return`or(${n})`;case`chain`:return`locator(${n})`;case`test-id`:{let e=this.toTestIdValue(n);return e.startsWith(`'__vitest_`)&&e.endsWith(`__'`)?`page`:`getByTestId(${e})`}case`text`:return this.toCallWithExact(`getByText`,n,!!r.exact);case`alt`:return this.toCallWithExact(`getByAltText`,n,!!r.exact);case`placeholder`:return this.toCallWithExact(`getByPlaceholder`,n,!!r.exact);case`label`:return this.toCallWithExact(`getByLabel`,n,!!r.exact);case`title`:return this.toCallWithExact(`getByTitle`,n,!!r.exact);default:throw Error(`Unknown selector kind ${t}`)}}chainLocators(e){return e.join(`.`)}regexToSourceString(e){return qe(String(e))}toCallWithExact(e,t,n){return Sn(t)?`${e}(${this.regexToSourceString(t)})`:n!=null&&Q.options.exact!==n?`${e}(${this.quote(t)}, { exact: ${n} })`:`${e}(${this.quote(t)})`}toHasText(e){return Sn(e)?this.regexToSourceString(e):this.quote(e)}toTestIdValue(e){return Sn(e)?this.regexToSourceString(e):this.quote(e)}quote(e){return We(e,this.preferredQuote??`'`)}}};function Sn(e){return e instanceof RegExp}const Cn=new Map,wn=new Map,Tn=1e4;function En(e,t,n){e._evaluator.begin(),on();try{return Pn(On(e,t,n)||Mn(e,t,n))}finally{Cn.clear(),wn.clear(),sn(),e._evaluator.end()}}function Dn(e){return e.filter(e=>e[0].selector[0]!==`/`)}function On(e,t,n){if(t.ownerDocument.documentElement===t)return[{engine:`css`,selector:`html`,score:1}];let r=(r,a)=>{let o=r===t,s=a?An(e,r,r===t):[];r!==t&&(s=Dn(s));let c=kn(e,r,n).map(e=>[e]),l=Fn(e,t.ownerDocument,r,[...s,...c],o);s=Dn(s);let u=t=>{let n=a&&!t.length,s=[...t,...c].filter(e=>!l||X(e)<X(l)),u=s[0];if(u)for(let t=L(r);t;t=L(t)){let a=i(t,n);if(!a||l&&X([...a,...u])>=X(l))continue;if(u=Fn(e,t,r,s,o),!u)return;let c=[...a,...u];(!l||X(c)<X(l))&&(l=c)}};return u(s),r===t&&s.length&&u([]),l},i=(e,t)=>{let n=t?Cn:wn,i=n.get(e);return i===void 0&&(i=r(e,t),n.set(e,i)),i};return r(t,!n.noText)}function kn(e,t,n){let r=[];for(let e of[`data-testid`,`data-test-id`,`data-test`])e!==n.testIdAttributeName&&t.getAttribute(e)&&r.push({engine:`css`,selector:`[${e}=${Ge(t.getAttribute(e))}]`,score:2});if(!n.noCSSId){let e=t.getAttribute(`id`);e&&!In(e)&&r.push({engine:`css`,selector:jn(e),score:500})}if(r.push({engine:`css`,selector:N(t.nodeName.toLowerCase()),score:530}),t.nodeName===`IFRAME`){for(let e of[`name`,`title`])t.getAttribute(e)&&r.push({engine:`css`,selector:`${N(t.nodeName.toLowerCase())}[${e}=${Ge(t.getAttribute(e))}]`,score:10});return t.getAttribute(n.testIdAttributeName)&&r.push({engine:`css`,selector:`[${n.testIdAttributeName}=${Ge(t.getAttribute(n.testIdAttributeName))}]`,score:1}),Nn([r]),r}if(t.getAttribute(n.testIdAttributeName)&&r.push({engine:`internal:testid`,selector:`[${n.testIdAttributeName}=${I(t.getAttribute(n.testIdAttributeName),!0)}]`,score:1}),t.nodeName===`INPUT`||t.nodeName===`TEXTAREA`){let e=t;if(e.placeholder){r.push({engine:`internal:attr`,selector:`[placeholder=${I(e.placeholder,!0)}]`,score:105});for(let t of Z(e.placeholder))r.push({engine:`internal:attr`,selector:`[placeholder=${I(t.text,!1)}]`,score:100-t.scoreBouns})}}let i=dn(e._evaluator._cacheText,t);for(let e of i){let t=e.normalized;r.push({engine:`internal:label`,selector:F(t,!0),score:125});for(let e of Z(t))r.push({engine:`internal:label`,selector:F(e.text,!1),score:120-e.scoreBouns})}let a=B(t);return a&&![`none`,`presentation`].includes(a)&&r.push({engine:`internal:role`,selector:a,score:510}),t.getAttribute(`name`)&&[`BUTTON`,`FORM`,`FIELDSET`,`FRAME`,`IFRAME`,`INPUT`,`KEYGEN`,`OBJECT`,`OUTPUT`,`SELECT`,`TEXTAREA`,`MAP`,`META`,`PARAM`].includes(t.nodeName)&&r.push({engine:`css`,selector:`${N(t.nodeName.toLowerCase())}[name=${Ge(t.getAttribute(`name`))}]`,score:520}),[`INPUT`,`TEXTAREA`].includes(t.nodeName)&&t.getAttribute(`type`)!==`hidden`&&t.getAttribute(`type`)&&r.push({engine:`css`,selector:`${N(t.nodeName.toLowerCase())}[type=${Ge(t.getAttribute(`type`))}]`,score:520}),[`INPUT`,`TEXTAREA`,`SELECT`].includes(t.nodeName)&&t.getAttribute(`type`)!==`hidden`&&r.push({engine:`css`,selector:N(t.nodeName.toLowerCase()),score:521}),Nn([r]),r}function An(e,t,n){if(t.nodeName===`SELECT`)return[];let r=[],i=t.getAttribute(`title`);if(i){r.push([{engine:`internal:attr`,selector:`[title=${I(i,!0)}]`,score:205}]);for(let e of Z(i))r.push([{engine:`internal:attr`,selector:`[title=${I(e.text,!1)}]`,score:200-e.scoreBouns}])}let a=t.getAttribute(`alt`);if(a&&[`APPLET`,`AREA`,`IMG`,`INPUT`].includes(t.nodeName)){r.push([{engine:`internal:attr`,selector:`[alt=${I(a,!0)}]`,score:165}]);for(let e of Z(a))r.push([{engine:`internal:attr`,selector:`[alt=${I(e.text,!1)}]`,score:160-e.scoreBouns}])}let o=K(e._evaluator._cacheText,t).normalized;if(o){let e=Z(o);if(n){o.length<=80&&r.push([{engine:`internal:text`,selector:F(o,!0),score:185}]);for(let t of e)r.push([{engine:`internal:text`,selector:F(t.text,!1),score:180-t.scoreBouns}])}let i={engine:`css`,selector:N(t.nodeName.toLowerCase()),score:530};for(let t of e)r.push([i,{engine:`internal:has-text`,selector:F(t.text,!1),score:180-t.scoreBouns}]);if(o.length<=80){let e=RegExp(`^${Ze(o)}$`);r.push([i,{engine:`internal:has-text`,selector:F(e,!1),score:250}])}}let s=B(t);if(s&&![`none`,`presentation`].includes(s)){let e=Dt(t,!1);if(e){r.push([{engine:`internal:role`,selector:`${s}[name=${I(e,!0)}]`,score:145}]);for(let t of Z(e))r.push([{engine:`internal:role`,selector:`${s}[name=${I(t.text,!1)}]`,score:140-t.scoreBouns}])}}return Nn(r),r}function jn(e){return/^[a-z][\w\-]+$/i.test(e)?`#${e}`:`[id="${N(e)}"]`}function Mn(e,t,n){let r=t.ownerDocument,i=[];function a(n){let a=i.slice();n&&a.unshift(n);let o=a.join(` > `),s=e.parseSelector(o);return e.querySelector(s,r,!1)===t?o:void 0}function o(n){let i={engine:`css`,selector:n,score:1e7},a=e.parseSelector(n),o=e.querySelectorAll(a,r);return o.length===1?[i]:[i,{engine:`nth`,selector:String(o.indexOf(t)),score:Tn}]}for(let e=t;e&&e!==r;e=L(e)){let t=e.nodeName.toLowerCase(),r=``;if(e.id&&!n.noCSSId){let t=jn(e.id),n=a(t);if(n)return o(n);r=t}let s=e.parentNode,c=[...e.classList];for(let e=0;e<c.length;++e){let t=`.${N(c.slice(0,e+1).join(`.`))}`,n=a(t);if(n)return o(n);!r&&s&&s.querySelectorAll(t).length===1&&(r=t)}if(s){let n=[...s.children],i=n.filter(e=>e.nodeName.toLowerCase()===t).indexOf(e)===0?N(t):`${N(t)}:nth-child(${1+n.indexOf(e)})`,c=a(i);if(c)return o(c);r||=i}else r||=N(t);i.unshift(r)}return o(a())}function Nn(e){for(let t of e)for(let e of t)e.score>50&&e.score<300&&(e.score+=Math.min(10,e.selector.length/10|0))}function Pn(e){let t=[],n=``;for(let{engine:r,selector:i}of e)t.length&&(n!==`css`||r!==`css`||i.startsWith(`:nth-match(`))&&t.push(`>>`),n=r,r===`css`?t.push(i):t.push(`${r}=${i}`);return t.join(` `)}function X(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n].score*(e.length-n);return t}function Fn(e,t,n,r,i){let a=r.map(e=>({tokens:e,score:X(e)}));a.sort((e,t)=>e.score-t.score);let o=null;for(let{tokens:r}of a){let a=e.parseSelector(Pn(r)),s=e.querySelectorAll(a,t);if(s[0]===n&&s.length===1)return r;let c=s.indexOf(n);if(!i||o||c===-1||s.length>5)continue;let l={engine:`nth`,selector:String(c),score:Tn};o=[...r,l]}return o}function In(e){let t,n=0;for(let r=0;r<e.length;++r){let i=e[r],a;if(i!==`-`&&i!==`_`){if(a=i>=`a`&&i<=`z`?`lower`:i>=`A`&&i<=`Z`?`upper`:i>=`0`&&i<=`9`?`digit`:`other`,a===`lower`&&t===`upper`){t=a;continue}t&&t!==a&&++n,t=a}}return n>=e.length/4}function Ln(e,t){if(e.length<=t)return e;e=e.substring(0,t);let n=e.match(/^(.*)\b(.+)$/);return n?n[1].trimEnd():``}function Z(e){let t=[];{let n=e.match(/^([\d.,]+)[^.,\w]/),r=n?n[1].length:0;if(r){let n=Ln(e.substring(r).trimStart(),80);t.push({text:n,scoreBouns:n.length<=30?2:1})}}{let n=e.match(/[^.,\w]([\d.,]+)$/),r=n?n[1].length:0;if(r){let n=Ln(e.substring(0,e.length-r).trimEnd(),80);t.push({text:n,scoreBouns:n.length<=30?2:1})}}return e.length<=30?t.push({text:e,scoreBouns:0}):(t.push({text:Ln(e,80),scoreBouns:0}),t.push({text:Ln(e,30),scoreBouns:1})),t=t.filter(e=>e.text),t.length||t.push({text:e.substring(0,80),scoreBouns:0}),t}function Rn(e,t,n){let r=e.left-t.right;if(!(r<0||n!==void 0&&r>n))return r+Math.max(t.bottom-e.bottom,0)+Math.max(e.top-t.top,0)}function zn(e,t,n){let r=t.left-e.right;if(!(r<0||n!==void 0&&r>n))return r+Math.max(t.bottom-e.bottom,0)+Math.max(e.top-t.top,0)}function Bn(e,t,n){let r=t.top-e.bottom;if(!(r<0||n!==void 0&&r>n))return r+Math.max(e.left-t.left,0)+Math.max(t.right-e.right,0)}function Vn(e,t,n){let r=e.top-t.bottom;if(!(r<0||n!==void 0&&r>n))return r+Math.max(e.left-t.left,0)+Math.max(t.right-e.right,0)}function Hn(e,t,n){let r=n===void 0?50:n,i=0;return e.left-t.right>=0&&(i+=e.left-t.right),t.left-e.right>=0&&(i+=t.left-e.right),t.top-e.bottom>=0&&(i+=t.top-e.bottom),e.top-t.bottom>=0&&(i+=e.top-t.bottom),i>r?void 0:i}const Un=[`left-of`,`right-of`,`above`,`below`,`near`];function Wn(e,t,n,r){let i=t.getBoundingClientRect(),a={"left-of":zn,"right-of":Rn,above:Bn,below:Vn,near:Hn}[e],o;for(let e of n){if(e===t)continue;let n=a(i,e.getBoundingClientRect(),r);n!==void 0&&(o===void 0||n<o)&&(o=n)}return o}var Gn=class{constructor(e){f(this,`_engines`,new Map),f(this,`_cacheQueryCSS`,new Map),f(this,`_cacheMatches`,new Map),f(this,`_cacheQuery`,new Map),f(this,`_cacheMatchesSimple`,new Map),f(this,`_cacheMatchesParents`,new Map),f(this,`_cacheCallMatches`,new Map),f(this,`_cacheCallQuery`,new Map),f(this,`_cacheQuerySimple`,new Map),f(this,`_cacheText`,new Map),f(this,`_scoreMap`,void 0),f(this,`_retainCacheCounter`,0);for(let[t,n]of e)this._engines.set(t,n);this._engines.set(`not`,Yn),this._engines.set(`is`,Kn),this._engines.set(`where`,Kn),this._engines.set(`has`,qn),this._engines.set(`scope`,Jn),this._engines.set(`light`,Xn),this._engines.set(`visible`,Zn),this._engines.set(`text`,Qn),this._engines.set(`text-is`,$n),this._engines.set(`text-matches`,er),this._engines.set(`has-text`,tr),this._engines.set(`right-of`,nr(`right-of`)),this._engines.set(`left-of`,nr(`left-of`)),this._engines.set(`above`,nr(`above`)),this._engines.set(`below`,nr(`below`)),this._engines.set(`near`,nr(`near`)),this._engines.set(`nth-match`,rr);let t=[...this._engines.keys()];t.sort();let n=[...ze];if(n.sort(),t.join(`|`)!==n.join(`|`))throw Error(`Please keep customCSSNames in sync with evaluator engines: ${t.join(`|`)} vs ${n.join(`|`)}`)}begin(){++this._retainCacheCounter}end(){--this._retainCacheCounter,this._retainCacheCounter||(this._cacheQueryCSS.clear(),this._cacheMatches.clear(),this._cacheQuery.clear(),this._cacheMatchesSimple.clear(),this._cacheMatchesParents.clear(),this._cacheCallMatches.clear(),this._cacheCallQuery.clear(),this._cacheQuerySimple.clear(),this._cacheText.clear())}_cached(e,t,n,r){e.has(t)||e.set(t,[]);let i=e.get(t),a=i.find(e=>n.every((t,n)=>e.rest[n]===t));if(a)return a.result;let o=r();return i.push({rest:n,result:o}),o}_checkSelector(e){if(!(typeof e==`object`&&e&&(Array.isArray(e)||`simples`in e&&e.simples.length)))throw Error(`Malformed selector "${e}"`);return e}matches(e,t,n){let r=this._checkSelector(t);this.begin();try{return this._cached(this._cacheMatches,e,[r,n.scope,n.pierceShadow,n.originalScope],()=>Array.isArray(r)?this._matchesEngine(Kn,e,r,n):(this._hasScopeClause(r)&&(n=this._expandContextForScopeMatching(n)),this._matchesSimple(e,r.simples[r.simples.length-1].selector,n)?this._matchesParents(e,r,r.simples.length-2,n):!1))}finally{this.end()}}query(e,t){let n=this._checkSelector(t);this.begin();try{return this._cached(this._cacheQuery,n,[e.scope,e.pierceShadow,e.originalScope],()=>{if(Array.isArray(n))return this._queryEngine(Kn,e,n);this._hasScopeClause(n)&&(e=this._expandContextForScopeMatching(e));let t=this._scoreMap;this._scoreMap=new Map;let r=this._querySimple(e,n.simples[n.simples.length-1].selector);return r=r.filter(t=>this._matchesParents(t,n,n.simples.length-2,e)),this._scoreMap.size&&r.sort((e,t)=>{let n=this._scoreMap.get(e),r=this._scoreMap.get(t);return n===r?0:n===void 0?1:r===void 0?-1:n-r}),this._scoreMap=t,r})}finally{this.end()}}_markScore(e,t){this._scoreMap&&this._scoreMap.set(e,t)}_hasScopeClause(e){return e.simples.some(e=>e.selector.functions.some(e=>e.name===`scope`))}_expandContextForScopeMatching(e){if(e.scope.nodeType!==1)return e;let t=L(e.scope);return t?{...e,scope:t,originalScope:e.originalScope||e.scope}:e}_matchesSimple(e,t,n){return this._cached(this._cacheMatchesSimple,e,[t,n.scope,n.pierceShadow,n.originalScope],()=>{if(e===n.scope||t.css&&!this._matchesCSS(e,t.css))return!1;for(let r of t.functions)if(!this._matchesEngine(this._getEngine(r.name),e,r.args,n))return!1;return!0})}_querySimple(e,t){return t.functions.length?this._cached(this._cacheQuerySimple,t,[e.scope,e.pierceShadow,e.originalScope],()=>{let n=t.css,r=t.functions;n===`*`&&r.length&&(n=void 0);let i,a=-1;n===void 0?(a=r.findIndex(e=>this._getEngine(e.name).query!==void 0),a===-1&&(a=0),i=this._queryEngine(this._getEngine(r[a].name),e,r[a].args)):i=this._queryCSS(e,n);for(let t=0;t<r.length;t++){if(t===a)continue;let n=this._getEngine(r[t].name);n.matches!==void 0&&(i=i.filter(i=>this._matchesEngine(n,i,r[t].args,e)))}for(let t=0;t<r.length;t++){if(t===a)continue;let n=this._getEngine(r[t].name);n.matches===void 0&&(i=i.filter(i=>this._matchesEngine(n,i,r[t].args,e)))}return i}):this._queryCSS(e,t.css||`*`)}_matchesParents(e,t,n,r){return n<0||this._cached(this._cacheMatchesParents,e,[t,n,r.scope,r.pierceShadow,r.originalScope],()=>{let{selector:i,combinator:a}=t.simples[n];if(a===`>`){let a=ir(e,r);return!a||!this._matchesSimple(a,i,r)?!1:this._matchesParents(a,t,n-1,r)}if(a===`+`){let a=ar(e,r);return!a||!this._matchesSimple(a,i,r)?!1:this._matchesParents(a,t,n-1,r)}if(a===``){let a=ir(e,r);for(;a;){if(this._matchesSimple(a,i,r)){if(this._matchesParents(a,t,n-1,r))return!0;if(t.simples[n-1].combinator===``)break}a=ir(a,r)}return!1}if(a===`~`){let a=ar(e,r);for(;a;){if(this._matchesSimple(a,i,r)){if(this._matchesParents(a,t,n-1,r))return!0;if(t.simples[n-1].combinator===`~`)break}a=ar(a,r)}return!1}if(a===`>=`){let a=e;for(;a;){if(this._matchesSimple(a,i,r)){if(this._matchesParents(a,t,n-1,r))return!0;if(t.simples[n-1].combinator===``)break}a=ir(a,r)}return!1}throw Error(`Unsupported combinator "${a}"`)})}_matchesEngine(e,t,n,r){if(e.matches)return this._callMatches(e,t,n,r);if(e.query)return this._callQuery(e,n,r).includes(t);throw Error(`Selector engine should implement "matches" or "query"`)}_queryEngine(e,t,n){if(e.query)return this._callQuery(e,n,t);if(e.matches)return this._queryCSS(t,`*`).filter(r=>this._callMatches(e,r,n,t));throw Error(`Selector engine should implement "matches" or "query"`)}_callMatches(e,t,n,r){return this._cached(this._cacheCallMatches,t,[e,r.scope,r.pierceShadow,r.originalScope,...n],()=>e.matches(t,n,r,this))}_callQuery(e,t,n){return this._cached(this._cacheCallQuery,e,[n.scope,n.pierceShadow,n.originalScope,...t],()=>e.query(n,t,this))}_matchesCSS(e,t){return e.matches(t)}_queryCSS(e,t){return this._cached(this._cacheQueryCSS,t,[e.scope,e.pierceShadow,e.originalScope],()=>{let n=[];function r(i){if(n=n.concat([...i.querySelectorAll(t)]),e.pierceShadow){i.shadowRoot&&r(i.shadowRoot);for(let e of i.querySelectorAll(`*`))e.shadowRoot&&r(e.shadowRoot)}}return r(e.scope),n})}_getEngine(e){let t=this._engines.get(e);if(!t)throw Error(`Unknown selector engine "${e}"`);return t}};const Kn={matches(e,t,n,r){if(t.length===0)throw Error(`"is" engine expects non-empty selector list`);return t.some(t=>r.matches(e,t,n))},query(e,t,n){if(t.length===0)throw Error(`"is" engine expects non-empty selector list`);let r=[];for(let i of t)r=r.concat(n.query(e,i));return t.length===1?r:or(r)}},qn={matches(e,t,n,r){if(t.length===0)throw Error(`"has" engine expects non-empty selector list`);return r.query({...n,scope:e},t).length>0}},Jn={matches(e,t,n,r){if(t.length!==0)throw Error(`"scope" engine expects no arguments`);let i=n.originalScope||n.scope;return i.nodeType===9?e===i.documentElement:e===i},query(e,t,n){if(t.length!==0)throw Error(`"scope" engine expects no arguments`);let r=e.originalScope||e.scope;if(r.nodeType===9){let e=r.documentElement;return e?[e]:[]}return r.nodeType===1?[r]:[]}},Yn={matches(e,t,n,r){if(t.length===0)throw Error(`"not" engine expects non-empty selector list`);return!r.matches(e,t,n)}},Xn={query(e,t,n){return n.query({...e,pierceShadow:!1},t)},matches(e,t,n,r){return r.matches(e,t,{...n,pierceShadow:!1})}},Zn={matches(e,t,n,r){if(t.length)throw Error(`"visible" engine expects no arguments`);return nt(e)}},Qn={matches(e,t,n,r){if(t.length!==1||typeof t[0]!=`string`)throw Error(`"text" engine expects a single string`);let i=P(t[0]).toLowerCase();return un(r._cacheText,e,e=>e.normalized.toLowerCase().includes(i))===`self`}},$n={matches(e,t,n,r){if(t.length!==1||typeof t[0]!=`string`)throw Error(`"text-is" engine expects a single string`);let i=P(t[0]);return un(r._cacheText,e,e=>!i&&!e.immediate.length||e.immediate.some(e=>P(e)===i))!==`none`}},er={matches(e,t,n,r){if(t.length===0||typeof t[0]!=`string`||t.length>2||t.length===2&&typeof t[1]!=`string`)throw Error(`"text-matches" engine expects a regexp body and optional regexp flags`);let i=new RegExp(t[0],t.length===2?t[1]:void 0);return un(r._cacheText,e,e=>i.test(e.full))===`self`}},tr={matches(e,t,n,r){if(t.length!==1||typeof t[0]!=`string`)throw Error(`"has-text" engine expects a single string`);if(ln(e))return!1;let i=P(t[0]).toLowerCase();return(e=>e.normalized.toLowerCase().includes(i))(K(r._cacheText,e))}};function nr(e){return{matches(t,n,r,i){let a=n.length&&typeof n[n.length-1]==`number`?n[n.length-1]:void 0,o=a===void 0?n:n.slice(0,n.length-1);if(n.length<1+(a===void 0?0:1))throw Error(`"${e}" engine expects a selector list and optional maximum distance in pixels`);let s=Wn(e,t,i.query(r,o),a);return s===void 0?!1:(i._markScore(t,s),!0)}}}const rr={query(e,t,n){let r=t[t.length-1];if(t.length<2)throw Error(`"nth-match" engine expects non-empty selector list and an index argument`);if(typeof r!=`number`||r<1)throw Error(`"nth-match" engine expects a one-based index as the last argument`);let i=Kn.query(e,t.slice(0,t.length-1),n);return r--,r<i.length?[i[r]]:[]}};function ir(e,t){if(e!==t.scope)return t.pierceShadow?L(e):e.parentElement||void 0}function ar(e,t){if(e!==t.scope)return e.previousElementSibling||void 0}function or(e){let t=new Map,n=[],r=[];function i(e){let r=t.get(e);if(r)return r;let a=L(e);return a?i(a).children.push(e):n.push(e),r={children:[],taken:!1},t.set(e,r),r}for(let t of e)i(t).taken=!0;function a(e){let n=t.get(e);if(n.taken&&r.push(e),n.children.length>1){let t=new Set(n.children);n.children=[];let r=e.firstElementChild;for(;r&&n.children.length<t.size;)t.has(r)&&n.children.push(r),r=r.nextElementSibling;for(r=e.shadowRoot?e.shadowRoot.firstElementChild:null;r&&n.children.length<t.size;)t.has(r)&&n.children.push(r),r=r.nextElementSibling}n.children.forEach(a)}return n.forEach(a),r}function sr(e,t,n){return`internal:attr=[${e}=${I(t,n?.exact??Q.options.exact)}]`}function cr(e,t){return`internal:testid=[${e}=${I(t,!0)}]`}function lr(e,t){return`internal:label=${F(e,t?.exact??Q.options.exact)}`}function ur(e,t){return sr(`alt`,e,t)}function dr(e,t){return sr(`title`,e,t)}function fr(e,t){return sr(`placeholder`,e,t)}function pr(e,t){return`internal:text=${F(e,t?.exact??Q.options.exact)}`}function mr(e,t={}){let n=[];return t.checked!==void 0&&n.push([`checked`,String(t.checked)]),t.disabled!==void 0&&n.push([`disabled`,String(t.disabled)]),t.selected!==void 0&&n.push([`selected`,String(t.selected)]),t.expanded!==void 0&&n.push([`expanded`,String(t.expanded)]),t.includeHidden!==void 0&&n.push([`include-hidden`,String(t.includeHidden)]),t.level!==void 0&&n.push([`level`,String(t.level)]),t.name!==void 0&&n.push([`name`,I(t.name,t.exact??Q.options.exact)]),t.pressed!==void 0&&n.push([`pressed`,String(t.pressed)]),`internal:role=${e}${n.map(([e,t])=>`[${e}=${t}]`).join(``)}`}var Q=class e{static create(t){return Object.assign(e.options,t),e.singleton||=new e}constructor(){f(this,`_engines`,void 0),f(this,`_evaluator`,void 0),this._evaluator=new Gn(new Map),this._engines=new Map,this._engines.set(`xpath`,br),this._engines.set(`xpath:light`,br),this._engines.set(`role`,gn(!1)),this._engines.set(`text`,this._createTextEngine(!0,!1)),this._engines.set(`text:light`,this._createTextEngine(!1,!1)),this._engines.set(`id`,this._createAttributeEngine(`id`,!0)),this._engines.set(`id:light`,this._createAttributeEngine(`id`,!1)),this._engines.set(`data-testid`,this._createAttributeEngine(`data-testid`,!0)),this._engines.set(`data-testid:light`,this._createAttributeEngine(`data-testid`,!1)),this._engines.set(`data-test-id`,this._createAttributeEngine(`data-test-id`,!0)),this._engines.set(`data-test-id:light`,this._createAttributeEngine(`data-test-id`,!1)),this._engines.set(`data-test`,this._createAttributeEngine(`data-test`,!0)),this._engines.set(`data-test:light`,this._createAttributeEngine(`data-test`,!1)),this._engines.set(`css`,this._createCSSEngine()),this._engines.set(`nth`,{queryAll:()=>[]}),this._engines.set(`visible`,this._createVisibleEngine()),this._engines.set(`internal:control`,this._createControlEngine()),this._engines.set(`internal:has`,this._createHasEngine()),this._engines.set(`internal:has-not`,this._createHasNotEngine()),this._engines.set(`internal:and`,{queryAll:()=>[]}),this._engines.set(`internal:or`,{queryAll:()=>[]}),this._engines.set(`internal:chain`,this._createInternalChainEngine()),this._engines.set(`internal:label`,this._createInternalLabelEngine()),this._engines.set(`internal:text`,this._createTextEngine(!0,!0)),this._engines.set(`internal:has-text`,this._createInternalHasTextEngine()),this._engines.set(`internal:has-not-text`,this._createInternalHasNotTextEngine()),this._engines.set(`internal:attr`,this._createNamedAttributeEngine()),this._engines.set(`internal:testid`,this._createNamedAttributeEngine()),this._engines.set(`internal:role`,gn(!0))}queryLocatorSelector(e,t=document.documentElement,n=!0){return this.querySelector(this.parseSelector(e),t,n)}queryLocatorSelectorAll(e,t=document.documentElement){return this.querySelectorAll(this.parseSelector(e),t)}querySelector(e,t,n=!0){let r=this.querySelectorAll(e,t);if(n&&r.length>1)throw this.strictModeViolationError(e,r);return r[0]||null}queryAllByRole(e,t,n=document.documentElement){let r=this.parseSelector(mr(e,t));return this.querySelectorAll(r,n)}queryAllByLabelText(e,t,n=document.documentElement){let r=this.parseSelector(lr(e,t));return this.querySelectorAll(r,n)}queryAllByTestId(t,n=document.documentElement){let r=this.parseSelector(cr(e.options.testIdAttribute,t));return this.querySelectorAll(r,n)}queryAllByText(e,t,n=document.documentElement){let r=this.parseSelector(pr(e,t));return this.querySelectorAll(r,n)}queryAllByTitle(e,t,n=document.documentElement){let r=this.parseSelector(dr(e,t));return this.querySelectorAll(r,n)}queryAllByPlaceholder(e,t,n=document.documentElement){let r=this.parseSelector(fr(e,t));return this.querySelectorAll(r,n)}queryAllByAltText(e,t,n=document.documentElement){let r=this.parseSelector(ur(e,t));return this.querySelectorAll(r,n)}queryByRole(e,t,n=document.documentElement){let r=this.parseSelector(mr(e,t));return this.querySelector(r,n,!1)}queryByLabelText(e,t,n=document.documentElement){let r=this.parseSelector(lr(e,t));return this.querySelector(r,n,!1)}queryByTestId(t,n=document.documentElement){let r=this.parseSelector(cr(e.options.testIdAttribute,t));return this.querySelector(r,n,!1)}queryByText(e,t,n=document.documentElement){let r=this.parseSelector(pr(e,t));return this.querySelector(r,n,!1)}queryByTitle(e,t,n=document.documentElement){let r=this.parseSelector(dr(e,t));return this.querySelector(r,n,!1)}queryByPlaceholder(e,t,n=document.documentElement){let r=this.parseSelector(fr(e,t));return this.querySelector(r,n,!1)}queryByAltText(e,t,n=document.documentElement){let r=this.parseSelector(ur(e,t));return this.querySelector(r,n,!1)}strictModeViolationError(e,t){let n=t.slice(0,10).map(e=>({preview:this.previewNode(e),selector:this.generateSelectorSimple(e)})),r=n.map((e,t)=>`\n ${t+1}) ${e.preview} aka ${_n(`javascript`,e.selector)}`);return n.length<t.length&&r.push(`
|
|
4
|
+
...`),this.createStacklessError(`strict mode violation: ${_n(`javascript`,j(e))} resolved to ${t.length} elements:${r.join(``)}\n`)}generateSelectorSimple(t,n){return En(this,t,{...n,testIdAttributeName:e.options.testIdAttribute})}parseSelector(e){let t=Be(e);return He(t,t=>{if(!this._engines.has(t.name))throw this.createStacklessError(`Unknown engine "${t.name}" while parsing selector ${e}`)}),t}previewNode(e){if(e.nodeType===Node.TEXT_NODE)return hr(`#text=${e.nodeValue||``}`);if(e.nodeType!==Node.ELEMENT_NODE)return hr(`<${e.nodeName.toLowerCase()} />`);let t=e,n=[];for(let e=0;e<t.attributes.length;e++){let{name:r,value:i}=t.attributes[e];r!==`style`&&(!i&&gr.has(r)?n.push(` ${r}`):n.push(` ${r}="${i}"`))}n.sort((e,t)=>e.length-t.length);let r=Xe(n.join(``),500);if(_r.has(t.nodeName))return hr(`<${t.nodeName.toLowerCase()}${r}/>`);let i=t.childNodes,a=!1;if(i.length<=5){a=!0;for(let e=0;e<i.length;e++)a&&=i[e].nodeType===Node.TEXT_NODE}let o=a?t.textContent||``:i.length?`…`:``;return hr(`<${t.nodeName.toLowerCase()}${r}>${Xe(o,50)}</${t.nodeName.toLowerCase()}>`)}querySelectorAll(e,t){if(e.capture!==void 0){if(e.parts.some(e=>e.name===`nth`))throw this.createStacklessError(`Can't query n-th element in a request with the capture.`);let n={parts:e.parts.slice(0,e.capture+1)};if(e.capture<e.parts.length-1){let t={parts:e.parts.slice(e.capture+1)},r={name:`internal:has`,body:{parsed:t},source:j(t)};n.parts.push(r)}return this.querySelectorAll(n,t)}if(!t.querySelectorAll)throw this.createStacklessError(`Node is not queryable.`);if(e.capture!==void 0)throw this.createStacklessError(`Internal error: there should not be a capture in the selector.`);if(t.nodeType===11&&e.parts.length===1&&e.parts[0].name===`css`&&e.parts[0].source===`:scope`)return[t];this._evaluator.begin();try{let n=new Set([t]);for(let r of e.parts)if(r.name===`nth`)n=this._queryNth(n,r);else if(r.name===`internal:and`){let e=this.querySelectorAll(r.body.parsed,t);n=new Set(e.filter(e=>n.has(e)))}else if(r.name===`internal:or`){let e=this.querySelectorAll(r.body.parsed,t);n=new Set(or(new Set([...n,...e])))}else if(Un.includes(r.name))n=this._queryLayoutSelector(n,r,t);else{let e=new Set;for(let t of n){let n=this._queryEngineAll(r,t);for(let t of n)e.add(t)}n=e}return[...n]}finally{this._evaluator.end()}}_queryEngineAll(e,t){let n=this._engines.get(e.name).queryAll(t,e.body);for(let e of n)if(!(`nodeName`in e))throw this.createStacklessError(`Expected a Node but got ${Object.prototype.toString.call(e)}`);return n}_queryNth(e,t){let n=[...e],r=+t.body;return r===-1&&(r=n.length-1),new Set(n.slice(r,r+1))}_queryLayoutSelector(e,t,n){let r=t.name,i=t.body,a=[],o=this.querySelectorAll(i.parsed,n);for(let t of e){let e=Wn(r,t,o,i.distance);e!==void 0&&a.push({element:t,score:e})}return a.sort((e,t)=>e.score-t.score),new Set(a.map(e=>e.element))}createStacklessError(t){if(e.options.browser===`firefox`){let e=Error(`Error: ${t}`);return e.stack=``,e}let n=Error(t);return delete n.stack,n}_createTextEngine(e,t){return{queryAll:(n,r)=>{let{matcher:i,kind:a}=yr(r,t),o=[],s=null,c=e=>{if(a===`lax`&&s&&s.contains(e))return!1;let n=un(this._evaluator._cacheText,e,i);n===`none`&&(s=e),(n===`self`||n===`selfAndChildren`&&a===`strict`&&!t)&&o.push(e)};n.nodeType===Node.ELEMENT_NODE&&c(n);let l=this._evaluator._queryCSS({scope:n,pierceShadow:e},`*`);for(let e of l)c(e);return o}}}_createAttributeEngine(e,t){let n=t=>[{simples:[{selector:{css:`[${e}=${JSON.stringify(t)}]`,functions:[]},combinator:``}]}];return{queryAll:(e,r)=>this._evaluator.query({scope:e,pierceShadow:t},n(r))}}_createCSSEngine(){return{queryAll:(e,t)=>this._evaluator.query({scope:e,pierceShadow:!0},t)}}_createNamedAttributeEngine(){return{queryAll:(e,t)=>{let n=M(t);if(n.name||n.attributes.length!==1)throw Error(`Malformed attribute selector: ${t}`);let{name:r,value:i,caseSensitive:a}=n.attributes[0],o=a?null:i.toLowerCase(),s;return s=i instanceof RegExp?e=>!!e.match(i):a?e=>e===i:e=>e.toLowerCase().includes(o),this._evaluator._queryCSS({scope:e,pierceShadow:!0},`[${r}]`).filter(e=>s(e.getAttribute(r)))}}}_createVisibleEngine(){return{queryAll:(e,t)=>e.nodeType===1&&nt(e)===!!t?[e]:[]}}_createControlEngine(){return{queryAll:(e,t)=>{if(t===`enter-frame`&&e instanceof HTMLIFrameElement){let t=e.contentDocument?.documentElement;return t?[t]:[]}return[]}}}_createHasEngine(){return{queryAll:(e,t)=>e.nodeType===1&&this.querySelector(t.parsed,e,!1)?[e]:[]}}_createHasNotEngine(){return{queryAll:(e,t)=>e.nodeType===1?this.querySelector(t.parsed,e,!1)?[]:[e]:[]}}_createInternalChainEngine(){return{queryAll:(e,t)=>this.querySelectorAll(t.parsed,e)}}_createInternalLabelEngine(){return{queryAll:(e,t)=>{let{matcher:n}=yr(t,!0);return this._evaluator._queryCSS({scope:e,pierceShadow:!0},`*`).filter(e=>dn(this._evaluator._cacheText,e).some(e=>n(e)))}}}_createInternalHasTextEngine(){return{queryAll:(e,t)=>{if(e.nodeType!==1)return[];let n=e,r=K(this._evaluator._cacheText,n),{matcher:i}=yr(t,!0);return i(r)?[n]:[]}}}_createInternalHasNotTextEngine(){return{queryAll:(e,t)=>{if(e.nodeType!==1)return[];let n=e,r=K(this._evaluator._cacheText,n),{matcher:i}=yr(t,!0);return i(r)?[]:[n]}}}};f(Q,`options`,{testIdAttribute:`data-testid`,browser:`chromium`,exact:!1}),f(Q,`singleton`,null);function hr(e){return e.replace(/\n/g,`↵`).replace(/\t/g,`⇆`)}const gr=new Set([`checked`,`selected`,`disabled`,`readonly`,`multiple`]),_r=new Set([`AREA`,`BASE`,`BR`,`COL`,`COMMAND`,`EMBED`,`HR`,`IMG`,`INPUT`,`KEYGEN`,`LINK`,`MENUITEM`,`META`,`PARAM`,`SOURCE`,`TRACK`,`WBR`]);function vr(e){if(e=e.substring(1,e.length-1),!e.includes(`\\`))return e;let t=[],n=0;for(;n<e.length;)e[n]===`\\`&&n+1<e.length&&n++,t.push(e[n++]);return t.join(``)}function yr(e,t){if(e[0]===`/`&&e.lastIndexOf(`/`)>0){let t=e.lastIndexOf(`/`),n=new RegExp(e.substring(1,t),e.substring(t+1));return{matcher:e=>n.test(e.full),kind:`regex`}}let n=t?JSON.parse.bind(JSON):vr,r=!1;return e.length>1&&e[0]===`"`&&e[e.length-1]===`"`?(e=n(e),r=!0):t&&e.length>1&&e[0]===`"`&&e[e.length-2]===`"`&&e[e.length-1]===`i`?(e=n(e.substring(0,e.length-1)),r=!1):t&&e.length>1&&e[0]===`"`&&e[e.length-2]===`"`&&e[e.length-1]===`s`?(e=n(e.substring(0,e.length-1)),r=!0):e.length>1&&e[0]===`'`&&e[e.length-1]===`'`&&(e=n(e),r=!0),e=P(e),r?t?{kind:`strict`,matcher:t=>t.normalized===e}:{matcher:t=>!e&&!t.immediate.length||t.immediate.some(t=>P(t)===e),kind:`strict`}:(e=e.toLowerCase(),{kind:`lax`,matcher:t=>t.normalized.toLowerCase().includes(e)})}const br={queryAll(e,t){t.startsWith(`/`)&&e.nodeType!==Node.DOCUMENT_NODE&&(t=`.${t}`);let n=[],r=e.ownerDocument||e;if(!r)return n;let i=r.evaluate(t,e,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE);for(let e=i.iterateNext();e;e=i.iterateNext())e.nodeType===Node.ELEMENT_NODE&&n.push(e);return n}},xr=[`:hover`,`:active`,`:focus`,`:focus-visible`,`:focus-within`];function Sr(){return Math.random().toString(36).slice(2)}async function Cr(e,t){let n=s().browserTraceAttempts.get(e.id),r=a()-n.startTime,i=wr(t.element),o={...t,startTime:r,snapshot:i},{retry:l,repeats:u}=n,{recordCanvas:d}=s().config.browser.traceView,f={retry:l,repeats:u,recordCanvas:d,entries:[o]};await c().rpc.triggerCommand(s().sessionId,`__vitest_recordBrowserTrace`,void 0,[{testId:e.id,data:f}])}function wr(e){let{snapshot:t,createMirror:n}=s().browserTraceDomSnapshot,r=s().config.browser.traceView,i=s().selectorEngine,a=n(),o={serialized:t(document,{mirror:a,inlineImages:r.inlineImages,recordCanvas:r.recordCanvas}),viewport:{width:window.innerWidth,height:window.innerHeight},scroll:{x:window.scrollX,y:window.scrollY},pseudoClassIds:{}};for(let e of xr){let t=document.querySelectorAll(e),n=Array.from(t,e=>a.getId(e)).filter(e=>e!==-1);o.pseudoClassIds[e]=n}if(e)try{let t=i.querySelector(i.parseSelector(e._pwSelector??e.selector),document.documentElement,!1);if(!t)o.selectorResolution=`missing`;else{let e=a.getId(t);e===-1?o.selectorResolution=`missing`:(o.selectorId=e,o.selectorResolution=`matched`)}}catch(e){o.selectorResolution=`error`,o.selectorError=e instanceof Error?e.message:String(e)}return o}function Tr(e){if(!e||!(e instanceof Element))throw Error(`Expected DOM element to be an instance of Element, received ${typeof e}`);return Dr(e)}function Er(e){return e.split(``).map(e=>{let t=e.charCodeAt(0);return e===` `||e===`#`||e===`.`||e===`:`||e===`[`||e===`]`||e===`>`||e===`+`||e===`~`||e===`\\`?`\\${e}`:t>=65536?`\\${t.toString(16).toUpperCase().padStart(6,`0`)} `:t<32||t===127||t>=128?`\\${t.toString(16).toUpperCase().padStart(2,`0`)} `:e}).join(``)}function Dr(e){let t=[],n,r=!1;for(;n=Or(e);){n.shadowRoot&&(r=!0);let i=e.tagName;if(e.id)t.push(`#${Er(e.id)}`);else if(!e.nextElementSibling&&!e.previousElementSibling)t.push(i.toLowerCase());else{let r=0,a=0,o=0;for(let t of n.children)r++,t.tagName===i&&a++,t===e&&(o=r);a>1?t.push(`${i.toLowerCase()}:nth-child(${o})`):t.push(i.toLowerCase())}e=n}return`${s().provider===`webdriverio`&&r?`>>>`:``}${t.reverse().join(` > `)}`}function Or(e){let t=e.parentNode;return t instanceof ShadowRoot?t.host:t}function kr(e){if(e&&e.timeout!=null||c().config.browser.providerOptions.actionTimeout!=null)return e;let t=s().runner,n=t._currentTaskStartTime;if(!n)return e;let r=t._currentTaskTimeout;if(r===0||r==null||r===1/0)return e;e||={};let i=a(),o=n+r,l=Math.floor(o-i);return e.timeout=Math.max(l-250,1),e}function Ar(){let e=window.frameElement;if(!e)throw Error(`Cannot find iframe element. This is a bug in Vitest. Please, open a new issue with reproduction.`);return new DOMMatrix(getComputedStyle(e).transform).a}function jr(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function Mr(e,t){return typeof e==`string`?`${JSON.stringify(e)}i`:jr(e)}const Nr=s().provider,Pr=Symbol.for(`$$vitest:locator-resolved`);async function Fr(e,t){if(!e)throw Error(`Expected element or locator to be defined.`);if(e instanceof Element){let t=Tr(e);return{selector:t,locator:r._asLocator(`javascript`,t)}}if(Lr(e)){if(Nr===`playwright`||Pr in e)return e.serialize();let n=Tr(await e.findElement(t));return{selector:n,locator:r._asLocator(`javascript`,n)}}throw Error(`Expected element or locator to be an instance of Element or Locator.`)}const Ir=Symbol.for(`$$vitest:locator`);function Lr(e){return!!e&&typeof e==`object`&&Ir in e}function Rr(e){let t;if(e.delta)t=e.delta;else switch(e.direction){case`up`:t={y:-100};break;case`down`:t={y:100};break;case`left`:t={x:-100};break;case`right`:t={x:100}}return{delta:t,times:e.times}}r._asLocator=_n;const zr=Date.now,Br=[0,20,50,100,100,500];function Vr(e){let{setTimeout:t}=i();return new Promise(n=>t(n,e))}const $=Q.create({exact:e.config.browser.locators.exact,browser:(e=>{switch(e){case`edge`:case`chrome`:return`chromium`;case`safari`:return`webkit`;default:return e}})(e.config.browser.name),testIdAttribute:e.config.browser.locators.testIdAttribute});s().selectorEngine=$;const Hr=Symbol.for(`$$vitest:locator`);class Ur{_parsedSelector;_container;_pwSelector;_pwLocator;_errorSource;constructor(){Object.defineProperty(this,Hr,{enumerable:!1,writable:!1,configurable:!1,value:Hr})}click(e){return this.triggerCommand(`__vitest_click`,this.serialize(),e)}dblClick(e){return this.triggerCommand(`__vitest_dblClick`,this.serialize(),e)}tripleClick(e){return this.triggerCommand(`__vitest_tripleClick`,this.serialize(),e)}wheel(e){return o(async t=>{await s().commands.triggerCommand(`__vitest_wheel`,[this.serialize(),Rr(e)],t);let n=s().config.browser.name;if(n===`chromium`||n===`chrome`)return new Promise(e=>{requestAnimationFrame(()=>{e()})})})}clear(e){return this.triggerCommand(`__vitest_clear`,this.serialize(),e)}hover(e){return this.triggerCommand(`__vitest_hover`,this.serialize(),e)}unhover(e){return this.triggerCommand(`__vitest_hover`,{selector:`html > body`,locator:`locator('body')`},e)}fill(e,t){return this.triggerCommand(`__vitest_fill`,this.serialize(),e,t)}upload(e,t){return o(async n=>{let r=(Array.isArray(e)?e:[e]).map(async e=>{if(typeof e==`string`)return e;let t=await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(Error(`Failed to read file: ${e.name}`)),r.readAsDataURL(e)});return{name:e.name,mimeType:e.type,base64:t.slice(t.indexOf(`,`)+1)}});return s().commands.triggerCommand(`__vitest_upload`,[this.serialize(),await Promise.all(r),t],n)})}dropTo(e,t={}){return this.triggerCommand(`__vitest_dragAndDrop`,this.toJSON(),e.toJSON(),t)}selectOptions(e,t){let n=(Array.isArray(e)?e:[e]).map(e=>typeof e==`string`?e:{element:Lr(e)?e.serialize():{selector:Tr(e),locator:r._asLocator(`javascript`,$.generateSelectorSimple(e))}});return this.triggerCommand(`__vitest_selectOptions`,this.serialize(),n,t)}screenshot(e){return t.screenshot({...e,element:this})}mark(e,t){let n=c().current,r=!!n&&s().activeTraceTaskIds.has(n.id),i=!!n&&s().browserTraceAttempts.has(n.id);return!n||!r&&!i?Promise.resolve():o(async a=>(i&&await Cr(n,{name:e,kind:t?.kind??`mark`,element:this.serialize(),stack:t?.stack??a?.stack}),r?s().commands.triggerCommand(`__vitest_markTrace`,[{name:e,element:this.serialize(),stack:t?.stack??a?.stack}],a):Promise.resolve()))}getByRole(e,t){return this.locator(mr(e,t))}getByAltText(e,t){return this.locator(ur(e,t))}getByLabelText(e,t){return this.locator(lr(e,t))}getByPlaceholder(e,t){return this.locator(fr(e,t))}getByTestId(t){return this.locator(cr(e.config.browser.locators.testIdAttribute,t))}getByText(e,t){return this.locator(pr(e,t))}getByTitle(e,t){return this.locator(dr(e,t))}filter(e){let t=[];if(e?.hasText&&t.push(`internal:has-text=${Mr(e.hasText)}`),e?.hasNotText&&t.push(`internal:has-not-text=${Mr(e.hasNotText)}`),e?.has){let n=e.has;t.push(`internal:has=${JSON.stringify(n._pwSelector||n.selector)}`)}if(e?.hasNot){let n=e.hasNot;t.push(`internal:has-not=${JSON.stringify(n._pwSelector||n.selector)}`)}if(!t.length)throw Error(`Locator.filter expects at least one filter. None provided.`);return this.locator(t.join(` >> `))}and(e){return this.locator(`internal:and=${JSON.stringify(e._pwSelector||e.selector)}`)}or(e){return this.locator(`internal:or=${JSON.stringify(e._pwSelector||e.selector)}`)}query(){let e=this._parsedSelector||=$.parseSelector(this._pwSelector||this.selector);return $.querySelector(e,document.documentElement,!0)}element(){let e=this.query();if(!e)throw n.getElementError(this,this._container||document.body);return e}elements(){let e=this._parsedSelector||=$.parseSelector(this._pwSelector||this.selector);return $.querySelectorAll(e,document.documentElement)}get length(){return this.elements().length}all(){return this.elements().map(e=>this.elementLocator(e))}nth(e){return this.locator(`nth=${e}`)}first(){return this.nth(0)}last(){return this.nth(-1)}toString(){return this.selector}serialize(){return{selector:this.selector,locator:this.asLocator(),_pwSelector:this._pwSelector}}asLocator(){return this._pwLocator||=_n(`javascript`,this._pwSelector||this.selector)}toJSON(){return this.serialize()}async findElement(e={}){let t=kr(e),r=t?.timeout,i=t?.strict??!0,a=zr(),o=0;for(;;){let e=this.elements();if(e.length===1)return e[0];if(e.length>1){if(i)throw Gr(this,e);return e[0]}let t=zr()-a;if(r!=null&&t>=r)throw n.getElementError(this,this._container||document.body);let s=Br[Math.min(o++,Br.length-1)];await Vr(r==null?s:Math.min(s,r-t))}}triggerCommand(e,...t){return this._errorSource?Wr({name:e,arguments:t,errorSource:this._errorSource}):o(n=>Wr({name:e,arguments:t,errorSource:n}))}}function Wr(e){return s().commands.triggerCommand(e.name,e.arguments,e.errorSource)}function Gr(e,t){let n=t.slice(0,10).map(e=>({preview:$.previewNode(e),selector:$.generateSelectorSimple(e)})),r=n.map((e,t)=>`\n ${t+1}) ${e.preview} aka ${_n(`javascript`,e.selector)}`);return n.length<t.length&&r.push(`
|
|
5
|
+
...`),Error(`strict mode violation: ${e.asLocator()} resolved to ${t.length} elements:${r.join(``)}\n`)}export{kr as A,a as B,c as C,Sr as D,Cr as E,Tr as F,o as G,ur as H,lr as I,fr as J,mr as K,Ur as L,cr as M,pr as N,dr as O,Ar as P,$ as Q,Wr as R,f as _,Dt as a,Lt as b,Gt as c,Kt as d,Vt as e,Ht as f,B as g,Ut as h,V as i,Wt as j,It as k,zt as l,Bt as m,P as n,Pt as o,Ft as p,R as q,Ct as r,on as s,sn as t,s as u,nt as v,Ot as w,Mt as x,N as y,Fr as z};
|
package/dist/locators.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{L as Locator,F as convertElementToCssSelector,G as ensureAwaited,H as getByAltTextSelector,I as getByLabelSelector,J as getByPlaceholderSelector,K as getByRoleSelector,M as getByTestIdSelector,N as getByTextSelector,O as getByTitleSelector,P as getIframeScale,A as processTimeoutOptions,Q as selectorEngine,R as triggerCommandWithTrace}from"./locators-
|
|
1
|
+
export{L as Locator,F as convertElementToCssSelector,G as ensureAwaited,H as getByAltTextSelector,I as getByLabelSelector,J as getByPlaceholderSelector,K as getByRoleSelector,M as getByTestIdSelector,N as getByTextSelector,O as getByTitleSelector,P as getIframeScale,A as processTimeoutOptions,Q as selectorEngine,R as triggerCommandWithTrace}from"./locators-BTqFw5Up.js";import"vitest/browser";import"vitest/internal/browser";
|
package/dist/state.js
CHANGED
|
@@ -242,6 +242,7 @@ export async function resolve(specifier, context, nextResolve) {
|
|
|
242
242
|
name: "browser",
|
|
243
243
|
options: null
|
|
244
244
|
},
|
|
245
|
+
// this is populated before tests run
|
|
245
246
|
providedContext: {},
|
|
246
247
|
invalidates: []
|
|
247
248
|
},
|
|
@@ -262,7 +263,8 @@ export async function resolve(specifier, context, nextResolve) {
|
|
|
262
263
|
rpc: null,
|
|
263
264
|
durations: {
|
|
264
265
|
environment: 0,
|
|
265
|
-
prepare: performance.now()
|
|
266
|
+
prepare: performance.now(),
|
|
267
|
+
fetch: 0
|
|
266
268
|
},
|
|
267
269
|
providedContext: {}
|
|
268
270
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MockedModuleSerialized, ServerIdResolution, ServerMockResolution } from "@vitest/mocker";
|
|
2
2
|
import type { BirpcReturn } from "birpc";
|
|
3
|
-
import type { AfterSuiteRunMeta, BaselineData, BrowserTesterOptions, CancelReason, RunnerTestFile,
|
|
3
|
+
import type { AfterSuiteRunMeta, BaselineData, BrowserTesterOptions, CancelReason, RunnerTestFile, SnapshotResult, RunnerTaskEventPack as TaskEventPack, RunnerTaskResultPack as TaskResultPack, TestArtifact, TestBenchmark, TestExecutionMethod, UserConsoleLog } from "vitest";
|
|
4
4
|
import type { MarkOptions } from "vitest/browser";
|
|
5
5
|
export interface WebSocketBrowserHandlers {
|
|
6
6
|
resolveSnapshotPath: (testPath: string) => string;
|
|
@@ -39,15 +39,6 @@ export interface WebSocketBrowserHandlers {
|
|
|
39
39
|
sendCdpEvent: (sessionId: string, event: string, payload?: Record<string, unknown>) => unknown;
|
|
40
40
|
trackCdpEvent: (sessionId: string, type: "on" | "once" | "off", event: string, listenerId: string) => void;
|
|
41
41
|
}
|
|
42
|
-
export type Awaitable<T> = T | PromiseLike<T>;
|
|
43
|
-
export interface WebSocketEvents {
|
|
44
|
-
onCollected?: (files: RunnerTestFile[]) => Awaitable<void>;
|
|
45
|
-
onTaskUpdate?: (packs: TaskResultPack[]) => Awaitable<void>;
|
|
46
|
-
onUserConsoleLog?: (log: UserConsoleLog) => Awaitable<void>;
|
|
47
|
-
onPathsCollected?: (paths?: string[]) => Awaitable<void>;
|
|
48
|
-
onSpecsCollected?: (specs?: SerializedTestSpecification[]) => Awaitable<void>;
|
|
49
|
-
onFinishedReportCoverage: () => void;
|
|
50
|
-
}
|
|
51
42
|
export interface WebSocketBrowserEvents {
|
|
52
43
|
onCancel: (reason: CancelReason) => void;
|
|
53
44
|
createTesters: (options: BrowserTesterOptions) => Promise<void>;
|
package/jest-dom.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Disable automatic exports.
|
|
2
2
|
|
|
3
|
-
import { ARIARole } from './aria-role.
|
|
3
|
+
import { ARIARole } from './aria-role.js'
|
|
4
4
|
import { Locator, ScreenshotComparatorRegistry, ScreenshotMatcherOptions } from './context.js'
|
|
5
5
|
|
|
6
|
-
export interface TestingLibraryMatchers<
|
|
6
|
+
export interface TestingLibraryMatchers<R extends void | Promise<void>, T = unknown> {
|
|
7
7
|
/**
|
|
8
8
|
* @description
|
|
9
9
|
* Assert whether an element is present in the document or not.
|
|
@@ -488,7 +488,7 @@ export interface TestingLibraryMatchers<E, R> {
|
|
|
488
488
|
* await expect.element(page.getByTestId('logo')).toHaveAccessibleDescription('The logo of Our Company')
|
|
489
489
|
* @see https://vitest.dev/api/browser/assertions#tohaveaccessibledescription
|
|
490
490
|
*/
|
|
491
|
-
toHaveAccessibleDescription(text?: string | RegExp |
|
|
491
|
+
toHaveAccessibleDescription(text?: string | RegExp | T): R
|
|
492
492
|
|
|
493
493
|
/**
|
|
494
494
|
* @description
|
|
@@ -527,7 +527,7 @@ export interface TestingLibraryMatchers<E, R> {
|
|
|
527
527
|
*
|
|
528
528
|
* @see https://vitest.dev/api/browser/assertions#tohaveaccessibleerrormessage
|
|
529
529
|
*/
|
|
530
|
-
toHaveAccessibleErrorMessage(text?: string | RegExp |
|
|
530
|
+
toHaveAccessibleErrorMessage(text?: string | RegExp | T): R
|
|
531
531
|
|
|
532
532
|
/**
|
|
533
533
|
* @description
|
|
@@ -558,7 +558,7 @@ export interface TestingLibraryMatchers<E, R> {
|
|
|
558
558
|
* await expect.element(page.getByTestId('input-title')).toHaveAccessibleName()
|
|
559
559
|
* @see https://vitest.dev/api/browser/assertions#tohaveaccessiblename
|
|
560
560
|
*/
|
|
561
|
-
toHaveAccessibleName(text?: string | RegExp |
|
|
561
|
+
toHaveAccessibleName(text?: string | RegExp | T): R
|
|
562
562
|
/**
|
|
563
563
|
* @description
|
|
564
564
|
* This allows you to assert that an element has the expected
|