A big commit with a bunch of node modules so I could run puppeteer for Walmart. Added some todos and Headway's templates.

This commit is contained in:
Norm Rasmussen
2024-02-28 17:13:10 -05:00
parent dbcdfc8472
commit 1184fe0cd1
1107 changed files with 76526 additions and 8934 deletions

View File

@ -121,6 +121,13 @@ export interface BrowserEvents extends Record<EventType, unknown> {
*/
[BrowserEvent.TargetDiscovered]: Protocol.Target.TargetInfo;
}
/**
* @public
* @experimental
*/
export interface DebugInfo {
pendingProtocolErrors: Error[];
}
/**
* {@link Browser} represents a browser instance that is either:
*
@ -300,7 +307,7 @@ export declare abstract class Browser extends EventEmitter<BrowserEvents> {
/**
* Whether Puppeteer is connected to this {@link Browser | browser}.
*
* @deprecated Use {@link Browser.connected}.
* @deprecated Use {@link Browser | Browser.connected}.
*/
isConnected(): boolean;
/**
@ -315,5 +322,16 @@ export declare abstract class Browser extends EventEmitter<BrowserEvents> {
* @internal
*/
abstract get protocol(): ProtocolType;
/**
* Get debug information from Puppeteer.
*
* @remarks
*
* Currently, includes pending protocol calls. In the future, we might add more info.
*
* @public
* @experimental
*/
abstract get debugInfo(): DebugInfo;
}
//# sourceMappingURL=Browser.d.ts.map

View File

@ -1 +1 @@
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/api/Browser.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/api/Browser.ts"],"names":[],"mappings":"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"}

View File

