@enricai/barnacle 1.6.10 → 1.6.11
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/README.md +71 -3
- package/dist/api/routes/submissions.d.ts +21 -0
- package/dist/api/routes/submissions.d.ts.map +1 -0
- package/dist/api/routes/submissions.js +48 -0
- package/dist/api/routes/submissions.js.map +1 -0
- package/dist/api/schemas/submissions.d.ts +110 -0
- package/dist/api/schemas/submissions.d.ts.map +1 -0
- package/dist/api/schemas/submissions.js +77 -0
- package/dist/api/schemas/submissions.js.map +1 -0
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/lib/telemetry/beacon-capture.d.ts +37 -0
- package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -0
- package/dist/lib/telemetry/beacon-capture.js +47 -0
- package/dist/lib/telemetry/beacon-capture.js.map +1 -0
- package/dist/lib/telemetry/reconciliation-record.d.ts +105 -0
- package/dist/lib/telemetry/reconciliation-record.d.ts.map +1 -0
- package/dist/lib/telemetry/reconciliation-record.js +76 -0
- package/dist/lib/telemetry/reconciliation-record.js.map +1 -0
- package/dist/lib/telemetry/reconciliation-source.d.ts +33 -0
- package/dist/lib/telemetry/reconciliation-source.d.ts.map +1 -0
- package/dist/lib/telemetry/reconciliation-source.js +91 -0
- package/dist/lib/telemetry/reconciliation-source.js.map +1 -0
- package/dist/lib/telemetry/s3-sink.d.ts.map +1 -1
- package/dist/lib/telemetry/s3-sink.js +1 -2
- package/dist/lib/telemetry/s3-sink.js.map +1 -1
- package/dist/lib/telemetry/submission-capture.d.ts +30 -9
- package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
- package/dist/lib/telemetry/submission-capture.js +32 -21
- package/dist/lib/telemetry/submission-capture.js.map +1 -1
- package/dist/lib/telemetry/submission-query.d.ts +32 -0
- package/dist/lib/telemetry/submission-query.d.ts.map +1 -0
- package/dist/lib/telemetry/submission-query.js +49 -0
- package/dist/lib/telemetry/submission-query.js.map +1 -0
- package/dist/lib/telemetry/submission-reader.d.ts +52 -0
- package/dist/lib/telemetry/submission-reader.d.ts.map +1 -0
- package/dist/lib/telemetry/submission-reader.js +111 -0
- package/dist/lib/telemetry/submission-reader.js.map +1 -0
- package/dist/lib/telemetry/submissions-s3-objects.d.ts +23 -0
- package/dist/lib/telemetry/submissions-s3-objects.d.ts.map +1 -0
- package/dist/lib/telemetry/submissions-s3-objects.js +132 -0
- package/dist/lib/telemetry/submissions-s3-objects.js.map +1 -0
- package/dist/lib/telemetry/submissions-s3-reader.d.ts +25 -0
- package/dist/lib/telemetry/submissions-s3-reader.d.ts.map +1 -0
- package/dist/lib/telemetry/submissions-s3-reader.js +63 -0
- package/dist/lib/telemetry/submissions-s3-reader.js.map +1 -0
- package/dist/lib/tracking-click.d.ts +13 -2
- package/dist/lib/tracking-click.d.ts.map +1 -1
- package/dist/lib/tracking-click.js +42 -4
- package/dist/lib/tracking-click.js.map +1 -1
- package/dist/plugins/loader.d.ts +17 -3
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +59 -6
- package/dist/plugins/loader.js.map +1 -1
- package/dist/scraper/cookie-jar.d.ts +10 -4
- package/dist/scraper/cookie-jar.d.ts.map +1 -1
- package/dist/scraper/cookie-jar.js +10 -5
- package/dist/scraper/cookie-jar.js.map +1 -1
- package/dist/scraper/deep-locator-candidates.d.ts +27 -5
- package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
- package/dist/scraper/deep-locator-candidates.js +57 -11
- package/dist/scraper/deep-locator-candidates.js.map +1 -1
- package/dist/scraper/deep-locator-fake.d.ts +28 -0
- package/dist/scraper/deep-locator-fake.d.ts.map +1 -1
- package/dist/scraper/deep-locator-fake.js +44 -2
- package/dist/scraper/deep-locator-fake.js.map +1 -1
- package/dist/scraper/flow-runner.d.ts +20 -0
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +81 -9
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scraper/frame-target.d.ts +60 -14
- package/dist/scraper/frame-target.d.ts.map +1 -1
- package/dist/scraper/frame-target.js +126 -38
- package/dist/scraper/frame-target.js.map +1 -1
- package/dist/scraper/stagehand-guard.d.ts +14 -0
- package/dist/scraper/stagehand-guard.d.ts.map +1 -1
- package/dist/scraper/stagehand-guard.js +28 -8
- package/dist/scraper/stagehand-guard.js.map +1 -1
- package/dist/scraper/watchdog.d.ts +38 -0
- package/dist/scraper/watchdog.d.ts.map +1 -0
- package/dist/scraper/watchdog.js +54 -0
- package/dist/scraper/watchdog.js.map +1 -0
- package/dist/scripts/recon-browser.d.ts.map +1 -1
- package/dist/scripts/recon-browser.js +14 -3
- package/dist/scripts/recon-browser.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/site-plugin.d.ts +12 -0
- package/dist/site-plugin.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/plugins/loader.d.ts
CHANGED
|
@@ -17,9 +17,23 @@ export declare const SITE_PLUGINS: SitePlugin<unknown, unknown>[];
|
|
|
17
17
|
* browser path. Records metrics on each branch so ops dashboards can alert on
|
|
18
18
|
* rising fallback rates. Emits a `submission-envelope` telemetry record on
|
|
19
19
|
* both success and failure — the durable source-of-truth for "what did we
|
|
20
|
-
* submit for jobId X and did it succeed."
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* submit for jobId X and did it succeed." Calls the plugin's own
|
|
21
|
+
* `extractJoinKeys` (if declared) once and stamps the opaque result onto both
|
|
22
|
+
* the submission envelope and the tracking click so a run's submit and
|
|
23
|
+
* beacon-fire records can be joined, without core knowing what the keys mean.
|
|
24
|
+
* A plugin that declares `extractJoinKeys` is asserting it manages its own
|
|
25
|
+
* post-submit attribution navigation, so core's automatic `TrackingUrl` fire
|
|
26
|
+
* is skipped for it — firing both would open two independent sessions
|
|
27
|
+
* against the same tracking URL, which can orphan the plugin's own
|
|
28
|
+
* click-to-session association with its attribution vendor. Either way — no
|
|
29
|
+
* usable `TrackingUrl`, or a plugin that manages its own nav — the skipped
|
|
30
|
+
* case still records a `beaconStatus: "skipped"` record instead of firing
|
|
31
|
+
* the tracking click, so "no beacon was ever applicable" is distinguishable
|
|
32
|
+
* from "a beacon was attempted and never recorded an outcome"; the record's
|
|
33
|
+
* `trackingUrl` field is preserved (not nulled) when a real URL was present
|
|
34
|
+
* but delegated, so the two skip reasons stay distinguishable from each
|
|
35
|
+
* other too. Maps scraper errors to the API error hierarchy so callers
|
|
36
|
+
* receive typed, client-readable errors instead of raw scraper internals.
|
|
23
37
|
*/
|
|
24
38
|
export declare function dispatch<TResult>(plugin: SitePlugin<unknown, unknown>, payload: unknown, context: SitePluginContext, options?: {
|
|
25
39
|
forceFallback?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAejE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAejE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAmC1C,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAEjB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAW9C;;;;;GAKG;AACH,eAAO,MAAM,YAAY,gCAAuB,CAAC;AAyIjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EACpC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CA+FpC;AA+BD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,eAAe,CAAC,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,CAAC,EAC/E,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GACtC,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
package/dist/plugins/loader.js
CHANGED
|
@@ -15,6 +15,7 @@ const dd_metrics_1 = require("../lib/dd-metrics");
|
|
|
15
15
|
const dispatch_metrics_1 = require("../lib/dispatch-metrics");
|
|
16
16
|
const errors_2 = require("../lib/errors");
|
|
17
17
|
const logging_1 = require("../lib/logging");
|
|
18
|
+
const beacon_capture_1 = require("../lib/telemetry/beacon-capture");
|
|
18
19
|
const submission_capture_1 = require("../lib/telemetry/submission-capture");
|
|
19
20
|
const tracking_click_1 = require("../lib/tracking-click");
|
|
20
21
|
const discover_1 = require("../plugins/discover");
|
|
@@ -130,6 +131,20 @@ async function emitEnvelopeSafely(input) {
|
|
|
130
131
|
logger.warn(`submission envelope emit failed: ${(0, errors_2.toErrorMessage)(err)}`);
|
|
131
132
|
}
|
|
132
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Best-effort wrapper around `captureBeaconEvent`, matching `emitEnvelopeSafely`'s
|
|
136
|
+
* defense: `captureBeaconEvent` already swallows its own write errors, but a
|
|
137
|
+
* test double or unexpected synchronous throw must still never propagate into
|
|
138
|
+
* dispatch's success path.
|
|
139
|
+
*/
|
|
140
|
+
async function emitBeaconSafely(input) {
|
|
141
|
+
try {
|
|
142
|
+
await (0, beacon_capture_1.captureBeaconEvent)(input);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
logger.warn(`beacon event emit failed: ${(0, errors_2.toErrorMessage)(err)}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
133
148
|
/**
|
|
134
149
|
* Runs a single plugin submission end-to-end. Tries the direct-HTTP hot path
|
|
135
150
|
* first when the plugin supplies `executeHttp`; on `HttpSchemaError`,
|
|
@@ -137,15 +152,31 @@ async function emitEnvelopeSafely(input) {
|
|
|
137
152
|
* browser path. Records metrics on each branch so ops dashboards can alert on
|
|
138
153
|
* rising fallback rates. Emits a `submission-envelope` telemetry record on
|
|
139
154
|
* both success and failure — the durable source-of-truth for "what did we
|
|
140
|
-
* submit for jobId X and did it succeed."
|
|
141
|
-
*
|
|
142
|
-
*
|
|
155
|
+
* submit for jobId X and did it succeed." Calls the plugin's own
|
|
156
|
+
* `extractJoinKeys` (if declared) once and stamps the opaque result onto both
|
|
157
|
+
* the submission envelope and the tracking click so a run's submit and
|
|
158
|
+
* beacon-fire records can be joined, without core knowing what the keys mean.
|
|
159
|
+
* A plugin that declares `extractJoinKeys` is asserting it manages its own
|
|
160
|
+
* post-submit attribution navigation, so core's automatic `TrackingUrl` fire
|
|
161
|
+
* is skipped for it — firing both would open two independent sessions
|
|
162
|
+
* against the same tracking URL, which can orphan the plugin's own
|
|
163
|
+
* click-to-session association with its attribution vendor. Either way — no
|
|
164
|
+
* usable `TrackingUrl`, or a plugin that manages its own nav — the skipped
|
|
165
|
+
* case still records a `beaconStatus: "skipped"` record instead of firing
|
|
166
|
+
* the tracking click, so "no beacon was ever applicable" is distinguishable
|
|
167
|
+
* from "a beacon was attempted and never recorded an outcome"; the record's
|
|
168
|
+
* `trackingUrl` field is preserved (not nulled) when a real URL was present
|
|
169
|
+
* but delegated, so the two skip reasons stay distinguishable from each
|
|
170
|
+
* other too. Maps scraper errors to the API error hierarchy so callers
|
|
171
|
+
* receive typed, client-readable errors instead of raw scraper internals.
|
|
143
172
|
*/
|
|
144
173
|
async function dispatch(plugin, payload, context, options = {}) {
|
|
145
174
|
const startedAt = Date.now();
|
|
146
175
|
const hasHttpPath = !!plugin.executeHttp && !options.forceFallback;
|
|
147
176
|
const pathTag = hasHttpPath ? "http" : "browser";
|
|
148
177
|
const ddTags = { site: plugin.meta.siteId, path: pathTag };
|
|
178
|
+
const joinKeys = plugin.extractJoinKeys?.(payload) ?? null;
|
|
179
|
+
const managesOwnTracking = !!plugin.extractJoinKeys;
|
|
149
180
|
(0, dd_metrics_1.recordDdAttempt)(ddTags);
|
|
150
181
|
try {
|
|
151
182
|
const result = await runPluginPipeline(plugin, payload, context, options);
|
|
@@ -165,15 +196,36 @@ async function dispatch(plugin, payload, context, options = {}) {
|
|
|
165
196
|
await emitEnvelopeSafely({
|
|
166
197
|
siteId: plugin.meta.siteId,
|
|
167
198
|
requestId: context.requestId,
|
|
199
|
+
joinKeys,
|
|
168
200
|
inboundPayload: payload,
|
|
169
201
|
status: "submitted",
|
|
170
202
|
auditPayload: result.auditPayload ?? result.data,
|
|
171
203
|
errorMessage: null,
|
|
172
204
|
durationMs,
|
|
173
205
|
});
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
206
|
+
const rawTrackingUrl = payload?.TrackingUrl;
|
|
207
|
+
const trackingUrl = typeof rawTrackingUrl === "string" && rawTrackingUrl.length > 0 ? rawTrackingUrl : null;
|
|
208
|
+
if (!managesOwnTracking && trackingUrl) {
|
|
209
|
+
(0, tracking_click_1.fireTrackingClick)(trackingUrl, plugin.meta.siteId, {
|
|
210
|
+
requestId: context.requestId,
|
|
211
|
+
joinKeys,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
await emitBeaconSafely({
|
|
216
|
+
requestId: context.requestId,
|
|
217
|
+
siteId: plugin.meta.siteId,
|
|
218
|
+
joinKeys,
|
|
219
|
+
beaconStatus: "skipped",
|
|
220
|
+
// Preserved (not nulled) when the plugin manages its own tracking
|
|
221
|
+
// nav and a URL was present, so the sink can distinguish "no URL
|
|
222
|
+
// was ever applicable" (trackingUrl: null) from "a URL was present
|
|
223
|
+
// but a different, plugin-owned navigation used it instead"
|
|
224
|
+
// (trackingUrl: <the URL>) — both cases hit this branch, but only
|
|
225
|
+
// the latter had a real URL to report.
|
|
226
|
+
trackingUrl,
|
|
227
|
+
durationMs: 0,
|
|
228
|
+
});
|
|
177
229
|
}
|
|
178
230
|
return result;
|
|
179
231
|
}
|
|
@@ -187,6 +239,7 @@ async function dispatch(plugin, payload, context, options = {}) {
|
|
|
187
239
|
await emitEnvelopeSafely({
|
|
188
240
|
siteId: plugin.meta.siteId,
|
|
189
241
|
requestId: context.requestId,
|
|
242
|
+
joinKeys,
|
|
190
243
|
inboundPayload: payload,
|
|
191
244
|
status: "error",
|
|
192
245
|
auditPayload: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,17 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { Page } from "@browserbasehq/stagehand";
|
|
11
11
|
import type { CookieJarSnapshot } from "../scripts/recon-shared";
|
|
12
|
+
/** Tuning knobs for {@link captureCookieJarSnapshot}. */
|
|
13
|
+
export interface CookieJarTimeoutOptions {
|
|
14
|
+
/** Milliseconds to wait for the CDP call before degrading to an error snapshot. */
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}
|
|
12
17
|
/**
|
|
13
18
|
* Reads the browser's complete cookie jar and returns it as a labeled
|
|
14
|
-
* snapshot. Never throws — telemetry capture is best-effort, so a failed
|
|
15
|
-
*
|
|
16
|
-
* rather than
|
|
19
|
+
* snapshot. Never throws — telemetry capture is best-effort, so a failed or
|
|
20
|
+
* wedged CDP call (bounded by `timeoutOptions.timeoutMs`) yields a snapshot
|
|
21
|
+
* with an `error` field and an empty `cookies` array rather than blocking or
|
|
22
|
+
* aborting the recon run.
|
|
17
23
|
*/
|
|
18
|
-
export declare function captureCookieJarSnapshot(page: Page, label: string, phase: string, stepIndex: number): Promise<CookieJarSnapshot>;
|
|
24
|
+
export declare function captureCookieJarSnapshot(page: Page, label: string, phase: string, stepIndex: number, timeoutOptions?: CookieJarTimeoutOptions): Promise<CookieJarSnapshot>;
|
|
19
25
|
//# sourceMappingURL=cookie-jar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-jar.d.ts","sourceRoot":"","sources":["../../src/scraper/cookie-jar.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"cookie-jar.d.ts","sourceRoot":"","sources":["../../src/scraper/cookie-jar.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAIrD,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,wBAAwB,CAAC;AAO9E,yDAAyD;AACzD,MAAM,WAAW,uBAAuB;IACtC,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,uBAA4B,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
|
|
@@ -11,16 +11,21 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.captureCookieJarSnapshot = captureCookieJarSnapshot;
|
|
13
13
|
const errors_1 = require("../lib/errors");
|
|
14
|
+
const watchdog_1 = require("../scraper/watchdog");
|
|
15
|
+
/** Default budget for the `Network.getAllCookies` CDP call, see {@link captureCookieJarSnapshot}. */
|
|
16
|
+
const DEFAULT_COOKIE_JAR_TIMEOUT_MS = 5_000;
|
|
14
17
|
/**
|
|
15
18
|
* Reads the browser's complete cookie jar and returns it as a labeled
|
|
16
|
-
* snapshot. Never throws — telemetry capture is best-effort, so a failed
|
|
17
|
-
*
|
|
18
|
-
* rather than
|
|
19
|
+
* snapshot. Never throws — telemetry capture is best-effort, so a failed or
|
|
20
|
+
* wedged CDP call (bounded by `timeoutOptions.timeoutMs`) yields a snapshot
|
|
21
|
+
* with an `error` field and an empty `cookies` array rather than blocking or
|
|
22
|
+
* aborting the recon run.
|
|
19
23
|
*/
|
|
20
|
-
async function captureCookieJarSnapshot(page, label, phase, stepIndex) {
|
|
24
|
+
async function captureCookieJarSnapshot(page, label, phase, stepIndex, timeoutOptions = {}) {
|
|
21
25
|
const timestamp = new Date().toISOString();
|
|
26
|
+
const timeoutMs = timeoutOptions.timeoutMs ?? DEFAULT_COOKIE_JAR_TIMEOUT_MS;
|
|
22
27
|
try {
|
|
23
|
-
const result = await page.sendCDP("Network.getAllCookies");
|
|
28
|
+
const result = await (0, watchdog_1.withWatchdog)(() => page.sendCDP("Network.getAllCookies"), { timeoutMs, label: "cookie-jar Network.getAllCookies" });
|
|
24
29
|
return {
|
|
25
30
|
label,
|
|
26
31
|
phase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-jar.js","sourceRoot":"","sources":["../../src/scraper/cookie-jar.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAIH,yCAA8C;
|
|
1
|
+
{"version":3,"file":"cookie-jar.js","sourceRoot":"","sources":["../../src/scraper/cookie-jar.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAIH,yCAA8C;AAC9C,iDAAkD;AAKlD,qGAAqG;AACrG,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAQ5C;;;;;;GAMG;AACI,KAAK,mCACV,IAAU,EACV,KAAa,EACb,KAAa,EACb,SAAiB,EACjB,cAAc,GAA4B,EAAE;IAE5C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,IAAI,6BAA6B,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAY,EAC/B,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAwB,uBAAuB,CAAC,EAClE,EAAE,SAAS,EAAE,KAAK,EAAE,kCAAkC,EAAE,CACzD,CAAC;QACF,OAAO;YACL,KAAK;YACL,KAAK;YACL,SAAS;YACT,SAAS;YACT,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK;YACL,KAAK;YACL,SAAS;YACT,SAAS;YACT,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAA,uBAAc,EAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
* when the step is scoped to a child frame.
|
|
10
10
|
*/
|
|
11
11
|
import type { Page } from "@browserbasehq/stagehand";
|
|
12
|
+
/** Overrides for the watchdog timeouts this module applies to every `deepLocator()` await; tests pass small values so cases don't burn wall-clock. */
|
|
13
|
+
export interface DeepLocatorTimeoutOptions {
|
|
14
|
+
/** Per-call watchdog timeout for `count()`/`textContent()`/`click()`. Defaults to {@link DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS}. */
|
|
15
|
+
callTimeoutMs?: number;
|
|
16
|
+
/** Total budget for {@link resolveDeepLocatorCandidates}'s enumeration loop. Defaults to {@link DEFAULT_DEEP_LOCATOR_ENUMERATION_BUDGET_MS}. */
|
|
17
|
+
enumerationBudgetMs?: number;
|
|
18
|
+
}
|
|
12
19
|
/**
|
|
13
20
|
* One candidate element `page.deepLocator()` resolved inside a scoped frame.
|
|
14
21
|
* `selector` carries the `deeplocator=`-prefixed hop notation (NOT `xpath=`)
|
|
@@ -35,10 +42,13 @@ export interface DeepLocatorCandidate {
|
|
|
35
42
|
* first, ties preserving original delegate/DOM order). Composes the hop
|
|
36
43
|
* scope via `buildHopSelector` (owned by `frame-target.ts`) rather than
|
|
37
44
|
* string-concatenating `>>` itself, so hop notation stays defined in exactly
|
|
38
|
-
* one place. Never throws: a missing `page.deepLocator
|
|
45
|
+
* one place. Never throws: a missing `page.deepLocator`, a
|
|
39
46
|
* `count()`/`nth()`/`textContent()` failure (detached frame, navigated-away
|
|
40
|
-
* element)
|
|
41
|
-
*
|
|
47
|
+
* element), or either call exceeding its watchdog budget (a wedged CDP
|
|
48
|
+
* round-trip against a racy OOPIF frame — see the deepLocator-direct-hangs
|
|
49
|
+
* bug report) degrades to `[]`/an empty `accessibleText` so a caller
|
|
50
|
+
* cascading through candidate sources can move on to the next technique
|
|
51
|
+
* instead of hanging the step forever.
|
|
42
52
|
*
|
|
43
53
|
* Ranking exists because a hop like `"*"` matches every element inside a
|
|
44
54
|
* wizard iframe (html, body, every div, ...) — DOM order alone almost always
|
|
@@ -46,8 +56,16 @@ export interface DeepLocatorCandidate {
|
|
|
46
56
|
* actually names. Pass `instruction` as `null`/`undefined` (or omit it) to
|
|
47
57
|
* skip ranking and get delegate order — e.g. for pre-cascade reachability
|
|
48
58
|
* probes that only care whether the frame has ANY candidates.
|
|
59
|
+
*
|
|
60
|
+
* `count()` and each per-candidate `textContent()` are individually bounded
|
|
61
|
+
* by `timeoutOptions.callTimeoutMs` via {@link withWatchdog}; the enumeration
|
|
62
|
+
* loop as a whole is additionally bounded by `timeoutOptions.enumerationBudgetMs`
|
|
63
|
+
* so a hop with dozens of slow-but-settling elements (e.g. 65 candidates
|
|
64
|
+
* matched against a live OOPIF) can't rack up an unbounded total cost even
|
|
65
|
+
* when no single call hangs — the loop aborts early and returns whatever
|
|
66
|
+
* candidates it already resolved.
|
|
49
67
|
*/
|
|
50
|
-
export declare function resolveDeepLocatorCandidates(page: Page, frameSelector: string | null | undefined, innerSelector: string, instruction?: string | null): Promise<DeepLocatorCandidate[]>;
|
|
68
|
+
export declare function resolveDeepLocatorCandidates(page: Page, frameSelector: string | null | undefined, innerSelector: string, instruction?: string | null, timeoutOptions?: DeepLocatorTimeoutOptions): Promise<DeepLocatorCandidate[]>;
|
|
51
69
|
/**
|
|
52
70
|
* Clicks the candidate at `index` inside the frame scoped by `frameSelector`,
|
|
53
71
|
* re-deriving the same hop selector `resolveDeepLocatorCandidates` used
|
|
@@ -57,6 +75,10 @@ export declare function resolveDeepLocatorCandidates(page: Page, frameSelector:
|
|
|
57
75
|
* success and rejects on failure — it never reports success via a return
|
|
58
76
|
* value — so callers must infer the outcome from whether this call throws
|
|
59
77
|
* plus their own downstream DOM verification, not from a returned boolean.
|
|
78
|
+
* A `click()` that exceeds `timeoutOptions.callTimeoutMs` (a wedged CDP
|
|
79
|
+
* round-trip against a racy OOPIF frame) rejects with a `WatchdogTimeoutError`
|
|
80
|
+
* the same as any other failure, preserving the "rejects on failure" contract
|
|
81
|
+
* instead of hanging the caller forever.
|
|
60
82
|
*/
|
|
61
|
-
export declare function clickDeepLocatorCandidate(page: Page, frameSelector: string | null | undefined, innerSelector: string, index: number): Promise<void>;
|
|
83
|
+
export declare function clickDeepLocatorCandidate(page: Page, frameSelector: string | null | undefined, innerSelector: string, index: number, timeoutOptions?: DeepLocatorTimeoutOptions): Promise<void>;
|
|
62
84
|
//# sourceMappingURL=deep-locator-candidates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-locator-candidates.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"deep-locator-candidates.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AA2BrD,sJAAsJ;AACtJ,MAAM,WAAW,yBAAyB;IACxC,mIAAmI;IACnI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gJAAgJ;IAChJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,kJAAkJ;IAClJ,KAAK,EAAE,MAAM,CAAC;IACd,gLAAgL;IAChL,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;CACxB;AA6ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,cAAc,GAAE,yBAA8B,GAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAoDjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,yBAA8B,GAC7C,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -15,7 +15,24 @@ exports.clickDeepLocatorCandidate = clickDeepLocatorCandidate;
|
|
|
15
15
|
const errors_1 = require("../lib/errors");
|
|
16
16
|
const logging_1 = require("../lib/logging");
|
|
17
17
|
const frame_target_1 = require("../scraper/frame-target");
|
|
18
|
+
const watchdog_1 = require("../scraper/watchdog");
|
|
18
19
|
const logger = (0, logging_1.getLogger)({ name: "scraper/deep-locator-candidates" });
|
|
20
|
+
/**
|
|
21
|
+
* Per-CDP-call watchdog default: bounds a single `count()`/`nth().textContent()`/
|
|
22
|
+
* `nth().click()` round-trip. Owned locally (not imported from
|
|
23
|
+
* `flow-runner.ts`'s `STEP_WATCHDOG_MS`) to avoid the import cycle —
|
|
24
|
+
* `flow-runner.ts` imports this module.
|
|
25
|
+
*/
|
|
26
|
+
const DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS = 10_000;
|
|
27
|
+
/**
|
|
28
|
+
* Total wall-clock budget for {@link resolveDeepLocatorCandidates}'s
|
|
29
|
+
* per-candidate `textContent()` enumeration loop. A hop like `"*"` can match
|
|
30
|
+
* dozens of elements (65 observed against a live OOPIF) — each individually
|
|
31
|
+
* fast but settling, not hanging — so a per-call timeout alone doesn't bound
|
|
32
|
+
* the loop's total cost. Roughly half of `flow-runner.ts`'s
|
|
33
|
+
* `STEP_WATCHDOG_MS` (120s), leaving headroom for the rest of the attempt.
|
|
34
|
+
*/
|
|
35
|
+
const DEFAULT_DEEP_LOCATOR_ENUMERATION_BUDGET_MS = 60_000;
|
|
19
36
|
/**
|
|
20
37
|
* Composes the display/telemetry selector for candidate `index` at
|
|
21
38
|
* `hopSelector`: a positional `nth` predicate over the hop scope, since
|
|
@@ -92,10 +109,13 @@ function scoreCandidate(accessibleText, phrases) {
|
|
|
92
109
|
* first, ties preserving original delegate/DOM order). Composes the hop
|
|
93
110
|
* scope via `buildHopSelector` (owned by `frame-target.ts`) rather than
|
|
94
111
|
* string-concatenating `>>` itself, so hop notation stays defined in exactly
|
|
95
|
-
* one place. Never throws: a missing `page.deepLocator
|
|
112
|
+
* one place. Never throws: a missing `page.deepLocator`, a
|
|
96
113
|
* `count()`/`nth()`/`textContent()` failure (detached frame, navigated-away
|
|
97
|
-
* element)
|
|
98
|
-
*
|
|
114
|
+
* element), or either call exceeding its watchdog budget (a wedged CDP
|
|
115
|
+
* round-trip against a racy OOPIF frame — see the deepLocator-direct-hangs
|
|
116
|
+
* bug report) degrades to `[]`/an empty `accessibleText` so a caller
|
|
117
|
+
* cascading through candidate sources can move on to the next technique
|
|
118
|
+
* instead of hanging the step forever.
|
|
99
119
|
*
|
|
100
120
|
* Ranking exists because a hop like `"*"` matches every element inside a
|
|
101
121
|
* wizard iframe (html, body, every div, ...) — DOM order alone almost always
|
|
@@ -103,26 +123,44 @@ function scoreCandidate(accessibleText, phrases) {
|
|
|
103
123
|
* actually names. Pass `instruction` as `null`/`undefined` (or omit it) to
|
|
104
124
|
* skip ranking and get delegate order — e.g. for pre-cascade reachability
|
|
105
125
|
* probes that only care whether the frame has ANY candidates.
|
|
126
|
+
*
|
|
127
|
+
* `count()` and each per-candidate `textContent()` are individually bounded
|
|
128
|
+
* by `timeoutOptions.callTimeoutMs` via {@link withWatchdog}; the enumeration
|
|
129
|
+
* loop as a whole is additionally bounded by `timeoutOptions.enumerationBudgetMs`
|
|
130
|
+
* so a hop with dozens of slow-but-settling elements (e.g. 65 candidates
|
|
131
|
+
* matched against a live OOPIF) can't rack up an unbounded total cost even
|
|
132
|
+
* when no single call hangs — the loop aborts early and returns whatever
|
|
133
|
+
* candidates it already resolved.
|
|
106
134
|
*/
|
|
107
|
-
async function resolveDeepLocatorCandidates(page, frameSelector, innerSelector, instruction) {
|
|
135
|
+
async function resolveDeepLocatorCandidates(page, frameSelector, innerSelector, instruction, timeoutOptions = {}) {
|
|
136
|
+
const callTimeoutMs = timeoutOptions.callTimeoutMs ?? DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS;
|
|
137
|
+
const enumerationBudgetMs = timeoutOptions.enumerationBudgetMs ?? DEFAULT_DEEP_LOCATOR_ENUMERATION_BUDGET_MS;
|
|
108
138
|
const hopSelector = (0, frame_target_1.buildHopSelector)(frameSelector, innerSelector);
|
|
109
139
|
const delegate = typeof page.deepLocator === "function" ? page.deepLocator(hopSelector) : null;
|
|
110
140
|
if (!delegate) {
|
|
111
141
|
logger.warn(`deepLocator() is unavailable on this page for ${hopSelector}`);
|
|
112
142
|
return [];
|
|
113
143
|
}
|
|
114
|
-
const count = await
|
|
144
|
+
const count = await (0, watchdog_1.withWatchdog)(() => delegate.count(), {
|
|
145
|
+
timeoutMs: callTimeoutMs,
|
|
146
|
+
label: `deepLocator count() for ${hopSelector}`,
|
|
147
|
+
}).catch((err) => {
|
|
115
148
|
logger.warn(`deepLocator count() threw for ${hopSelector}: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
116
149
|
return 0;
|
|
117
150
|
});
|
|
118
151
|
if (count === 0)
|
|
119
152
|
return [];
|
|
120
153
|
const candidates = [];
|
|
154
|
+
const enumerationDeadline = Date.now() + enumerationBudgetMs;
|
|
121
155
|
for (let index = 0; index < count; index++) {
|
|
122
|
-
|
|
123
|
-
.
|
|
124
|
-
|
|
125
|
-
|
|
156
|
+
if (Date.now() >= enumerationDeadline) {
|
|
157
|
+
logger.warn(`deepLocator enumeration for ${hopSelector} aborted after exceeding ${enumerationBudgetMs}ms budget at candidate ${index}/${count}`);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
const accessibleText = await (0, watchdog_1.withWatchdog)(() => delegate.nth(index).textContent(), {
|
|
161
|
+
timeoutMs: callTimeoutMs,
|
|
162
|
+
label: `deepLocator textContent() for ${hopSelector} nth=${index}`,
|
|
163
|
+
}).catch(() => "");
|
|
126
164
|
candidates.push({
|
|
127
165
|
index,
|
|
128
166
|
selector: candidateSelector(hopSelector, index),
|
|
@@ -152,9 +190,17 @@ async function resolveDeepLocatorCandidates(page, frameSelector, innerSelector,
|
|
|
152
190
|
* success and rejects on failure — it never reports success via a return
|
|
153
191
|
* value — so callers must infer the outcome from whether this call throws
|
|
154
192
|
* plus their own downstream DOM verification, not from a returned boolean.
|
|
193
|
+
* A `click()` that exceeds `timeoutOptions.callTimeoutMs` (a wedged CDP
|
|
194
|
+
* round-trip against a racy OOPIF frame) rejects with a `WatchdogTimeoutError`
|
|
195
|
+
* the same as any other failure, preserving the "rejects on failure" contract
|
|
196
|
+
* instead of hanging the caller forever.
|
|
155
197
|
*/
|
|
156
|
-
async function clickDeepLocatorCandidate(page, frameSelector, innerSelector, index) {
|
|
198
|
+
async function clickDeepLocatorCandidate(page, frameSelector, innerSelector, index, timeoutOptions = {}) {
|
|
199
|
+
const callTimeoutMs = timeoutOptions.callTimeoutMs ?? DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS;
|
|
157
200
|
const hopSelector = (0, frame_target_1.buildHopSelector)(frameSelector, innerSelector);
|
|
158
|
-
await page.deepLocator(hopSelector).nth(index).click()
|
|
201
|
+
await (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).click(), {
|
|
202
|
+
timeoutMs: callTimeoutMs,
|
|
203
|
+
label: `deepLocator click() for ${hopSelector} nth=${index}`,
|
|
204
|
+
});
|
|
159
205
|
}
|
|
160
206
|
//# sourceMappingURL=deep-locator-candidates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-locator-candidates.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAIH,yCAA8C;AAC9C,2CAA0C;AAC1C,yDAA0D;
|
|
1
|
+
{"version":3,"file":"deep-locator-candidates.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,34 @@ export declare function registerDeepLocatorHop(frame: FakeDeepLocatorFrame, sele
|
|
|
50
50
|
* {@link registerDeepLocatorHop} path can't model.
|
|
51
51
|
*/
|
|
52
52
|
export declare function registerDeepLocatorHopElements(frame: FakeDeepLocatorFrame, selector: string, texts: string[]): FakeDeepLocatorHop;
|
|
53
|
+
/**
|
|
54
|
+
* The `FakeDeepLocatorDelegate` methods `registerDeepLocatorHangingHop` can
|
|
55
|
+
* pin open, modeling a wedged OOPIF CDP call (the run-6 78-minute hang).
|
|
56
|
+
*/
|
|
57
|
+
export type HangingDeepLocatorMethod = "click" | "count" | "textContent";
|
|
58
|
+
export interface RegisterDeepLocatorHangingHopOptions {
|
|
59
|
+
/** Which method(s) resolve to a never-settling promise until `release()` is called. */
|
|
60
|
+
readonly hangOn: HangingDeepLocatorMethod | readonly HangingDeepLocatorMethod[];
|
|
61
|
+
/** Seeds `textContent()`'s eventual resolved value, same as {@link registerDeepLocatorHop}'s `text`. */
|
|
62
|
+
readonly text?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface FakeDeepLocatorHangingHop {
|
|
65
|
+
readonly hop: FakeDeepLocatorHop;
|
|
66
|
+
/**
|
|
67
|
+
* Settles every promise this hop's hung methods have returned (and any it
|
|
68
|
+
* returns afterward resolve immediately) — call in `afterEach` so a test
|
|
69
|
+
* that registered a hang doesn't leave an unsettled promise behind for
|
|
70
|
+
* the next test.
|
|
71
|
+
*/
|
|
72
|
+
release(): void;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Registers a hop selector whose `hangOn` methods resolve to a promise that
|
|
76
|
+
* never settles on its own, while every other modeled method resolves
|
|
77
|
+
* normally — the seam a watchdog/timeout-guard test needs to reproduce a
|
|
78
|
+
* wedged `deepLocator().count()`/`.click()` CDP call without a real browser.
|
|
79
|
+
*/
|
|
80
|
+
export declare function registerDeepLocatorHangingHop(frame: FakeDeepLocatorFrame, selector: string, options: RegisterDeepLocatorHangingHopOptions): FakeDeepLocatorHangingHop;
|
|
53
81
|
/**
|
|
54
82
|
* Only the methods `src/scraper/flow-runner.ts`'s deepLocator-routed call
|
|
55
83
|
* sites (`observe-act`, rephrase evidence, the pre-cascade probe) actually
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-locator-fake.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-fake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAmBD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAK,GACR,kBAAkB,CAEpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,kBAAkB,CAKpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,KAAK,IAAI,uBAAuB,CAAC;IACjC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,CAAC;CAC7C;
|
|
1
|
+
{"version":3,"file":"deep-locator-fake.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-fake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAErG;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAmBD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAK,GACR,kBAAkB,CAEpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,kBAAkB,CAKpB;AAED;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;AA6BzE,MAAM,WAAW,oCAAoC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,wBAAwB,EAAE,CAAC;IAChF,wGAAwG;IACxG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC;;;;;OAKG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oCAAoC,GAC5C,yBAAyB,CAM3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,KAAK,IAAI,uBAAuB,CAAC;IACjC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,CAAC;CAC7C;AAkDD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,oBAAoB,GAC1B,CAAC,QAAQ,EAAE,MAAM,KAAK,uBAAuB,CAE/C"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerDeepLocatorHop = registerDeepLocatorHop;
|
|
4
4
|
exports.registerDeepLocatorHopElements = registerDeepLocatorHopElements;
|
|
5
|
+
exports.registerDeepLocatorHangingHop = registerDeepLocatorHangingHop;
|
|
5
6
|
exports.makeFakeDeepLocator = makeFakeDeepLocator;
|
|
6
7
|
function buildHop(elements) {
|
|
7
8
|
const first = elements[0];
|
|
@@ -43,6 +44,34 @@ function registerDeepLocatorHopElements(frame, selector, texts) {
|
|
|
43
44
|
frame.set(selector, hop);
|
|
44
45
|
return hop;
|
|
45
46
|
}
|
|
47
|
+
function createDeferred() {
|
|
48
|
+
let resolve;
|
|
49
|
+
const promise = new Promise((res) => {
|
|
50
|
+
resolve = res;
|
|
51
|
+
});
|
|
52
|
+
return { promise, resolve };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Keyed by hop object (not selector) so hang behavior travels with
|
|
56
|
+
* `registerDeepLocatorHangingHop`'s return value without widening
|
|
57
|
+
* {@link FakeDeepLocatorHop}'s public shape — every existing consumer that
|
|
58
|
+
* reads `clicks`/`filledWith`/`text` off a hop keeps seeing exactly that
|
|
59
|
+
* shape, hung or not.
|
|
60
|
+
*/
|
|
61
|
+
const hangGates = new WeakMap();
|
|
62
|
+
/**
|
|
63
|
+
* Registers a hop selector whose `hangOn` methods resolve to a promise that
|
|
64
|
+
* never settles on its own, while every other modeled method resolves
|
|
65
|
+
* normally — the seam a watchdog/timeout-guard test needs to reproduce a
|
|
66
|
+
* wedged `deepLocator().count()`/`.click()` CDP call without a real browser.
|
|
67
|
+
*/
|
|
68
|
+
function registerDeepLocatorHangingHop(frame, selector, options) {
|
|
69
|
+
const hop = registerDeepLocatorHop(frame, selector, options.text);
|
|
70
|
+
const hangOn = new Set(Array.isArray(options.hangOn) ? options.hangOn : [options.hangOn]);
|
|
71
|
+
const deferred = createDeferred();
|
|
72
|
+
hangGates.set(hop, { hangOn, deferred });
|
|
73
|
+
return { hop, release: deferred.resolve };
|
|
74
|
+
}
|
|
46
75
|
/**
|
|
47
76
|
* Builds a `deepLocator()`-shaped delegate resolving against `frame`, scoped
|
|
48
77
|
* to a single `elementIndex` (defaulting to 0, matching the real delegate's
|
|
@@ -61,15 +90,28 @@ function buildFakeDelegate(frame, selector, elementIndex = 0) {
|
|
|
61
90
|
throw new Error(`deepLocator: no element matches "${selector}"`);
|
|
62
91
|
return element;
|
|
63
92
|
};
|
|
93
|
+
const awaitReleaseIfHungOn = async (method) => {
|
|
94
|
+
const hop = frame.get(selector);
|
|
95
|
+
const gate = hop ? hangGates.get(hop) : undefined;
|
|
96
|
+
if (gate?.hangOn.has(method))
|
|
97
|
+
await gate.deferred.promise;
|
|
98
|
+
};
|
|
64
99
|
return {
|
|
65
|
-
count: async () =>
|
|
100
|
+
count: async () => {
|
|
101
|
+
await awaitReleaseIfHungOn("count");
|
|
102
|
+
return frame.get(selector)?.elements.length ?? 0;
|
|
103
|
+
},
|
|
66
104
|
click: async () => {
|
|
105
|
+
await awaitReleaseIfHungOn("click");
|
|
67
106
|
requireElement().clicks += 1;
|
|
68
107
|
},
|
|
69
108
|
fill: async (value) => {
|
|
70
109
|
requireElement().filledWith = value;
|
|
71
110
|
},
|
|
72
|
-
textContent: async () =>
|
|
111
|
+
textContent: async () => {
|
|
112
|
+
await awaitReleaseIfHungOn("textContent");
|
|
113
|
+
return requireElement().text;
|
|
114
|
+
},
|
|
73
115
|
first: () => buildFakeDelegate(frame, selector, 0),
|
|
74
116
|
nth: (index) => buildFakeDelegate(frame, selector, index),
|
|
75
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-locator-fake.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-fake.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deep-locator-fake.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-fake.ts"],"names":[],"mappings":"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"}
|