@browserless.io/browserless 2.24.0-beta-4 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -1
- package/bin/browserless.js +1 -1
- package/build/browsers/browsers.playwright.d.ts +1 -0
- package/build/browsers/browsers.playwright.js +3 -0
- package/build/browsers/index.d.ts +2 -1
- package/build/browsers/index.js +28 -7
- package/build/http.d.ts +5 -0
- package/build/http.js +1 -0
- package/build/routes/chrome/http/content.post.body.json +35 -10
- package/build/routes/chrome/http/content.post.query.json +4 -0
- package/build/routes/chrome/http/download.post.query.json +4 -0
- package/build/routes/chrome/http/function.post.query.json +4 -0
- package/build/routes/chrome/http/pdf.post.body.json +35 -10
- package/build/routes/chrome/http/pdf.post.query.json +4 -0
- package/build/routes/chrome/http/performance.post.query.json +4 -0
- package/build/routes/chrome/http/scrape.post.body.json +35 -10
- package/build/routes/chrome/http/scrape.post.query.json +4 -0
- package/build/routes/chrome/http/scrape.post.response.json +26 -1
- package/build/routes/chrome/http/screenshot.post.body.json +35 -10
- package/build/routes/chrome/http/screenshot.post.query.json +4 -0
- package/build/routes/chrome/tests/kill-sessions.spec.d.ts +1 -0
- package/build/routes/chrome/tests/kill-sessions.spec.js +80 -0
- package/build/routes/chrome/ws/browser.query.json +4 -0
- package/build/routes/chrome/ws/cdp.query.json +4 -0
- package/build/routes/chrome/ws/page.query.json +4 -0
- package/build/routes/chrome/ws/playwright.query.json +4 -0
- package/build/routes/chromium/http/content.post.body.json +35 -10
- package/build/routes/chromium/http/content.post.query.json +4 -0
- package/build/routes/chromium/http/download.post.query.json +4 -0
- package/build/routes/chromium/http/function.post.query.json +4 -0
- package/build/routes/chromium/http/pdf.post.body.json +35 -10
- package/build/routes/chromium/http/pdf.post.query.json +4 -0
- package/build/routes/chromium/http/performance.post.query.json +4 -0
- package/build/routes/chromium/http/scrape.post.body.json +35 -10
- package/build/routes/chromium/http/scrape.post.query.json +4 -0
- package/build/routes/chromium/http/scrape.post.response.json +26 -1
- package/build/routes/chromium/http/screenshot.post.body.json +35 -10
- package/build/routes/chromium/http/screenshot.post.query.json +4 -0
- package/build/routes/chromium/tests/kill-sessions.spec.d.ts +1 -0
- package/build/routes/chromium/tests/kill-sessions.spec.js +80 -0
- package/build/routes/chromium/tests/websocket.spec.js +23 -0
- package/build/routes/chromium/ws/browser.query.json +4 -0
- package/build/routes/chromium/ws/cdp.query.json +4 -0
- package/build/routes/chromium/ws/page.query.json +4 -0
- package/build/routes/chromium/ws/playwright.query.json +4 -0
- package/build/routes/firefox/tests/kill-sessions.spec.d.ts +1 -0
- package/build/routes/firefox/tests/kill-sessions.spec.js +72 -0
- package/build/routes/firefox/ws/playwright.query.json +4 -0
- package/build/routes/management/http/kill.get.d.ts +21 -0
- package/build/routes/management/http/kill.get.js +19 -0
- package/build/routes/management/http/kill.get.query.json +193 -0
- package/build/routes/management/http/meta.get.js +3 -2
- package/build/routes/management/http/sessions.get.query.json +1 -0
- package/build/routes/management/tests/management.spec.js +12 -0
- package/build/routes/webkit/tests/kill-sessions.spec.d.ts +1 -0
- package/build/routes/webkit/tests/kill-sessions.spec.js +72 -0
- package/build/routes/webkit/ws/playwright.query.json +4 -0
- package/build/types.d.ts +2 -0
- package/build/types.js +1 -0
- package/build/utils.d.ts +1 -1
- package/build/utils.js +1 -10
- package/package.json +5 -5
- package/src/browsers/browsers.playwright.ts +3 -0
- package/src/browsers/index.ts +33 -12
- package/src/http.ts +6 -0
- package/src/routes/chrome/tests/kill-sessions.spec.ts +99 -0
- package/src/routes/chromium/tests/kill-sessions.spec.ts +99 -0
- package/src/routes/chromium/tests/websocket.spec.ts +29 -0
- package/src/routes/firefox/tests/kill-sessions.spec.ts +99 -0
- package/src/routes/management/http/kill.get.ts +40 -0
- package/src/routes/management/http/meta.get.ts +12 -10
- package/src/routes/management/tests/management.spec.ts +19 -0
- package/src/routes/webkit/tests/kill-sessions.spec.ts +99 -0
- package/src/types.ts +1 -0
- package/src/utils.ts +2 -11
- package/static/docs/swagger.json +384 -15
- package/static/docs/swagger.min.json +383 -14
- package/static/function/client.js +954 -845
- package/static/function/index.html +954 -845
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
# [Latest](https://github.com/browserless/chrome/compare/v2.
|
|
1
|
+
# [Latest](https://github.com/browserless/chrome/compare/v2.24.0...main)
|
|
2
2
|
|
|
3
3
|
- Dependency updates.
|
|
4
4
|
|
|
5
|
+
# [v2.24.0](https://github.com/browserless/chrome/compare/v2.24.0...v2.23.0)
|
|
6
|
+
|
|
7
|
+
- Dependency updates.
|
|
8
|
+
- Supports:
|
|
9
|
+
- puppeteer-core: 23.10.1.
|
|
10
|
+
- playwright-core: 1.49.0, 1.48.2, 1.47.2, 1.46.1, 1.45.3 and 1.44.1.
|
|
11
|
+
- Chromium: 131.0.6778.33.
|
|
12
|
+
- Chrome: 131.0.6778.109.
|
|
13
|
+
- Firefox: 132.0.
|
|
14
|
+
- Webkit: 18.2.
|
|
15
|
+
- New `/meta` API route for getting details about the container (versions, etc).
|
|
16
|
+
- Bump NodeJS to `v22.11.0`.
|
|
17
|
+
- Add `libwebp-dev` for Webkit.
|
|
18
|
+
- Add support for `trackingId` and `/kill/{id}` and `/kill/all`.
|
|
19
|
+
- Prettier, internal fixes and improvements.
|
|
20
|
+
|
|
5
21
|
# [v2.23.0](https://github.com/browserless/chrome/compare/v2.23.0...v2.22.0)
|
|
6
22
|
|
|
7
23
|
- Dependency updates.
|
package/bin/browserless.js
CHANGED
|
@@ -13,6 +13,7 @@ declare class BasePlaywright extends EventEmitter {
|
|
|
13
13
|
protected userDataDir: string | null;
|
|
14
14
|
protected running: boolean;
|
|
15
15
|
protected logger: Logger;
|
|
16
|
+
protected socket: Duplex | null;
|
|
16
17
|
protected proxy: httpProxy<import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>>;
|
|
17
18
|
protected browser: playwright.BrowserServer | null;
|
|
18
19
|
protected browserWSEndpoint: string | null;
|
|
@@ -14,6 +14,7 @@ class BasePlaywright extends EventEmitter {
|
|
|
14
14
|
userDataDir;
|
|
15
15
|
running = false;
|
|
16
16
|
logger;
|
|
17
|
+
socket = null;
|
|
17
18
|
proxy = httpProxy.createProxyServer();
|
|
18
19
|
browser = null;
|
|
19
20
|
browserWSEndpoint = null;
|
|
@@ -48,6 +49,7 @@ class BasePlaywright extends EventEmitter {
|
|
|
48
49
|
async close() {
|
|
49
50
|
if (this.browser) {
|
|
50
51
|
this.logger.info(`Closing ${this.constructor.name} process and all listeners`);
|
|
52
|
+
this.socket?.destroy();
|
|
51
53
|
this.emit('close');
|
|
52
54
|
this.cleanListeners();
|
|
53
55
|
this.browser.close();
|
|
@@ -104,6 +106,7 @@ class BasePlaywright extends EventEmitter {
|
|
|
104
106
|
this.logger.error(`Not yet implemented in ${this.constructor.name}`);
|
|
105
107
|
}
|
|
106
108
|
async proxyWebSocket(req, socket, head) {
|
|
109
|
+
this.socket = socket;
|
|
107
110
|
return new Promise((resolve, reject) => {
|
|
108
111
|
if (!this.browserWSEndpoint) {
|
|
109
112
|
throw new ServerError(`No browserWSEndpoint found, did you launch first?`);
|
|
@@ -50,7 +50,8 @@ export declare class BrowserManager {
|
|
|
50
50
|
ttl: number;
|
|
51
51
|
userDataDir: string | null;
|
|
52
52
|
}[]>;
|
|
53
|
-
close(browser: BrowserInstance, session: BrowserlessSession): Promise<void>;
|
|
53
|
+
close(browser: BrowserInstance, session: BrowserlessSession, force?: boolean): Promise<void>;
|
|
54
|
+
killSessions(target: string): Promise<void>;
|
|
54
55
|
getAllSessions(trackingId?: string): Promise<BrowserlessSessionJSON[]>;
|
|
55
56
|
complete(browser: BrowserInstance): Promise<void>;
|
|
56
57
|
getBrowserForRequest(req: Request, router: BrowserHTTPRoute | BrowserWebsocketRoute, logger: Logger): Promise<BrowserInstance>;
|
package/build/browsers/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { BLESS_PAGE_IDENTIFIER, BadRequest, ChromeCDP, ChromePlaywright, ChromiumCDP, ChromiumPlaywright, FirefoxPlaywright,
|
|
1
|
+
import { BLESS_PAGE_IDENTIFIER, BadRequest, ChromeCDP, ChromePlaywright, ChromiumCDP, ChromiumPlaywright, FirefoxPlaywright, Logger, NotFound, ServerError, WebKitPlaywright, availableBrowsers, convertIfBase64, exists, generateDataDir, makeExternalURL, noop, parseBooleanParam, parseStringParam, pwVersionRegex, } from '@browserless.io/browserless';
|
|
2
2
|
import { deleteAsync } from 'del';
|
|
3
|
+
import micromatch from 'micromatch';
|
|
3
4
|
import path from 'path';
|
|
4
5
|
export class BrowserManager {
|
|
5
6
|
config;
|
|
@@ -153,7 +154,7 @@ export class BrowserManager {
|
|
|
153
154
|
initialConnectURL: new URL(session.initialConnectURL, serverAddress)
|
|
154
155
|
.href,
|
|
155
156
|
killURL: session.id
|
|
156
|
-
? makeExternalURL(serverAddress,
|
|
157
|
+
? makeExternalURL(serverAddress, '/kill/', session.id)
|
|
157
158
|
: null,
|
|
158
159
|
running: browser.isRunning(),
|
|
159
160
|
timeAliveMs: Date.now() - session.startedOn,
|
|
@@ -185,20 +186,20 @@ export class BrowserManager {
|
|
|
185
186
|
}
|
|
186
187
|
return sessions;
|
|
187
188
|
}
|
|
188
|
-
async close(browser, session) {
|
|
189
|
+
async close(browser, session, force = false) {
|
|
189
190
|
const now = Date.now();
|
|
190
191
|
const keepUntil = browser.keepUntil();
|
|
191
192
|
const connected = session.numbConnected;
|
|
192
193
|
const hasKeepUntil = keepUntil > now;
|
|
193
|
-
const keepOpen = connected > 0 || hasKeepUntil;
|
|
194
|
+
const keepOpen = (connected > 0 || hasKeepUntil) && !force;
|
|
194
195
|
const cleanupACtions = [];
|
|
195
196
|
const priorTimer = this.timers.get(session.id);
|
|
196
197
|
if (priorTimer) {
|
|
197
198
|
this.log.info(`Deleting prior keep-until timer for "${session.id}"`);
|
|
198
199
|
global.clearTimeout(priorTimer);
|
|
199
200
|
}
|
|
200
|
-
this.log.info(`${session.numbConnected} Client(s) are currently connected, Keep-until: ${keepUntil}`);
|
|
201
|
-
if (hasKeepUntil) {
|
|
201
|
+
this.log.info(`${session.numbConnected} Client(s) are currently connected, Keep-until: ${keepUntil}, force: ${force}`);
|
|
202
|
+
if (!force && hasKeepUntil) {
|
|
202
203
|
const timeout = keepUntil - now;
|
|
203
204
|
this.log.trace(`Setting timer ${timeout.toLocaleString()} for "${session.id}"`);
|
|
204
205
|
this.timers.set(session.id, global.setTimeout(() => {
|
|
@@ -220,6 +221,23 @@ export class BrowserManager {
|
|
|
220
221
|
await Promise.all(cleanupACtions.map((a) => a()));
|
|
221
222
|
}
|
|
222
223
|
}
|
|
224
|
+
async killSessions(target) {
|
|
225
|
+
this.log.info(`killSessions invoked target: "${target}"`);
|
|
226
|
+
const sessions = Array.from(this.browsers);
|
|
227
|
+
let closed = 0;
|
|
228
|
+
for (const [browser, session] of sessions) {
|
|
229
|
+
if (session.trackingId === target ||
|
|
230
|
+
session.id === target ||
|
|
231
|
+
target === 'all') {
|
|
232
|
+
this.log.info(`Closing browser via killSessions BrowserId: "${session.id}", trackingId: "${session.trackingId}"`);
|
|
233
|
+
this.close(browser, session, true);
|
|
234
|
+
closed++;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (closed === 0 && target !== 'all') {
|
|
238
|
+
throw new NotFound(`Couldn't locate session for id: "${target}"`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
223
241
|
async getAllSessions(trackingId) {
|
|
224
242
|
const sessions = Array.from(this.browsers);
|
|
225
243
|
let formattedSessions = [];
|
|
@@ -259,9 +277,12 @@ export class BrowserManager {
|
|
|
259
277
|
if (trackingId.length > 32) {
|
|
260
278
|
throw new BadRequest(`TrackingId "${trackingId}" must be less than 32 characters`);
|
|
261
279
|
}
|
|
262
|
-
if (
|
|
280
|
+
if (!micromatch.isMatch(trackingId, '+([0-9a-zA-Z-_])')) {
|
|
263
281
|
throw new BadRequest(`trackingId contains invalid characters`);
|
|
264
282
|
}
|
|
283
|
+
if (trackingId === 'all') {
|
|
284
|
+
throw new BadRequest(`trackingId cannot be the reserved word "all"`);
|
|
285
|
+
}
|
|
265
286
|
this.log.info(`Assigning session trackingId "${trackingId}"`);
|
|
266
287
|
}
|
|
267
288
|
const decodedLaunchOptions = convertIfBase64(req.parsed.searchParams.get('launch') || '{}');
|
package/build/http.d.ts
CHANGED
|
@@ -151,6 +151,7 @@ export declare enum HTTPRoutes {
|
|
|
151
151
|
export declare enum HTTPManagementRoutes {
|
|
152
152
|
active = "/active?(/)",
|
|
153
153
|
config = "/config?(/)",
|
|
154
|
+
kill = "/kill/+([0-9a-zA-Z-_])?(/)",
|
|
154
155
|
meta = "/meta?(/)",
|
|
155
156
|
metrics = "/metrics?(/)",
|
|
156
157
|
metricsTotal = "/metrics/total?(/)",
|
|
@@ -192,4 +193,8 @@ export interface SystemQueryParameters {
|
|
|
192
193
|
* The authorization token
|
|
193
194
|
*/
|
|
194
195
|
token?: string;
|
|
196
|
+
/**
|
|
197
|
+
* Custom session identifier
|
|
198
|
+
*/
|
|
199
|
+
trackingId?: string;
|
|
195
200
|
}
|
package/build/http.js
CHANGED
|
@@ -117,6 +117,7 @@ export var HTTPManagementRoutes;
|
|
|
117
117
|
(function (HTTPManagementRoutes) {
|
|
118
118
|
HTTPManagementRoutes["active"] = "/active?(/)";
|
|
119
119
|
HTTPManagementRoutes["config"] = "/config?(/)";
|
|
120
|
+
HTTPManagementRoutes["kill"] = "/kill/+([0-9a-zA-Z-_])?(/)";
|
|
120
121
|
HTTPManagementRoutes["meta"] = "/meta?(/)";
|
|
121
122
|
HTTPManagementRoutes["metrics"] = "/metrics?(/)";
|
|
122
123
|
HTTPManagementRoutes["metricsTotal"] = "/metrics/total?(/)";
|
|
@@ -245,7 +245,7 @@
|
|
|
245
245
|
]
|
|
246
246
|
},
|
|
247
247
|
"CookieParam": {
|
|
248
|
-
"description": "Cookie parameter object",
|
|
248
|
+
"description": "Cookie parameter object used to set cookies in the page-level cookies\nAPI.",
|
|
249
249
|
"type": "object",
|
|
250
250
|
"properties": {
|
|
251
251
|
"name": {
|
|
@@ -313,7 +313,14 @@
|
|
|
313
313
|
},
|
|
314
314
|
"partitionKey": {
|
|
315
315
|
"description": "Cookie partition key. In Chrome, it matches the top-level site the\npartitioned cookie is available in. In Firefox, it matches the\nsource origin\n(https://w3c.github.io/webdriver-bidi/#type-storage-PartitionKey).",
|
|
316
|
-
"
|
|
316
|
+
"anyOf": [
|
|
317
|
+
{
|
|
318
|
+
"$ref": "#/definitions/CookiePartitionKey"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"type": "string"
|
|
322
|
+
}
|
|
323
|
+
]
|
|
317
324
|
}
|
|
318
325
|
},
|
|
319
326
|
"additionalProperties": false,
|
|
@@ -322,6 +329,24 @@
|
|
|
322
329
|
"value"
|
|
323
330
|
]
|
|
324
331
|
},
|
|
332
|
+
"CookiePartitionKey": {
|
|
333
|
+
"description": "Represents a cookie partition key in Chrome.",
|
|
334
|
+
"type": "object",
|
|
335
|
+
"properties": {
|
|
336
|
+
"sourceOrigin": {
|
|
337
|
+
"description": "The site of the top-level URL the browser was visiting at the start of the request\nto the endpoint that set the cookie.\n\nIn Chrome, maps to the CDP's `topLevelSite` partition key.",
|
|
338
|
+
"type": "string"
|
|
339
|
+
},
|
|
340
|
+
"hasCrossSiteAncestor": {
|
|
341
|
+
"description": "Indicates if the cookie has any ancestors that are cross-site to\nthe topLevelSite.\n\nSupported only in Chrome.",
|
|
342
|
+
"type": "boolean"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"additionalProperties": false,
|
|
346
|
+
"required": [
|
|
347
|
+
"sourceOrigin"
|
|
348
|
+
]
|
|
349
|
+
},
|
|
325
350
|
"GoToOptions": {
|
|
326
351
|
"type": "object",
|
|
327
352
|
"properties": {
|
|
@@ -438,14 +463,14 @@
|
|
|
438
463
|
"length": {
|
|
439
464
|
"type": "number"
|
|
440
465
|
},
|
|
441
|
-
"__@toStringTag@
|
|
466
|
+
"__@toStringTag@14524": {
|
|
442
467
|
"type": "string",
|
|
443
468
|
"const": "Uint8Array"
|
|
444
469
|
}
|
|
445
470
|
},
|
|
446
471
|
"required": [
|
|
447
472
|
"BYTES_PER_ELEMENT",
|
|
448
|
-
"__@toStringTag@
|
|
473
|
+
"__@toStringTag@14524",
|
|
449
474
|
"buffer",
|
|
450
475
|
"byteLength",
|
|
451
476
|
"byteOffset",
|
|
@@ -480,13 +505,13 @@
|
|
|
480
505
|
"byteLength": {
|
|
481
506
|
"type": "number"
|
|
482
507
|
},
|
|
483
|
-
"__@toStringTag@
|
|
508
|
+
"__@toStringTag@14524": {
|
|
484
509
|
"type": "string"
|
|
485
510
|
}
|
|
486
511
|
},
|
|
487
512
|
"additionalProperties": false,
|
|
488
513
|
"required": [
|
|
489
|
-
"__@toStringTag@
|
|
514
|
+
"__@toStringTag@14524",
|
|
490
515
|
"byteLength"
|
|
491
516
|
]
|
|
492
517
|
},
|
|
@@ -496,18 +521,18 @@
|
|
|
496
521
|
"byteLength": {
|
|
497
522
|
"type": "number"
|
|
498
523
|
},
|
|
499
|
-
"__@species@
|
|
524
|
+
"__@species@14562": {
|
|
500
525
|
"$ref": "#/definitions/SharedArrayBuffer"
|
|
501
526
|
},
|
|
502
|
-
"__@toStringTag@
|
|
527
|
+
"__@toStringTag@14524": {
|
|
503
528
|
"type": "string",
|
|
504
529
|
"const": "SharedArrayBuffer"
|
|
505
530
|
}
|
|
506
531
|
},
|
|
507
532
|
"additionalProperties": false,
|
|
508
533
|
"required": [
|
|
509
|
-
"__@species@
|
|
510
|
-
"__@toStringTag@
|
|
534
|
+
"__@species@14562",
|
|
535
|
+
"__@toStringTag@14524",
|
|
511
536
|
"byteLength"
|
|
512
537
|
]
|
|
513
538
|
},
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
]
|
|
248
248
|
},
|
|
249
249
|
"CookieParam": {
|
|
250
|
-
"description": "Cookie parameter object",
|
|
250
|
+
"description": "Cookie parameter object used to set cookies in the page-level cookies\nAPI.",
|
|
251
251
|
"type": "object",
|
|
252
252
|
"properties": {
|
|
253
253
|
"name": {
|
|
@@ -315,7 +315,14 @@
|
|
|
315
315
|
},
|
|
316
316
|
"partitionKey": {
|
|
317
317
|
"description": "Cookie partition key. In Chrome, it matches the top-level site the\npartitioned cookie is available in. In Firefox, it matches the\nsource origin\n(https://w3c.github.io/webdriver-bidi/#type-storage-PartitionKey).",
|
|
318
|
-
"
|
|
318
|
+
"anyOf": [
|
|
319
|
+
{
|
|
320
|
+
"$ref": "#/definitions/CookiePartitionKey"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"type": "string"
|
|
324
|
+
}
|
|
325
|
+
]
|
|
319
326
|
}
|
|
320
327
|
},
|
|
321
328
|
"additionalProperties": false,
|
|
@@ -324,6 +331,24 @@
|
|
|
324
331
|
"value"
|
|
325
332
|
]
|
|
326
333
|
},
|
|
334
|
+
"CookiePartitionKey": {
|
|
335
|
+
"description": "Represents a cookie partition key in Chrome.",
|
|
336
|
+
"type": "object",
|
|
337
|
+
"properties": {
|
|
338
|
+
"sourceOrigin": {
|
|
339
|
+
"description": "The site of the top-level URL the browser was visiting at the start of the request\nto the endpoint that set the cookie.\n\nIn Chrome, maps to the CDP's `topLevelSite` partition key.",
|
|
340
|
+
"type": "string"
|
|
341
|
+
},
|
|
342
|
+
"hasCrossSiteAncestor": {
|
|
343
|
+
"description": "Indicates if the cookie has any ancestors that are cross-site to\nthe topLevelSite.\n\nSupported only in Chrome.",
|
|
344
|
+
"type": "boolean"
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
"additionalProperties": false,
|
|
348
|
+
"required": [
|
|
349
|
+
"sourceOrigin"
|
|
350
|
+
]
|
|
351
|
+
},
|
|
327
352
|
"GoToOptions": {
|
|
328
353
|
"type": "object",
|
|
329
354
|
"properties": {
|
|
@@ -583,14 +608,14 @@
|
|
|
583
608
|
"length": {
|
|
584
609
|
"type": "number"
|
|
585
610
|
},
|
|
586
|
-
"__@toStringTag@
|
|
611
|
+
"__@toStringTag@115599": {
|
|
587
612
|
"type": "string",
|
|
588
613
|
"const": "Uint8Array"
|
|
589
614
|
}
|
|
590
615
|
},
|
|
591
616
|
"required": [
|
|
592
617
|
"BYTES_PER_ELEMENT",
|
|
593
|
-
"__@toStringTag@
|
|
618
|
+
"__@toStringTag@115599",
|
|
594
619
|
"buffer",
|
|
595
620
|
"byteLength",
|
|
596
621
|
"byteOffset",
|
|
@@ -625,13 +650,13 @@
|
|
|
625
650
|
"byteLength": {
|
|
626
651
|
"type": "number"
|
|
627
652
|
},
|
|
628
|
-
"__@toStringTag@
|
|
653
|
+
"__@toStringTag@115599": {
|
|
629
654
|
"type": "string"
|
|
630
655
|
}
|
|
631
656
|
},
|
|
632
657
|
"additionalProperties": false,
|
|
633
658
|
"required": [
|
|
634
|
-
"__@toStringTag@
|
|
659
|
+
"__@toStringTag@115599",
|
|
635
660
|
"byteLength"
|
|
636
661
|
]
|
|
637
662
|
},
|
|
@@ -641,18 +666,18 @@
|
|
|
641
666
|
"byteLength": {
|
|
642
667
|
"type": "number"
|
|
643
668
|
},
|
|
644
|
-
"__@species@
|
|
669
|
+
"__@species@115637": {
|
|
645
670
|
"$ref": "#/definitions/SharedArrayBuffer"
|
|
646
671
|
},
|
|
647
|
-
"__@toStringTag@
|
|
672
|
+
"__@toStringTag@115599": {
|
|
648
673
|
"type": "string",
|
|
649
674
|
"const": "SharedArrayBuffer"
|
|
650
675
|
}
|
|
651
676
|
},
|
|
652
677
|
"additionalProperties": false,
|
|
653
678
|
"required": [
|
|
654
|
-
"__@species@
|
|
655
|
-
"__@toStringTag@
|
|
679
|
+
"__@species@115637",
|
|
680
|
+
"__@toStringTag@115599",
|
|
656
681
|
"byteLength"
|
|
657
682
|
]
|
|
658
683
|
},
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
]
|
|
257
257
|
},
|
|
258
258
|
"CookieParam": {
|
|
259
|
-
"description": "Cookie parameter object",
|
|
259
|
+
"description": "Cookie parameter object used to set cookies in the page-level cookies\nAPI.",
|
|
260
260
|
"type": "object",
|
|
261
261
|
"properties": {
|
|
262
262
|
"name": {
|
|
@@ -324,7 +324,14 @@
|
|
|
324
324
|
},
|
|
325
325
|
"partitionKey": {
|
|
326
326
|
"description": "Cookie partition key. In Chrome, it matches the top-level site the\npartitioned cookie is available in. In Firefox, it matches the\nsource origin\n(https://w3c.github.io/webdriver-bidi/#type-storage-PartitionKey).",
|
|
327
|
-
"
|
|
327
|
+
"anyOf": [
|
|
328
|
+
{
|
|
329
|
+
"$ref": "#/definitions/CookiePartitionKey"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"type": "string"
|
|
333
|
+
}
|
|
334
|
+
]
|
|
328
335
|
}
|
|
329
336
|
},
|
|
330
337
|
"additionalProperties": false,
|
|
@@ -333,6 +340,24 @@
|
|
|
333
340
|
"value"
|
|
334
341
|
]
|
|
335
342
|
},
|
|
343
|
+
"CookiePartitionKey": {
|
|
344
|
+
"description": "Represents a cookie partition key in Chrome.",
|
|
345
|
+
"type": "object",
|
|
346
|
+
"properties": {
|
|
347
|
+
"sourceOrigin": {
|
|
348
|
+
"description": "The site of the top-level URL the browser was visiting at the start of the request\nto the endpoint that set the cookie.\n\nIn Chrome, maps to the CDP's `topLevelSite` partition key.",
|
|
349
|
+
"type": "string"
|
|
350
|
+
},
|
|
351
|
+
"hasCrossSiteAncestor": {
|
|
352
|
+
"description": "Indicates if the cookie has any ancestors that are cross-site to\nthe topLevelSite.\n\nSupported only in Chrome.",
|
|
353
|
+
"type": "boolean"
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
"additionalProperties": false,
|
|
357
|
+
"required": [
|
|
358
|
+
"sourceOrigin"
|
|
359
|
+
]
|
|
360
|
+
},
|
|
336
361
|
"ScrapeDebugOptions": {
|
|
337
362
|
"type": "object",
|
|
338
363
|
"properties": {
|
|
@@ -485,14 +510,14 @@
|
|
|
485
510
|
"length": {
|
|
486
511
|
"type": "number"
|
|
487
512
|
},
|
|
488
|
-
"__@toStringTag@
|
|
513
|
+
"__@toStringTag@144629": {
|
|
489
514
|
"type": "string",
|
|
490
515
|
"const": "Uint8Array"
|
|
491
516
|
}
|
|
492
517
|
},
|
|
493
518
|
"required": [
|
|
494
519
|
"BYTES_PER_ELEMENT",
|
|
495
|
-
"__@toStringTag@
|
|
520
|
+
"__@toStringTag@144629",
|
|
496
521
|
"buffer",
|
|
497
522
|
"byteLength",
|
|
498
523
|
"byteOffset",
|
|
@@ -527,13 +552,13 @@
|
|
|
527
552
|
"byteLength": {
|
|
528
553
|
"type": "number"
|
|
529
554
|
},
|
|
530
|
-
"__@toStringTag@
|
|
555
|
+
"__@toStringTag@144629": {
|
|
531
556
|
"type": "string"
|
|
532
557
|
}
|
|
533
558
|
},
|
|
534
559
|
"additionalProperties": false,
|
|
535
560
|
"required": [
|
|
536
|
-
"__@toStringTag@
|
|
561
|
+
"__@toStringTag@144629",
|
|
537
562
|
"byteLength"
|
|
538
563
|
]
|
|
539
564
|
},
|
|
@@ -543,18 +568,18 @@
|
|
|
543
568
|
"byteLength": {
|
|
544
569
|
"type": "number"
|
|
545
570
|
},
|
|
546
|
-
"__@species@
|
|
571
|
+
"__@species@144667": {
|
|
547
572
|
"$ref": "#/definitions/SharedArrayBuffer"
|
|
548
573
|
},
|
|
549
|
-
"__@toStringTag@
|
|
574
|
+
"__@toStringTag@144629": {
|
|
550
575
|
"type": "string",
|
|
551
576
|
"const": "SharedArrayBuffer"
|
|
552
577
|
}
|
|
553
578
|
},
|
|
554
579
|
"additionalProperties": false,
|
|
555
580
|
"required": [
|
|
556
|
-
"__@species@
|
|
557
|
-
"__@toStringTag@
|
|
581
|
+
"__@species@144667",
|
|
582
|
+
"__@toStringTag@144629",
|
|
558
583
|
"byteLength"
|
|
559
584
|
]
|
|
560
585
|
},
|
|
@@ -248,7 +248,14 @@
|
|
|
248
248
|
},
|
|
249
249
|
"partitionKey": {
|
|
250
250
|
"description": "Cookie partition key. In Chrome, it is the top-level site the\npartitioned cookie is available in. In Firefox, it matches the\nsource origin\n(https://w3c.github.io/webdriver-bidi/#type-storage-PartitionKey).",
|
|
251
|
-
"
|
|
251
|
+
"anyOf": [
|
|
252
|
+
{
|
|
253
|
+
"$ref": "#/definitions/CookiePartitionKey"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"type": "string"
|
|
257
|
+
}
|
|
258
|
+
]
|
|
252
259
|
},
|
|
253
260
|
"partitionKeyOpaque": {
|
|
254
261
|
"description": "True if cookie partition key is opaque. Supported only in Chrome.",
|
|
@@ -268,6 +275,24 @@
|
|
|
268
275
|
"value"
|
|
269
276
|
]
|
|
270
277
|
},
|
|
278
|
+
"CookiePartitionKey": {
|
|
279
|
+
"description": "Represents a cookie partition key in Chrome.",
|
|
280
|
+
"type": "object",
|
|
281
|
+
"properties": {
|
|
282
|
+
"sourceOrigin": {
|
|
283
|
+
"description": "The site of the top-level URL the browser was visiting at the start of the request\nto the endpoint that set the cookie.\n\nIn Chrome, maps to the CDP's `topLevelSite` partition key.",
|
|
284
|
+
"type": "string"
|
|
285
|
+
},
|
|
286
|
+
"hasCrossSiteAncestor": {
|
|
287
|
+
"description": "Indicates if the cookie has any ancestors that are cross-site to\nthe topLevelSite.\n\nSupported only in Chrome.",
|
|
288
|
+
"type": "boolean"
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"additionalProperties": false,
|
|
292
|
+
"required": [
|
|
293
|
+
"sourceOrigin"
|
|
294
|
+
]
|
|
295
|
+
},
|
|
271
296
|
"InBoundRequest": {
|
|
272
297
|
"type": "object",
|
|
273
298
|
"properties": {
|