@ -9,7 +9,6 @@ exports.Browser = exports.WEB_PERMISSION_TO_PROTOCOL_PERMISSION = void 0;
const rxjs_js_1 = require("../../third_party/rxjs/rxjs.js");
const EventEmitter_js_1 = require("../common/EventEmitter.js");
const util_js_1 = require("../common/util.js");
const util_js_2 = require("../common/util.js");
const disposable_js_1 = require("../util/disposable.js");
/**
* @internal
@ -100,7 +99,7 @@ class Browser extends EventEmitter_js_1.EventEmitter {
*/
async waitForTarget(predicate, options = {}) {
const { timeout: ms = 30000 } = options;
return await (0, rxjs_js_1.firstValueFrom)((0, rxjs_js_1.merge)((0, rxjs_js_1.fromEvent)(this, "targetcreated" /* BrowserEvent.TargetCreated */), (0, rxjs_js_1.fromEvent)(this, "targetchanged" /* BrowserEvent.TargetChanged */), (0, rxjs_js_1.from)(this.targets())).pipe((0, rxjs_js_1.filterAsync)(predicate), (0, rxjs_js_1.raceWith)((0, util_js_2.timeout)(ms))));
return await (0, rxjs_js_1.firstValueFrom)((0, rxjs_js_1.merge)((0, util_js_1.fromEmitterEvent)(this, "targetcreated" /* BrowserEvent.TargetCreated */), (0, util_js_1.fromEmitterEvent)(this, "targetchanged" /* BrowserEvent.TargetChanged */), (0, rxjs_js_1.from)(this.targets())).pipe((0, rxjs_js_1.filterAsync)(predicate), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms))));
}
/**
* Gets a list of all open {@link Page | pages} inside this {@link Browser}.
@ -124,7 +123,7 @@ class Browser extends EventEmitter_js_1.EventEmitter {
/**
* Whether Puppeteer is connected to this {@link Browser | browser}.
*
* @deprecated Use {@link Browser.connected}.
* @deprecated Use {@link Browser | Browser.connected}.
*/
isConnected() {
return this.connected;

View File

@ -1 +1 @@
{"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../../src/api/Browser.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAMH,4DAQwC;AAExC,+DAAuE;AACvE,+CAA6C;AAC7C,+CAA0C;AAC1C,yDAAwE;AAmCxE;;GAEG;AACU,QAAA,qCAAqC,GAAG,IAAI,GAAG,CAG1D;IACA,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,iCAAiC;IACjC,oBAAoB;IACpB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACnC,CAAC,eAAe,EAAE,SAAS,CAAC;IAC5B,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3B,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;IAC/C,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IACxC,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IACzC,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;IACxD,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IACxC,CAAC,gBAAgB,EAAE,eAAe,CAAC;IACnC,uCAAuC;IACvC,CAAC,YAAY,EAAE,WAAW,CAAC;CAC5B,CAAC,CAAC;AAyGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAsB,OAAQ,SAAQ,8BAA2B;IAC/D;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAuFD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,aAAa,CACjB,SAAoD,EACpD,UAAgC,EAAE;QAElC,MAAM,EAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QACtC,OAAO,MAAM,IAAA,wBAAc,EACzB,IAAA,eAAK,EACH,IAAA,mBAAS,EAAC,IAAI,mDAAmD,EACjE,IAAA,mBAAS,EAAC,IAAI,mDAAmD,EACjE,IAAA,cAAI,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CACrB,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,SAAS,CAAC,EAAE,IAAA,kBAAQ,EAAC,IAAA,iBAAO,EAAC,EAAE,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACnC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,CAAC,CACH,CAAC;QACF,iBAAiB;QACjB,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAoCD;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAOD,gBAAgB;IAChB,CAAC,6BAAa,CAAC;QACb,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,oBAAU,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IAChB,CAAC,kCAAkB,CAAC;QAClB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CAMF;AA9MD,0BA8MC"}
{"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../../src/api/Browser.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAMH,4DAMwC;AAExC,+DAAuE;AACvE,+CAAwE;AACxE,yDAAwE;AAmCxE;;GAEG;AACU,QAAA,qCAAqC,GAAG,IAAI,GAAG,CAG1D;IACA,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,eAAe,EAAE,eAAe,CAAC;IAClC,iCAAiC;IACjC,oBAAoB;IACpB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACnC,CAAC,eAAe,EAAE,SAAS,CAAC;IAC5B,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3B,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;IAC/C,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IACxC,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;IACzC,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;IACxD,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IACxC,CAAC,gBAAgB,EAAE,eAAe,CAAC;IACnC,uCAAuC;IACvC,CAAC,YAAY,EAAE,WAAW,CAAC;CAC5B,CAAC,CAAC;AAiHH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAsB,OAAQ,SAAQ,8BAA2B;IAC/D;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAuFD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,aAAa,CACjB,SAAoD,EACpD,UAAgC,EAAE;QAElC,MAAM,EAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;QACtC,OAAO,MAAM,IAAA,wBAAc,EACzB,IAAA,eAAK,EACH,IAAA,0BAAgB,EAAC,IAAI,mDAA6B,EAClD,IAAA,0BAAgB,EAAC,IAAI,mDAA6B,EAClD,IAAA,cAAI,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CACrB,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,SAAS,CAAC,EAAE,IAAA,kBAAQ,EAAC,IAAA,iBAAO,EAAC,EAAE,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACnC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,CAAC,CACH,CAAC;QACF,iBAAiB;QACjB,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAoCD;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAOD,gBAAgB;IAChB,CAAC,6BAAa,CAAC;QACb,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,oBAAU,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IAChB,CAAC,kCAAkB,CAAC;QAClB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CAkBF;AA1ND,0BA0NC"}

View File

@ -50,7 +50,7 @@ export declare abstract class Dialog {
/**
* @internal
*/
protected abstract sendCommand(options: {
protected abstract handle(options: {
accept: boolean;
text?: string;
}): Promise<void>;

View File

@ -1 +1 @@
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/api/Dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,MAAM;;IAM1B;;OAEG;gBAED,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAC9B,OAAO,EAAE,MAAM,EACf,YAAY,SAAK;IAOnB;;OAEG;IACH,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU;IAIhC;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;QACtC,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjB;;;;;;OAMG;IACG,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/api/Dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,MAAM;;IAM1B;;OAEG;gBAED,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAC9B,OAAO,EAAE,MAAM,EACf,YAAY,SAAK;IAOnB;;OAEG;IACH,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU;IAIhC;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;QACjC,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjB;;;;;;OAMG;IACG,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}

View File

@ -73,7 +73,7 @@ class Dialog {
async accept(promptText) {
(0, assert_js_1.assert)(!this.#handled, 'Cannot accept dialog which is already handled!');
this.#handled = true;
await this.sendCommand({
await this.handle({
accept: true,
text: promptText,
});
@ -84,7 +84,7 @@ class Dialog {
async dismiss() {
(0, assert_js_1.assert)(!this.#handled, 'Cannot dismiss dialog which is already handled!');
this.#handled = true;
await this.sendCommand({
await this.handle({
accept: false,
});
}

View File

@ -1 +1 @@
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/api/Dialog.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,iDAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAsB,MAAM;IAC1B,KAAK,CAA2B;IAChC,QAAQ,CAAS;IACjB,aAAa,CAAS;IACtB,QAAQ,GAAG,KAAK,CAAC;IAEjB;;OAEG;IACH,YACE,IAA8B,EAC9B,OAAe,EACf,YAAY,GAAG,EAAE;QAEjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAUD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,UAAmB;QAC9B,IAAA,kBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAA,kBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,iDAAiD,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;CACF;AA3ED,wBA2EC"}
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/api/Dialog.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,iDAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAsB,MAAM;IAC1B,KAAK,CAA2B;IAChC,QAAQ,CAAS;IACjB,aAAa,CAAS;IACtB,QAAQ,GAAG,KAAK,CAAC;IAEjB;;OAEG;IACH,YACE,IAA8B,EAC9B,OAAe,EACf,YAAY,GAAG,EAAE;QAEjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAUD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,UAAmB;QAC9B,IAAA,kBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAA,kBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,iDAAiD,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;CACF;AA3ED,wBA2EC"}

File diff suppressed because one or more lines are too long

View File

@ -91,6 +91,7 @@ const util_js_1 = require("../common/util.js");
const assert_js_1 = require("../util/assert.js");
const AsyncIterableUtil_js_1 = require("../util/AsyncIterableUtil.js");
const decorators_js_1 = require("../util/decorators.js");
const disposable_js_1 = require("../util/disposable.js");
const ElementHandleSymbol_js_1 = require("./ElementHandleSymbol.js");
const JSHandle_js_1 = require("./JSHandle.js");
/**
@ -1180,26 +1181,62 @@ let ElementHandle = (() => {
return point;
}
async screenshot(options = {}) {
const { scrollIntoView = true } = options;
let clip = await this.#nonEmptyVisibleBoundingBox();
const page = this.frame.page();
if (scrollIntoView) {
await this.scrollIntoViewIfNeeded();
// We measure again just in case.
clip = await this.#nonEmptyVisibleBoundingBox();
}
const [pageLeft, pageTop] = await this.evaluate(() => {
if (!window.visualViewport) {
throw new Error('window.visualViewport is not supported.');
const env_6 = { stack: [], error: void 0, hasError: false };
try {
const { scrollIntoView = true } = options;
let clip = await this.#nonEmptyVisibleBoundingBox();
const page = this.frame.page();
// If the element is larger than the viewport, `captureBeyondViewport` will
// _not_ affect element rendering, so we need to adjust the viewport to
// properly render the element.
const viewport = page.viewport() ?? {
width: clip.width,
height: clip.height,
};
const stack = __addDisposableResource(env_6, new disposable_js_1.AsyncDisposableStack(), true);
if (clip.width > viewport.width || clip.height > viewport.height) {
await this.frame.page().setViewport({
...viewport,
width: Math.max(viewport.width, Math.ceil(clip.width)),
height: Math.max(viewport.height, Math.ceil(clip.height)),
});
stack.defer(async () => {
try {
await this.frame.page().setViewport(viewport);
}
catch (error) {
(0, util_js_1.debugError)(error);
}
});
}
return [
window.visualViewport.pageLeft,
window.visualViewport.pageTop,
];
});
clip.x += pageLeft;
clip.y += pageTop;
return await page.screenshot({ ...options, clip });
// Only scroll the element into view if the user wants it.
if (scrollIntoView) {
await this.scrollIntoViewIfNeeded();
// We measure again just in case.
clip = await this.#nonEmptyVisibleBoundingBox();
}
const [pageLeft, pageTop] = await this.evaluate(() => {
if (!window.visualViewport) {
throw new Error('window.visualViewport is not supported.');
}
return [
window.visualViewport.pageLeft,
window.visualViewport.pageTop,
];
});
clip.x += pageLeft;
clip.y += pageTop;
return await page.screenshot({ ...options, clip });
}
catch (e_6) {
env_6.error = e_6;
env_6.hasError = true;
}
finally {
const result_1 = __disposeResources(env_6);
if (result_1)
await result_1;
}
}
async #nonEmptyVisibleBoundingBox() {
const box = await this.boundingBox();
@ -1245,12 +1282,12 @@ let ElementHandle = (() => {
* (full intersection). Defaults to 1.
*/
async isIntersectingViewport(options = {}) {
const env_6 = { stack: [], error: void 0, hasError: false };
const env_7 = { stack: [], error: void 0, hasError: false };
try {
await this.assertConnectedElement();
// eslint-disable-next-line rulesdir/use-using -- Returns `this`.
const handle = await this.#asSVGElementHandle();
const target = __addDisposableResource(env_6, handle && (await handle.#getOwnerSVGElement()), false);
const target = __addDisposableResource(env_7, handle && (await handle.#getOwnerSVGElement()), false);
return await (target ?? this).evaluate(async (element, threshold) => {
const visibleRatio = await new Promise(resolve => {
const observer = new IntersectionObserver(entries => {
@ -1262,12 +1299,12 @@ let ElementHandle = (() => {
return threshold === 1 ? visibleRatio === 1 : visibleRatio > threshold;
}, options.threshold ?? 0);
}
catch (e_6) {
env_6.error = e_6;
env_6.hasError = true;
catch (e_7) {
env_7.error = e_7;
env_7.hasError = true;
}
finally {
__disposeResources(env_6);
__disposeResources(env_7);
}
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -561,7 +561,20 @@ let Frame = (() => {
* The full HTML contents of the frame, including the DOCTYPE.
*/
async content() {
return await this.evaluate(util_js_1.getPageContent);
return await this.evaluate(() => {
let content = '';
for (const node of document.childNodes) {
switch (node) {
case document.documentElement:
content += document.documentElement.outerHTML;
break;
default:
content += new XMLSerializer().serializeToString(node);
break;
}
}
return content;
});
}
/**
* @internal

File diff suppressed because one or more lines are too long

View File

@ -10,19 +10,18 @@ import type { Protocol } from 'devtools-protocol';
import { type Observable } from '../../third_party/rxjs/rxjs.js';
import type { HTTPRequest } from '../api/HTTPRequest.js';
import type { HTTPResponse } from '../api/HTTPResponse.js';
import type { BidiNetworkManager } from '../bidi/NetworkManager.js';
import type { Accessibility } from '../cdp/Accessibility.js';
import type { Coverage } from '../cdp/Coverage.js';
import type { DeviceRequestPrompt } from '../cdp/DeviceRequestPrompt.js';
import type { NetworkManager as CdpNetworkManager, Credentials, NetworkConditions } from '../cdp/NetworkManager.js';
import type { Credentials, NetworkConditions } from '../cdp/NetworkManager.js';
import type { Tracing } from '../cdp/Tracing.js';
import type { ConsoleMessage } from '../common/ConsoleMessage.js';
import type { Device } from '../common/Device.js';
import { EventEmitter, type EventsWithWildcard, type EventType } from '../common/EventEmitter.js';
import type { FileChooser } from '../common/FileChooser.js';
import { type ParsedPDFOptions, type PDFOptions } from '../common/PDFOptions.js';
import type { PDFOptions } from '../common/PDFOptions.js';
import { TimeoutSettings } from '../common/TimeoutSettings.js';
import type { Awaitable, EvaluateFunc, EvaluateFuncWith, HandleFor, NodeFor } from '../common/types.js';
import type { Awaitable, AwaitablePredicate, EvaluateFunc, EvaluateFuncWith, HandleFor, NodeFor } from '../common/types.js';
import type { Viewport } from '../common/Viewport.js';
import type { ScreenRecorder } from '../node/ScreenRecorder.js';
import { asyncDisposeSymbol, disposeSymbol } from '../util/disposable.js';
@ -55,6 +54,23 @@ export interface Metrics {
JSHeapUsedSize?: number;
JSHeapTotalSize?: number;
}
/**
* @public
*/
export interface WaitForNetworkIdleOptions extends WaitTimeoutOptions {
/**
* Time (in milliseconds) the network should be idle.
*
* @defaultValue `500`
*/
idleTime?: number;
/**
* Maximum number concurrent of network connections to be considered inactive.
*
* @defaultValue `0`
*/
concurrency?: number;
}
/**
* @public
*/
@ -506,7 +522,7 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
*
* @deprecated We no longer support intercepting drag payloads. Use the new
* drag APIs found on {@link ElementHandle} to drag (or just use the
* {@link Page.mouse}).
* {@link Page | Page.mouse}).
*/
abstract isDragInterceptionEnabled(): boolean;
/**
@ -675,7 +691,7 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
*
* @deprecated We no longer support intercepting drag payloads. Use the new
* drag APIs found on {@link ElementHandle} to drag (or just use the
* {@link Page.mouse}).
* {@link Page | Page.mouse}).
*/
abstract setDragInterception(enabled: boolean): Promise<void>;
/**
@ -1331,9 +1347,7 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
* `0` to disable the timeout. The default value can be changed by using the
* {@link Page.setDefaultTimeout} method.
*/
abstract waitForRequest(urlOrPredicate: string | ((req: HTTPRequest) => boolean | Promise<boolean>), options?: {
timeout?: number;
}): Promise<HTTPRequest>;
waitForRequest(urlOrPredicate: string | AwaitablePredicate<HTTPRequest>, options?: WaitTimeoutOptions): Promise<HTTPRequest>;
/**
* @param urlOrPredicate - A URL or predicate to wait for.
* @param options - Optional waiting parameters
@ -1361,21 +1375,18 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
* pass `0` to disable the timeout. The default value can be changed by using
* the {@link Page.setDefaultTimeout} method.
*/
abstract waitForResponse(urlOrPredicate: string | ((res: HTTPResponse) => boolean | Promise<boolean>), options?: {
timeout?: number;
}): Promise<HTTPResponse>;
waitForResponse(urlOrPredicate: string | AwaitablePredicate<HTTPResponse>, options?: WaitTimeoutOptions): Promise<HTTPResponse>;
/**
* @param options - Optional waiting parameters
* @returns Promise which resolves when network is idle
* Waits for the network to be idle.
*
* @param options - Options to configure waiting behavior.
* @returns A promise which resolves once the network is idle.
*/
abstract waitForNetworkIdle(options?: {
idleTime?: number;
timeout?: number;
}): Promise<void>;
waitForNetworkIdle(options?: WaitForNetworkIdleOptions): Promise<void>;
/**
* @internal
*/
_waitForNetworkIdle(networkManager: BidiNetworkManager | CdpNetworkManager, idleTime: number, requestsInFlight?: number): Observable<void>;
waitForNetworkIdle$(options?: WaitForNetworkIdleOptions): Observable<void>;
/**
* Waits for a frame matching the given conditions to appear.
*
@ -1675,7 +1686,7 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
*
* This is either the viewport set with the previous {@link Page.setViewport}
* call or the default viewport set via
* {@link BrowserConnectOptions.defaultViewport}.
* {@link BrowserConnectOptions | BrowserConnectOptions.defaultViewport}.
*/
abstract viewport(): Viewport | null;
/**
@ -1838,10 +1849,6 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
* @internal
*/
abstract _screenshot(options: Readonly<ScreenshotOptions>): Promise<string>;
/**
* @internal
*/
_getPDFOptions(options?: PDFOptions, lengthUnit?: 'in' | 'cm'): ParsedPDFOptions;
/**
* Generates a PDF of the page with the `print` CSS media type.
*
@ -2229,13 +2236,4 @@ export declare abstract class Page extends EventEmitter<PageEvents> {
* @internal
*/
export declare const supportedMetrics: Set<string>;
/**
* @internal
*/
export declare const unitToPixels: {
px: number;
in: number;
cm: number;
mm: number;
};
//# sourceMappingURL=Page.d.ts.map

File diff suppressed because one or more lines are too long

View File

@ -107,15 +107,12 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
});
Object.defineProperty(exports, "__esModule", { value: true });
exports.unitToPixels = exports.supportedMetrics = exports.Page = exports.setDefaultScreenshotOptions = void 0;
exports.supportedMetrics = exports.Page = exports.setDefaultScreenshotOptions = void 0;
const rxjs_js_1 = require("../../third_party/rxjs/rxjs.js");
const Errors_js_1 = require("../common/Errors.js");
const EventEmitter_js_1 = require("../common/EventEmitter.js");
const NetworkManagerEvents_js_1 = require("../common/NetworkManagerEvents.js");
const PDFOptions_js_1 = require("../common/PDFOptions.js");
const TimeoutSettings_js_1 = require("../common/TimeoutSettings.js");
const util_js_1 = require("../common/util.js");
const assert_js_1 = require("../util/assert.js");
const decorators_js_1 = require("../util/decorators.js");
const disposable_js_1 = require("../util/disposable.js");
const locators_js_1 = require("./locators/locators.js");
@ -200,11 +197,25 @@ let Page = (() => {
*/
_timeoutSettings = new TimeoutSettings_js_1.TimeoutSettings();
#requestHandlers = new WeakMap();
#inflight$ = new rxjs_js_1.ReplaySubject(1);
/**
* @internal
*/
constructor() {
super();
(0, util_js_1.fromEmitterEvent)(this, "request" /* PageEvent.Request */)
.pipe((0, rxjs_js_1.mergeMap)(originalRequest => {
return (0, rxjs_js_1.concat)((0, rxjs_js_1.of)(1), (0, rxjs_js_1.merge)((0, util_js_1.fromEmitterEvent)(this, "requestfailed" /* PageEvent.RequestFailed */), (0, util_js_1.fromEmitterEvent)(this, "requestfinished" /* PageEvent.RequestFinished */), (0, util_js_1.fromEmitterEvent)(this, "response" /* PageEvent.Response */).pipe((0, rxjs_js_1.map)(response => {
return response.request();
}))).pipe((0, rxjs_js_1.filter)(request => {
return request._requestId === originalRequest._requestId;
}), (0, rxjs_js_1.take)(1), (0, rxjs_js_1.map)(() => {
return -1;
})));
}), (0, rxjs_js_1.mergeScan)((acc, addend) => {
return (0, rxjs_js_1.of)(acc + addend);
}, 0), (0, rxjs_js_1.takeUntil)((0, util_js_1.fromEmitterEvent)(this, "close" /* PageEvent.Close */)), (0, rxjs_js_1.startWith)(0))
.subscribe(this.#inflight$);
}
/**
* Listen to page events.
@ -622,15 +633,104 @@ let Page = (() => {
async waitForNavigation(options = {}) {
return await this.mainFrame().waitForNavigation(options);
}
/**
* @param urlOrPredicate - A URL or predicate to wait for
* @param options - Optional waiting parameters
* @returns Promise which resolves to the matched request
* @example
*
* ```ts
* const firstRequest = await page.waitForRequest(
* 'https://example.com/resource'
* );
* const finalRequest = await page.waitForRequest(
* request => request.url() === 'https://example.com'
* );
* return finalRequest.response()?.ok();
* ```
*
* @remarks
* Optional Waiting Parameters have:
*
* - `timeout`: Maximum wait time in milliseconds, defaults to `30` seconds, pass
* `0` to disable the timeout. The default value can be changed by using the
* {@link Page.setDefaultTimeout} method.
*/
waitForRequest(urlOrPredicate, options = {}) {
const { timeout: ms = this._timeoutSettings.timeout() } = options;
if (typeof urlOrPredicate === 'string') {
const url = urlOrPredicate;
urlOrPredicate = (request) => {
return request.url() === url;
};
}
const observable$ = (0, util_js_1.fromEmitterEvent)(this, "request" /* PageEvent.Request */).pipe((0, rxjs_js_1.filterAsync)(urlOrPredicate), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, util_js_1.fromEmitterEvent)(this, "close" /* PageEvent.Close */).pipe((0, rxjs_js_1.map)(() => {
throw new Errors_js_1.TargetCloseError('Page closed!');
}))));
return (0, rxjs_js_1.firstValueFrom)(observable$);
}
/**
* @param urlOrPredicate - A URL or predicate to wait for.
* @param options - Optional waiting parameters
* @returns Promise which resolves to the matched response.
* @example
*
* ```ts
* const firstResponse = await page.waitForResponse(
* 'https://example.com/resource'
* );
* const finalResponse = await page.waitForResponse(
* response =>
* response.url() === 'https://example.com' && response.status() === 200
* );
* const finalResponse = await page.waitForResponse(async response => {
* return (await response.text()).includes('<html>');
* });
* return finalResponse.ok();
* ```
*
* @remarks
* Optional Parameter have:
*
* - `timeout`: Maximum wait time in milliseconds, defaults to `30` seconds,
* pass `0` to disable the timeout. The default value can be changed by using
* the {@link Page.setDefaultTimeout} method.
*/
waitForResponse(urlOrPredicate, options = {}) {
const { timeout: ms = this._timeoutSettings.timeout() } = options;
if (typeof urlOrPredicate === 'string') {
const url = urlOrPredicate;
urlOrPredicate = (response) => {
return response.url() === url;
};
}
const observable$ = (0, util_js_1.fromEmitterEvent)(this, "response" /* PageEvent.Response */).pipe((0, rxjs_js_1.filterAsync)(urlOrPredicate), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, util_js_1.fromEmitterEvent)(this, "close" /* PageEvent.Close */).pipe((0, rxjs_js_1.map)(() => {
throw new Errors_js_1.TargetCloseError('Page closed!');
}))));
return (0, rxjs_js_1.firstValueFrom)(observable$);
}
/**
* Waits for the network to be idle.
*
* @param options - Options to configure waiting behavior.
* @returns A promise which resolves once the network is idle.
*/
waitForNetworkIdle(options = {}) {
return (0, rxjs_js_1.firstValueFrom)(this.waitForNetworkIdle$(options));
}
/**
* @internal
*/
_waitForNetworkIdle(networkManager, idleTime, requestsInFlight = 0) {
return (0, rxjs_js_1.merge)((0, rxjs_js_1.fromEvent)(networkManager, NetworkManagerEvents_js_1.NetworkManagerEvent.Request), (0, rxjs_js_1.fromEvent)(networkManager, NetworkManagerEvents_js_1.NetworkManagerEvent.Response), (0, rxjs_js_1.fromEvent)(networkManager, NetworkManagerEvents_js_1.NetworkManagerEvent.RequestFailed)).pipe((0, rxjs_js_1.startWith)(undefined), (0, rxjs_js_1.filter)(() => {
return networkManager.inFlightRequestsCount() <= requestsInFlight;
}), (0, rxjs_js_1.switchMap)(v => {
return (0, rxjs_js_1.of)(v).pipe((0, rxjs_js_1.delay)(idleTime));
}));
waitForNetworkIdle$(options = {}) {
const { timeout: ms = this._timeoutSettings.timeout(), idleTime = util_js_1.NETWORK_IDLE_TIME, concurrency = 0, } = options;
return this.#inflight$.pipe((0, rxjs_js_1.switchMap)(inflight => {
if (inflight > concurrency) {
return rxjs_js_1.EMPTY;
}
return (0, rxjs_js_1.timer)(idleTime);
}), (0, rxjs_js_1.map)(() => { }), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, util_js_1.fromEmitterEvent)(this, "close" /* PageEvent.Close */).pipe((0, rxjs_js_1.map)(() => {
throw new Errors_js_1.TargetCloseError('Page closed!');
}))));
}
/**
* Waits for a frame matching the given conditions to appear.
@ -650,7 +750,7 @@ let Page = (() => {
return urlOrPredicate === frame.url();
};
}
return await (0, rxjs_js_1.firstValueFrom)((0, rxjs_js_1.merge)((0, rxjs_js_1.fromEvent)(this, "frameattached" /* PageEvent.FrameAttached */), (0, rxjs_js_1.fromEvent)(this, "framenavigated" /* PageEvent.FrameNavigated */), (0, rxjs_js_1.from)(this.frames())).pipe((0, rxjs_js_1.filterAsync)(urlOrPredicate), (0, rxjs_js_1.first)(), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.fromEvent)(this, "close" /* PageEvent.Close */).pipe((0, rxjs_js_1.map)(() => {
return await (0, rxjs_js_1.firstValueFrom)((0, rxjs_js_1.merge)((0, util_js_1.fromEmitterEvent)(this, "frameattached" /* PageEvent.FrameAttached */), (0, util_js_1.fromEmitterEvent)(this, "framenavigated" /* PageEvent.FrameNavigated */), (0, rxjs_js_1.from)(this.frames())).pipe((0, rxjs_js_1.filterAsync)(urlOrPredicate), (0, rxjs_js_1.first)(), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, util_js_1.fromEmitterEvent)(this, "close" /* PageEvent.Close */).pipe((0, rxjs_js_1.map)(() => {
throw new Errors_js_1.TargetCloseError('Page closed.');
})))));
}
@ -1022,50 +1122,6 @@ let Page = (() => {
await result_1;
}
}
/**
* @internal
*/
_getPDFOptions(options = {}, lengthUnit = 'in') {
const defaults = {
scale: 1,
displayHeaderFooter: false,
headerTemplate: '',
footerTemplate: '',
printBackground: false,
landscape: false,
pageRanges: '',
preferCSSPageSize: false,
omitBackground: false,
timeout: 30000,
tagged: false,
};
let width = 8.5;
let height = 11;
if (options.format) {
const format = PDFOptions_js_1.paperFormats[options.format.toLowerCase()];
(0, assert_js_1.assert)(format, 'Unknown paper format: ' + options.format);
width = format.width;
height = format.height;
}
else {
width = convertPrintParameterToInches(options.width, lengthUnit) ?? width;
height =
convertPrintParameterToInches(options.height, lengthUnit) ?? height;
}
const margin = {
top: convertPrintParameterToInches(options.margin?.top, lengthUnit) || 0,
left: convertPrintParameterToInches(options.margin?.left, lengthUnit) || 0,
bottom: convertPrintParameterToInches(options.margin?.bottom, lengthUnit) || 0,
right: convertPrintParameterToInches(options.margin?.right, lengthUnit) || 0,
};
return {
...defaults,
...options,
width,
height,
margin,
};
}
/**
* The page's title
*
@ -1440,46 +1496,6 @@ exports.supportedMetrics = new Set([
'JSHeapUsedSize',
'JSHeapTotalSize',
]);
/**
* @internal
*/
exports.unitToPixels = {
px: 1,
in: 96,
cm: 37.8,
mm: 3.78,
};
function convertPrintParameterToInches(parameter, lengthUnit = 'in') {
if (typeof parameter === 'undefined') {
return undefined;
}
let pixels;
if ((0, util_js_1.isNumber)(parameter)) {
// Treat numbers as pixel values to be aligned with phantom's paperSize.
pixels = parameter;
}
else if ((0, util_js_1.isString)(parameter)) {
const text = parameter;
let unit = text.substring(text.length - 2).toLowerCase();
let valueText = '';
if (unit in exports.unitToPixels) {
valueText = text.substring(0, text.length - 2);
}
else {
// In case of unknown unit try to parse the whole parameter as number of pixels.
// This is consistent with phantom's paperSize behavior.
unit = 'px';
valueText = text;
}
const value = Number(valueText);
(0, assert_js_1.assert)(!isNaN(value), 'Failed to parse parameter value: ' + text);
pixels = value * exports.unitToPixels[unit];
}
else {
throw new Error('page.pdf() Cannot handle parameter type: ' + typeof parameter);
}
return pixels / exports.unitToPixels[lengthUnit];
}
/** @see https://w3c.github.io/webdriver-bidi/#normalize-rect */
function normalizeRectangle(clip) {
return {

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"BidiOverCdp.js","sourceRoot":"","sources":["../../../../src/bidi/BidiOverCdp.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"BidiOverCdp.js","sourceRoot":"","sources":["../../../../src/bidi/BidiOverCdp.ts"],"names":[],"mappings":"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"}

View File

@ -6,7 +6,7 @@
/// <reference types="node" />
import type { ChildProcess } from 'child_process';
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { Browser, type BrowserCloseCallback, type BrowserContextOptions } from '../api/Browser.js';
import { Browser, type BrowserCloseCallback, type BrowserContextOptions, type DebugInfo } from '../api/Browser.js';
import type { Page } from '../api/Page.js';
import type { Target } from '../api/Target.js';
import type { Viewport } from '../common/Viewport.js';
@ -32,10 +32,7 @@ export declare class BidiBrowser extends Browser {
static readonly subscribeModules: string[];
static readonly subscribeCdpEvents: Bidi.Cdp.EventNames[];
static create(opts: BidiBrowserOptions): Promise<BidiBrowser>;
constructor(opts: BidiBrowserOptions & {
browserName: string;
browserVersion: string;
});
private constructor();
userAgent(): never;
get connection(): BidiConnection;
wsEndpoint(): string;
@ -45,12 +42,12 @@ export declare class BidiBrowser extends Browser {
createIncognitoBrowserContext(_options?: BrowserContextOptions): Promise<BidiBrowserContext>;
version(): Promise<string>;
browserContexts(): BidiBrowserContext[];
_closeContext(browserContext: BidiBrowserContext): Promise<void>;
defaultBrowserContext(): BidiBrowserContext;
newPage(): Promise<Page>;
targets(): Target[];
_getTargetById(id: string): BidiTarget;
target(): Target;
disconnect(): Promise<void>;
get debugInfo(): DebugInfo;
}
//# sourceMappingURL=Browser.d.ts.map

View File

@ -1 +1 @@
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EACL,OAAO,EAEP,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAI7C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO;;IACtC,QAAQ,CAAC,QAAQ,mBAAmB;IAGpC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAKxC;IACF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAWvD;WAEW,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;gBA4DjE,IAAI,EAAE,kBAAkB,GAAG;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB;IA0BM,SAAS,IAAI,KAAK;IAsE3B,IAAI,UAAU,IAAI,cAAc,CAE/B;IAEQ,UAAU,IAAI,MAAM;IAId,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAcrC,IAAa,SAAS,IAAI,OAAO,CAEhC;IAEQ,OAAO,IAAI,YAAY,GAAG,IAAI;IAIxB,6BAA6B,CAC1C,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;IAUf,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,eAAe,IAAI,kBAAkB,EAAE;IAK1C,aAAa,CAAC,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7D,qBAAqB,IAAI,kBAAkB;IAI3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,OAAO,IAAI,MAAM,EAAE;IAI5B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU;IAQ7B,MAAM,IAAI,MAAM;IAIV,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3C"}
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EACL,OAAO,EAEP,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAI7C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAIpD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO;;IACtC,QAAQ,CAAC,QAAQ,mBAAmB;IAGpC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAKxC;IACF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAWvD;WAEW,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAuCnE,OAAO;IAiCE,SAAS,IAAI,KAAK;IAiF3B,IAAI,UAAU,IAAI,cAAc,CAG/B;IAEQ,UAAU,IAAI,MAAM;IAId,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC,IAAa,SAAS,IAAI,OAAO,CAEhC;IAEQ,OAAO,IAAI,YAAY,GAAG,IAAI;IAIxB,6BAA6B,CAC1C,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,OAAO,CAAC,kBAAkB,CAAC;IAKf,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,eAAe,IAAI,kBAAkB,EAAE;IAMvC,qBAAqB,IAAI,kBAAkB;IAI3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,OAAO,IAAI,MAAM,EAAE;IAI5B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU;IAQ7B,MAAM,IAAI,MAAM;IAIV,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1C,IAAa,SAAS,IAAI,SAAS,CAIlC;CACF"}

View File

@ -11,6 +11,7 @@ const Errors_js_1 = require("../common/Errors.js");
const util_js_1 = require("../common/util.js");
const BrowserContext_js_1 = require("./BrowserContext.js");
const BrowsingContext_js_1 = require("./BrowsingContext.js");
const Session_js_1 = require("./core/Session.js");
const Target_js_1 = require("./Target.js");
/**
* @internal
@ -37,46 +38,26 @@ class BidiBrowser extends Browser_js_1.Browser {
'cdp.Page.screencastFrame',
];
static async create(opts) {
let browserName = '';
let browserVersion = '';
// TODO: await until the connection is established.
try {
const { result } = await opts.connection.send('session.new', {
capabilities: {
alwaysMatch: {
acceptInsecureCerts: opts.ignoreHTTPSErrors,
},
},
});
browserName = result.capabilities.browserName ?? '';
browserVersion = result.capabilities.browserVersion ?? '';
}
catch (err) {
// Chrome does not support session.new.
(0, util_js_1.debugError)(err);
}
await opts.connection.send('session.subscribe', {
events: browserName.toLocaleLowerCase().includes('firefox')
? BidiBrowser.subscribeModules
: [...BidiBrowser.subscribeModules, ...BidiBrowser.subscribeCdpEvents],
});
const browser = new BidiBrowser({
...opts,
browserName,
browserVersion,
const session = await Session_js_1.Session.from(opts.connection, {
alwaysMatch: {
acceptInsecureCerts: opts.ignoreHTTPSErrors,
webSocketUrl: true,
},
});
await session.subscribe(session.capabilities.browserName.toLocaleLowerCase().includes('firefox')
? BidiBrowser.subscribeModules
: [...BidiBrowser.subscribeModules, ...BidiBrowser.subscribeCdpEvents]);
const browser = new BidiBrowser(session.browser, opts);
browser.#initialize();
await browser.#getTree();
return browser;
}
#browserName = '';
#browserVersion = '';
#process;
#closeCallback;
#connection;
#browserCore;
#defaultViewport;
#defaultContext;
#targets = new Map();
#contexts = [];
#browserContexts = new WeakMap();
#browserTarget;
#connectionEventHandlers = new Map([
['browsingContext.contextCreated', this.#onContextCreated.bind(this)],
@ -85,35 +66,50 @@ class BidiBrowser extends Browser_js_1.Browser {
['browsingContext.fragmentNavigated', this.#onContextNavigation.bind(this)],
['browsingContext.navigationStarted', this.#onContextNavigation.bind(this)],
]);
constructor(opts) {
constructor(browserCore, opts) {
super();
this.#process = opts.process;
this.#closeCallback = opts.closeCallback;
this.#connection = opts.connection;
this.#browserCore = browserCore;
this.#defaultViewport = opts.defaultViewport;
this.#browserName = opts.browserName;
this.#browserVersion = opts.browserVersion;
this.#process?.once('close', () => {
this.#connection.dispose();
this.#browserTarget = new Target_js_1.BiDiBrowserTarget(this);
for (const context of this.#browserCore.userContexts) {
this.#createBrowserContext(context);
}
}
#initialize() {
this.#browserCore.once('disconnected', () => {
this.emit("disconnected" /* BrowserEvent.Disconnected */, undefined);
});
this.#defaultContext = new BrowserContext_js_1.BidiBrowserContext(this, {
defaultViewport: this.#defaultViewport,
isDefault: true,
this.#process?.once('close', () => {
this.#browserCore.dispose('Browser process exited.', true);
this.connection.dispose();
});
this.#browserTarget = new Target_js_1.BiDiBrowserTarget(this.#defaultContext);
this.#contexts.push(this.#defaultContext);
for (const [eventName, handler] of this.#connectionEventHandlers) {
this.#connection.on(eventName, handler);
this.connection.on(eventName, handler);
}
}
get #browserName() {
return this.#browserCore.session.capabilities.browserName;
}
get #browserVersion() {
return this.#browserCore.session.capabilities.browserVersion;
}
userAgent() {
throw new Errors_js_1.UnsupportedOperation();
}
#createBrowserContext(userContext) {
const browserContext = new BrowserContext_js_1.BidiBrowserContext(this, userContext, {
defaultViewport: this.#defaultViewport,
});
this.#browserContexts.set(userContext, browserContext);
return browserContext;
}
#onContextDomLoaded(event) {
const target = this.#targets.get(event.context);
if (target) {
this.emit("targetchanged" /* BrowserEvent.TargetChanged */, target);
target.browserContext().emit("targetchanged" /* BrowserContextEvent.TargetChanged */, target);
}
}
#onContextNavigation(event) {
@ -124,12 +120,13 @@ class BidiBrowser extends Browser_js_1.Browser {
}
}
#onContextCreated(event) {
const context = new BrowsingContext_js_1.BrowsingContext(this.#connection, event, this.#browserName);
this.#connection.registerBrowsingContexts(context);
// TODO: once more browsing context types are supported, this should be
// updated to support those. Currently, all top-level contexts are treated
// as pages.
const browserContext = this.browserContexts().at(-1);
const context = new BrowsingContext_js_1.BrowsingContext(this.connection, event, this.#browserName);
this.connection.registerBrowsingContexts(context);
const browserContext = event.userContext === 'default'
? this.defaultBrowserContext()
: this.browserContexts().find(browserContext => {
return browserContext.id === event.userContext;
});
if (!browserContext) {
throw new Error('Missing browser contexts');
}
@ -140,19 +137,19 @@ class BidiBrowser extends Browser_js_1.Browser {
this.emit("targetcreated" /* BrowserEvent.TargetCreated */, target);
target.browserContext().emit("targetcreated" /* BrowserContextEvent.TargetCreated */, target);
if (context.parent) {
const topLevel = this.#connection.getTopLevelContext(context.parent);
const topLevel = this.connection.getTopLevelContext(context.parent);
topLevel.emit(BrowsingContext_js_1.BrowsingContextEvent.Created, context);
}
}
async #getTree() {
const { result } = await this.#connection.send('browsingContext.getTree', {});
const { result } = await this.connection.send('browsingContext.getTree', {});
for (const context of result.contexts) {
this.#onContextCreated(context);
}
}
async #onContextDestroyed(event) {
const context = this.#connection.getBrowsingContext(event.context);
const topLevelContext = this.#connection.getTopLevelContext(event.context);
const context = this.connection.getBrowsingContext(event.context);
const topLevelContext = this.connection.getTopLevelContext(event.context);
topLevelContext.emit(BrowsingContext_js_1.BrowsingContextEvent.Destroyed, context);
const target = this.#targets.get(event.context);
const page = await target?.page();
@ -164,61 +161,54 @@ class BidiBrowser extends Browser_js_1.Browser {
}
}
get connection() {
return this.#connection;
// SAFETY: We only have one implementation.
return this.#browserCore.session.connection;
}
wsEndpoint() {
return this.#connection.url;
return this.connection.url;
}
async close() {
for (const [eventName, handler] of this.#connectionEventHandlers) {
this.#connection.off(eventName, handler);
this.connection.off(eventName, handler);
}
if (this.#connection.closed) {
if (this.connection.closed) {
return;
}
// `browser.close` can close connection before the response is received.
await this.#connection.send('browser.close', {}).catch(util_js_1.debugError);
await this.#closeCallback?.call(null);
this.#connection.dispose();
try {
await this.#browserCore.close();
await this.#closeCallback?.call(null);
}
catch (error) {
// Fail silently.
(0, util_js_1.debugError)(error);
}
finally {
this.connection.dispose();
}
}
get connected() {
return !this.#connection.closed;
return !this.#browserCore.disposed;
}
process() {
return this.#process ?? null;
}
async createIncognitoBrowserContext(_options) {
// TODO: implement incognito context https://github.com/w3c/webdriver-bidi/issues/289.
const context = new BrowserContext_js_1.BidiBrowserContext(this, {
defaultViewport: this.#defaultViewport,
isDefault: false,
});
this.#contexts.push(context);
return context;
const userContext = await this.#browserCore.createUserContext();
return this.#createBrowserContext(userContext);
}
async version() {
return `${this.#browserName}/${this.#browserVersion}`;
}
browserContexts() {
// TODO: implement incognito context https://github.com/w3c/webdriver-bidi/issues/289.
return this.#contexts;
}
async _closeContext(browserContext) {
this.#contexts = this.#contexts.filter(c => {
return c !== browserContext;
return [...this.#browserCore.userContexts].map(context => {
return this.#browserContexts.get(context);
});
for (const target of browserContext.targets()) {
const page = await target?.page();
await page?.close().catch(error => {
(0, util_js_1.debugError)(error);
});
}
}
defaultBrowserContext() {
return this.#defaultContext;
return this.#browserContexts.get(this.#browserCore.defaultUserContext);
}
newPage() {
return this.#defaultContext.newPage();
return this.defaultBrowserContext().newPage();
}
targets() {
return [this.#browserTarget, ...Array.from(this.#targets.values())];
@ -235,13 +225,20 @@ class BidiBrowser extends Browser_js_1.Browser {
}
async disconnect() {
try {
// Fail silently if the session cannot be ended.
await this.#connection.send('session.end', {});
await this.#browserCore.session.end();
}
catch (e) {
(0, util_js_1.debugError)(e);
catch (error) {
// Fail silently.
(0, util_js_1.debugError)(error);
}
this.#connection.dispose();
finally {
this.connection.dispose();
}
}
get debugInfo() {
return {
pendingProtocolErrors: this.connection.getPendingProtocolErrors(),
};
}
}
exports.BidiBrowser = BidiBrowser;

File diff suppressed because one or more lines are too long

View File

@ -79,7 +79,7 @@ async function getBiDiConnection(connectionTransport, url, options) {
}
}
catch (e) {
if (!('name' in e && e.name === 'ProtocolError')) {
if (!(e instanceof Errors_js_1.ProtocolError)) {
// Unexpected exception not related to BiDi / CDP. Rethrow.
throw e;
}

View File

@ -1 +1 @@
{"version":3,"file":"BrowserConnector.js","sourceRoot":"","sources":["../../../../src/bidi/BrowserConnector.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"BrowserConnector.js","sourceRoot":"","sources":["../../../../src/bidi/BrowserConnector.ts"],"names":[],"mappings":"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"}

View File

@ -10,20 +10,20 @@ import type { Target } from '../api/Target.js';
import type { Viewport } from '../common/Viewport.js';
import type { BidiBrowser } from './Browser.js';
import type { BidiConnection } from './Connection.js';
import { UserContext } from './core/UserContext.js';
import type { BidiPage } from './Page.js';
/**
* @internal
*/
export interface BidiBrowserContextOptions {
defaultViewport: Viewport | null;
isDefault: boolean;
}
/**
* @internal
*/
export declare class BidiBrowserContext extends BrowserContext {
#private;
constructor(browser: BidiBrowser, options: BidiBrowserContextOptions);
constructor(browser: BidiBrowser, userContext: UserContext, options: BidiBrowserContextOptions);
targets(): Target[];
waitForTarget(predicate: (x: Target) => boolean | Promise<boolean>, options?: WaitForTargetOptions): Promise<Target>;
get connection(): BidiConnection;
@ -34,5 +34,6 @@ export declare class BidiBrowserContext extends BrowserContext {
isIncognito(): boolean;
overridePermissions(): never;
clearPermissionOverrides(): never;
get id(): string | undefined;
}
//# sourceMappingURL=BrowserContext.d.ts.map

View File

@ -1 +1 @@
{"version":3,"file":"BrowserContext.d.ts","sourceRoot":"","sources":["../../../../src/bidi/BrowserContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;;gBAMxC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,yBAAyB;IAQ3D,OAAO,IAAI,MAAM,EAAE;IAMnB,aAAa,CACpB,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EACpD,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC;IAMlB,IAAI,UAAU,IAAI,cAAc,CAE/B;IAEc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,OAAO,IAAI,WAAW;IAIhB,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWlC,WAAW,IAAI,OAAO;IAItB,mBAAmB,IAAI,KAAK;IAI5B,wBAAwB,IAAI,KAAK;CAG3C"}
{"version":3,"file":"BrowserContext.d.ts","sourceRoot":"","sources":["../../../../src/bidi/BrowserContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;;gBAOlD,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,yBAAyB;IAS3B,OAAO,IAAI,MAAM,EAAE;IAMnB,aAAa,CACpB,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EACpD,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC;IAMlB,IAAI,UAAU,IAAI,cAAc,CAE/B;IAEc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,IAAI,WAAW;IAIhB,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWlC,WAAW,IAAI,OAAO;IAItB,mBAAmB,IAAI,KAAK;IAI5B,wBAAwB,IAAI,KAAK;IAI1C,IAAa,EAAE,IAAI,MAAM,GAAG,SAAS,CAKpC;CACF"}

View File

@ -8,6 +8,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.BidiBrowserContext = void 0;
const BrowserContext_js_1 = require("../api/BrowserContext.js");
const Errors_js_1 = require("../common/Errors.js");
const util_js_1 = require("../common/util.js");
const UserContext_js_1 = require("./core/UserContext.js");
/**
* @internal
*/
@ -15,13 +17,13 @@ class BidiBrowserContext extends BrowserContext_js_1.BrowserContext {
#browser;
#connection;
#defaultViewport;
#isDefault = false;
constructor(browser, options) {
#userContext;
constructor(browser, userContext, options) {
super();
this.#browser = browser;
this.#userContext = userContext;
this.#connection = this.#browser.connection;
this.#defaultViewport = options.defaultViewport;
this.#isDefault = options.isDefault;
}
targets() {
return this.#browser.targets().filter(target => {
@ -39,6 +41,7 @@ class BidiBrowserContext extends BrowserContext_js_1.BrowserContext {
async newPage() {
const { result } = await this.#connection.send('browsingContext.create', {
type: "tab" /* Bidi.BrowsingContext.CreateType.Tab */,
userContext: this.#userContext.id,
});
const target = this.#browser._getTargetById(result.context);
// TODO: once BiDi has some concept matching BrowserContext, the newly
@ -62,10 +65,15 @@ class BidiBrowserContext extends BrowserContext_js_1.BrowserContext {
return page;
}
async close() {
if (this.#isDefault) {
if (!this.isIncognito()) {
throw new Error('Default context cannot be closed!');
}
await this.#browser._closeContext(this);
try {
await this.#userContext.remove();
}
catch (error) {
(0, util_js_1.debugError)(error);
}
}
browser() {
return this.#browser;
@ -79,7 +87,7 @@ class BidiBrowserContext extends BrowserContext_js_1.BrowserContext {
});
}
isIncognito() {
return !this.#isDefault;
return this.#userContext.id !== UserContext_js_1.UserContext.DEFAULT;
}
overridePermissions() {
throw new Errors_js_1.UnsupportedOperation();
@ -87,6 +95,12 @@ class BidiBrowserContext extends BrowserContext_js_1.BrowserContext {
clearPermissionOverrides() {
throw new Errors_js_1.UnsupportedOperation();
}
get id() {
if (this.#userContext.id === 'default') {
return undefined;
}
return this.#userContext.id;
}
}
exports.BidiBrowserContext = BidiBrowserContext;
//# sourceMappingURL=BrowserContext.js.map

View File

@ -1 +1 @@
{"version":3,"file":"BrowserContext.js","sourceRoot":"","sources":["../../../../src/bidi/BrowserContext.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"BrowserContext.js","sourceRoot":"","sources":["../../../../src/bidi/BrowserContext.ts"],"names":[],"mappings":"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"}

View File

@ -5,108 +5,14 @@
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import type { ConnectionTransport } from '../common/ConnectionTransport.js';
import type { EventsWithWildcard } from '../common/EventEmitter.js';
import { EventEmitter } from '../common/EventEmitter.js';
import { type BrowsingContext } from './BrowsingContext.js';
import type { BidiEvents, Commands as BidiCommands, Connection } from './core/Connection.js';
/**
* @internal
*/
export interface Commands {
'script.evaluate': {
params: Bidi.Script.EvaluateParameters;
returnType: Bidi.Script.EvaluateResult;
};
'script.callFunction': {
params: Bidi.Script.CallFunctionParameters;
returnType: Bidi.Script.EvaluateResult;
};
'script.disown': {
params: Bidi.Script.DisownParameters;
returnType: Bidi.EmptyResult;
};
'script.addPreloadScript': {
params: Bidi.Script.AddPreloadScriptParameters;
returnType: Bidi.Script.AddPreloadScriptResult;
};
'script.removePreloadScript': {
params: Bidi.Script.RemovePreloadScriptParameters;
returnType: Bidi.EmptyResult;
};
'browser.close': {
params: Bidi.EmptyParams;
returnType: Bidi.EmptyResult;
};
'browsingContext.activate': {
params: Bidi.BrowsingContext.ActivateParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.create': {
params: Bidi.BrowsingContext.CreateParameters;
returnType: Bidi.BrowsingContext.CreateResult;
};
'browsingContext.close': {
params: Bidi.BrowsingContext.CloseParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.getTree': {
params: Bidi.BrowsingContext.GetTreeParameters;
returnType: Bidi.BrowsingContext.GetTreeResult;
};
'browsingContext.navigate': {
params: Bidi.BrowsingContext.NavigateParameters;
returnType: Bidi.BrowsingContext.NavigateResult;
};
'browsingContext.reload': {
params: Bidi.BrowsingContext.ReloadParameters;
returnType: Bidi.BrowsingContext.NavigateResult;
};
'browsingContext.print': {
params: Bidi.BrowsingContext.PrintParameters;
returnType: Bidi.BrowsingContext.PrintResult;
};
'browsingContext.captureScreenshot': {
params: Bidi.BrowsingContext.CaptureScreenshotParameters;
returnType: Bidi.BrowsingContext.CaptureScreenshotResult;
};
'browsingContext.handleUserPrompt': {
params: Bidi.BrowsingContext.HandleUserPromptParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.setViewport': {
params: Bidi.BrowsingContext.SetViewportParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.traverseHistory': {
params: Bidi.BrowsingContext.TraverseHistoryParameters;
returnType: Bidi.EmptyResult;
};
'input.performActions': {
params: Bidi.Input.PerformActionsParameters;
returnType: Bidi.EmptyResult;
};
'input.releaseActions': {
params: Bidi.Input.ReleaseActionsParameters;
returnType: Bidi.EmptyResult;
};
'session.end': {
params: Bidi.EmptyParams;
returnType: Bidi.EmptyResult;
};
'session.new': {
params: Bidi.Session.NewParameters;
returnType: Bidi.Session.NewResult;
};
'session.status': {
params: object;
returnType: Bidi.Session.StatusResult;
};
'session.subscribe': {
params: Bidi.Session.SubscriptionRequest;
returnType: Bidi.EmptyResult;
};
'session.unsubscribe': {
params: Bidi.Session.SubscriptionRequest;
returnType: Bidi.EmptyResult;
};
export interface Commands extends BidiCommands {
'cdp.sendCommand': {
params: Bidi.Cdp.SendCommandParameters;
returnType: Bidi.Cdp.SendCommandResult;
@ -119,19 +25,13 @@ export interface Commands {
/**
* @internal
*/
export type BidiEvents = {
[K in Bidi.ChromiumBidi.Event['method']]: Extract<Bidi.ChromiumBidi.Event, {
method: K;
}>['params'];
};
/**
* @internal
*/
export declare class BidiConnection extends EventEmitter<BidiEvents> {
export declare class BidiConnection extends EventEmitter<BidiEvents> implements Connection {
#private;
constructor(url: string, transport: ConnectionTransport, delay?: number, timeout?: number);
get closed(): boolean;
get url(): string;
pipeTo<Events extends BidiEvents>(emitter: EventEmitter<Events>): void;
emit<Key extends keyof EventsWithWildcard<BidiEvents>>(type: Key, event: EventsWithWildcard<BidiEvents>[Key]): boolean;
send<T extends keyof Commands>(method: T, params: Commands[T]['params']): Promise<{
result: Commands[T]['returnType'];
}>;
@ -153,5 +53,6 @@ export declare class BidiConnection extends EventEmitter<BidiEvents> {
* Unbinds the connection and closes the transport.
*/
dispose(): void;
getPendingProtocolErrors(): Error[];
}
//# sourceMappingURL=Connection.d.ts.map

View File

@ -1 +1 @@
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Connection.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAGxE,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAIvD,OAAO,EAAc,KAAK,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,IAAI,YAAY,EACxB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAK9B;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,YAAY;IAC5C,iBAAiB,EAAE;QACjB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACvC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;KACxC,CAAC;IACF,gBAAgB,EAAE;QAChB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACtC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACvC,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,cACX,SAAQ,YAAY,CAAC,UAAU,CAC/B,YAAW,UAAU;;gBAYnB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,mBAAmB,EAC9B,KAAK,SAAI,EACT,OAAO,CAAC,EAAE,MAAM;IAYlB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,MAAM,CAAC,MAAM,SAAS,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAI7D,IAAI,CAAC,GAAG,SAAS,MAAM,kBAAkB,CAAC,UAAU,CAAC,EAC5D,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GACzC,OAAO;IAOV,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAC3B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5B,OAAO,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;KAAC,CAAC;IAc/C;;OAEG;cACa,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEzD,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIxD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAQtD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAetD,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAad;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf,wBAAwB,IAAI,KAAK,EAAE;CAGpC"}

View File

@ -25,6 +25,7 @@ class BidiConnection extends EventEmitter_js_1.EventEmitter {
#closed = false;
#callbacks = new CallbackRegistry_js_1.CallbackRegistry();
#browsingContexts = new Map();
#emitters = [];
constructor(url, transport, delay = 0, timeout) {
super();
this.#url = url;
@ -40,6 +41,15 @@ class BidiConnection extends EventEmitter_js_1.EventEmitter {
get url() {
return this.#url;
}
pipeTo(emitter) {
this.#emitters.push(emitter);
}
emit(type, event) {
for (const emitter of this.#emitters) {
emitter.emit(type, event);
}
return super.emit(type, event);
}
send(method, params) {
(0, assert_js_1.assert)(!this.#closed, 'Protocol error: Connection closed.');
return this.#callbacks.create(method, this.#timeout, id => {
@ -157,6 +167,9 @@ class BidiConnection extends EventEmitter_js_1.EventEmitter {
this.unbind();
this.#transport.close();
}
getPendingProtocolErrors() {
return this.#callbacks.getPendingProtocolErrors();
}
}
exports.BidiConnection = BidiConnection;
/**

File diff suppressed because one or more lines are too long

View File

@ -18,7 +18,7 @@ export declare class BidiDialog extends Dialog {
/**
* @internal
*/
sendCommand(options: {
handle(options: {
accept: boolean;
text?: string;
}): Promise<void>;

View File

@ -1 +1 @@
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAExC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,UAAW,SAAQ,MAAM;;IAGpC;;OAEG;gBAED,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAC7D,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM;IAMvB;;OAEG;IACY,WAAW,CAAC,OAAO,EAAE;QAClC,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;CAOlB"}
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAExC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,UAAW,SAAQ,MAAM;;IAGpC;;OAEG;gBAED,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAC7D,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM;IAMvB;;OAEG;IACY,MAAM,CAAC,OAAO,EAAE;QAC7B,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;CAOlB"}

View File

@ -22,7 +22,7 @@ class BidiDialog extends Dialog_js_1.Dialog {
/**
* @internal
*/
async sendCommand(options) {
async handle(options) {
await this.#context.connection.send('browsingContext.handleUserPrompt', {
context: this.#context.id,
accept: options.accept,

View File

@ -1 +1 @@
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/bidi/Dialog.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,gDAAwC;AAIxC;;GAEG;AACH,MAAa,UAAW,SAAQ,kBAAM;IACpC,QAAQ,CAAkB;IAE1B;;OAEG;IACH,YACE,OAAwB,EACxB,IAA6D,EAC7D,OAAe,EACf,YAAqB;QAErB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,WAAW,CAAC,OAG1B;QACC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,kCAAkC,EAAE;YACtE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF;AA7BD,gCA6BC"}
{"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../../src/bidi/Dialog.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,gDAAwC;AAIxC;;GAEG;AACH,MAAa,UAAW,SAAQ,kBAAM;IACpC,QAAQ,CAAkB;IAE1B;;OAEG;IACH,YACE,OAAwB,EACxB,IAA6D,EAC7D,OAAe,EACf,YAAqB;QAErB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,MAAM,CAAC,OAGrB;QACC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,kCAAkC,EAAE;YACtE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF;AA7BD,gCA6BC"}

View File

@ -1 +1 @@
{"version":3,"file":"ExposedFunction.d.ts","sourceRoot":"","sources":["../../../../src/bidi/ExposedFunction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAC,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAQjE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAgB1C;;GAEG;AACH,qBAAa,kBAAkB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,GAAG;;IAGzD,QAAQ,CAAC,IAAI,SAAC;gBAYZ,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC;IAapC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAkN7B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIlB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7C"}
{"version":3,"file":"ExposedFunction.d.ts","sourceRoot":"","sources":["../../../../src/bidi/ExposedFunction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAC,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAQjE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAgB1C;;GAEG;AACH,qBAAa,kBAAkB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,GAAG;;IAGzD,QAAQ,CAAC,IAAI,SAAC;gBAYZ,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC;IAapC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA0N7B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIlB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7C"}

View File

@ -59,7 +59,6 @@ class ExposeableFunction {
async expose() {
const connection = this.#connection;
const channelArguments = this.#channelArguments;
const { name } = this;
// TODO(jrandolf): Implement cleanup with removePreloadScript.
connection.on(Bidi.ChromiumBidi.Script.EventNames.Message, this.#handleArgumentsMessage);
connection.on(Bidi.ChromiumBidi.Script.EventNames.Message, this.#handleResolveMessage);
@ -76,7 +75,7 @@ class ExposeableFunction {
});
},
});
}, { name: JSON.stringify(name) }));
}, { name: JSON.stringify(this.name) }));
const { result } = await connection.send('script.addPreloadScript', {
functionDeclaration,
arguments: channelArguments,
@ -114,7 +113,9 @@ class ExposeableFunction {
Serializer_js_1.BidiSerializer.serializeRemoteValue(result),
],
awaitPromise: false,
target: params.source,
target: {
realm: params.source.realm,
},
});
}
catch (error) {
@ -136,7 +137,9 @@ class ExposeableFunction {
Serializer_js_1.BidiSerializer.serializeRemoteValue(error.stack),
],
awaitPromise: false,
target: params.source,
target: {
realm: params.source.realm,
},
});
}
else {
@ -149,7 +152,9 @@ class ExposeableFunction {
Serializer_js_1.BidiSerializer.serializeRemoteValue(error),
],
awaitPromise: false,
target: params.source,
target: {
realm: params.source.realm,
},
});
}
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"file":"Frame.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Frame.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAMxD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AACxC,OAAO,EAGL,OAAO,EACP,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;;IAMlC,SAAS,EAAE,YAAY,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;gBAGnB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,eAAe,EAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAoB1B,IAAa,MAAM,IAAI,UAAU,CAEhC;IAEQ,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,IAAI,IAAI,QAAQ;IAIhB,UAAU,IAAI,KAAK;IAInB,GAAG,IAAI,MAAM;IAIb,WAAW,IAAI,SAAS,GAAG,IAAI;IAI/B,WAAW,IAAI,SAAS,EAAE;IAKpB,IAAI,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA0BpB,UAAU,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA0BhB,OAAO,IAAI,eAAe;IAKX,iBAAiB,CAC9B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAwC1B,mBAAmB,IAAI,KAAK;IAIrC,IAAa,QAAQ,IAAI,OAAO,CAE/B;IAED,CAAC,aAAa,CAAC,IAAI,IAAI;IAYjB,cAAc,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,GAAG,EAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAgBP,eAAe,CAAC,QAAQ,SAAS,MAAM,EAC9C,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;CASpD"}
{"version":3,"file":"Frame.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Frame.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,KAAK,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAQ3D,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAMxD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AACxC,OAAO,EAGL,OAAO,EACP,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;;IAMlC,SAAS,EAAE,YAAY,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;gBAGnB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,eAAe,EAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAoB1B,IAAa,MAAM,IAAI,UAAU,CAEhC;IAEQ,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,IAAI,IAAI,QAAQ;IAIhB,UAAU,IAAI,KAAK;IAInB,GAAG,IAAI,MAAM;IAIb,WAAW,IAAI,SAAS,GAAG,IAAI;IAI/B,WAAW,IAAI,SAAS,EAAE;IAKpB,IAAI,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAsCpB,UAAU,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAkChB,OAAO,IAAI,eAAe;IAKX,iBAAiB,CAC9B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAmD1B,mBAAmB,IAAI,KAAK;IAIrC,IAAa,QAAQ,IAAI,OAAO,CAE/B;IAED,CAAC,aAAa,CAAC,IAAI,IAAI;IAYjB,cAAc,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,GAAG,EAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,GAAG,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAgBP,eAAe,CAAC,QAAQ,SAAS,MAAM,EAC9C,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;CASpD"}

View File

@ -137,28 +137,42 @@ let BidiFrame = (() => {
async goto(url, options = {}) {
const { waitUntil = 'load', timeout: ms = this.#timeoutSettings.navigationTimeout(), } = options;
const [readiness, networkIdle] = (0, lifecycle_js_1.getBiDiReadinessState)(waitUntil);
const response = await (0, rxjs_js_1.firstValueFrom)(this.#page
._waitWithNetworkIdle(this.#context.connection.send('browsingContext.navigate', {
const result$ = (0, rxjs_js_1.zip)((0, rxjs_js_1.from)(this.#context.connection.send('browsingContext.navigate', {
context: this.#context.id,
url,
wait: readiness,
}), networkIdle)
.pipe((0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#abortDeferred.valueOrThrow())))
.pipe((0, lifecycle_js_1.rewriteNavigationError)(url, ms)));
return this.#page.getNavigationResponse(response?.result.navigation);
})), ...(networkIdle !== null
? [
this.#page.waitForNetworkIdle$({
timeout: ms,
concurrency: networkIdle === 'networkidle2' ? 2 : 0,
idleTime: util_js_1.NETWORK_IDLE_TIME,
}),
]
: [])).pipe((0, rxjs_js_1.map)(([{ result }]) => {
return result;
}), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#abortDeferred.valueOrThrow())), (0, lifecycle_js_1.rewriteNavigationError)(url, ms));
const result = await (0, rxjs_js_1.firstValueFrom)(result$);
return this.#page.getNavigationResponse(result.navigation);
}
async setContent(html, options = {}) {
const { waitUntil = 'load', timeout: ms = this.#timeoutSettings.navigationTimeout(), } = options;
const [waitEvent, networkIdle] = (0, lifecycle_js_1.getBiDiLifecycleEvent)(waitUntil);
await (0, rxjs_js_1.firstValueFrom)(this.#page
._waitWithNetworkIdle((0, rxjs_js_1.forkJoin)([
(0, rxjs_js_1.fromEvent)(this.#context, waitEvent).pipe((0, rxjs_js_1.first)()),
const result$ = (0, rxjs_js_1.zip)((0, rxjs_js_1.forkJoin)([
(0, util_js_1.fromEmitterEvent)(this.#context, waitEvent).pipe((0, rxjs_js_1.first)()),
(0, rxjs_js_1.from)(this.setFrameContent(html)),
]).pipe((0, rxjs_js_1.map)(() => {
return null;
})), networkIdle)
.pipe((0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#abortDeferred.valueOrThrow())))
.pipe((0, lifecycle_js_1.rewriteNavigationError)('setContent', ms)));
})), ...(networkIdle !== null
? [
this.#page.waitForNetworkIdle$({
timeout: ms,
concurrency: networkIdle === 'networkidle2' ? 2 : 0,
idleTime: util_js_1.NETWORK_IDLE_TIME,
}),
]
: [])).pipe((0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#abortDeferred.valueOrThrow())), (0, lifecycle_js_1.rewriteNavigationError)('setContent', ms));
await (0, rxjs_js_1.firstValueFrom)(result$);
}
context() {
return this.#context;
@ -166,19 +180,28 @@ let BidiFrame = (() => {
async waitForNavigation(options = {}) {
const { waitUntil = 'load', timeout: ms = this.#timeoutSettings.navigationTimeout(), } = options;
const [waitUntilEvent, networkIdle] = (0, lifecycle_js_1.getBiDiLifecycleEvent)(waitUntil);
const navigatedObservable = (0, rxjs_js_1.merge)((0, rxjs_js_1.forkJoin)([
(0, rxjs_js_1.fromEvent)(this.#context, Bidi.ChromiumBidi.BrowsingContext.EventNames.NavigationStarted).pipe((0, rxjs_js_1.first)()),
(0, rxjs_js_1.fromEvent)(this.#context, waitUntilEvent).pipe((0, rxjs_js_1.first)()),
]), (0, rxjs_js_1.fromEvent)(this.#context, Bidi.ChromiumBidi.BrowsingContext.EventNames.FragmentNavigated)).pipe((0, rxjs_js_1.map)(result => {
const navigation$ = (0, rxjs_js_1.merge)((0, rxjs_js_1.forkJoin)([
(0, util_js_1.fromEmitterEvent)(this.#context, Bidi.ChromiumBidi.BrowsingContext.EventNames.NavigationStarted).pipe((0, rxjs_js_1.first)()),
(0, util_js_1.fromEmitterEvent)(this.#context, waitUntilEvent).pipe((0, rxjs_js_1.first)()),
]), (0, util_js_1.fromEmitterEvent)(this.#context, Bidi.ChromiumBidi.BrowsingContext.EventNames.FragmentNavigated)).pipe((0, rxjs_js_1.map)(result => {
if (Array.isArray(result)) {
return { result: result[1] };
}
return { result };
}));
const response = await (0, rxjs_js_1.firstValueFrom)(this.#page
._waitWithNetworkIdle(navigatedObservable, networkIdle)
.pipe((0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#abortDeferred.valueOrThrow()))));
return this.#page.getNavigationResponse(response?.result.navigation);
const result$ = (0, rxjs_js_1.zip)(navigation$, ...(networkIdle !== null
? [
this.#page.waitForNetworkIdle$({
timeout: ms,
concurrency: networkIdle === 'networkidle2' ? 2 : 0,
idleTime: util_js_1.NETWORK_IDLE_TIME,
}),
]
: [])).pipe((0, rxjs_js_1.map)(([{ result }]) => {
return result;
}), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#abortDeferred.valueOrThrow())));
const result = await (0, rxjs_js_1.firstValueFrom)(result$);
return this.#page.getNavigationResponse(result.navigation);
}
waitForDevicePrompt() {
throw new Errors_js_1.UnsupportedOperation();

File diff suppressed because one or more lines are too long

View File

@ -6,9 +6,7 @@
/// <reference types="node" />
/// <reference types="node" />
import type { Readable } from 'stream';
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import type Protocol from 'devtools-protocol';
import type { Observable, ObservableInput } from '../../third_party/rxjs/rxjs.js';
import type { CDPSession } from '../api/CDPSession.js';
import type { WaitForOptions } from '../api/Frame.js';
import type { HTTPResponse } from '../api/HTTPResponse.js';
@ -24,11 +22,9 @@ import type { BidiBrowserContext } from './BrowserContext.js';
import { type BrowsingContext } from './BrowsingContext.js';
import type { BidiConnection } from './Connection.js';
import { BidiFrame } from './Frame.js';
import type { BidiHTTPRequest } from './HTTPRequest.js';
import type { BidiHTTPResponse } from './HTTPResponse.js';
import { BidiKeyboard, BidiMouse, BidiTouchscreen } from './Input.js';
import type { BidiJSHandle } from './JSHandle.js';
import type { BiDiNetworkIdle } from './lifecycle.js';
import type { BiDiPageTarget } from './Target.js';
/**
* @internal
@ -87,22 +83,6 @@ export declare class BidiPage extends Page {
pdf(options?: PDFOptions): Promise<Buffer>;
createPDFStream(options?: PDFOptions | undefined): Promise<Readable>;
_screenshot(options: Readonly<ScreenshotOptions>): Promise<string>;
waitForRequest(urlOrPredicate: string | ((req: BidiHTTPRequest) => boolean | Promise<boolean>), options?: {
timeout?: number;
}): Promise<BidiHTTPRequest>;
waitForResponse(urlOrPredicate: string | ((res: BidiHTTPResponse) => boolean | Promise<boolean>), options?: {
timeout?: number;
}): Promise<BidiHTTPResponse>;
waitForNetworkIdle(options?: {
idleTime?: number;
timeout?: number;
}): Promise<void>;
/** @internal */
_waitWithNetworkIdle(observableInput: ObservableInput<{
result: Bidi.BrowsingContext.NavigateResult;
} | null>, networkIdle: BiDiNetworkIdle): Observable<{
result: Bidi.BrowsingContext.NavigateResult;
} | null>;
createCDPSession(): Promise<CDPSession>;
bringToFront(): Promise<void>;
evaluateOnNewDocument<Params extends unknown[], Func extends (...args: Params) => unknown = (...args: Params) => unknown>(pageFunction: Func | string, ...args: Params): Promise<NewDocumentScriptEvaluation>;

File diff suppressed because one or more lines are too long

View File

@ -421,13 +421,22 @@ class BidiPage extends Page_js_1.Page {
async reload(options = {}) {
const { waitUntil = 'load', timeout: ms = this._timeoutSettings.navigationTimeout(), } = options;
const [readiness, networkIdle] = (0, lifecycle_js_1.getBiDiReadinessState)(waitUntil);
const response = await (0, rxjs_js_1.firstValueFrom)(this._waitWithNetworkIdle(this.#connection.send('browsingContext.reload', {
const result$ = (0, rxjs_js_1.zip)((0, rxjs_js_1.from)(this.#connection.send('browsingContext.reload', {
context: this.mainFrame()._id,
wait: readiness,
}), networkIdle)
.pipe((0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#closedDeferred.valueOrThrow())))
.pipe((0, lifecycle_js_1.rewriteNavigationError)(this.url(), ms)));
return this.getNavigationResponse(response?.result.navigation);
})), ...(networkIdle !== null
? [
this.waitForNetworkIdle$({
timeout: ms,
concurrency: networkIdle === 'networkidle2' ? 2 : 0,
idleTime: util_js_1.NETWORK_IDLE_TIME,
}),
]
: [])).pipe((0, rxjs_js_1.map)(([{ result }]) => {
return result;
}), (0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#closedDeferred.valueOrThrow())), (0, lifecycle_js_1.rewriteNavigationError)(this.url(), ms));
const result = await (0, rxjs_js_1.firstValueFrom)(result$);
return this.getNavigationResponse(result.navigation);
}
setDefaultNavigationTimeout(timeout) {
this._timeoutSettings.setDefaultNavigationTimeout(timeout);
@ -481,8 +490,8 @@ class BidiPage extends Page_js_1.Page {
return this.#viewport;
}
async pdf(options = {}) {
const { path = undefined } = options;
const { printBackground: background, margin, landscape, width, height, pageRanges: ranges, scale, preferCSSPageSize, timeout: ms, } = this._getPDFOptions(options, 'cm');
const { timeout: ms = this._timeoutSettings.timeout(), path = undefined } = options;
const { printBackground: background, margin, landscape, width, height, pageRanges: ranges, scale, preferCSSPageSize, } = (0, util_js_1.parsePDFOptions)(options, 'cm');
const pageRanges = ranges ? ranges.split(', ') : [];
const { result } = await (0, rxjs_js_1.firstValueFrom)((0, rxjs_js_1.from)(this.#connection.send('browsingContext.print', {
context: this.mainFrame()._id,
@ -564,30 +573,6 @@ class BidiPage extends Page_js_1.Page {
});
return data;
}
async waitForRequest(urlOrPredicate, options = {}) {
const { timeout = this._timeoutSettings.timeout() } = options;
return await (0, util_js_1.waitForHTTP)(this.#networkManager, NetworkManagerEvents_js_1.NetworkManagerEvent.Request, urlOrPredicate, timeout, this.#closedDeferred);
}
async waitForResponse(urlOrPredicate, options = {}) {
const { timeout = this._timeoutSettings.timeout() } = options;
return await (0, util_js_1.waitForHTTP)(this.#networkManager, NetworkManagerEvents_js_1.NetworkManagerEvent.Response, urlOrPredicate, timeout, this.#closedDeferred);
}
async waitForNetworkIdle(options = {}) {
const { idleTime = util_js_1.NETWORK_IDLE_TIME, timeout: ms = this._timeoutSettings.timeout(), } = options;
await (0, rxjs_js_1.firstValueFrom)(this._waitForNetworkIdle(this.#networkManager, idleTime).pipe((0, rxjs_js_1.raceWith)((0, util_js_1.timeout)(ms), (0, rxjs_js_1.from)(this.#closedDeferred.valueOrThrow()))));
}
/** @internal */
_waitWithNetworkIdle(observableInput, networkIdle) {
const delay = networkIdle
? this._waitForNetworkIdle(this.#networkManager, util_js_1.NETWORK_IDLE_TIME, networkIdle === 'networkidle0' ? 0 : 2)
: (0, rxjs_js_1.from)(Promise.resolve());
return (0, rxjs_js_1.forkJoin)([
(0, rxjs_js_1.from)(observableInput).pipe((0, rxjs_js_1.first)()),
delay.pipe((0, rxjs_js_1.first)()),
]).pipe((0, rxjs_js_1.map)(([response]) => {
return response;
}));
}
async createCDPSession() {
const { sessionId } = await this.mainFrame()
.context()

File diff suppressed because one or more lines are too long

View File

@ -26,9 +26,16 @@ export declare abstract class BidiTarget extends Target {
/**
* @internal
*/
export declare class BiDiBrowserTarget extends BidiTarget {
export declare class BiDiBrowserTarget extends Target {
#private;
constructor(browser: BidiBrowser);
url(): string;
type(): TargetType;
asPage(): Promise<Page>;
browser(): BidiBrowser;
browserContext(): BidiBrowserContext;
opener(): never;
createCDPSession(): Promise<CDPSession>;
}
/**
* @internal

View File

@ -1 +1 @@
{"version":3,"file":"Target.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Target.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGpD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,KAAK,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEnC;;GAEG;AACH,8BAAsB,UAAW,SAAQ,MAAM;IAC7C,SAAS,CAAC,eAAe,EAAE,kBAAkB,CAAC;gBAElC,cAAc,EAAE,kBAAkB;IAK9C,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI;IAInD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,WAAW;IAItB,cAAc,IAAI,kBAAkB;IAIpC,MAAM,IAAI,KAAK;IAIf,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;CAGjD;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IACtC,GAAG,IAAI,MAAM;IAIb,IAAI,IAAI,UAAU;CAG5B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,UAAU;IACvD,SAAS,CAAC,gBAAgB,EAAE,eAAe,CAAC;gBAG1C,cAAc,EAAE,kBAAkB,EAClC,eAAe,EAAE,eAAe;IAOzB,GAAG,IAAI,MAAM;IAIP,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAW7C,IAAI,IAAI,UAAU;CAG5B;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,yBAAyB;;gBAIzD,cAAc,EAAE,kBAAkB,EAClC,eAAe,EAAE,eAAe;IAOnB,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI/B,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI;CAItE"}
{"version":3,"file":"Target.d.ts","sourceRoot":"","sources":["../../../../src/bidi/Target.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGpD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,KAAK,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEnC;;GAEG;AACH,8BAAsB,UAAW,SAAQ,MAAM;IAC7C,SAAS,CAAC,eAAe,EAAE,kBAAkB,CAAC;gBAElC,cAAc,EAAE,kBAAkB;IAK9C,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI;IAInD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,WAAW;IAItB,cAAc,IAAI,kBAAkB;IAIpC,MAAM,IAAI,KAAK;IAIf,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;CAGjD;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;;gBAG/B,OAAO,EAAE,WAAW;IAKvB,GAAG,IAAI,MAAM;IAIb,IAAI,IAAI,UAAU;IAIlB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,WAAW;IAItB,cAAc,IAAI,kBAAkB;IAIpC,MAAM,IAAI,KAAK;IAIf,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;CAGjD;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,UAAU;IACvD,SAAS,CAAC,gBAAgB,EAAE,eAAe,CAAC;gBAG1C,cAAc,EAAE,kBAAkB,EAClC,eAAe,EAAE,eAAe;IAOzB,GAAG,IAAI,MAAM;IAIP,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAW7C,IAAI,IAAI,UAAU;CAG5B;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,yBAAyB;;gBAIzD,cAAc,EAAE,kBAAkB,EAClC,eAAe,EAAE,eAAe;IAOnB,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI/B,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI;CAItE"}

View File

@ -42,13 +42,33 @@ exports.BidiTarget = BidiTarget;
/**
* @internal
*/
class BiDiBrowserTarget extends BidiTarget {
class BiDiBrowserTarget extends Target_js_1.Target {
#browser;
constructor(browser) {
super();
this.#browser = browser;
}
url() {
return '';
}
type() {
return Target_js_1.TargetType.BROWSER;
}
asPage() {
throw new Errors_js_1.UnsupportedOperation();
}
browser() {
return this.#browser;
}
browserContext() {
return this.#browser.defaultBrowserContext();
}
opener() {
throw new Errors_js_1.UnsupportedOperation();
}
createCDPSession() {
throw new Errors_js_1.UnsupportedOperation();
}
}
exports.BiDiBrowserTarget = BiDiBrowserTarget;
/**

View File

@ -1 +1 @@
{"version":3,"file":"Target.js","sourceRoot":"","sources":["../../../../src/bidi/Target.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,gDAAoD;AACpD,mDAAyD;AAIzD,6DAA6E;AAC7E,uCAAmC;AAEnC;;GAEG;AACH,MAAsB,UAAW,SAAQ,kBAAM;IACnC,eAAe,CAAqB;IAE9C,YAAY,cAAkC;QAC5C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,cAAkC;QACnD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAEQ,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;IAEQ,gBAAgB;QACvB,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;CACF;AA/BD,gCA+BC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,UAAU;IACtC,GAAG;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,IAAI;QACX,OAAO,sBAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;CACF;AARD,8CAQC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,UAAU;IAC7C,gBAAgB,CAAkB;IAE5C,YACE,cAAkC,EAClC,eAAgC;QAEhC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAEQ,GAAG;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAC7D,uBAAuB,EACvB;YACE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAClC,OAAO,EAAE,IAAI;SACd,CACF,CAAC;QACF,OAAO,IAAI,sCAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAEQ,IAAI;QACX,OAAO,sBAAU,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AA9BD,8DA8BC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,yBAAyB;IAC3D,KAAK,CAAW;IAEhB,YACE,cAAkC,EAClC,eAAgC;QAEhC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAEvC,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEQ,kBAAkB,CAAC,cAAkC;QAC5D,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;CACF;AApBD,wCAoBC"}
{"version":3,"file":"Target.js","sourceRoot":"","sources":["../../../../src/bidi/Target.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,gDAAoD;AACpD,mDAAyD;AAIzD,6DAA6E;AAC7E,uCAAmC;AAEnC;;GAEG;AACH,MAAsB,UAAW,SAAQ,kBAAM;IACnC,eAAe,CAAqB;IAE9C,YAAY,cAAkC;QAC5C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,cAAkC;QACnD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAEQ,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;IAEQ,gBAAgB;QACvB,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;CACF;AA/BD,gCA+BC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,kBAAM;IAC3C,QAAQ,CAAc;IAEtB,YAAY,OAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEQ,GAAG;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,IAAI;QACX,OAAO,sBAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEQ,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IAC/C,CAAC;IAEQ,MAAM;QACb,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;IAEQ,gBAAgB;QACvB,MAAM,IAAI,gCAAoB,EAAE,CAAC;IACnC,CAAC;CACF;AAnCD,8CAmCC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,UAAU;IAC7C,gBAAgB,CAAkB;IAE5C,YACE,cAAkC,EAClC,eAAgC;QAEhC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAEQ,GAAG;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,gBAAgB;QAC7B,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAC7D,uBAAuB,EACvB;YACE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAClC,OAAO,EAAE,IAAI;SACd,CACF,CAAC;QACF,OAAO,IAAI,sCAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAEQ,IAAI;QACX,OAAO,sBAAU,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AA9BD,8DA8BC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,yBAAyB;IAC3D,KAAK,CAAW;IAEhB,YACE,cAAkC,EAClC,eAAgC;QAEhC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAEvC,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEQ,kBAAkB,CAAC,cAAkC;QAC5D,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;CACF;AApBD,wCAoBC"}

View File

@ -0,0 +1,55 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import type { BrowsingContext } from './BrowsingContext.js';
import type { SharedWorkerRealm } from './Realm.js';
import type { Session } from './Session.js';
import { UserContext } from './UserContext.js';
/**
* @internal
*/
export type AddPreloadScriptOptions = Omit<Bidi.Script.AddPreloadScriptParameters, 'functionDeclaration' | 'contexts'> & {
contexts?: [BrowsingContext, ...BrowsingContext[]];
};
/**
* @internal
*/
export declare class Browser extends EventEmitter<{
/** Emitted before the browser closes. */
closed: {
/** The reason for closing the browser. */
reason: string;
};
/** Emitted after the browser disconnects. */
disconnected: {
/** The reason for disconnecting the browser. */
reason: string;
};
/** Emitted when a shared worker is created. */
sharedworker: {
/** The realm of the shared worker. */
realm: SharedWorkerRealm;
};
}> {
#private;
static from(session: Session): Promise<Browser>;
readonly session: Session;
private constructor();
get closed(): boolean;
get defaultUserContext(): UserContext;
get disconnected(): boolean;
get disposed(): boolean;
get userContexts(): Iterable<UserContext>;
dispose(reason?: string, closed?: boolean): void;
close(): Promise<void>;
addPreloadScript(functionDeclaration: string, options?: AddPreloadScriptOptions): Promise<string>;
removePreloadScript(script: string): Promise<void>;
createUserContext(): Promise<UserContext>;
[disposeSymbol](): void;
}
//# sourceMappingURL=Browser.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/Browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAkB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EACtC,qBAAqB,GAAG,UAAU,CACnC,GAAG;IACF,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;CACpD,CAAC;AAEF;;GAEG;AACH,qBAAa,OAAQ,SAAQ,YAAY,CAAC;IACxC,yCAAyC;IACzC,MAAM,EAAE;QACN,0CAA0C;QAC1C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,6CAA6C;IAC7C,YAAY,EAAE;QACZ,gDAAgD;QAChD,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,+CAA+C;IAC/C,YAAY,EAAE;QACZ,sCAAsC;QACtC,KAAK,EAAE,iBAAiB,CAAC;KAC1B,CAAC;CACH,CAAC;;WACa,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,OAAO;IA4EP,IAAI,MAAM,IAAI,OAAO,CAEpB;IACD,IAAI,kBAAkB,IAAI,WAAW,CAGpC;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,YAAY,IAAI,QAAQ,CAAC,WAAW,CAAC,CAExC;IAID,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI;IAUxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,gBAAgB,CACpB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC;IAiBZ,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlD,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAoB/C,CAAC,aAAa,CAAC,IAAI,IAAI;CAWxB"}

View File

@ -0,0 +1,272 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
if (value !== null && value !== void 0) {
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
var dispose;
if (async) {
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
dispose = value[Symbol.asyncDispose];
}
if (dispose === void 0) {
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
dispose = value[Symbol.dispose];
}
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
env.stack.push({ value: value, dispose: dispose, async: async });
}
else if (async) {
env.stack.push({ async: true });
}
return value;
};
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
return function (env) {
function fail(e) {
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
env.hasError = true;
}
function next() {
while (env.stack.length) {
var rec = env.stack.pop();
try {
var result = rec.dispose && rec.dispose.call(rec.value);
if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
}
catch (e) {
fail(e);
}
}
if (env.hasError) throw env.error;
}
return next();
};
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
});
Object.defineProperty(exports, "__esModule", { value: true });
exports.Browser = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
const UserContext_js_1 = require("./UserContext.js");
/**
* @internal
*/
let Browser = (() => {
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
let _close_decorators;
let _addPreloadScript_decorators;
let _removePreloadScript_decorators;
let _createUserContext_decorators;
return class Browser extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _close_decorators, { kind: "method", name: "close", static: false, private: false, access: { has: obj => "close" in obj, get: obj => obj.close }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _addPreloadScript_decorators, { kind: "method", name: "addPreloadScript", static: false, private: false, access: { has: obj => "addPreloadScript" in obj, get: obj => obj.addPreloadScript }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _removePreloadScript_decorators, { kind: "method", name: "removePreloadScript", static: false, private: false, access: { has: obj => "removePreloadScript" in obj, get: obj => obj.removePreloadScript }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _createUserContext_decorators, { kind: "method", name: "createUserContext", static: false, private: false, access: { has: obj => "createUserContext" in obj, get: obj => obj.createUserContext }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static async from(session) {
const browser = new Browser(session);
await browser.#initialize();
return browser;
}
// keep-sorted start
#closed = (__runInitializers(this, _instanceExtraInitializers), false);
#reason;
#disposables = new disposable_js_1.DisposableStack();
#userContexts = new Map();
session;
// keep-sorted end
constructor(session) {
super();
// keep-sorted start
this.session = session;
// keep-sorted end
this.#userContexts.set(UserContext_js_1.UserContext.DEFAULT, UserContext_js_1.UserContext.create(this, UserContext_js_1.UserContext.DEFAULT));
}
async #initialize() {
const sessionEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.session));
sessionEmitter.once('ended', ({ reason }) => {
this.dispose(reason);
});
sessionEmitter.on('script.realmCreated', info => {
if (info.type === 'shared-worker') {
// TODO: Create a SharedWorkerRealm.
}
});
await this.#syncUserContexts();
await this.#syncBrowsingContexts();
}
async #syncUserContexts() {
const { result: { userContexts }, } = await this.session.send('browser.getUserContexts', {});
for (const context of userContexts) {
if (context.userContext === UserContext_js_1.UserContext.DEFAULT) {
continue;
}
this.#userContexts.set(context.userContext, UserContext_js_1.UserContext.create(this, context.userContext));
}
}
async #syncBrowsingContexts() {
// In case contexts are created or destroyed during `getTree`, we use this
// set to detect them.
const contextIds = new Set();
let contexts;
{
const env_1 = { stack: [], error: void 0, hasError: false };
try {
const sessionEmitter = __addDisposableResource(env_1, new EventEmitter_js_1.EventEmitter(this.session), false);
sessionEmitter.on('browsingContext.contextCreated', info => {
contextIds.add(info.context);
});
sessionEmitter.on('browsingContext.contextDestroyed', info => {
contextIds.delete(info.context);
});
const { result } = await this.session.send('browsingContext.getTree', {});
contexts = result.contexts;
}
catch (e_1) {
env_1.error = e_1;
env_1.hasError = true;
}
finally {
__disposeResources(env_1);
}
}
// Simulating events so contexts are created naturally.
for (const info of contexts) {
if (contextIds.has(info.context)) {
this.session.emit('browsingContext.contextCreated', info);
}
if (info.children) {
contexts.push(...info.children);
}
}
}
// keep-sorted start block=yes
get closed() {
return this.#closed;
}
get defaultUserContext() {
// SAFETY: A UserContext is always created for the default context.
return this.#userContexts.get(UserContext_js_1.UserContext.DEFAULT);
}
get disconnected() {
return this.#reason !== undefined;
}
get disposed() {
return this.disconnected;
}
get userContexts() {
return this.#userContexts.values();
}
// keep-sorted end
dispose(reason, closed = false) {
this.#closed = closed;
this.#reason = reason;
this[disposable_js_1.disposeSymbol]();
}
async close() {
try {
await this.session.send('browser.close', {});
}
finally {
this.dispose('Browser already closed.', true);
}
}
async addPreloadScript(functionDeclaration, options = {}) {
const { result: { script }, } = await this.session.send('script.addPreloadScript', {
functionDeclaration,
...options,
contexts: options.contexts?.map(context => {
return context.id;
}),
});
return script;
}
async removePreloadScript(script) {
await this.session.send('script.removePreloadScript', {
script,
});
}
async createUserContext() {
const { result: { userContext: context }, } = await this.session.send('browser.createUserContext', {});
const userContext = UserContext_js_1.UserContext.create(this, context);
this.#userContexts.set(userContext.id, userContext);
const userContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(userContext));
userContextEmitter.once('closed', () => {
userContextEmitter.removeAllListeners();
this.#userContexts.delete(context);
});
return userContext;
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], _close_decorators = [(0, decorators_js_1.throwIfDisposed)(browser => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return browser.#reason;
})], _addPreloadScript_decorators = [(0, decorators_js_1.throwIfDisposed)(browser => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return browser.#reason;
})], _removePreloadScript_decorators = [(0, decorators_js_1.throwIfDisposed)(browser => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return browser.#reason;
})], _createUserContext_decorators = [(0, decorators_js_1.throwIfDisposed)(browser => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return browser.#reason;
})], disposable_js_1.disposeSymbol)]() {
this.#reason ??=
'Browser was disconnected, probably because the session ended.';
if (this.closed) {
this.emit('closed', { reason: this.#reason });
}
this.emit('disconnected', { reason: this.#reason });
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.Browser = Browser;
//# sourceMappingURL=Browser.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,104 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import type { AddPreloadScriptOptions } from './Browser.js';
import { Navigation } from './Navigation.js';
import { WindowRealm } from './Realm.js';
import { Request } from './Request.js';
import type { UserContext } from './UserContext.js';
import { UserPrompt } from './UserPrompt.js';
/**
* @internal
*/
export type CaptureScreenshotOptions = Omit<Bidi.BrowsingContext.CaptureScreenshotParameters, 'context'>;
/**
* @internal
*/
export type ReloadOptions = Omit<Bidi.BrowsingContext.ReloadParameters, 'context'>;
/**
* @internal
*/
export type PrintOptions = Omit<Bidi.BrowsingContext.PrintParameters, 'context'>;
/**
* @internal
*/
export type HandleUserPromptOptions = Omit<Bidi.BrowsingContext.HandleUserPromptParameters, 'context'>;
/**
* @internal
*/
export type SetViewportOptions = Omit<Bidi.BrowsingContext.SetViewportParameters, 'context'>;
/**
* @internal
*/
export declare class BrowsingContext extends EventEmitter<{
/** Emitted when this context is closed. */
closed: {
/** The reason the browsing context was closed */
reason: string;
};
/** Emitted when a child browsing context is created. */
browsingcontext: {
/** The newly created child browsing context. */
browsingContext: BrowsingContext;
};
/** Emitted whenever a navigation occurs. */
navigation: {
/** The navigation that occurred. */
navigation: Navigation;
};
/** Emitted whenever a request is made. */
request: {
/** The request that was made. */
request: Request;
};
/** Emitted whenever a log entry is added. */
log: {
/** Entry added to the log. */
entry: Bidi.Log.Entry;
};
/** Emitted whenever a prompt is opened. */
userprompt: {
/** The prompt that was opened. */
userPrompt: UserPrompt;
};
/** Emitted whenever the frame emits `DOMContentLoaded` */
DOMContentLoaded: void;
/** Emitted whenever the frame emits `load` */
load: void;
}> {
#private;
static from(userContext: UserContext, parent: BrowsingContext | undefined, id: string, url: string): BrowsingContext;
readonly defaultRealm: WindowRealm;
readonly id: string;
readonly parent: BrowsingContext | undefined;
readonly userContext: UserContext;
private constructor();
get children(): Iterable<BrowsingContext>;
get closed(): boolean;
get disposed(): boolean;
get realms(): Iterable<WindowRealm>;
get top(): BrowsingContext;
get url(): string;
private dispose;
activate(): Promise<void>;
captureScreenshot(options?: CaptureScreenshotOptions): Promise<string>;
close(promptUnload?: boolean): Promise<void>;
traverseHistory(delta: number): Promise<void>;
navigate(url: string, wait?: Bidi.BrowsingContext.ReadinessState): Promise<Navigation>;
reload(options?: ReloadOptions): Promise<Navigation>;
print(options?: PrintOptions): Promise<string>;
handleUserPrompt(options?: HandleUserPromptOptions): Promise<void>;
setViewport(options?: SetViewportOptions): Promise<void>;
performActions(actions: Bidi.Input.SourceActions[]): Promise<void>;
releaseActions(): Promise<void>;
createWindowRealm(sandbox: string): WindowRealm;
addPreloadScript(functionDeclaration: string, options?: AddPreloadScriptOptions): Promise<string>;
removePreloadScript(script: string): Promise<void>;
[disposeSymbol](): void;
}
//# sourceMappingURL=BrowsingContext.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"BrowsingContext.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/BrowsingContext.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,376 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BrowsingContext = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
const Navigation_js_1 = require("./Navigation.js");
const Realm_js_1 = require("./Realm.js");
const Request_js_1 = require("./Request.js");
const UserPrompt_js_1 = require("./UserPrompt.js");
/**
* @internal
*/
let BrowsingContext = (() => {
var _a;
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
let _activate_decorators;
let _captureScreenshot_decorators;
let _close_decorators;
let _traverseHistory_decorators;
let _navigate_decorators;
let _reload_decorators;
let _print_decorators;
let _handleUserPrompt_decorators;
let _setViewport_decorators;
let _performActions_decorators;
let _releaseActions_decorators;
let _createWindowRealm_decorators;
let _addPreloadScript_decorators;
let _removePreloadScript_decorators;
return class BrowsingContext extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _activate_decorators, { kind: "method", name: "activate", static: false, private: false, access: { has: obj => "activate" in obj, get: obj => obj.activate }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _captureScreenshot_decorators, { kind: "method", name: "captureScreenshot", static: false, private: false, access: { has: obj => "captureScreenshot" in obj, get: obj => obj.captureScreenshot }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _close_decorators, { kind: "method", name: "close", static: false, private: false, access: { has: obj => "close" in obj, get: obj => obj.close }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _traverseHistory_decorators, { kind: "method", name: "traverseHistory", static: false, private: false, access: { has: obj => "traverseHistory" in obj, get: obj => obj.traverseHistory }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _navigate_decorators, { kind: "method", name: "navigate", static: false, private: false, access: { has: obj => "navigate" in obj, get: obj => obj.navigate }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _reload_decorators, { kind: "method", name: "reload", static: false, private: false, access: { has: obj => "reload" in obj, get: obj => obj.reload }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _print_decorators, { kind: "method", name: "print", static: false, private: false, access: { has: obj => "print" in obj, get: obj => obj.print }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _handleUserPrompt_decorators, { kind: "method", name: "handleUserPrompt", static: false, private: false, access: { has: obj => "handleUserPrompt" in obj, get: obj => obj.handleUserPrompt }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _setViewport_decorators, { kind: "method", name: "setViewport", static: false, private: false, access: { has: obj => "setViewport" in obj, get: obj => obj.setViewport }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _performActions_decorators, { kind: "method", name: "performActions", static: false, private: false, access: { has: obj => "performActions" in obj, get: obj => obj.performActions }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _releaseActions_decorators, { kind: "method", name: "releaseActions", static: false, private: false, access: { has: obj => "releaseActions" in obj, get: obj => obj.releaseActions }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _createWindowRealm_decorators, { kind: "method", name: "createWindowRealm", static: false, private: false, access: { has: obj => "createWindowRealm" in obj, get: obj => obj.createWindowRealm }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _addPreloadScript_decorators, { kind: "method", name: "addPreloadScript", static: false, private: false, access: { has: obj => "addPreloadScript" in obj, get: obj => obj.addPreloadScript }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _removePreloadScript_decorators, { kind: "method", name: "removePreloadScript", static: false, private: false, access: { has: obj => "removePreloadScript" in obj, get: obj => obj.removePreloadScript }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static from(userContext, parent, id, url) {
const browsingContext = new BrowsingContext(userContext, parent, id, url);
browsingContext.#initialize();
return browsingContext;
}
// keep-sorted start
#navigation = (__runInitializers(this, _instanceExtraInitializers), void 0);
#reason;
#url;
#children = new Map();
#disposables = new disposable_js_1.DisposableStack();
#realms = new Map();
#requests = new Map();
defaultRealm;
id;
parent;
userContext;
// keep-sorted end
constructor(context, parent, id, url) {
super();
// keep-sorted start
this.#url = url;
this.id = id;
this.parent = parent;
this.userContext = context;
// keep-sorted end
this.defaultRealm = Realm_js_1.WindowRealm.from(this);
}
#initialize() {
const userContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.userContext));
userContextEmitter.once('closed', ({ reason }) => {
this.dispose(`Browsing context already closed: ${reason}`);
});
const sessionEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#session));
sessionEmitter.on('browsingContext.contextCreated', info => {
if (info.parent !== this.id) {
return;
}
const browsingContext = BrowsingContext.from(this.userContext, this, info.context, info.url);
this.#children.set(info.context, browsingContext);
const browsingContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(browsingContext));
browsingContextEmitter.once('closed', () => {
browsingContextEmitter.removeAllListeners();
this.#children.delete(browsingContext.id);
});
this.emit('browsingcontext', { browsingContext });
});
sessionEmitter.on('browsingContext.contextDestroyed', info => {
if (info.context !== this.id) {
return;
}
this.dispose('Browsing context already closed.');
});
sessionEmitter.on('browsingContext.domContentLoaded', info => {
if (info.context !== this.id) {
return;
}
this.#url = info.url;
this.emit('DOMContentLoaded', undefined);
});
sessionEmitter.on('browsingContext.load', info => {
if (info.context !== this.id) {
return;
}
this.#url = info.url;
this.emit('load', undefined);
});
sessionEmitter.on('browsingContext.navigationStarted', info => {
if (info.context !== this.id) {
return;
}
this.#url = info.url;
this.#requests.clear();
// Note the navigation ID is null for this event.
this.#navigation = Navigation_js_1.Navigation.from(this);
const navigationEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#navigation));
for (const eventName of ['fragment', 'failed', 'aborted']) {
navigationEmitter.once(eventName, ({ url }) => {
navigationEmitter[disposable_js_1.disposeSymbol]();
this.#url = url;
});
}
this.emit('navigation', { navigation: this.#navigation });
});
sessionEmitter.on('network.beforeRequestSent', event => {
if (event.context !== this.id) {
return;
}
if (this.#requests.has(event.request.request)) {
return;
}
const request = Request_js_1.Request.from(this, event);
this.#requests.set(request.id, request);
this.emit('request', { request });
});
sessionEmitter.on('log.entryAdded', entry => {
if (entry.source.context !== this.id) {
return;
}
this.emit('log', { entry });
});
sessionEmitter.on('browsingContext.userPromptOpened', info => {
if (info.context !== this.id) {
return;
}
const userPrompt = UserPrompt_js_1.UserPrompt.from(this, info);
this.emit('userprompt', { userPrompt });
});
}
// keep-sorted start block=yes
get #session() {
return this.userContext.browser.session;
}
get children() {
return this.#children.values();
}
get closed() {
return this.#reason !== undefined;
}
get disposed() {
return this.closed;
}
get realms() {
return this.#realms.values();
}
get top() {
let context = this;
for (let { parent } = context; parent; { parent } = context) {
context = parent;
}
return context;
}
get url() {
return this.#url;
}
// keep-sorted end
dispose(reason) {
this.#reason = reason;
this[disposable_js_1.disposeSymbol]();
}
async activate() {
await this.#session.send('browsingContext.activate', {
context: this.id,
});
}
async captureScreenshot(options = {}) {
const { result: { data }, } = await this.#session.send('browsingContext.captureScreenshot', {
context: this.id,
...options,
});
return data;
}
async close(promptUnload) {
await Promise.all([...this.#children.values()].map(async (child) => {
await child.close(promptUnload);
}));
await this.#session.send('browsingContext.close', {
context: this.id,
promptUnload,
});
}
async traverseHistory(delta) {
await this.#session.send('browsingContext.traverseHistory', {
context: this.id,
delta,
});
}
async navigate(url, wait) {
await this.#session.send('browsingContext.navigate', {
context: this.id,
url,
wait,
});
return await new Promise(resolve => {
this.once('navigation', ({ navigation }) => {
resolve(navigation);
});
});
}
async reload(options = {}) {
await this.#session.send('browsingContext.reload', {
context: this.id,
...options,
});
return await new Promise(resolve => {
this.once('navigation', ({ navigation }) => {
resolve(navigation);
});
});
}
async print(options = {}) {
const { result: { data }, } = await this.#session.send('browsingContext.print', {
context: this.id,
...options,
});
return data;
}
async handleUserPrompt(options = {}) {
await this.#session.send('browsingContext.handleUserPrompt', {
context: this.id,
...options,
});
}
async setViewport(options = {}) {
await this.#session.send('browsingContext.setViewport', {
context: this.id,
...options,
});
}
async performActions(actions) {
await this.#session.send('input.performActions', {
context: this.id,
actions,
});
}
async releaseActions() {
await this.#session.send('input.releaseActions', {
context: this.id,
});
}
createWindowRealm(sandbox) {
return Realm_js_1.WindowRealm.from(this, sandbox);
}
async addPreloadScript(functionDeclaration, options = {}) {
return await this.userContext.browser.addPreloadScript(functionDeclaration, {
...options,
contexts: [this, ...(options.contexts ?? [])],
});
}
async removePreloadScript(script) {
await this.userContext.browser.removePreloadScript(script);
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], _activate_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _captureScreenshot_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _close_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _traverseHistory_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _navigate_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _reload_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _print_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _handleUserPrompt_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _setViewport_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _performActions_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _releaseActions_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _createWindowRealm_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _addPreloadScript_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _removePreloadScript_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], disposable_js_1.disposeSymbol)]() {
this.#reason ??=
'Browsing context already closed, probably because the user context closed.';
this.emit('closed', { reason: this.#reason });
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.BrowsingContext = BrowsingContext;
//# sourceMappingURL=BrowsingContext.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,140 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import type { EventEmitter } from '../../common/EventEmitter.js';
/**
* @internal
*/
export interface Commands {
'script.evaluate': {
params: Bidi.Script.EvaluateParameters;
returnType: Bidi.Script.EvaluateResult;
};
'script.callFunction': {
params: Bidi.Script.CallFunctionParameters;
returnType: Bidi.Script.EvaluateResult;
};
'script.disown': {
params: Bidi.Script.DisownParameters;
returnType: Bidi.EmptyResult;
};
'script.addPreloadScript': {
params: Bidi.Script.AddPreloadScriptParameters;
returnType: Bidi.Script.AddPreloadScriptResult;
};
'script.removePreloadScript': {
params: Bidi.Script.RemovePreloadScriptParameters;
returnType: Bidi.EmptyResult;
};
'browser.close': {
params: Bidi.EmptyParams;
returnType: Bidi.EmptyResult;
};
'browser.createUserContext': {
params: Bidi.EmptyParams;
returnType: Bidi.Browser.CreateUserContextResult;
};
'browser.getUserContexts': {
params: Bidi.EmptyParams;
returnType: Bidi.Browser.GetUserContextsResult;
};
'browser.removeUserContext': {
params: {
userContext: Bidi.Browser.UserContext;
};
returnType: Bidi.Browser.RemoveUserContext;
};
'browsingContext.activate': {
params: Bidi.BrowsingContext.ActivateParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.create': {
params: Bidi.BrowsingContext.CreateParameters;
returnType: Bidi.BrowsingContext.CreateResult;
};
'browsingContext.close': {
params: Bidi.BrowsingContext.CloseParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.getTree': {
params: Bidi.BrowsingContext.GetTreeParameters;
returnType: Bidi.BrowsingContext.GetTreeResult;
};
'browsingContext.navigate': {
params: Bidi.BrowsingContext.NavigateParameters;
returnType: Bidi.BrowsingContext.NavigateResult;
};
'browsingContext.reload': {
params: Bidi.BrowsingContext.ReloadParameters;
returnType: Bidi.BrowsingContext.NavigateResult;
};
'browsingContext.print': {
params: Bidi.BrowsingContext.PrintParameters;
returnType: Bidi.BrowsingContext.PrintResult;
};
'browsingContext.captureScreenshot': {
params: Bidi.BrowsingContext.CaptureScreenshotParameters;
returnType: Bidi.BrowsingContext.CaptureScreenshotResult;
};
'browsingContext.handleUserPrompt': {
params: Bidi.BrowsingContext.HandleUserPromptParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.setViewport': {
params: Bidi.BrowsingContext.SetViewportParameters;
returnType: Bidi.EmptyResult;
};
'browsingContext.traverseHistory': {
params: Bidi.BrowsingContext.TraverseHistoryParameters;
returnType: Bidi.EmptyResult;
};
'input.performActions': {
params: Bidi.Input.PerformActionsParameters;
returnType: Bidi.EmptyResult;
};
'input.releaseActions': {
params: Bidi.Input.ReleaseActionsParameters;
returnType: Bidi.EmptyResult;
};
'session.end': {
params: Bidi.EmptyParams;
returnType: Bidi.EmptyResult;
};
'session.new': {
params: Bidi.Session.NewParameters;
returnType: Bidi.Session.NewResult;
};
'session.status': {
params: object;
returnType: Bidi.Session.StatusResult;
};
'session.subscribe': {
params: Bidi.Session.SubscriptionRequest;
returnType: Bidi.EmptyResult;
};
'session.unsubscribe': {
params: Bidi.Session.SubscriptionRequest;
returnType: Bidi.EmptyResult;
};
}
/**
* @internal
*/
export type BidiEvents = {
[K in Bidi.ChromiumBidi.Event['method']]: Extract<Bidi.ChromiumBidi.Event, {
method: K;
}>['params'];
};
/**
* @internal
*/
export interface Connection<Events extends BidiEvents = BidiEvents> extends EventEmitter<Events> {
send<T extends keyof Commands>(method: T, params: Commands[T]['params']): Promise<{
result: Commands[T]['returnType'];
}>;
pipeTo<Events extends BidiEvents>(emitter: EventEmitter<Events>): void;
}
//# sourceMappingURL=Connection.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/Connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,iBAAiB,EAAE;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACvC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;KACxC,CAAC;IACF,qBAAqB,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;QAC3C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;KACxC,CAAC;IACF,eAAe,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACrC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,yBAAyB,EAAE;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;KAChD,CAAC;IACF,4BAA4B,EAAE;QAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IAEF,eAAe,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;QACzB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IAEF,2BAA2B,EAAE;QAC3B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;QACzB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;KAClD,CAAC;IACF,yBAAyB,EAAE;QACzB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;QACzB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;KAChD,CAAC;IACF,2BAA2B,EAAE;QAC3B,MAAM,EAAE;YACN,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;SACvC,CAAC;QACF,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;KAC5C,CAAC;IAEF,0BAA0B,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAChD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,wBAAwB,EAAE;QACxB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;QAC9C,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;KAC/C,CAAC;IACF,uBAAuB,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QAC7C,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,yBAAyB,EAAE;QACzB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;KAChD,CAAC;IACF,0BAA0B,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAChD,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;KACjD,CAAC;IACF,wBAAwB,EAAE;QACxB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;QAC9C,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;KACjD,CAAC;IACF,uBAAuB,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QAC7C,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;KAC9C,CAAC;IACF,mCAAmC,EAAE;QACnC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC;QACzD,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;KAC1D,CAAC;IACF,kCAAkC,EAAE;QAClC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;QACxD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,6BAA6B,EAAE;QAC7B,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC;QACnD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,iCAAiC,EAAE;QACjC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC;QACvD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IAEF,sBAAsB,EAAE;QACtB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC;QAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,sBAAsB,EAAE;QACtB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC;QAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IAEF,aAAa,EAAE;QACb,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;QACzB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;KACpC,CAAC;IACF,gBAAgB,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;KACvC,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACzC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;IACF,qBAAqB,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACzC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;KACtB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAC/C,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB;QAAC,MAAM,EAAE,CAAC,CAAA;KAAC,CACZ,CAAC,QAAQ,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,UAAU,GAAG,UAAU,CAChE,SAAQ,YAAY,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAC3B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5B,OAAO,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;KAAC,CAAC,CAAC;IAGhD,MAAM,CAAC,MAAM,SAAS,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACxE"}

View File

@ -0,0 +1,8 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=Connection.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../../../../src/bidi/core/Connection.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}

View File

@ -0,0 +1,38 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import type { BrowsingContext } from './BrowsingContext.js';
import type { Request } from './Request.js';
/**
* @internal
*/
export interface NavigationInfo {
url: string;
timestamp: Date;
}
/**
* @internal
*/
export declare class Navigation extends EventEmitter<{
/** Emitted when navigation has a request associated with it. */
request: Request;
/** Emitted when fragment navigation occurred. */
fragment: NavigationInfo;
/** Emitted when navigation failed. */
failed: NavigationInfo;
/** Emitted when navigation was aborted. */
aborted: NavigationInfo;
}> {
#private;
static from(context: BrowsingContext): Navigation;
private constructor();
get disposed(): boolean;
get request(): Request | undefined;
private dispose;
[disposeSymbol](): void;
}
//# sourceMappingURL=Navigation.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Navigation.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/Navigation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAkB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,YAAY,CAAC;IAC3C,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,QAAQ,EAAE,cAAc,CAAC;IACzB,sCAAsC;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,2CAA2C;IAC3C,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;;IACA,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,UAAU;IAajD,OAAO;IA8EP,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAEjC;IAID,OAAO,CAAC,OAAO;IAIf,CAAC,aAAa,CAAC,IAAI,IAAI;CAIxB"}

View File

@ -0,0 +1,157 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Navigation = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const decorators_js_1 = require("../../util/decorators.js");
const Deferred_js_1 = require("../../util/Deferred.js");
const disposable_js_1 = require("../../util/disposable.js");
/**
* @internal
*/
let Navigation = (() => {
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
return class Navigation extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static from(context) {
const navigation = new Navigation(context);
navigation.#initialize();
return navigation;
}
// keep-sorted start
#request = (__runInitializers(this, _instanceExtraInitializers), void 0);
#browsingContext;
#disposables = new disposable_js_1.DisposableStack();
#id = new Deferred_js_1.Deferred();
// keep-sorted end
constructor(context) {
super();
// keep-sorted start
this.#browsingContext = context;
// keep-sorted end
}
#initialize() {
const browsingContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#browsingContext));
browsingContextEmitter.once('closed', () => {
this.emit('failed', {
url: this.#browsingContext.url,
timestamp: new Date(),
});
this.dispose();
});
this.#browsingContext.on('request', ({ request }) => {
if (request.navigation === this.#id.value()) {
this.#request = request;
this.emit('request', request);
}
});
const sessionEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#session));
// To get the navigation ID if any.
for (const eventName of [
'browsingContext.domContentLoaded',
'browsingContext.load',
]) {
sessionEmitter.on(eventName, info => {
if (info.context !== this.#browsingContext.id) {
return;
}
if (!info.navigation) {
return;
}
if (!this.#id.resolved()) {
this.#id.resolve(info.navigation);
}
});
}
for (const [eventName, event] of [
['browsingContext.fragmentNavigated', 'fragment'],
['browsingContext.navigationFailed', 'failed'],
['browsingContext.navigationAborted', 'aborted'],
]) {
sessionEmitter.on(eventName, info => {
if (info.context !== this.#browsingContext.id) {
return;
}
if (!info.navigation) {
return;
}
if (!this.#id.resolved()) {
this.#id.resolve(info.navigation);
}
if (this.#id.value() !== info.navigation) {
return;
}
this.emit(event, {
url: info.url,
timestamp: new Date(info.timestamp),
});
this.dispose();
});
}
}
// keep-sorted start block=yes
get #session() {
return this.#browsingContext.userContext.browser.session;
}
get disposed() {
return this.#disposables.disposed;
}
get request() {
return this.#request;
}
// keep-sorted end
dispose() {
this[disposable_js_1.disposeSymbol]();
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], disposable_js_1.disposeSymbol)]() {
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.Navigation = Navigation;
//# sourceMappingURL=Navigation.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Navigation.js","sourceRoot":"","sources":["../../../../../src/bidi/core/Navigation.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,86 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { DisposableStack, disposeSymbol } from '../../util/disposable.js';
import type { BrowsingContext } from './BrowsingContext.js';
import type { Session } from './Session.js';
/**
* @internal
*/
export type CallFunctionOptions = Omit<Bidi.Script.CallFunctionParameters, 'functionDeclaration' | 'awaitPromise' | 'target'>;
/**
* @internal
*/
export type EvaluateOptions = Omit<Bidi.Script.EvaluateParameters, 'expression' | 'awaitPromise' | 'target'>;
/**
* @internal
*/
export declare abstract class Realm extends EventEmitter<{
/** Emitted when the realm is destroyed. */
destroyed: {
reason: string;
};
/** Emitted when a dedicated worker is created in the realm. */
worker: DedicatedWorkerRealm;
/** Emitted when a shared worker is created in the realm. */
sharedworker: SharedWorkerRealm;
}> {
#private;
protected readonly disposables: DisposableStack;
readonly id: string;
readonly origin: string;
protected constructor(id: string, origin: string);
protected initialize(): void;
get disposed(): boolean;
protected abstract get session(): Session;
protected get target(): Bidi.Script.Target;
protected dispose(reason?: string): void;
disown(handles: string[]): Promise<void>;
callFunction(functionDeclaration: string, awaitPromise: boolean, options?: CallFunctionOptions): Promise<Bidi.Script.EvaluateResult>;
evaluate(expression: string, awaitPromise: boolean, options?: EvaluateOptions): Promise<Bidi.Script.EvaluateResult>;
[disposeSymbol](): void;
}
/**
* @internal
*/
export declare class WindowRealm extends Realm {
#private;
static from(context: BrowsingContext, sandbox?: string): WindowRealm;
readonly browsingContext: BrowsingContext;
readonly sandbox?: string;
private constructor();
initialize(): void;
get session(): Session;
get target(): Bidi.Script.Target;
}
/**
* @internal
*/
export type DedicatedWorkerOwnerRealm = DedicatedWorkerRealm | SharedWorkerRealm | WindowRealm;
/**
* @internal
*/
export declare class DedicatedWorkerRealm extends Realm {
#private;
static from(owner: DedicatedWorkerOwnerRealm, id: string, origin: string): DedicatedWorkerRealm;
readonly owners: Set<DedicatedWorkerOwnerRealm>;
private constructor();
initialize(): void;
get session(): Session;
}
/**
* @internal
*/
export declare class SharedWorkerRealm extends Realm {
#private;
static from(owners: [WindowRealm, ...WindowRealm[]], id: string, origin: string): SharedWorkerRealm;
readonly owners: Set<WindowRealm>;
private constructor();
initialize(): void;
get session(): Session;
}
//# sourceMappingURL=Realm.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Realm.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/Realm.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,297 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SharedWorkerRealm = exports.DedicatedWorkerRealm = exports.WindowRealm = exports.Realm = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
/**
* @internal
*/
let Realm = (() => {
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
let _disown_decorators;
let _callFunction_decorators;
let _evaluate_decorators;
return class Realm extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _disown_decorators, { kind: "method", name: "disown", static: false, private: false, access: { has: obj => "disown" in obj, get: obj => obj.disown }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _callFunction_decorators, { kind: "method", name: "callFunction", static: false, private: false, access: { has: obj => "callFunction" in obj, get: obj => obj.callFunction }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _evaluate_decorators, { kind: "method", name: "evaluate", static: false, private: false, access: { has: obj => "evaluate" in obj, get: obj => obj.evaluate }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
// keep-sorted start
#reason = (__runInitializers(this, _instanceExtraInitializers), void 0);
disposables = new disposable_js_1.DisposableStack();
id;
origin;
// keep-sorted end
constructor(id, origin) {
super();
// keep-sorted start
this.id = id;
this.origin = origin;
// keep-sorted end
}
initialize() {
const sessionEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(this.session));
sessionEmitter.on('script.realmDestroyed', info => {
if (info.realm !== this.id) {
return;
}
this.dispose('Realm already destroyed.');
});
}
// keep-sorted start block=yes
get disposed() {
return this.#reason !== undefined;
}
get target() {
return { realm: this.id };
}
// keep-sorted end
dispose(reason) {
this.#reason = reason;
this[disposable_js_1.disposeSymbol]();
}
async disown(handles) {
await this.session.send('script.disown', {
target: this.target,
handles,
});
}
async callFunction(functionDeclaration, awaitPromise, options = {}) {
const { result } = await this.session.send('script.callFunction', {
functionDeclaration,
awaitPromise,
target: this.target,
...options,
});
return result;
}
async evaluate(expression, awaitPromise, options = {}) {
const { result } = await this.session.send('script.evaluate', {
expression,
awaitPromise,
target: this.target,
...options,
});
return result;
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], _disown_decorators = [(0, decorators_js_1.throwIfDisposed)(realm => {
// SAFETY: Disposal implies this exists.
return realm.#reason;
})], _callFunction_decorators = [(0, decorators_js_1.throwIfDisposed)(realm => {
// SAFETY: Disposal implies this exists.
return realm.#reason;
})], _evaluate_decorators = [(0, decorators_js_1.throwIfDisposed)(realm => {
// SAFETY: Disposal implies this exists.
return realm.#reason;
})], disposable_js_1.disposeSymbol)]() {
this.#reason ??=
'Realm already destroyed, probably because all associated browsing contexts closed.';
this.emit('destroyed', { reason: this.#reason });
this.disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.Realm = Realm;
/**
* @internal
*/
class WindowRealm extends Realm {
static from(context, sandbox) {
const realm = new WindowRealm(context, sandbox);
realm.initialize();
return realm;
}
// keep-sorted start
browsingContext;
sandbox;
// keep-sorted end
#workers = {
dedicated: new Map(),
shared: new Map(),
};
constructor(context, sandbox) {
super('', '');
// keep-sorted start
this.browsingContext = context;
this.sandbox = sandbox;
// keep-sorted end
}
initialize() {
super.initialize();
const sessionEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(this.session));
sessionEmitter.on('script.realmCreated', info => {
if (info.type !== 'window') {
return;
}
this.id = info.realm;
this.origin = info.origin;
});
sessionEmitter.on('script.realmCreated', info => {
if (info.type !== 'dedicated-worker') {
return;
}
if (!info.owners.includes(this.id)) {
return;
}
const realm = DedicatedWorkerRealm.from(this, info.realm, info.origin);
this.#workers.dedicated.set(realm.id, realm);
const realmEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(realm));
realmEmitter.once('destroyed', () => {
realmEmitter.removeAllListeners();
this.#workers.dedicated.delete(realm.id);
});
this.emit('worker', realm);
});
this.browsingContext.userContext.browser.on('sharedworker', ({ realm }) => {
if (!realm.owners.has(this)) {
return;
}
this.#workers.shared.set(realm.id, realm);
const realmEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(realm));
realmEmitter.once('destroyed', () => {
realmEmitter.removeAllListeners();
this.#workers.shared.delete(realm.id);
});
this.emit('sharedworker', realm);
});
}
get session() {
return this.browsingContext.userContext.browser.session;
}
get target() {
return { context: this.browsingContext.id, sandbox: this.sandbox };
}
}
exports.WindowRealm = WindowRealm;
/**
* @internal
*/
class DedicatedWorkerRealm extends Realm {
static from(owner, id, origin) {
const realm = new DedicatedWorkerRealm(owner, id, origin);
realm.initialize();
return realm;
}
// keep-sorted start
#workers = new Map();
owners;
// keep-sorted end
constructor(owner, id, origin) {
super(id, origin);
this.owners = new Set([owner]);
}
initialize() {
super.initialize();
const sessionEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(this.session));
sessionEmitter.on('script.realmCreated', info => {
if (info.type !== 'dedicated-worker') {
return;
}
if (!info.owners.includes(this.id)) {
return;
}
const realm = DedicatedWorkerRealm.from(this, info.realm, info.origin);
this.#workers.set(realm.id, realm);
const realmEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(realm));
realmEmitter.once('destroyed', () => {
this.#workers.delete(realm.id);
});
this.emit('worker', realm);
});
}
get session() {
// SAFETY: At least one owner will exist.
return this.owners.values().next().value.session;
}
}
exports.DedicatedWorkerRealm = DedicatedWorkerRealm;
/**
* @internal
*/
class SharedWorkerRealm extends Realm {
static from(owners, id, origin) {
const realm = new SharedWorkerRealm(owners, id, origin);
realm.initialize();
return realm;
}
// keep-sorted start
#workers = new Map();
owners;
// keep-sorted end
constructor(owners, id, origin) {
super(id, origin);
this.owners = new Set(owners);
}
initialize() {
super.initialize();
const sessionEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(this.session));
sessionEmitter.on('script.realmCreated', info => {
if (info.type !== 'dedicated-worker') {
return;
}
if (!info.owners.includes(this.id)) {
return;
}
const realm = DedicatedWorkerRealm.from(this, info.realm, info.origin);
this.#workers.set(realm.id, realm);
const realmEmitter = this.disposables.use(new EventEmitter_js_1.EventEmitter(realm));
realmEmitter.once('destroyed', () => {
this.#workers.delete(realm.id);
});
this.emit('worker', realm);
});
}
get session() {
// SAFETY: At least one owner will exist.
return this.owners.values().next().value.session;
}
}
exports.SharedWorkerRealm = SharedWorkerRealm;
//# sourceMappingURL=Realm.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,37 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import type { BrowsingContext } from './BrowsingContext.js';
/**
* @internal
*/
export declare class Request extends EventEmitter<{
/** Emitted when the request is redirected. */
redirect: Request;
/** Emitted when the request succeeds. */
success: Bidi.Network.ResponseData;
/** Emitted when the request fails. */
error: string;
}> {
#private;
static from(browsingContext: BrowsingContext, event: Bidi.Network.BeforeRequestSentParameters): Request;
private constructor();
get disposed(): boolean;
get error(): string | undefined;
get headers(): Bidi.Network.Header[];
get id(): string;
get initiator(): Bidi.Network.Initiator;
get method(): string;
get navigation(): string | undefined;
get redirect(): Request | undefined;
get response(): Bidi.Network.ResponseData | undefined;
get url(): string;
private dispose;
[disposeSymbol](): void;
}
//# sourceMappingURL=Request.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/Request.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAkB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,OAAQ,SAAQ,YAAY,CAAC;IACxC,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IACnC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;;IACA,MAAM,CAAC,IAAI,CACT,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,GAC9C,OAAO;IAeV,OAAO;IA+DP,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IACD,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAEnC;IACD,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAEtC;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IACD,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAElC;IACD,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAEpD;IACD,IAAI,GAAG,IAAI,MAAM,CAEhB;IAID,OAAO,CAAC,OAAO;IAIf,CAAC,aAAa,CAAC,IAAI,IAAI;CAIxB"}

View File

@ -0,0 +1,167 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Request = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
/**
* @internal
*/
let Request = (() => {
var _a;
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
return class Request extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static from(browsingContext, event) {
const request = new Request(browsingContext, event);
request.#initialize();
return request;
}
// keep-sorted start
#error = (__runInitializers(this, _instanceExtraInitializers), void 0);
#redirect;
#response;
#browsingContext;
#disposables = new disposable_js_1.DisposableStack();
#event;
// keep-sorted end
constructor(browsingContext, event) {
super();
// keep-sorted start
this.#browsingContext = browsingContext;
this.#event = event;
// keep-sorted end
}
#initialize() {
const browsingContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#browsingContext));
browsingContextEmitter.once('closed', ({ reason }) => {
this.#error = reason;
this.emit('error', this.#error);
this.dispose();
});
const sessionEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#session));
sessionEmitter.on('network.beforeRequestSent', event => {
if (event.context !== this.#browsingContext.id) {
return;
}
if (event.request.request !== this.id) {
return;
}
this.#redirect = Request.from(this.#browsingContext, event);
this.emit('redirect', this.#redirect);
this.dispose();
});
sessionEmitter.on('network.fetchError', event => {
if (event.context !== this.#browsingContext.id) {
return;
}
if (event.request.request !== this.id) {
return;
}
this.#error = event.errorText;
this.emit('error', this.#error);
this.dispose();
});
sessionEmitter.on('network.responseCompleted', event => {
if (event.context !== this.#browsingContext.id) {
return;
}
if (event.request.request !== this.id) {
return;
}
this.#response = event.response;
this.emit('success', this.#response);
this.dispose();
});
}
// keep-sorted start block=yes
get #session() {
return this.#browsingContext.userContext.browser.session;
}
get disposed() {
return this.#disposables.disposed;
}
get error() {
return this.#error;
}
get headers() {
return this.#event.request.headers;
}
get id() {
return this.#event.request.request;
}
get initiator() {
return this.#event.initiator;
}
get method() {
return this.#event.request.method;
}
get navigation() {
return this.#event.navigation ?? undefined;
}
get redirect() {
return this.redirect;
}
get response() {
return this.#response;
}
get url() {
return this.#event.request.url;
}
// keep-sorted end
dispose() {
this[disposable_js_1.disposeSymbol]();
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], disposable_js_1.disposeSymbol)]() {
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.Request = Request;
//# sourceMappingURL=Request.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Request.js","sourceRoot":"","sources":["../../../../../src/bidi/core/Request.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,48 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import { Browser } from './Browser.js';
import type { BidiEvents, Commands, Connection } from './Connection.js';
/**
* @internal
*/
export declare class Session extends EventEmitter<BidiEvents & {
ended: {
reason: string;
};
}> implements Connection<BidiEvents & {
ended: {
reason: string;
};
}> {
#private;
static from(connection: Connection, capabilities: Bidi.Session.CapabilitiesRequest): Promise<Session>;
readonly browser: Browser;
readonly connection: Connection;
private constructor();
get capabilities(): Bidi.Session.NewResult['capabilities'];
get disposed(): boolean;
get ended(): boolean;
get id(): string;
private dispose;
pipeTo<Events extends BidiEvents>(emitter: EventEmitter<Events>): void;
/**
* Currently, there is a 1:1 relationship between the session and the
* session. In the future, we might support multiple sessions and in that
* case we always needs to make sure that the session for the right session
* object is used, so we implement this method here, although it's not defined
* in the spec.
*/
send<T extends keyof Commands>(method: T, params: Commands[T]['params']): Promise<{
result: Commands[T]['returnType'];
}>;
subscribe(events: string[]): Promise<void>;
end(): Promise<void>;
[disposeSymbol](): void;
}
//# sourceMappingURL=Session.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/Session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAkB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAKtE;;GAEG;AACH,qBAAa,OACX,SAAQ,YAAY,CAAC,UAAU,GAAG;IAAC,KAAK,EAAE;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAA;CAAC,CAC3D,YAAW,UAAU,CAAC,UAAU,GAAG;IAAC,KAAK,EAAE;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAA;CAAC,CAAC;;WAEhD,IAAI,CACf,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAC7C,OAAO,CAAC,OAAO,CAAC;IAqDnB,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAGhC,OAAO;IAqBP,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAEzD;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,KAAK,IAAI,OAAO,CAEnB;IACD,IAAI,EAAE,IAAI,MAAM,CAEf;IAID,OAAO,CAAC,OAAO;IAKf,MAAM,CAAC,MAAM,SAAS,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAItE;;;;;;OAMG;IAKG,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EACjC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5B,OAAO,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;KAAC,CAAC;IAQzC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1B,CAAC,aAAa,CAAC,IAAI,IAAI;CAQxB"}

View File

@ -0,0 +1,199 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Session = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const util_js_1 = require("../../common/util.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
const Browser_js_1 = require("./Browser.js");
// TODO: Once Chrome supports session.status properly, uncomment this block.
// const MAX_RETRIES = 5;
/**
* @internal
*/
let Session = (() => {
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
let _send_decorators;
let _subscribe_decorators;
let _end_decorators;
return class Session extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _send_decorators, { kind: "method", name: "send", static: false, private: false, access: { has: obj => "send" in obj, get: obj => obj.send }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _subscribe_decorators, { kind: "method", name: "subscribe", static: false, private: false, access: { has: obj => "subscribe" in obj, get: obj => obj.subscribe }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _end_decorators, { kind: "method", name: "end", static: false, private: false, access: { has: obj => "end" in obj, get: obj => obj.end }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static async from(connection, capabilities) {
// Wait until the session is ready.
//
// TODO: Once Chrome supports session.status properly, uncomment this block
// and remove `getBiDiConnection` in BrowserConnector.
// let status = {message: '', ready: false};
// for (let i = 0; i < MAX_RETRIES; ++i) {
// status = (await connection.send('session.status', {})).result;
// if (status.ready) {
// break;
// }
// // Backoff a little bit each time.
// await new Promise(resolve => {
// return setTimeout(resolve, (1 << i) * 100);
// });
// }
// if (!status.ready) {
// throw new Error(status.message);
// }
let result;
try {
result = (await connection.send('session.new', {
capabilities,
})).result;
}
catch (err) {
// Chrome does not support session.new.
(0, util_js_1.debugError)(err);
result = {
sessionId: '',
capabilities: {
acceptInsecureCerts: false,
browserName: '',
browserVersion: '',
platformName: '',
setWindowRect: false,
webSocketUrl: '',
},
};
}
const session = new Session(connection, result);
await session.#initialize();
return session;
}
// keep-sorted start
#reason = (__runInitializers(this, _instanceExtraInitializers), void 0);
#disposables = new disposable_js_1.DisposableStack();
#info;
browser;
connection;
// keep-sorted end
constructor(connection, info) {
super();
// keep-sorted start
this.#info = info;
this.connection = connection;
// keep-sorted end
}
async #initialize() {
this.connection.pipeTo(this);
// SAFETY: We use `any` to allow assignment of the readonly property.
this.browser = await Browser_js_1.Browser.from(this);
const browserEmitter = this.#disposables.use(this.browser);
browserEmitter.once('closed', ({ reason }) => {
this.dispose(reason);
});
}
// keep-sorted start block=yes
get capabilities() {
return this.#info.capabilities;
}
get disposed() {
return this.ended;
}
get ended() {
return this.#reason !== undefined;
}
get id() {
return this.#info.sessionId;
}
// keep-sorted end
dispose(reason) {
this.#reason = reason;
this[disposable_js_1.disposeSymbol]();
}
pipeTo(emitter) {
this.connection.pipeTo(emitter);
}
/**
* Currently, there is a 1:1 relationship between the session and the
* session. In the future, we might support multiple sessions and in that
* case we always needs to make sure that the session for the right session
* object is used, so we implement this method here, although it's not defined
* in the spec.
*/
async send(method, params) {
return await this.connection.send(method, params);
}
async subscribe(events) {
await this.send('session.subscribe', {
events,
});
}
async end() {
try {
await this.send('session.end', {});
}
finally {
this.dispose(`Session already ended.`);
}
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], _send_decorators = [(0, decorators_js_1.throwIfDisposed)(session => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return session.#reason;
})], _subscribe_decorators = [(0, decorators_js_1.throwIfDisposed)(session => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return session.#reason;
})], _end_decorators = [(0, decorators_js_1.throwIfDisposed)(session => {
// SAFETY: By definition of `disposed`, `#reason` is defined.
return session.#reason;
})], disposable_js_1.disposeSymbol)]() {
this.#reason ??=
'Session already destroyed, probably because the connection broke.';
this.emit('ended', { reason: this.#reason });
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.Session = Session;
//# sourceMappingURL=Session.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../../../../../src/bidi/core/Session.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,50 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import type { Browser } from './Browser.js';
import { BrowsingContext } from './BrowsingContext.js';
/**
* @internal
*/
export type CreateBrowsingContextOptions = Omit<Bidi.BrowsingContext.CreateParameters, 'type' | 'referenceContext'> & {
referenceContext?: BrowsingContext;
};
/**
* @internal
*/
export declare class UserContext extends EventEmitter<{
/**
* Emitted when a new browsing context is created.
*/
browsingcontext: {
/** The new browsing context. */
browsingContext: BrowsingContext;
};
/**
* Emitted when the user context is closed.
*/
closed: {
/** The reason the user context was closed. */
reason: string;
};
}> {
#private;
static DEFAULT: string;
static create(browser: Browser, id: string): UserContext;
readonly browser: Browser;
private constructor();
get browsingContexts(): Iterable<BrowsingContext>;
get closed(): boolean;
get disposed(): boolean;
get id(): string;
private dispose;
createBrowsingContext(type: Bidi.BrowsingContext.CreateType, options?: CreateBrowsingContextOptions): Promise<BrowsingContext>;
remove(): Promise<void>;
[disposeSymbol](): void;
}
//# sourceMappingURL=UserContext.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"UserContext.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/UserContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAkB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,IAAI,CAAC,eAAe,CAAC,gBAAgB,EACrC,MAAM,GAAG,kBAAkB,CAC5B,GAAG;IACF,gBAAgB,CAAC,EAAE,eAAe,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAC5C;;OAEG;IACH,eAAe,EAAE;QACf,gCAAgC;QAChC,eAAe,EAAE,eAAe,CAAC;KAClC,CAAC;IACF;;OAEG;IACH,MAAM,EAAE;QACN,8CAA8C;QAC9C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;;IACA,MAAM,CAAC,OAAO,SAAa;IAE3B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW;IAYxD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,OAAO;IAqDP,IAAI,gBAAgB,IAAI,QAAQ,CAAC,eAAe,CAAC,CAEhD;IACD,IAAI,MAAM,IAAI,OAAO,CAEpB;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,EAAE,IAAI,MAAM,CAEf;IAID,OAAO,CAAC,OAAO;IAST,qBAAqB,CACzB,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EACrC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,eAAe,CAAC;IAwBrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,CAAC,aAAa,CAAC,IAAI,IAAI;CAQxB"}

View File

@ -0,0 +1,168 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserContext = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const assert_js_1 = require("../../util/assert.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
const BrowsingContext_js_1 = require("./BrowsingContext.js");
/**
* @internal
*/
let UserContext = (() => {
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
let _createBrowsingContext_decorators;
let _remove_decorators;
return class UserContext extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _createBrowsingContext_decorators, { kind: "method", name: "createBrowsingContext", static: false, private: false, access: { has: obj => "createBrowsingContext" in obj, get: obj => obj.createBrowsingContext }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _remove_decorators, { kind: "method", name: "remove", static: false, private: false, access: { has: obj => "remove" in obj, get: obj => obj.remove }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static DEFAULT = 'default';
static create(browser, id) {
const context = new UserContext(browser, id);
context.#initialize();
return context;
}
// keep-sorted start
#reason = (__runInitializers(this, _instanceExtraInitializers), void 0);
// Note these are only top-level contexts.
#browsingContexts = new Map();
#disposables = new disposable_js_1.DisposableStack();
#id;
browser;
// keep-sorted end
constructor(browser, id) {
super();
// keep-sorted start
this.#id = id;
this.browser = browser;
// keep-sorted end
}
#initialize() {
const browserEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.browser));
browserEmitter.once('closed', ({ reason }) => {
this.dispose(`User context already closed: ${reason}`);
});
const sessionEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#session));
sessionEmitter.on('browsingContext.contextCreated', info => {
if (info.parent) {
return;
}
if (info.userContext !== this.#id) {
return;
}
const browsingContext = BrowsingContext_js_1.BrowsingContext.from(this, undefined, info.context, info.url);
this.#browsingContexts.set(browsingContext.id, browsingContext);
const browsingContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(browsingContext));
browsingContextEmitter.on('closed', () => {
browsingContextEmitter.removeAllListeners();
this.#browsingContexts.delete(browsingContext.id);
});
this.emit('browsingcontext', { browsingContext });
});
}
// keep-sorted start block=yes
get #session() {
return this.browser.session;
}
get browsingContexts() {
return this.#browsingContexts.values();
}
get closed() {
return this.#reason !== undefined;
}
get disposed() {
return this.closed;
}
get id() {
return this.#id;
}
// keep-sorted end
dispose(reason) {
this.#reason = reason;
this[disposable_js_1.disposeSymbol]();
}
async createBrowsingContext(type, options = {}) {
const { result: { context: contextId }, } = await this.#session.send('browsingContext.create', {
type,
...options,
referenceContext: options.referenceContext?.id,
userContext: this.#id,
});
const browsingContext = this.#browsingContexts.get(contextId);
(0, assert_js_1.assert)(browsingContext, 'The WebDriver BiDi implementation is failing to create a browsing context correctly.');
// We use an array to avoid the promise from being awaited.
return browsingContext;
}
async remove() {
try {
await this.#session.send('browser.removeUserContext', {
userContext: this.#id,
});
}
finally {
this.dispose('User context already closed.');
}
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], _createBrowsingContext_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], _remove_decorators = [(0, decorators_js_1.throwIfDisposed)(context => {
// SAFETY: Disposal implies this exists.
return context.#reason;
})], disposable_js_1.disposeSymbol)]() {
this.#reason ??=
'User context already closed, probably because the browser disconnected/closed.';
this.emit('closed', { reason: this.#reason });
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.UserContext = UserContext;
//# sourceMappingURL=UserContext.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"UserContext.js","sourceRoot":"","sources":["../../../../../src/bidi/core/UserContext.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,43 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
import { EventEmitter } from '../../common/EventEmitter.js';
import { disposeSymbol } from '../../util/disposable.js';
import type { BrowsingContext } from './BrowsingContext.js';
/**
* @internal
*/
export type HandleOptions = Omit<Bidi.BrowsingContext.HandleUserPromptParameters, 'context'>;
/**
* @internal
*/
export type UserPromptResult = Omit<Bidi.BrowsingContext.UserPromptClosedParameters, 'context'>;
/**
* @internal
*/
export declare class UserPrompt extends EventEmitter<{
/** Emitted when the user prompt is handled. */
handled: UserPromptResult;
/** Emitted when the user prompt is closed. */
closed: {
/** The reason the user prompt was closed. */
reason: string;
};
}> {
#private;
static from(browsingContext: BrowsingContext, info: Bidi.BrowsingContext.UserPromptOpenedParameters): UserPrompt;
readonly browsingContext: BrowsingContext;
readonly info: Bidi.BrowsingContext.UserPromptOpenedParameters;
private constructor();
get closed(): boolean;
get disposed(): boolean;
get handled(): boolean;
get result(): UserPromptResult | undefined;
private dispose;
handle(options?: HandleOptions): Promise<UserPromptResult>;
[disposeSymbol](): void;
}
//# sourceMappingURL=UserPrompt.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"UserPrompt.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/UserPrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,IAAI,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAkB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,IAAI,CAAC,eAAe,CAAC,0BAA0B,EAC/C,SAAS,CACV,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,IAAI,CAAC,eAAe,CAAC,0BAA0B,EAC/C,SAAS,CACV,CAAC;AAEF;;GAEG;AACH,qBAAa,UAAW,SAAQ,YAAY,CAAC;IAC3C,+CAA+C;IAC/C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,8CAA8C;IAC9C,MAAM,EAAE;QACN,6CAA6C;QAC7C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;;IACA,MAAM,CAAC,IAAI,CACT,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,0BAA0B,GACpD,UAAU;IAUb,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;IAG/D,OAAO;IAoCP,IAAI,MAAM,IAAI,OAAO,CAEpB;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,MAAM,IAAI,gBAAgB,GAAG,SAAS,CAEzC;IAID,OAAO,CAAC,OAAO;IAST,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASpE,CAAC,aAAa,CAAC,IAAI,IAAI;CAQxB"}

View File

@ -0,0 +1,137 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserPrompt = void 0;
const EventEmitter_js_1 = require("../../common/EventEmitter.js");
const decorators_js_1 = require("../../util/decorators.js");
const disposable_js_1 = require("../../util/disposable.js");
/**
* @internal
*/
let UserPrompt = (() => {
let _classSuper = EventEmitter_js_1.EventEmitter;
let _instanceExtraInitializers = [];
let _dispose_decorators;
let _handle_decorators;
return class UserPrompt extends _classSuper {
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(this, null, _dispose_decorators, { kind: "method", name: "dispose", static: false, private: false, access: { has: obj => "dispose" in obj, get: obj => obj.dispose }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _handle_decorators, { kind: "method", name: "handle", static: false, private: false, access: { has: obj => "handle" in obj, get: obj => obj.handle }, metadata: _metadata }, null, _instanceExtraInitializers);
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static from(browsingContext, info) {
const userPrompt = new UserPrompt(browsingContext, info);
userPrompt.#initialize();
return userPrompt;
}
// keep-sorted start
#reason = (__runInitializers(this, _instanceExtraInitializers), void 0);
#result;
#disposables = new disposable_js_1.DisposableStack();
browsingContext;
info;
// keep-sorted end
constructor(context, info) {
super();
// keep-sorted start
this.browsingContext = context;
this.info = info;
// keep-sorted end
}
#initialize() {
const browserContextEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.browsingContext));
browserContextEmitter.once('closed', ({ reason }) => {
this.dispose(`User prompt already closed: ${reason}`);
});
const sessionEmitter = this.#disposables.use(new EventEmitter_js_1.EventEmitter(this.#session));
sessionEmitter.on('browsingContext.userPromptClosed', parameters => {
if (parameters.context !== this.browsingContext.id) {
return;
}
this.#result = parameters;
this.emit('handled', parameters);
this.dispose('User prompt already handled.');
});
}
// keep-sorted start block=yes
get #session() {
return this.browsingContext.userContext.browser.session;
}
get closed() {
return this.#reason !== undefined;
}
get disposed() {
return this.closed;
}
get handled() {
return this.#result !== undefined;
}
get result() {
return this.#result;
}
// keep-sorted end
dispose(reason) {
this.#reason = reason;
this[disposable_js_1.disposeSymbol]();
}
async handle(options = {}) {
await this.#session.send('browsingContext.handleUserPrompt', {
...options,
context: this.info.context,
});
// SAFETY: `handled` is triggered before the above promise resolved.
return this.#result;
}
[(_dispose_decorators = [decorators_js_1.inertIfDisposed], _handle_decorators = [(0, decorators_js_1.throwIfDisposed)(prompt => {
// SAFETY: Disposal implies this exists.
return prompt.#reason;
})], disposable_js_1.disposeSymbol)]() {
this.#reason ??=
'User prompt already closed, probably because the associated browsing context was destroyed.';
this.emit('closed', { reason: this.#reason });
this.#disposables.dispose();
super[disposable_js_1.disposeSymbol]();
}
};
})();
exports.UserPrompt = UserPrompt;
//# sourceMappingURL=UserPrompt.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"UserPrompt.js","sourceRoot":"","sources":["../../../../../src/bidi/core/UserPrompt.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,15 @@
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
export * from './Browser.js';
export * from './BrowsingContext.js';
export * from './Connection.js';
export * from './Navigation.js';
export * from './Realm.js';
export * from './Request.js';
export * from './Session.js';
export * from './UserContext.js';
export * from './UserPrompt.js';
//# sourceMappingURL=core.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../src/bidi/core/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}

View File

@ -0,0 +1,31 @@
"use strict";
/**
* @license
* Copyright 2024 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./Browser.js"), exports);
__exportStar(require("./BrowsingContext.js"), exports);
__exportStar(require("./Connection.js"), exports);
__exportStar(require("./Navigation.js"), exports);
__exportStar(require("./Realm.js"), exports);
__exportStar(require("./Request.js"), exports);
__exportStar(require("./Session.js"), exports);
__exportStar(require("./UserContext.js"), exports);
__exportStar(require("./UserPrompt.js"), exports);
//# sourceMappingURL=core.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/bidi/core/core.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,uDAAqC;AACrC,kDAAgC;AAChC,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,mDAAiC;AACjC,kDAAgC"}

View File

@ -20,7 +20,7 @@ async function releaseReference(client, remoteReference) {
target: client.target,
handles: [remoteReference.handle],
})
.catch((error) => {
.catch(error => {
// Exceptions might happen in case of a page been navigated or closed.
// Swallow these since they are harmless and we don't leak anything in this case.
(0, util_js_1.debugError)(error);

View File

@ -1 +1 @@
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/bidi/util.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,+CAA2D;AAE3D,uDAAmD;AAGnD;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAiB,EACjB,eAA4C;IAE5C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,MAAM,MAAM,CAAC,UAAU;SACpB,IAAI,CAAC,eAAe,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC;KAClC,CAAC;SACD,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;QACpB,sEAAsE;QACtE,iFAAiF;QACjF,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAjBD,4CAiBC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,OAAqC;IAErC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,kCAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAElB,mDAAmD;IACnD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACpE,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,IACE,sBAAY,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;gBACtC,KAAK,CAAC,GAAG,KAAK,sBAAY,CAAC,YAAY,EACvC,CAAC;gBACD,MAAM,GAAG,GAAG,sBAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1C,UAAU,CAAC,OAAO,CAChB,UAAU,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,KAC9C,GAAG,CAAC,YACN,OAAO,GAAG,CAAC,UAAU,iBAAiB,KAAK,CAAC,UAAU,IACpD,KAAK,CAAC,YACR,GAAG,CACJ,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CACb,UAAU,KAAK,CAAC,YAAY,IAAI,aAAa,KAAK,KAAK,CAAC,GAAG,IACzD,KAAK,CAAC,UACR,IAAI,KAAK,CAAC,YAAY,GAAG,CAC1B,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC/C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AA1CD,sDA0CC"}
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/bidi/util.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,+CAA2D;AAE3D,uDAAmD;AAGnD;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAiB,EACjB,eAA4C;IAE5C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,MAAM,MAAM,CAAC,UAAU;SACpB,IAAI,CAAC,eAAe,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC;KAClC,CAAC;SACD,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,sEAAsE;QACtE,iFAAiF;QACjF,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAjBD,4CAiBC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,OAAqC;IAErC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,kCAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAElB,mDAAmD;IACnD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACpE,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,IACE,sBAAY,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;gBACtC,KAAK,CAAC,GAAG,KAAK,sBAAY,CAAC,YAAY,EACvC,CAAC;gBACD,MAAM,GAAG,GAAG,sBAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1C,UAAU,CAAC,OAAO,CAChB,UAAU,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,KAC9C,GAAG,CAAC,YACN,OAAO,GAAG,CAAC,UAAU,iBAAiB,KAAK,CAAC,UAAU,IACpD,KAAK,CAAC,YACR,GAAG,CACJ,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CACb,UAAU,KAAK,CAAC,YAAY,IAAI,aAAa,KAAK,KAAK,CAAC,GAAG,IACzD,KAAK,CAAC,UACR,IAAI,KAAK,CAAC,YAAY,GAAG,CAC1B,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC/C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AA1CD,sDA0CC"}

View File

@ -5,6 +5,7 @@
*/
/// <reference types="node" />
import type { ChildProcess } from 'child_process';
import type { DebugInfo } from '../api/Browser.js';
import { Browser as BrowserBase, type BrowserCloseCallback, type BrowserContextOptions, type IsPageTargetCallback, type Permission, type TargetFilterCallback, type WaitForTargetOptions } from '../api/Browser.js';
import { BrowserContext } from '../api/BrowserContext.js';
import type { Page } from '../api/Page.js';
@ -40,6 +41,7 @@ export declare class CdpBrowser extends BrowserBase {
close(): Promise<void>;
disconnect(): Promise<void>;
get connected(): boolean;
get debugInfo(): DebugInfo;
}
/**
* @internal

View File

@ -1 +1 @@
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/cdp/Browser.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Browser.d.ts","sourceRoot":"","sources":["../../../../src/cdp/Browser.ts"],"names":[],"mappings":"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"}

View File

@ -235,6 +235,11 @@ class CdpBrowser extends Browser_js_1.Browser {
#getVersion() {
return this.#connection.send('Browser.getVersion');
}
get debugInfo() {
return {
pendingProtocolErrors: this.#connection.getPendingProtocolErrors(),
};
}
}
exports.CdpBrowser = CdpBrowser;
/**

File diff suppressed because one or more lines are too long

View File

@ -58,5 +58,9 @@ export declare class CdpCDPSession extends CDPSession {
* Returns the session's id.
*/
id(): string;
/**
* @internal
*/
getPendingProtocolErrors(): Error[];
}
//# sourceMappingURL=CDPSession.d.ts.map

View File

@ -1 +1 @@
{"version":3,"file":"CDPSession.d.ts","sourceRoot":"","sources":["../../../../src/cdp/CDPSession.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6CAA6C,CAAC;AAEjF,OAAO,EACL,KAAK,SAAS,EACd,UAAU,EAEV,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C;;GAEG;AAEH,qBAAa,aAAc,SAAQ,UAAU;;IAQ3C;;OAEG;gBAED,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,SAAS;IASrC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAInC;;;;OAIG;IACH,OAAO,IAAI,SAAS;IAKX,UAAU,IAAI,UAAU,GAAG,SAAS;IAIpC,aAAa,IAAI,UAAU,GAAG,SAAS;IASvC,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,EACpD,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAiBrD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,SAAS,CAAC;QACxB,MAAM,EAAE,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC;QACnC,KAAK,EAAE;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,GAAG,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC;QAClD,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,GAAG,IAAI;IAiBR;;;OAGG;IACY,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACM,EAAE,IAAI,MAAM;CAGtB"}
{"version":3,"file":"CDPSession.d.ts","sourceRoot":"","sources":["../../../../src/cdp/CDPSession.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6CAA6C,CAAC;AAEjF,OAAO,EACL,KAAK,SAAS,EACd,UAAU,EAEV,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C;;GAEG;AAEH,qBAAa,aAAc,SAAQ,UAAU;;IAQ3C;;OAEG;gBAED,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,SAAS;IASrC;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAInC;;;;OAIG;IACH,OAAO,IAAI,SAAS;IAKX,UAAU,IAAI,UAAU,GAAG,SAAS;IAIpC,aAAa,IAAI,UAAU,GAAG,SAAS;IASvC,IAAI,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,QAAQ,EACpD,MAAM,EAAE,CAAC,EACT,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAiBrD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,SAAS,CAAC;QACxB,MAAM,EAAE,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC;QACnC,KAAK,EAAE;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,GAAG,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC;QAClD,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,GAAG,IAAI;IAiBR;;;OAGG;IACY,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACM,EAAE,IAAI,MAAM;IAIrB;;OAEG;IACH,wBAAwB,IAAI,KAAK,EAAE;CAGpC"}

View File

@ -108,6 +108,12 @@ class CdpCDPSession extends CDPSession_js_1.CDPSession {
id() {
return this.#sessionId;
}
/**
* @internal
*/
getPendingProtocolErrors() {
return this.#callbacks.getPendingProtocolErrors();
}
}
exports.CdpCDPSession = CdpCDPSession;
//# sourceMappingURL=CDPSession.js.map

Some files were not shown because too many files have changed in this diff Show More