@enricai/barnacle 1.12.81 → 1.13.0
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/lib/ats-field-vocabulary.d.ts.map +1 -1
- package/dist/lib/ats-field-vocabulary.js +86 -3
- package/dist/lib/ats-field-vocabulary.js.map +1 -1
- package/dist/lib/llm/judges/verify-step-advanced.d.ts +1 -1
- package/dist/lib/llm/judges/verify-step-advanced.d.ts.map +1 -1
- package/dist/lib/llm/judges/verify-step-advanced.js +5 -3
- package/dist/lib/llm/judges/verify-step-advanced.js.map +1 -1
- package/dist/lib/llm/judges/verify-submit.d.ts +2 -2
- package/dist/lib/llm/judges/verify-submit.d.ts.map +1 -1
- package/dist/lib/llm/judges/verify-submit.js +17 -5
- package/dist/lib/llm/judges/verify-submit.js.map +1 -1
- package/dist/lib/random.d.ts +7 -3
- package/dist/lib/random.d.ts.map +1 -1
- package/dist/lib/random.js +27 -4
- package/dist/lib/random.js.map +1 -1
- package/dist/plugins/config-plugin.d.ts +1 -0
- package/dist/plugins/config-plugin.d.ts.map +1 -1
- package/dist/plugins/config-plugin.js +7 -1
- package/dist/plugins/config-plugin.js.map +1 -1
- package/dist/plugins/loader.d.ts +2 -2
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +6 -3
- package/dist/plugins/loader.js.map +1 -1
- package/dist/scraper/click-settle.d.ts +17 -2
- package/dist/scraper/click-settle.d.ts.map +1 -1
- package/dist/scraper/click-settle.js +36 -30
- package/dist/scraper/click-settle.js.map +1 -1
- package/dist/scraper/deep-locator-actuate.d.ts.map +1 -1
- package/dist/scraper/deep-locator-actuate.js +17 -1
- package/dist/scraper/deep-locator-actuate.js.map +1 -1
- package/dist/scraper/deep-locator-fake.js +1 -1
- package/dist/scraper/deep-locator-fake.js.map +1 -1
- package/dist/scraper/errors.d.ts +23 -2
- package/dist/scraper/errors.d.ts.map +1 -1
- package/dist/scraper/errors.js +32 -4
- package/dist/scraper/errors.js.map +1 -1
- package/dist/scraper/flow-runner.d.ts +176 -36
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +778 -326
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scraper/http-client.d.ts +7 -2
- package/dist/scraper/http-client.d.ts.map +1 -1
- package/dist/scraper/http-client.js +132 -19
- package/dist/scraper/http-client.js.map +1 -1
- package/dist/scraper/metrics.d.ts +2 -2
- package/dist/scraper/metrics.js +2 -2
- package/dist/scraper/phantom-click.d.ts +51 -1
- package/dist/scraper/phantom-click.d.ts.map +1 -1
- package/dist/scraper/phantom-click.js +170 -19
- package/dist/scraper/phantom-click.js.map +1 -1
- package/dist/scraper/runtime-capture-store.d.ts +38 -0
- package/dist/scraper/runtime-capture-store.d.ts.map +1 -0
- package/dist/scraper/runtime-capture-store.js +103 -0
- package/dist/scraper/runtime-capture-store.js.map +1 -0
- package/dist/scraper/segmented-date-spinbutton.d.ts +13 -0
- package/dist/scraper/segmented-date-spinbutton.d.ts.map +1 -0
- package/dist/scraper/segmented-date-spinbutton.js +71 -0
- package/dist/scraper/segmented-date-spinbutton.js.map +1 -0
- package/dist/scripts/recon-browser.d.ts +0 -8
- package/dist/scripts/recon-browser.d.ts.map +1 -1
- package/dist/scripts/recon-browser.js +102 -50
- package/dist/scripts/recon-browser.js.map +1 -1
- package/dist/scripts/recon-generate.d.ts +11 -0
- package/dist/scripts/recon-generate.d.ts.map +1 -1
- package/dist/scripts/recon-generate.js +180 -53
- package/dist/scripts/recon-generate.js.map +1 -1
- package/dist/site-plugin.d.ts +7 -4
- package/dist/site-plugin.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -154,8 +154,13 @@ export interface HttpRequestInit<TOverride = unknown> {
|
|
|
154
154
|
* outage is not the same as a bot block but the recovery is identical.
|
|
155
155
|
* Throws `HttpRateLimitError` on 429 — NOT a fallback trigger; the caller
|
|
156
156
|
* should back off, not burn a session.
|
|
157
|
-
*
|
|
158
|
-
*
|
|
157
|
+
* Throws `HttpTransportError` when no usable response arrives (connection
|
|
158
|
+
* reset/refused, DNS failure, socket hang up, abort, timeout), which is also a
|
|
159
|
+
* fallback trigger. Network failures are retried up to 2 times with
|
|
160
|
+
* exponential backoff first; an abort or timeout is not retried.
|
|
161
|
+
* Throws `UnknownScraperError` without retrying when fetch rejects the request
|
|
162
|
+
* before any network I/O (invalid URL or header value, GET with a body) — a
|
|
163
|
+
* plugin bug, so NOT a fallback trigger.
|
|
159
164
|
*/
|
|
160
165
|
export declare function createHttpClient<TResponse>(options: HttpClientOptions<TResponse>): <TOverride = TResponse>(url: string, init?: HttpRequestInit<TOverride>) => Promise<TOverride>;
|
|
161
166
|
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGhD,OAAO,EASL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAgI1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB,CAAC,SAAS;IAC1C,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,UAAU,CAAC;IACvB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,YAAY,GAAG,SAAS,CAAC;IAC3F;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,SAAS,GAAG,OAAO;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B;AAqPD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EACxC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,CAAC,SAAS,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAqO/F"}
|
|
@@ -250,6 +250,126 @@ function resolveBinding(binding, headers) {
|
|
|
250
250
|
}
|
|
251
251
|
return headers.get(binding.sourceHeader) ?? undefined;
|
|
252
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* True when `err` is a deliberate cancellation: a caller's `AbortSignal`
|
|
255
|
+
* firing (`AbortError`) or `AbortSignal.timeout` / `defaultTimeoutMs`
|
|
256
|
+
* elapsing (`TimeoutError`).
|
|
257
|
+
*/
|
|
258
|
+
function isAbortOrTimeout(err) {
|
|
259
|
+
return err instanceof Error && (err.name === "AbortError" || err.name === "TimeoutError");
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Renders a fetch failure with its root cause. Node's fetch rejects with a
|
|
263
|
+
* generic `TypeError: fetch failed` and puts the real reason (`ECONNRESET`,
|
|
264
|
+
* `ENOTFOUND`, ...) on `cause`, so the outer message alone hides what happened.
|
|
265
|
+
*/
|
|
266
|
+
function errorDetail(err) {
|
|
267
|
+
if (!(err instanceof Error))
|
|
268
|
+
return String(err);
|
|
269
|
+
const cause = err.cause;
|
|
270
|
+
const causeCode = cause !== null && typeof cause === "object" && "code" in cause ? String(cause.code) : undefined;
|
|
271
|
+
const causeMessage = cause instanceof Error ? cause.message : undefined;
|
|
272
|
+
const suffix = [causeCode, causeMessage].filter(Boolean).join(" ");
|
|
273
|
+
return suffix ? `${err.name}: ${err.message} (${suffix})` : `${err.name}: ${err.message}`;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Error codes Node's fetch (undici) puts on `cause` when the request never got
|
|
277
|
+
* a response from the network: socket resets, refusals, DNS failures, timeouts
|
|
278
|
+
* and unreachable routes. Every `UND_ERR_*` code is matched by prefix.
|
|
279
|
+
*/
|
|
280
|
+
const NETWORK_ERROR_CODES = new Set([
|
|
281
|
+
"ECONNRESET",
|
|
282
|
+
"ECONNREFUSED",
|
|
283
|
+
"ENOTFOUND",
|
|
284
|
+
"EAI_AGAIN",
|
|
285
|
+
"ETIMEDOUT",
|
|
286
|
+
"EPIPE",
|
|
287
|
+
"ENETUNREACH",
|
|
288
|
+
"EHOSTUNREACH",
|
|
289
|
+
]);
|
|
290
|
+
const MAX_CAUSE_DEPTH = 4;
|
|
291
|
+
/**
|
|
292
|
+
* True when `err` or one of its first few `cause`s carries a network/undici
|
|
293
|
+
* error code. The walk is bounded so a self-referencing cause cannot loop.
|
|
294
|
+
*/
|
|
295
|
+
function hasNetworkCauseCode(err, depth = 0) {
|
|
296
|
+
if (depth > MAX_CAUSE_DEPTH || err === null || typeof err !== "object")
|
|
297
|
+
return false;
|
|
298
|
+
const code = "code" in err ? err.code : undefined;
|
|
299
|
+
if (typeof code === "string" && (NETWORK_ERROR_CODES.has(code) || code.startsWith("UND_ERR_"))) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
return "cause" in err && hasNetworkCauseCode(err.cause, depth + 1);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* True when a fetch rejection means the network failed to deliver a response,
|
|
306
|
+
* as opposed to fetch refusing the request before any I/O (an invalid URL or
|
|
307
|
+
* header value, a GET with a body). Node reports the former as `TypeError:
|
|
308
|
+
* fetch failed` with the reason on `cause`; the latter are plugin bugs that a
|
|
309
|
+
* retry or a browser session cannot fix.
|
|
310
|
+
*/
|
|
311
|
+
function isNetworkFailure(err) {
|
|
312
|
+
if (isAbortOrTimeout(err))
|
|
313
|
+
return true;
|
|
314
|
+
if (err instanceof TypeError && err.message === "fetch failed")
|
|
315
|
+
return true;
|
|
316
|
+
return hasNetworkCauseCode(err);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Converts a failure that left the hot path without a usable response into an
|
|
320
|
+
* {@link HttpTransportError}, so dispatch can cascade it into the browser
|
|
321
|
+
* fallback. A plain network failure (reset, refused, DNS, socket hang up) is
|
|
322
|
+
* thrown as-is so p-retry retries it in place. An abort or timeout is wrapped
|
|
323
|
+
* in p-retry's `AbortError` because the signal fired on purpose and a retry
|
|
324
|
+
* would only time out again.
|
|
325
|
+
*/
|
|
326
|
+
function transportFailure(err, label) {
|
|
327
|
+
if (isAbortOrTimeout(err)) {
|
|
328
|
+
return new p_retry_1.AbortError(new errors_1.HttpTransportError(`${label}: aborted or timed out: ${errorDetail(err)}`, { cause: err }));
|
|
329
|
+
}
|
|
330
|
+
return new errors_1.HttpTransportError(`${label}: ${errorDetail(err)}`, { cause: err });
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Classifies a fetch rejection. Only a real network failure, abort or timeout
|
|
334
|
+
* becomes an {@link HttpTransportError}; anything else is a request fetch
|
|
335
|
+
* refused to send, so it is wrapped in `AbortError(UnknownScraperError)`:
|
|
336
|
+
* retrying it or cascading it into a browser session would only hide the bug.
|
|
337
|
+
*/
|
|
338
|
+
function toTransportFailure(err, label) {
|
|
339
|
+
if (isNetworkFailure(err))
|
|
340
|
+
return transportFailure(err, label);
|
|
341
|
+
return new p_retry_1.AbortError(new errors_1.UnknownScraperError(`${label}: request rejected before sending: ${errorDetail(err)}`));
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Reads the response body. The connection can still drop or time out while
|
|
345
|
+
* the body streams in, and that is the same "no usable response" failure as
|
|
346
|
+
* one that happens before the headers arrive.
|
|
347
|
+
*/
|
|
348
|
+
async function readBodyOrThrow(response, url) {
|
|
349
|
+
try {
|
|
350
|
+
return await response.text();
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
throw transportFailure(err, `reading the response body from ${url} failed`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Runs the retry loop and converts the caller's own signal firing between
|
|
358
|
+
* attempts into an {@link HttpTransportError}. p-retry rejects with the
|
|
359
|
+
* signal's raw `reason` there, which is not a ScraperError, so without this a
|
|
360
|
+
* caller-side timeout that lands during backoff would not cascade into the
|
|
361
|
+
* browser fallback, while one that lands mid-fetch would.
|
|
362
|
+
*/
|
|
363
|
+
async function rethrowCallerAbortAsTransport(signal, url, run) {
|
|
364
|
+
try {
|
|
365
|
+
return await run();
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
if ((0, errors_1.isScraperError)(err) || !signal?.aborted || err !== signal.reason)
|
|
369
|
+
throw err;
|
|
370
|
+
throw new errors_1.HttpTransportError(`http request to ${url} aborted or timed out between attempts: ${errorDetail(err)}`, { cause: err });
|
|
371
|
+
}
|
|
372
|
+
}
|
|
253
373
|
/**
|
|
254
374
|
* Factory that creates a typed direct-HTTP request function pre-wired with
|
|
255
375
|
* the plugin's Bottleneck limiter, p-retry for transient network failures,
|
|
@@ -268,8 +388,13 @@ function resolveBinding(binding, headers) {
|
|
|
268
388
|
* outage is not the same as a bot block but the recovery is identical.
|
|
269
389
|
* Throws `HttpRateLimitError` on 429 — NOT a fallback trigger; the caller
|
|
270
390
|
* should back off, not burn a session.
|
|
271
|
-
*
|
|
272
|
-
*
|
|
391
|
+
* Throws `HttpTransportError` when no usable response arrives (connection
|
|
392
|
+
* reset/refused, DNS failure, socket hang up, abort, timeout), which is also a
|
|
393
|
+
* fallback trigger. Network failures are retried up to 2 times with
|
|
394
|
+
* exponential backoff first; an abort or timeout is not retried.
|
|
395
|
+
* Throws `UnknownScraperError` without retrying when fetch rejects the request
|
|
396
|
+
* before any network I/O (invalid URL or header value, GET with a body) — a
|
|
397
|
+
* plugin bug, so NOT a fallback trigger.
|
|
273
398
|
*/
|
|
274
399
|
function createHttpClient(options) {
|
|
275
400
|
const { schema, bottleneck, baseHeaders, onResponse, bind = [], classifyResponseBody, defaultTimeoutMs, } = options;
|
|
@@ -295,7 +420,7 @@ function createHttpClient(options) {
|
|
|
295
420
|
// call only — see HttpRequestInit.schema for why a multi-call chain with
|
|
296
421
|
// heterogeneous response shapes needs this escape hatch.
|
|
297
422
|
const activeSchema = init.schema ?? schema;
|
|
298
|
-
|
|
423
|
+
const attempt = () => (0, p_retry_1.default)(async () => {
|
|
299
424
|
const method = init.method ?? "GET";
|
|
300
425
|
const initHeaders = init.headers ?? {};
|
|
301
426
|
const mergedCookie = mergeCookieHeader(baseHeaders, boundHeaders, initHeaders);
|
|
@@ -327,20 +452,7 @@ function createHttpClient(options) {
|
|
|
327
452
|
});
|
|
328
453
|
}
|
|
329
454
|
catch (err) {
|
|
330
|
-
|
|
331
|
-
// firing (AbortSignal.timeout rejects as "TimeoutError", not
|
|
332
|
-
// "AbortError") — either way the signal fired on purpose, so
|
|
333
|
-
// propagate without retry rather than burning the retry budget on
|
|
334
|
-
// a call that will only time out again. The outer p-retry's own
|
|
335
|
-
// `signal` option will also throwIfAborted on its retry-loop
|
|
336
|
-
// boundaries, but wrapping in AbortError here covers the window
|
|
337
|
-
// between fetch dispatch and the next signal check inside pRetry.
|
|
338
|
-
if (err instanceof Error &&
|
|
339
|
-
(err.name === "AbortError" || err.name === "TimeoutError")) {
|
|
340
|
-
throw new p_retry_1.AbortError(new errors_1.UnknownScraperError(`http fetch aborted: ${err.message}`));
|
|
341
|
-
}
|
|
342
|
-
// Network-level failure (DNS, TCP reset, timeout) — retryable.
|
|
343
|
-
throw new errors_1.UnknownScraperError(`http fetch failed: ${String(err)}`);
|
|
455
|
+
throw toTransportFailure(err, `http fetch to ${url} failed`);
|
|
344
456
|
}
|
|
345
457
|
onResponse?.({ status: response.status, headers: response.headers, url });
|
|
346
458
|
for (const binding of bind) {
|
|
@@ -405,7 +517,7 @@ function createHttpClient(options) {
|
|
|
405
517
|
logger.warn(`baseline-body capture failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
406
518
|
}
|
|
407
519
|
}
|
|
408
|
-
const rawText = await response
|
|
520
|
+
const rawText = await readBodyOrThrow(response, url);
|
|
409
521
|
// A plugin may recognize a non-JSON response body the engine can't
|
|
410
522
|
// (a vendor sentinel). Its verdict drives retry via the error's
|
|
411
523
|
// `retryable` flag: non-retryable aborts the p-retry loop, retryable
|
|
@@ -452,7 +564,8 @@ function createHttpClient(options) {
|
|
|
452
564
|
await (0, frame_target_1.sleep)(context.error.retryAfterMs);
|
|
453
565
|
}
|
|
454
566
|
},
|
|
455
|
-
})
|
|
567
|
+
});
|
|
568
|
+
return bottleneck.schedule(() => rethrowCallerAbortAsTransport(init.signal, url, attempt));
|
|
456
569
|
};
|
|
457
570
|
}
|
|
458
571
|
//# sourceMappingURL=http-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAmD;AACnD,yCAAiC;AAGjC,mDAA6C;AAG7C,2CAA0C;AAC1C,6CAS0B;AAC1B,yDAA+C;AAE/C,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAE5B;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAa,EAAE,IAAgC;IAClE,OAAO,IAAI,CAAC,MAAM,CAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACxC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChE,OAAQ,IAAqC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,QAAgB;IAClD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,IAAgC,EAAE,KAAc;IAChF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,UAAU,GAA6C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9E,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACX,CAAC,CAAC,EAAE,GAAI,IAAqC,EAAE,CAAC;IACjD,UAA2C,CAAC,GAAG,CAAC,GAAG,SAAS,CAC1D,UAA2C,CAAC,GAAG,CAAC,EACjD,IAAI,EACJ,KAAK,CACN,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,0BAA0B,CACjC,YAAqB,EACrB,IAAa,EACb,MAA+B;IAE/B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CACnF,CAAC;IACF,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE7F,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAU,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,WAAW,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnF,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAExC,OAAO,cAAc,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAChD,QAAQ,CAAC,IAAI,CACd,CAAC;AACJ,CAAC;AA2ID;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAC,OAAe,EAAE,GAAW;IAC7D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,uBAAuB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,IAAI,4BAAmB,CAAC,oCAAoC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,gBAA0B,EAAE,UAAkB;IACxE,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAS;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAChC,OAA+B,EAC/B,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;IACxE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,YAAoB;IAC5C,OAAO,YAAY;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC;SACf,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAU,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CACxB,WAAmC,EACnC,YAAoC,EACpC,WAAmC;IAEnC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,YAAY,KAAK,SAAS;YAAE,SAAS;QACzC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAA4B,EAAE,OAAgB;IACpE,IAAI,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;QACxD,OAAO,OAAO,CAAC,UAAU;YACvB,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC;YAChE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,0BACE,OAAqC;IAErC,MAAM,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,UAAU,EACV,IAAI,GAAG,EAAE,EACT,oBAAoB,EACpB,gBAAgB,GACjB,GAAG,OAAO,CAAC;IACZ,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,wEAAwE;IACxE,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,sEAAsE;IACtE,mEAAmE;IACnE,8CAA8C;IAC9C,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA+B,CAAC;IACpE,+DAA+D;IAC/D,8DAA8D;IAC9D,uEAAuE;IACvE,oBAAoB;IACpB,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAErD,OAAO,KAAK,EACV,GAAW,EACX,IAAI,GAA+B,EAAE,EACjB,EAAE;QACtB,wEAAwE;QACxE,yEAAyE;QACzE,yDAAyD;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAK,MAAwC,CAAC;QAC9E,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAC9B,IAAA,iBAAM,EACJ,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YAC/E,MAAM,OAAO,GAA2B;gBACtC,GAAG,WAAW;gBACd,GAAG,YAAY;gBACf,GAAG,WAAW;aACf,CAAC;YACF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,QAAQ,CAAC;gBAC7E,OAAO,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;YACpC,CAAC;YAED,kEAAkE;YAClE,yDAAyD;YACzD,2DAA2D;YAC3D,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,IAAI,gBAAgB,KAAK,SAAS;gBAC3C,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACvE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;oBACZ,CAAC,gBAAgB,KAAK,SAAS;wBAC7B,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;wBACvC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAEtB,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC1B,MAAM;oBACN,OAAO;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,qEAAqE;gBACrE,6DAA6D;gBAC7D,6DAA6D;gBAC7D,kEAAkE;gBAClE,gEAAgE;gBAChE,6DAA6D;gBAC7D,gEAAgE;gBAChE,kEAAkE;gBAClE,IACE,GAAG,YAAY,KAAK;oBACpB,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,EAC1D,CAAC;oBACD,MAAM,IAAI,oBAAU,CAAC,IAAI,4BAAmB,CAAC,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtF,CAAC;gBACD,+DAA+D;gBAC/D,MAAM,IAAI,4BAAmB,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAE1E,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxD,gEAAgE;gBAChE,+DAA+D;gBAC/D,6DAA6D;gBAC7D,6CAA6C;gBAC7C,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAS;gBAClC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;gBACrD,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC;gBAClF,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACrC,YAAY,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;oBACtC,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;gBACjF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACvC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC7C,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;qBACnD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC;qBACtD,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,oEAAoE;gBACpE,MAAM,IAAI,oBAAU,CAClB,IAAI,8BAAqB,CACvB,QAAQ,QAAQ,CAAC,MAAM,SAAS,GAAG,mCAAmC,CACvE,CACF,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,kEAAkE;gBAClE,6DAA6D;gBAC7D,0DAA0D;gBAC1D,MAAM,IAAI,2BAAkB,CAC1B,iBAAiB,GAAG,wBAAwB,EAC5C,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpC,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,kEAAkE;gBAClE,uCAAuC;gBACvC,MAAM,IAAI,oBAAU,CAAC,IAAI,wBAAe,CAAC,QAAQ,QAAQ,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;YACnF,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,sBAAsB,CAAC;oBACtE,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACpC,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC3D,MAAM,IAAI,GACR,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;yBAClB,KAAK,CAAC,GAAG,CAAC;yBACV,MAAM,CAAC,OAAO,CAAC;yBACf,KAAK,CAAC,CAAC,CAAC,CAAC;yBACT,IAAI,CAAC,GAAG,CAAC;yBACT,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC;oBAChD,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,GAAG,IAAI,MAAM,IAAI,IAAI,OAAO,CAAC,CAAC;oBAC1D,IAAA,uBAAa,EACX,MAAM,EACN,IAAI,CAAC,SAAS,CACZ;wBACE,MAAM;wBACN,GAAG;wBACH,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,cAAc,EAAE,OAAO;wBACvB,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;qBAC/B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;gBACnD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CACT,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEtC,mEAAmE;YACnE,gEAAgE;YAChE,qEAAqE;YACrE,gEAAgE;YAChE,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,oBAAU,CAAC,UAAU,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,oEAAoE;gBACpE,kEAAkE;gBAClE,oEAAoE;gBACpE,iEAAiE;gBACjE,iEAAiE;gBACjE,uDAAuD;gBACvD,MAAM,IAAI,oBAAU,CAClB,IAAI,wBAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,CAC5E,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAErD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,0BAA0B,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CACT,6BAA6B,GAAG,8BAA8B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrH,CAAC;oBACF,OAAO,SAAsB,CAAC;gBAChC,CAAC;gBACD,MAAM,CAAC,IAAI,CACT,6BAA6B,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5F,CAAC;gBACF,gDAAgD;gBAChD,MAAM,IAAI,oBAAU,CAClB,IAAI,wBAAe,CACjB,6BAA6B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CACF,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC,EACD;YACE,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACjC,MAAM,CAAC,IAAI,CACT,yBAAyB,OAAO,CAAC,aAAa,YAAY,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,eAAe,CACvH,CAAC;gBACF,iEAAiE;gBACjE,gEAAgE;gBAChE,8DAA8D;gBAC9D,IAAI,IAAA,6BAAoB,EAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACpF,MAAM,IAAA,oBAAK,EAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;SACF,CACF,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/scraper/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,8 @@ export interface SiteMetrics {
|
|
|
19
19
|
export declare function recordHotPathSuccess(siteId: string): void;
|
|
20
20
|
/**
|
|
21
21
|
* Records a fallback activation for `siteId`. Called by dispatch() when the
|
|
22
|
-
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`,
|
|
23
|
-
* and the Stagehand browser path is engaged instead.
|
|
22
|
+
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`, `HttpServerError`,
|
|
23
|
+
* or `HttpTransportError` and the Stagehand browser path is engaged instead.
|
|
24
24
|
*/
|
|
25
25
|
export declare function recordFallbackActivation(siteId: string): void;
|
|
26
26
|
/**
|
package/dist/scraper/metrics.js
CHANGED
|
@@ -33,8 +33,8 @@ function recordHotPathSuccess(siteId) {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Records a fallback activation for `siteId`. Called by dispatch() when the
|
|
36
|
-
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`,
|
|
37
|
-
* and the Stagehand browser path is engaged instead.
|
|
36
|
+
* hot path throws `HttpSchemaError`, `HttpBotChallengeError`, `HttpServerError`,
|
|
37
|
+
* or `HttpTransportError` and the Stagehand browser path is engaged instead.
|
|
38
38
|
*/
|
|
39
39
|
function recordFallbackActivation(siteId) {
|
|
40
40
|
ensureEntry(siteId).fallbackActivations++;
|
|
@@ -13,7 +13,19 @@ export interface PhantomClickSnapshot {
|
|
|
13
13
|
bodyHtmlLength: number;
|
|
14
14
|
/** `<len>:<first-200-chars>` of visible text, as in flow-runner's StepSnapshot. */
|
|
15
15
|
visibleTextSignature?: string;
|
|
16
|
+
/** Bounded whitespace-normalised excerpt of the visible text (see flow-runner's StepSnapshot). */
|
|
17
|
+
visibleText?: string;
|
|
18
|
+
/** Digest of the whole normalised visible text, so a change beyond the head or excerpt is still seen. */
|
|
19
|
+
visibleTextDigest?: string;
|
|
20
|
+
/**
|
|
21
|
+
* True when this snapshot was re-read after a settle round and the visible
|
|
22
|
+
* text held still across it, so a header flip that has not been followed by
|
|
23
|
+
* a body swap is the page's final state rather than a transition in flight.
|
|
24
|
+
*/
|
|
25
|
+
settled?: boolean;
|
|
16
26
|
}
|
|
27
|
+
/** The visible-text slice of a snapshot, for callers that judge a page advance from text alone. */
|
|
28
|
+
export type VisibleTextState = Pick<PhantomClickSnapshot, "visibleTextSignature" | "visibleText" | "visibleTextDigest">;
|
|
17
29
|
export interface PhantomClickAttempt {
|
|
18
30
|
/** Stagehand's own verdict for the attempt — did it believe it acted? */
|
|
19
31
|
actResultSuccess: boolean | null;
|
|
@@ -44,11 +56,17 @@ export interface PhantomClickAttempt {
|
|
|
44
56
|
/**
|
|
45
57
|
* True when a submit-shaped step is NOT the flow's final submit (e.g. an
|
|
46
58
|
* account-creation transition in a wizard). Such a step is credited when
|
|
47
|
-
* {@link
|
|
59
|
+
* {@link hasSettledPageAdvanced} holds even with no network/URL/title signal.
|
|
48
60
|
* Implies `isSubmitShapedStep`: a mid-flow submit is submit-shaped by
|
|
49
61
|
* definition, so callers need not set both for it to be held to submit rules.
|
|
50
62
|
*/
|
|
51
63
|
isMidFlowSubmitStep?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Step-start snapshot used ONLY for the mid-flow advance judgement, so a late
|
|
66
|
+
* re-render an earlier attempt already absorbed into `pre` is still credited.
|
|
67
|
+
* Network/byte deltas keep coming from `pre`. Defaults to `pre`.
|
|
68
|
+
*/
|
|
69
|
+
advanceBaseline?: PhantomClickSnapshot;
|
|
52
70
|
/**
|
|
53
71
|
* Mirrors flow-runner's own `isPlausibleStepDestination` gate on its
|
|
54
72
|
* `urlChanged`/`retryUrlChanged` signals: false when the post-URL landed
|
|
@@ -122,6 +140,12 @@ export declare const PAGE_ADVANCE_MIN_TEXT_LENGTH_RATIO = 0.3;
|
|
|
122
140
|
export declare const PAGE_ADVANCE_MIN_RELATIVE_TEXT_LENGTH_DELTA = 30;
|
|
123
141
|
/** Word-set similarity below which the visible-text head counts as replaced. */
|
|
124
142
|
export declare const PAGE_ADVANCE_MAX_HEAD_SIMILARITY = 0.5;
|
|
143
|
+
/**
|
|
144
|
+
* Reports whether the visible text differs at all between two snapshots, using
|
|
145
|
+
* the whole-text digest when both carry one so a change beyond the 200-char
|
|
146
|
+
* signature head is not missed. Falls back to the signature alone.
|
|
147
|
+
*/
|
|
148
|
+
export declare function hasVisibleTextChanged(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
|
|
125
149
|
/**
|
|
126
150
|
* Decides whether the page demonstrably advanced (a wizard step swapped
|
|
127
151
|
* content) from pre/post snapshots alone, so a network-free, URL-stable
|
|
@@ -133,6 +157,31 @@ export declare const PAGE_ADVANCE_MAX_HEAD_SIMILARITY = 0.5;
|
|
|
133
157
|
* line (small, mostly-shared text) is not an advance.
|
|
134
158
|
*/
|
|
135
159
|
export declare function hasPageAdvanced(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
|
|
162
|
+
* finished: a header that flipped over shared chrome is an advance, but the
|
|
163
|
+
* body usually re-renders after it, so only replaced copy counts as settled.
|
|
164
|
+
*/
|
|
165
|
+
export declare function hasPageBodySwapped(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Decides whether a mid-flow submit's page advanced, judged on the settled
|
|
168
|
+
* page: a replaced body always counts, and a replaced header counts once the
|
|
169
|
+
* text has held still across a settle round, because by then nothing is left
|
|
170
|
+
* to re-render. Before that point a header-only flip stays unfinished, since
|
|
171
|
+
* the body usually re-renders after it. A page with no visible-text change
|
|
172
|
+
* never counts, so a no-op click keeps its give-up.
|
|
173
|
+
*/
|
|
174
|
+
export declare function hasSettledPageAdvanced(pre: PhantomClickSnapshot, post: PhantomClickSnapshot): boolean;
|
|
175
|
+
type SettledTextState = VisibleTextState & {
|
|
176
|
+
settled?: boolean;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Shared step-start vs settled-read rule for non-final submit-shaped steps,
|
|
180
|
+
* whose SPA wizards swap content without a URL change. Built only on
|
|
181
|
+
* {@link hasSettledPageAdvanced}; a final step is never credited here because
|
|
182
|
+
* its completion is owned by the submit-destination judge.
|
|
183
|
+
*/
|
|
184
|
+
export declare function hasSubmitStepDomAdvanced(isFinalStep: boolean, pre: string | SettledTextState | undefined, live: string | SettledTextState | undefined): boolean;
|
|
136
185
|
/**
|
|
137
186
|
* Classifies one cascade attempt as `phantom` (Stagehand claimed success but
|
|
138
187
|
* pre/post shows zero network, zero URL change, and only trivial DOM
|
|
@@ -142,4 +191,5 @@ export declare function hasPageAdvanced(pre: PhantomClickSnapshot, post: Phantom
|
|
|
142
191
|
* techniques on the same no-op.
|
|
143
192
|
*/
|
|
144
193
|
export declare function classifyPhantomClick(attempt: PhantomClickAttempt): PhantomClickVerdict;
|
|
194
|
+
export {};
|
|
145
195
|
//# sourceMappingURL=phantom-click.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phantom-click.d.ts","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"phantom-click.d.ts","sourceRoot":"","sources":["../../src/scraper/phantom-click.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,11 @@ exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY = exports.PAGE_ADVANCE_MIN_RELATIVE_TEX
|
|
|
11
11
|
exports.hasOriginOrPathChanged = hasOriginOrPathChanged;
|
|
12
12
|
exports.splitIntoActionClauses = splitIntoActionClauses;
|
|
13
13
|
exports.isPlausibleStepDestination = isPlausibleStepDestination;
|
|
14
|
+
exports.hasVisibleTextChanged = hasVisibleTextChanged;
|
|
14
15
|
exports.hasPageAdvanced = hasPageAdvanced;
|
|
16
|
+
exports.hasPageBodySwapped = hasPageBodySwapped;
|
|
17
|
+
exports.hasSettledPageAdvanced = hasSettledPageAdvanced;
|
|
18
|
+
exports.hasSubmitStepDomAdvanced = hasSubmitStepDomAdvanced;
|
|
15
19
|
exports.classifyPhantomClick = classifyPhantomClick;
|
|
16
20
|
function originAndPathOf(url) {
|
|
17
21
|
try {
|
|
@@ -181,37 +185,184 @@ function headWordSimilarity(pre, post) {
|
|
|
181
185
|
const shared = [...preWords].filter((w) => postWords.has(w)).length;
|
|
182
186
|
return shared / union.size;
|
|
183
187
|
}
|
|
188
|
+
/** Words dropped AND introduced in the head for it to count as swapped copy. */
|
|
189
|
+
const PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS = 2;
|
|
190
|
+
function leadingHeadWord(signature) {
|
|
191
|
+
return signature
|
|
192
|
+
.slice(signature.indexOf(":") + 1)
|
|
193
|
+
.toLowerCase()
|
|
194
|
+
.split(/\W+/)
|
|
195
|
+
.find((w) => w !== "");
|
|
196
|
+
}
|
|
197
|
+
function isHeadSwapped(pre, post) {
|
|
198
|
+
const preWords = textHeadWords(pre);
|
|
199
|
+
const postWords = textHeadWords(post);
|
|
200
|
+
const dropped = [...preWords].filter((w) => !postWords.has(w)).length;
|
|
201
|
+
if (dropped < PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
|
|
202
|
+
return false;
|
|
203
|
+
const added = [...postWords].filter((w) => !preWords.has(w)).length;
|
|
204
|
+
if (added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS)
|
|
205
|
+
return true;
|
|
206
|
+
// A swapped header can reuse a word the shared chrome already carries (a
|
|
207
|
+
// "My Account" header over an "Account" button), leaving a single new word;
|
|
208
|
+
// a new word leading the head still marks replaced copy.
|
|
209
|
+
const leading = leadingHeadWord(post);
|
|
210
|
+
return leading !== undefined && !preWords.has(leading);
|
|
211
|
+
}
|
|
212
|
+
const KIND_RANK = { none: 0, header: 1, body: 2 };
|
|
213
|
+
/** Head length the signature keeps; the excerpt tail starts past it. */
|
|
214
|
+
const SIGNATURE_HEAD_CHARS = 200;
|
|
215
|
+
function wordsOf(text) {
|
|
216
|
+
return new Set(text
|
|
217
|
+
.toLowerCase()
|
|
218
|
+
.split(/\W+/)
|
|
219
|
+
.filter((w) => w !== ""));
|
|
220
|
+
}
|
|
221
|
+
function wordSetSimilarity(preWords, postWords) {
|
|
222
|
+
const union = new Set([...preWords, ...postWords]);
|
|
223
|
+
if (union.size === 0)
|
|
224
|
+
return 1;
|
|
225
|
+
return [...preWords].filter((w) => postWords.has(w)).length / union.size;
|
|
226
|
+
}
|
|
227
|
+
function swappedWordCounts(preWords, postWords) {
|
|
228
|
+
return {
|
|
229
|
+
dropped: [...preWords].filter((w) => !postWords.has(w)).length,
|
|
230
|
+
added: [...postWords].filter((w) => !preWords.has(w)).length,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
184
233
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* moved substantially — a large absolute or relative length change, or a
|
|
191
|
-
* head whose words were mostly replaced — so a tooltip or inline validation
|
|
192
|
-
* line (small, mostly-shared text) is not an advance.
|
|
234
|
+
* Reads the movement of the page's whole visible text rather than its 200-char
|
|
235
|
+
* head: a wizard body that re-renders under unchanged chrome (long nav, same
|
|
236
|
+
* header, same length) leaves the signature untouched, so the excerpt's words
|
|
237
|
+
* decide whether the copy itself was replaced. `body` only when the replaced
|
|
238
|
+
* words sit in the text past the head, so a head-only flip stays `header`.
|
|
193
239
|
*/
|
|
194
|
-
function
|
|
195
|
-
const
|
|
196
|
-
const
|
|
197
|
-
if (
|
|
198
|
-
return
|
|
240
|
+
function fullTextAdvanceKind(pre, post) {
|
|
241
|
+
const preText = pre.visibleText;
|
|
242
|
+
const postText = post.visibleText;
|
|
243
|
+
if (!preText || !postText || preText === postText)
|
|
244
|
+
return "none";
|
|
245
|
+
const preWords = wordsOf(preText);
|
|
246
|
+
const postWords = wordsOf(postText);
|
|
247
|
+
const similarity = wordSetSimilarity(preWords, postWords);
|
|
248
|
+
if (similarity === 1)
|
|
249
|
+
return "none";
|
|
250
|
+
if (similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY)
|
|
251
|
+
return "body";
|
|
252
|
+
const { dropped, added } = swappedWordCounts(wordsOf(preText.slice(SIGNATURE_HEAD_CHARS)), wordsOf(postText.slice(SIGNATURE_HEAD_CHARS)));
|
|
253
|
+
if (dropped >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS &&
|
|
254
|
+
added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS) {
|
|
255
|
+
return "body";
|
|
256
|
+
}
|
|
257
|
+
const headSwap = swappedWordCounts(wordsOf(preText.slice(0, SIGNATURE_HEAD_CHARS)), wordsOf(postText.slice(0, SIGNATURE_HEAD_CHARS)));
|
|
258
|
+
return headSwap.dropped >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS &&
|
|
259
|
+
headSwap.added >= PAGE_ADVANCE_MIN_SWAPPED_HEAD_WORDS
|
|
260
|
+
? "header"
|
|
261
|
+
: "none";
|
|
262
|
+
}
|
|
263
|
+
function signatureAdvanceKind(preSig, postSig) {
|
|
264
|
+
if (preSig === postSig)
|
|
265
|
+
return "none";
|
|
199
266
|
const preLen = textLengthOf(preSig);
|
|
200
267
|
const postLen = textLengthOf(postSig);
|
|
201
268
|
if (preLen === null || postLen === null)
|
|
202
|
-
return
|
|
269
|
+
return "none";
|
|
203
270
|
const lengthDelta = Math.abs(postLen - preLen);
|
|
204
271
|
if (lengthDelta >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_DELTA)
|
|
205
|
-
return
|
|
272
|
+
return "body";
|
|
206
273
|
const similarity = headWordSimilarity(preSig, postSig);
|
|
207
274
|
// Identical head words mean whitespace/layout reflow, not new copy.
|
|
208
275
|
if (similarity === 1)
|
|
209
|
-
return
|
|
276
|
+
return "none";
|
|
210
277
|
if (lengthDelta >= exports.PAGE_ADVANCE_MIN_RELATIVE_TEXT_LENGTH_DELTA &&
|
|
211
278
|
lengthDelta / Math.max(preLen, 1) >= exports.PAGE_ADVANCE_MIN_TEXT_LENGTH_RATIO) {
|
|
212
|
-
return
|
|
279
|
+
return "body";
|
|
213
280
|
}
|
|
214
|
-
|
|
281
|
+
if (similarity < exports.PAGE_ADVANCE_MAX_HEAD_SIMILARITY)
|
|
282
|
+
return "body";
|
|
283
|
+
// Shared chrome (nav, footer) inflates similarity when a wizard swaps only
|
|
284
|
+
// its header and body copy within the 200-char head.
|
|
285
|
+
return isHeadSwapped(preSig, postSig) ? "header" : "none";
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Reports whether the visible text differs at all between two snapshots, using
|
|
289
|
+
* the whole-text digest when both carry one so a change beyond the 200-char
|
|
290
|
+
* signature head is not missed. Falls back to the signature alone.
|
|
291
|
+
*/
|
|
292
|
+
function hasVisibleTextChanged(pre, post) {
|
|
293
|
+
if (pre.visibleTextSignature !== post.visibleTextSignature)
|
|
294
|
+
return true;
|
|
295
|
+
return (!!pre.visibleTextDigest &&
|
|
296
|
+
!!post.visibleTextDigest &&
|
|
297
|
+
pre.visibleTextDigest !== post.visibleTextDigest);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Reads how far the visible text moved: `body` when the copy itself was
|
|
301
|
+
* replaced (a large or relative length change, or a head whose words were
|
|
302
|
+
* mostly swapped, or replaced words past the head), `header` when only a
|
|
303
|
+
* header-sized slice moved over shared chrome, `none` otherwise. The split lets
|
|
304
|
+
* a settle tell a finished transition from a header that flipped before its
|
|
305
|
+
* body re-rendered.
|
|
306
|
+
*/
|
|
307
|
+
function pageAdvanceKind(pre, post) {
|
|
308
|
+
const preSig = pre.visibleTextSignature;
|
|
309
|
+
const postSig = post.visibleTextSignature;
|
|
310
|
+
if (preSig === undefined || postSig === undefined)
|
|
311
|
+
return "none";
|
|
312
|
+
if (!hasVisibleTextChanged(pre, post))
|
|
313
|
+
return "none";
|
|
314
|
+
const fromSignature = signatureAdvanceKind(preSig, postSig);
|
|
315
|
+
const fromFullText = fullTextAdvanceKind(pre, post);
|
|
316
|
+
return KIND_RANK[fromFullText] > KIND_RANK[fromSignature] ? fromFullText : fromSignature;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Decides whether the page demonstrably advanced (a wizard step swapped
|
|
320
|
+
* content) from pre/post snapshots alone, so a network-free, URL-stable
|
|
321
|
+
* transition is still credited. Visible text is the evidence: a wizard swap
|
|
322
|
+
* can leave the HTML size nearly unchanged (same-size markup, different
|
|
323
|
+
* copy), so byte delta is deliberately not required. The text must have
|
|
324
|
+
* moved substantially — a large absolute or relative length change, or a
|
|
325
|
+
* head whose words were mostly replaced — so a tooltip or inline validation
|
|
326
|
+
* line (small, mostly-shared text) is not an advance.
|
|
327
|
+
*/
|
|
328
|
+
function hasPageAdvanced(pre, post) {
|
|
329
|
+
return pageAdvanceKind(pre, post) !== "none";
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Stricter sibling of {@link hasPageAdvanced} for deciding a re-render has
|
|
333
|
+
* finished: a header that flipped over shared chrome is an advance, but the
|
|
334
|
+
* body usually re-renders after it, so only replaced copy counts as settled.
|
|
335
|
+
*/
|
|
336
|
+
function hasPageBodySwapped(pre, post) {
|
|
337
|
+
return pageAdvanceKind(pre, post) === "body";
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Decides whether a mid-flow submit's page advanced, judged on the settled
|
|
341
|
+
* page: a replaced body always counts, and a replaced header counts once the
|
|
342
|
+
* text has held still across a settle round, because by then nothing is left
|
|
343
|
+
* to re-render. Before that point a header-only flip stays unfinished, since
|
|
344
|
+
* the body usually re-renders after it. A page with no visible-text change
|
|
345
|
+
* never counts, so a no-op click keeps its give-up.
|
|
346
|
+
*/
|
|
347
|
+
function hasSettledPageAdvanced(pre, post) {
|
|
348
|
+
return hasPageBodySwapped(pre, post) || (post.settled === true && hasPageAdvanced(pre, post));
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Shared step-start vs settled-read rule for non-final submit-shaped steps,
|
|
352
|
+
* whose SPA wizards swap content without a URL change. Built only on
|
|
353
|
+
* {@link hasSettledPageAdvanced}; a final step is never credited here because
|
|
354
|
+
* its completion is owned by the submit-destination judge.
|
|
355
|
+
*/
|
|
356
|
+
function hasSubmitStepDomAdvanced(isFinalStep, pre, live) {
|
|
357
|
+
if (isFinalStep)
|
|
358
|
+
return false;
|
|
359
|
+
const asSnapshot = (text) => ({
|
|
360
|
+
networkCount: 0,
|
|
361
|
+
url: "",
|
|
362
|
+
bodyHtmlLength: 0,
|
|
363
|
+
...(typeof text === "string" ? { visibleTextSignature: text } : text),
|
|
364
|
+
});
|
|
365
|
+
return hasSettledPageAdvanced(asSnapshot(pre), asSnapshot(live));
|
|
215
366
|
}
|
|
216
367
|
/**
|
|
217
368
|
* Classifies one cascade attempt as `phantom` (Stagehand claimed success but
|
|
@@ -236,7 +387,7 @@ function classifyPhantomClick(attempt) {
|
|
|
236
387
|
const elementStateChanged = !submitShaped && attempt.elementStateChanged === true;
|
|
237
388
|
// A submit-shaped step likewise ignores a mere DOM-byte reflow.
|
|
238
389
|
const bytesChangedSignificantly = !submitShaped && Math.abs(bytesDelta) >= exports.TRIVIAL_DOM_DELTA_BYTES;
|
|
239
|
-
const midFlowAdvanced = midFlowSubmit &&
|
|
390
|
+
const midFlowAdvanced = midFlowSubmit && hasSettledPageAdvanced(attempt.advanceBaseline ?? attempt.pre, attempt.post);
|
|
240
391
|
const hasEffect = networkDelta !== 0 ||
|
|
241
392
|
urlChanged ||
|
|
242
393
|
elementStateChanged ||
|