@push.rocks/smartpuppeteer 2.1.0 → 2.3.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.
@@ -1,4 +1,5 @@
1
1
  import { getEnvAwareBrowserInstance } from './smartpuppeteer.classes.smartpuppeteer.js';
2
+ import { delay, killFrozenOwnedProcessGroup, listOwnedProcessGroupMembers, readOwnedProcessIdentity, signalOwnedProcessIdentity, signalOwnedProcessGroup, } from './smartpuppeteer.helpers.process.js';
2
3
  import * as plugins from './smartpuppeteer.plugins.js';
3
4
  const defaultViewport = {
4
5
  width: 800,
@@ -16,6 +17,28 @@ const maxTimeoutMs = 60000;
16
17
  const maxOutstandingFrames = 3;
17
18
  const maxQueuedPublicOperations = 64;
18
19
  const maxQueuedInternalOperations = 128;
20
+ const maxEvaluationScriptBytes = 262144;
21
+ const maxEvaluationOutputBytes = 1048576;
22
+ const maxEvaluationDepth = 32;
23
+ const maxEvaluationNodes = 50000;
24
+ const maxEvaluationStringBytes = 262144;
25
+ const maxEvaluationArrayLength = 10000;
26
+ const maxEvaluationObjectKeys = 10000;
27
+ const evaluationBootstrapKey = '__smartpuppeteerEvaluate';
28
+ const evaluationCancelKey = '__smartpuppeteerCancel';
29
+ const evaluationCleanupKey = '__smartpuppeteerCleanup';
30
+ const maxProxySecuritySessions = 256;
31
+ const maxTrackedProxyRequests = 1024;
32
+ const maxTotalTrackedProxyRequests = 4096;
33
+ const maxProxySecurityOperations = 2048;
34
+ const proxySeedTargetTypes = new Set([
35
+ 'background_page',
36
+ 'page',
37
+ 'service_worker',
38
+ 'shared_worker',
39
+ 'webview',
40
+ ]);
41
+ const proxyFetchUnsupportedTargetTypes = new Set(['tab', 'worker']);
19
42
  const validateBoundedString = (value, name, minLength, maxLength) => {
20
43
  if (typeof value !== 'string'
21
44
  || value.length < minLength
@@ -57,6 +80,9 @@ const normalizeErrorMessage = (error) => {
57
80
  }
58
81
  return truncate(String(error), 2048);
59
82
  };
83
+ const normalizeAbortReason = (signal) => {
84
+ return signal.reason ?? new Error('The browser operation was aborted');
85
+ };
60
86
  const readUint32 = (data, offset) => {
61
87
  return (data[offset] * 0x1000000
62
88
  + data[offset + 1] * 0x10000
@@ -139,6 +165,13 @@ export class LiveBrowserSession {
139
165
  this.tabs = new Map();
140
166
  this.tabIdsByPage = new WeakMap();
141
167
  this.outstandingFrames = new Map();
168
+ this.proxySecuritySessions = new Map();
169
+ this.proxySecurityOperations = new Set();
170
+ this.proxySecurityGeneration = 0;
171
+ this.proxySecurityStopping = false;
172
+ this.processGeneration = 0;
173
+ this.startRequestCount = 0;
174
+ this.terminationSettled = true;
142
175
  this.operationQueue = [];
143
176
  this.operationRunning = false;
144
177
  this.admittedPublicOperations = 0;
@@ -149,6 +182,7 @@ export class LiveBrowserSession {
149
182
  this.viewportRevision = 1;
150
183
  this.tabSequence = 0;
151
184
  this.frameSequence = 0;
185
+ this.evaluationSequence = 0;
152
186
  this.normalStopRequested = false;
153
187
  if (optionsArg.launchOptions?.protocol
154
188
  && optionsArg.launchOptions.protocol !== 'cdp') {
@@ -161,6 +195,23 @@ export class LiveBrowserSession {
161
195
  if (optionsArg.launchOptions && 'signal' in optionsArg.launchOptions) {
162
196
  throw new Error('LiveBrowserSession owns launch cancellation; launchOptions.signal is unsupported');
163
197
  }
198
+ validateOptionalBoolean(optionsArg.allowEvaluation, 'allowEvaluation');
199
+ for (const name of [
200
+ 'denyDownloads',
201
+ 'denyFileChoosers',
202
+ 'denyPermissions',
203
+ 'httpNavigationOnly',
204
+ ]) {
205
+ validateOptionalBoolean(optionsArg.security?.[name], `security.${name}`);
206
+ }
207
+ const proxyCredentials = optionsArg.security?.proxyCredentials;
208
+ if (proxyCredentials !== undefined) {
209
+ if (!proxyCredentials || typeof proxyCredentials !== 'object') {
210
+ throw new Error('security.proxyCredentials must be an object');
211
+ }
212
+ validateBoundedString(proxyCredentials.username, 'security.proxyCredentials.username', 1, 256);
213
+ validateBoundedString(proxyCredentials.password, 'security.proxyCredentials.password', 1, 1024);
214
+ }
164
215
  const launchViewport = optionsArg.launchOptions?.defaultViewport;
165
216
  const viewport = normalizeViewport(optionsArg.viewport
166
217
  ?? (launchViewport
@@ -176,9 +227,18 @@ export class LiveBrowserSession {
176
227
  ...optionsArg.launchOptions,
177
228
  args: [...(optionsArg.launchOptions?.args ?? [])],
178
229
  defaultViewport: createPuppeteerViewport(viewport),
230
+ ...(optionsArg.security?.denyDownloads
231
+ ? { downloadBehavior: { policy: 'deny' } }
232
+ : {}),
179
233
  },
180
234
  viewport,
181
235
  screencast: optionsArg.screencast ? { ...optionsArg.screencast } : undefined,
236
+ security: optionsArg.security
237
+ ? {
238
+ ...optionsArg.security,
239
+ proxyCredentials: proxyCredentials ? { ...proxyCredentials } : undefined,
240
+ }
241
+ : undefined,
182
242
  };
183
243
  this.viewport = { ...viewport };
184
244
  this.validateScreencastOptions();
@@ -202,11 +262,77 @@ export class LiveBrowserSession {
202
262
  ...(this.lastError ? { lastError: { ...this.lastError } } : {}),
203
263
  };
204
264
  }
205
- async start() {
206
- return this.enqueuePublicOperation(async (signal) => {
265
+ getProcessState() {
266
+ const ownedProcess = this.ownedBrowserProcess;
267
+ if (!ownedProcess) {
268
+ return {
269
+ generation: this.processGeneration,
270
+ pid: null,
271
+ processGroupId: null,
272
+ running: false,
273
+ exitCode: null,
274
+ signalCode: null,
275
+ };
276
+ }
277
+ const childProcess = ownedProcess.childProcess;
278
+ return {
279
+ generation: ownedProcess.generation,
280
+ pid: childProcess.pid ?? null,
281
+ processGroupId: ownedProcess.identity?.processGroupId ?? null,
282
+ running: childProcess.exitCode === null && childProcess.signalCode === null,
283
+ exitCode: childProcess.exitCode,
284
+ signalCode: childProcess.signalCode,
285
+ };
286
+ }
287
+ terminate(optionsArg = {}) {
288
+ if (this.terminationPromise) {
289
+ return this.terminationPromise;
290
+ }
291
+ const gracefulTimeoutMs = optionsArg.gracefulTimeoutMs === undefined
292
+ ? 5000
293
+ : validateInteger(optionsArg.gracefulTimeoutMs, 'gracefulTimeoutMs', 1, 60000);
294
+ const forceTimeoutMs = optionsArg.forceTimeoutMs === undefined
295
+ ? 5000
296
+ : validateInteger(optionsArg.forceTimeoutMs, 'forceTimeoutMs', 1, 60000);
297
+ let resolveTermination;
298
+ let rejectTermination;
299
+ const terminationPromise = new Promise((resolve, reject) => {
300
+ resolveTermination = resolve;
301
+ rejectTermination = reject;
302
+ });
303
+ this.terminationPromise = terminationPromise;
304
+ this.terminationSettled = false;
305
+ void this.terminateInternal(gracefulTimeoutMs, forceTimeoutMs).then((result) => {
306
+ this.terminationSettled = true;
307
+ resolveTermination(result);
308
+ }, (error) => {
309
+ if (this.terminationPromise === terminationPromise) {
310
+ this.terminationPromise = undefined;
311
+ }
312
+ this.terminationSettled = true;
313
+ rejectTermination(error);
314
+ });
315
+ return terminationPromise;
316
+ }
317
+ start(operationOptions = {}) {
318
+ if (!this.terminationSettled) {
319
+ return Promise.reject(new Error('A browser termination is still in progress'));
320
+ }
321
+ if (!this.ownedBrowserProcess && this.status === 'stopped') {
322
+ this.terminationPromise = undefined;
323
+ }
324
+ this.startRequestCount += 1;
325
+ const startPromise = this.enqueuePublicOperation(async (signal) => {
207
326
  if (this.status === 'running' || this.status === 'starting') {
208
327
  return;
209
328
  }
329
+ await this.releaseExitedOwnedProcess();
330
+ if (signal.aborted) {
331
+ throw signal.reason;
332
+ }
333
+ if (this.ownedBrowserProcess) {
334
+ throw new Error('A previous owned Chromium process has not been confirmed dead');
335
+ }
210
336
  this.normalStopRequested = false;
211
337
  this.lastError = undefined;
212
338
  this.viewportRevision = 1;
@@ -221,19 +347,76 @@ export class LiveBrowserSession {
221
347
  if (browserLifetimeController.signal.aborted) {
222
348
  throw browserLifetimeController.signal.reason;
223
349
  }
224
- this.browser = await getEnvAwareBrowserInstance({
225
- forceNoSandbox: this.options.forceNoSandbox,
226
- usePipe: this.options.usePipe,
227
- launchOptions: {
228
- ...this.options.launchOptions,
229
- protocol: 'cdp',
230
- signal: browserLifetimeController.signal,
231
- },
350
+ const abortBrowserLaunch = () => {
351
+ if (!browserLifetimeController.signal.aborted) {
352
+ browserLifetimeController.abort(normalizeAbortReason(signal));
353
+ }
354
+ };
355
+ signal.addEventListener('abort', abortBrowserLaunch, { once: true });
356
+ try {
357
+ this.browser = await getEnvAwareBrowserInstance({
358
+ forceNoSandbox: this.options.forceNoSandbox,
359
+ requireSandbox: this.options.requireSandbox,
360
+ usePipe: this.options.usePipe,
361
+ launchOptions: {
362
+ ...this.options.launchOptions,
363
+ protocol: 'cdp',
364
+ signal: browserLifetimeController.signal,
365
+ },
366
+ });
367
+ }
368
+ finally {
369
+ signal.removeEventListener('abort', abortBrowserLaunch);
370
+ }
371
+ const childProcess = this.browser.process();
372
+ if (!childProcess?.pid) {
373
+ throw new Error('LiveBrowserSession did not receive an owned Chromium process');
374
+ }
375
+ const exitPromise = new Promise((resolve) => {
376
+ if (childProcess.exitCode !== null || childProcess.signalCode !== null) {
377
+ resolve();
378
+ return;
379
+ }
380
+ childProcess.once('exit', () => resolve());
232
381
  });
382
+ this.processGeneration += 1;
383
+ this.ownedBrowserProcess = {
384
+ generation: this.processGeneration,
385
+ childProcess,
386
+ exitPromise,
387
+ forceSignalled: false,
388
+ };
389
+ const identity = process.platform === 'linux'
390
+ ? await readOwnedProcessIdentity(childProcess.pid)
391
+ : undefined;
392
+ if (process.platform === 'linux' && !identity) {
393
+ throw new Error('The owned Chromium process exited before its identity was captured');
394
+ }
395
+ if (identity
396
+ && (identity.processGroupId !== childProcess.pid || identity.sessionId !== childProcess.pid)) {
397
+ throw new Error('Chromium was not launched as a dedicated process-group leader');
398
+ }
399
+ this.ownedBrowserProcess.identity = identity;
233
400
  if (signal.aborted) {
234
401
  throw signal.reason;
235
402
  }
236
403
  this.browserContext = this.browser.defaultBrowserContext();
404
+ this.browserTargetCreatedListener = (target) => {
405
+ if (target.type() !== 'page' || target.browserContext() !== this.browserContext) {
406
+ return;
407
+ }
408
+ void target.page().then((page) => {
409
+ if (page) {
410
+ this.scheduleDiscoveredPageRegistration(page);
411
+ }
412
+ }).catch((error) => {
413
+ if (!this.normalStopRequested && this.status !== 'stopped' && this.status !== 'stopping') {
414
+ this.handleDiscoveredPageFailure(error);
415
+ }
416
+ });
417
+ };
418
+ this.browser.on('targetcreated', this.browserTargetCreatedListener);
419
+ await this.configureBrowserSecurity(this.browser);
237
420
  this.browserDisconnectedListener = () => {
238
421
  if (this.normalStopRequested || this.status === 'stopped' || this.status === 'stopping') {
239
422
  return;
@@ -273,10 +456,18 @@ export class LiveBrowserSession {
273
456
  this.status = 'running';
274
457
  this.emitState();
275
458
  await this.startScreencast(firstTab);
459
+ if (signal.aborted) {
460
+ throw normalizeAbortReason(signal);
461
+ }
276
462
  }
277
463
  catch (error) {
278
464
  if (signal.aborted || this.normalStopRequested) {
279
- await this.stopInternal();
465
+ try {
466
+ await this.stopInternal();
467
+ }
468
+ catch (cleanupError) {
469
+ throw new AggregateError([error, cleanupError], 'Cancelled browser startup cleanup was incomplete');
470
+ }
280
471
  throw error;
281
472
  }
282
473
  const startError = {
@@ -285,9 +476,17 @@ export class LiveBrowserSession {
285
476
  fatal: true,
286
477
  };
287
478
  this.emitError(startError);
288
- await this.stopInternal(startError);
479
+ try {
480
+ await this.stopInternal(startError);
481
+ }
482
+ catch (cleanupError) {
483
+ throw new AggregateError([error, cleanupError], 'Browser startup failed and cleanup was incomplete');
484
+ }
289
485
  throw error;
290
486
  }
487
+ }, operationOptions);
488
+ return startPromise.finally(() => {
489
+ this.startRequestCount -= 1;
291
490
  });
292
491
  }
293
492
  async stop() {
@@ -335,7 +534,7 @@ export class LiveBrowserSession {
335
534
  accepted: await this.acknowledgeCdpFrame(outstandingFrame),
336
535
  };
337
536
  }
338
- async createTab(optionsArg = {}) {
537
+ async createTab(optionsArg = {}, operationOptions = {}) {
339
538
  const url = optionsArg.url === undefined ? undefined : this.validateUrl(optionsArg.url);
340
539
  const activate = optionsArg.activate ?? true;
341
540
  validateOptionalBoolean(optionsArg.activate, 'activate');
@@ -380,14 +579,14 @@ export class LiveBrowserSession {
380
579
  }
381
580
  throw error;
382
581
  }
383
- });
582
+ }, operationOptions);
384
583
  }
385
- async activateTab(tabId) {
584
+ async activateTab(tabId, operationOptions = {}) {
386
585
  return this.enqueuePublicOperation(async () => {
387
586
  await this.activateTabInternal(tabId);
388
- });
587
+ }, operationOptions);
389
588
  }
390
- async closeTab(tabId) {
589
+ async closeTab(tabId, operationOptions = {}) {
391
590
  return this.enqueuePublicOperation(async () => {
392
591
  const tab = this.requireTab(tabId);
393
592
  const wasActive = this.activeTabId === tab.id;
@@ -423,42 +622,42 @@ export class LiveBrowserSession {
423
622
  else {
424
623
  this.emitState();
425
624
  }
426
- });
625
+ }, operationOptions);
427
626
  }
428
- async navigate(optionsArg) {
627
+ async navigate(optionsArg, operationOptions = {}) {
429
628
  const url = this.validateUrl(optionsArg.url);
430
629
  return this.enqueuePublicOperation(async (signal) => {
431
630
  const tab = this.resolveNavigationTab(optionsArg.tabId);
432
631
  await this.navigateTab(tab, async () => {
433
632
  await tab.page.goto(url, this.createPuppeteerNavigationOptions(optionsArg, signal));
434
633
  }, signal);
435
- });
634
+ }, operationOptions);
436
635
  }
437
- async back(optionsArg = {}) {
636
+ async back(optionsArg = {}, operationOptions = {}) {
438
637
  return this.enqueuePublicOperation(async (signal) => {
439
638
  const tab = this.resolveNavigationTab(optionsArg.tabId);
440
639
  await this.navigateTab(tab, async () => {
441
640
  await tab.page.goBack(this.createPuppeteerNavigationOptions(optionsArg, signal));
442
641
  }, signal);
443
- });
642
+ }, operationOptions);
444
643
  }
445
- async forward(optionsArg = {}) {
644
+ async forward(optionsArg = {}, operationOptions = {}) {
446
645
  return this.enqueuePublicOperation(async (signal) => {
447
646
  const tab = this.resolveNavigationTab(optionsArg.tabId);
448
647
  await this.navigateTab(tab, async () => {
449
648
  await tab.page.goForward(this.createPuppeteerNavigationOptions(optionsArg, signal));
450
649
  }, signal);
451
- });
650
+ }, operationOptions);
452
651
  }
453
- async reload(optionsArg = {}) {
652
+ async reload(optionsArg = {}, operationOptions = {}) {
454
653
  return this.enqueuePublicOperation(async (signal) => {
455
654
  const tab = this.resolveNavigationTab(optionsArg.tabId);
456
655
  await this.navigateTab(tab, async () => {
457
656
  await tab.page.reload(this.createPuppeteerNavigationOptions(optionsArg, signal));
458
657
  }, signal);
459
- });
658
+ }, operationOptions);
460
659
  }
461
- async setViewport(viewportArg) {
660
+ async setViewport(viewportArg, operationOptions = {}) {
462
661
  const viewport = normalizeViewport(viewportArg);
463
662
  return this.enqueuePublicOperation(async (signal) => {
464
663
  const tab = this.requireActiveTab();
@@ -478,7 +677,7 @@ export class LiveBrowserSession {
478
677
  await this.startScreencast(tab);
479
678
  }
480
679
  }
481
- });
680
+ }, operationOptions);
482
681
  }
483
682
  async dispatchMouse(input) {
484
683
  const { tab, cdpSession } = this.requireRawInputTarget(input);
@@ -604,7 +803,7 @@ export class LiveBrowserSession {
604
803
  throw error;
605
804
  }
606
805
  }
607
- async captureSnapshot(optionsArg = {}) {
806
+ async captureSnapshot(optionsArg = {}, operationOptions = {}) {
608
807
  const format = optionsArg.format ?? 'jpeg';
609
808
  if (format !== 'jpeg' && format !== 'png') {
610
809
  throw new Error('snapshot format must be jpeg or png');
@@ -647,9 +846,9 @@ export class LiveBrowserSession {
647
846
  ...dimensions,
648
847
  data,
649
848
  };
650
- });
849
+ }, operationOptions);
651
850
  }
652
- async observe(optionsArg = {}) {
851
+ async observe(optionsArg = {}, operationOptions = {}) {
653
852
  const maxCharacters = optionsArg.maxCharacters === undefined
654
853
  ? 12000
655
854
  : validateInteger(optionsArg.maxCharacters, 'maxCharacters', 256, 50000);
@@ -731,9 +930,185 @@ export class LiveBrowserSession {
731
930
  text: truncatedText,
732
931
  truncated: reachedTraversalLimit || unboundedText.length > maxCharacters,
733
932
  };
734
- });
933
+ }, operationOptions);
735
934
  }
736
- async click(optionsArg) {
935
+ async evaluate(expressionArg, optionsArg = {}, operationOptions = {}) {
936
+ if (!this.options.allowEvaluation) {
937
+ throw new Error('LiveBrowserSession evaluation is disabled');
938
+ }
939
+ const expression = validateBoundedString(expressionArg, 'expression', 1, maxEvaluationScriptBytes);
940
+ const expressionBytes = new TextEncoder().encode(expression).byteLength;
941
+ if (expressionBytes > maxEvaluationScriptBytes) {
942
+ throw new Error(`expression must not exceed ${maxEvaluationScriptBytes} UTF-8 bytes`);
943
+ }
944
+ const evaluationOptions = this.normalizeEvaluationOptions(optionsArg);
945
+ const evaluationId = ++this.evaluationSequence;
946
+ const cancellationKey = `__smartpuppeteerCancel${evaluationId}`;
947
+ const evaluationExpression = this.createEvaluationExpression(expression, evaluationOptions, cancellationKey);
948
+ return this.enqueuePublicOperation(async (signal) => {
949
+ const tab = this.resolveActionTab(optionsArg.tabId);
950
+ const cdpSession = await tab.page.createCDPSession();
951
+ this.allowOperationalCdpSessionDetach(cdpSession);
952
+ let executionContextId;
953
+ let cancellationPromise;
954
+ let terminationPromise;
955
+ let timeoutHandle;
956
+ let evaluationTimedOut = false;
957
+ const terminateEvaluation = () => {
958
+ terminationPromise ??= cdpSession.send('Runtime.terminateExecution').then(() => undefined);
959
+ };
960
+ const cancelEvaluation = () => {
961
+ if (executionContextId === undefined) {
962
+ return;
963
+ }
964
+ cancellationPromise ??= cdpSession.send('Runtime.evaluate', {
965
+ expression: `globalThis[${JSON.stringify(evaluationCancelKey)}]?.(${JSON.stringify(cancellationKey)})`,
966
+ contextId: executionContextId,
967
+ returnByValue: true,
968
+ awaitPromise: false,
969
+ includeCommandLineAPI: false,
970
+ userGesture: false,
971
+ disableBreaks: true,
972
+ }).then(() => undefined);
973
+ };
974
+ signal.addEventListener('abort', cancelEvaluation, { once: true });
975
+ let evaluationError;
976
+ let evaluationFailed = false;
977
+ try {
978
+ if (signal.aborted) {
979
+ throw normalizeAbortReason(signal);
980
+ }
981
+ executionContextId = tab.evaluationExecutionContextId;
982
+ if (executionContextId === undefined) {
983
+ const frameTreeResponse = await cdpSession.send('Page.getFrameTree');
984
+ if (signal.aborted) {
985
+ throw normalizeAbortReason(signal);
986
+ }
987
+ const isolatedWorld = await cdpSession.send('Page.createIsolatedWorld', {
988
+ frameId: frameTreeResponse.frameTree.frame.id,
989
+ worldName: 'smartpuppeteer-evaluation',
990
+ grantUniveralAccess: false,
991
+ });
992
+ executionContextId = isolatedWorld.executionContextId;
993
+ tab.evaluationExecutionContextId = executionContextId;
994
+ }
995
+ if (signal.aborted) {
996
+ throw normalizeAbortReason(signal);
997
+ }
998
+ const bootstrapResponse = await cdpSession.send('Runtime.evaluate', {
999
+ expression: this.createEvaluationBootstrapExpression(),
1000
+ contextId: executionContextId,
1001
+ returnByValue: true,
1002
+ awaitPromise: true,
1003
+ includeCommandLineAPI: false,
1004
+ userGesture: false,
1005
+ disableBreaks: true,
1006
+ });
1007
+ if (bootstrapResponse.exceptionDetails) {
1008
+ throw new Error(this.readCdpExceptionMessage(bootstrapResponse.exceptionDetails));
1009
+ }
1010
+ if (signal.aborted) {
1011
+ throw normalizeAbortReason(signal);
1012
+ }
1013
+ timeoutHandle = setTimeout(() => {
1014
+ evaluationTimedOut = true;
1015
+ terminateEvaluation();
1016
+ }, evaluationOptions.timeoutMs + 250);
1017
+ const evaluationResponse = await cdpSession.send('Runtime.evaluate', {
1018
+ expression: evaluationExpression,
1019
+ contextId: executionContextId,
1020
+ returnByValue: true,
1021
+ awaitPromise: true,
1022
+ timeout: evaluationOptions.timeoutMs + 250,
1023
+ includeCommandLineAPI: false,
1024
+ userGesture: false,
1025
+ disableBreaks: true,
1026
+ allowUnsafeEvalBlockedByCSP: true,
1027
+ });
1028
+ if (evaluationTimedOut) {
1029
+ throw new Error(`Evaluation timed out after ${evaluationOptions.timeoutMs}ms`);
1030
+ }
1031
+ if (signal.aborted) {
1032
+ throw normalizeAbortReason(signal);
1033
+ }
1034
+ if (evaluationResponse.exceptionDetails) {
1035
+ throw new Error(this.readCdpExceptionMessage(evaluationResponse.exceptionDetails));
1036
+ }
1037
+ const envelope = evaluationResponse.result.value;
1038
+ if (!envelope || typeof envelope !== 'object' || typeof envelope.ok !== 'boolean') {
1039
+ throw new Error('Evaluation returned an invalid result envelope');
1040
+ }
1041
+ if (!envelope.ok) {
1042
+ throw new Error(typeof envelope.error === 'string'
1043
+ ? truncate(envelope.error, 2048)
1044
+ : 'Evaluation failed');
1045
+ }
1046
+ if (typeof envelope.json !== 'string') {
1047
+ throw new Error('Evaluation returned an invalid JSON result');
1048
+ }
1049
+ if (new TextEncoder().encode(envelope.json).byteLength > evaluationOptions.maxOutputBytes) {
1050
+ throw new Error('Evaluation result exceeded maxOutputBytes during transfer');
1051
+ }
1052
+ return JSON.parse(envelope.json);
1053
+ }
1054
+ catch (error) {
1055
+ evaluationError = error;
1056
+ evaluationFailed = true;
1057
+ throw error;
1058
+ }
1059
+ finally {
1060
+ signal.removeEventListener('abort', cancelEvaluation);
1061
+ if (timeoutHandle) {
1062
+ clearTimeout(timeoutHandle);
1063
+ }
1064
+ const cleanupErrors = [];
1065
+ if (cancellationPromise) {
1066
+ try {
1067
+ await cancellationPromise;
1068
+ }
1069
+ catch (error) {
1070
+ cleanupErrors.push(error);
1071
+ }
1072
+ }
1073
+ if (terminationPromise) {
1074
+ try {
1075
+ await terminationPromise;
1076
+ }
1077
+ catch (error) {
1078
+ cleanupErrors.push(error);
1079
+ }
1080
+ }
1081
+ if (executionContextId !== undefined && !cdpSession.detached) {
1082
+ try {
1083
+ await cdpSession.send('Runtime.evaluate', {
1084
+ expression: `globalThis[${JSON.stringify(evaluationCleanupKey)}]?.(${JSON.stringify(cancellationKey)})`,
1085
+ contextId: executionContextId,
1086
+ returnByValue: true,
1087
+ awaitPromise: false,
1088
+ includeCommandLineAPI: false,
1089
+ userGesture: false,
1090
+ disableBreaks: true,
1091
+ });
1092
+ }
1093
+ catch {
1094
+ // Navigation destroys the old execution context and its cancellation registry.
1095
+ }
1096
+ }
1097
+ if (!cdpSession.detached) {
1098
+ try {
1099
+ await cdpSession.detach();
1100
+ }
1101
+ catch (error) {
1102
+ cleanupErrors.push(error);
1103
+ }
1104
+ }
1105
+ if (cleanupErrors.length > 0) {
1106
+ throw new AggregateError(evaluationFailed ? [evaluationError, ...cleanupErrors] : cleanupErrors, 'Evaluation cleanup was incomplete');
1107
+ }
1108
+ }
1109
+ }, operationOptions);
1110
+ }
1111
+ async click(optionsArg, operationOptions = {}) {
737
1112
  const selector = validateBoundedString(optionsArg.selector, 'selector', 1, maxSelectorLength);
738
1113
  const timeout = this.validateTimeout(optionsArg.timeoutMs);
739
1114
  const allowedButtons = ['left', 'middle', 'right'];
@@ -754,9 +1129,9 @@ export class LiveBrowserSession {
754
1129
  });
755
1130
  await this.refreshTab(actionTab);
756
1131
  this.emitState();
757
- });
1132
+ }, operationOptions);
758
1133
  }
759
- async fill(optionsArg) {
1134
+ async fill(optionsArg, operationOptions = {}) {
760
1135
  const selector = validateBoundedString(optionsArg.selector, 'selector', 1, maxSelectorLength);
761
1136
  const text = validateBoundedString(optionsArg.text, 'text', 0, maxTextLength);
762
1137
  const timeout = this.validateTimeout(optionsArg.timeoutMs);
@@ -767,9 +1142,9 @@ export class LiveBrowserSession {
767
1142
  await actionTab.page.locator(selector).setTimeout(timeout).fill(text, { signal });
768
1143
  await this.refreshTab(actionTab);
769
1144
  this.emitState();
770
- });
1145
+ }, operationOptions);
771
1146
  }
772
- async press(optionsArg) {
1147
+ async press(optionsArg, operationOptions = {}) {
773
1148
  const selector = validateBoundedString(optionsArg.selector, 'selector', 1, maxSelectorLength);
774
1149
  const key = validateBoundedString(optionsArg.key, 'key', 1, 64);
775
1150
  const timeout = this.validateTimeout(optionsArg.timeoutMs);
@@ -793,9 +1168,19 @@ export class LiveBrowserSession {
793
1168
  }
794
1169
  await this.refreshTab(actionTab);
795
1170
  this.emitState();
796
- });
1171
+ }, operationOptions);
797
1172
  }
798
- enqueuePublicOperation(operation) {
1173
+ enqueuePublicOperation(operation, operationOptions = {}) {
1174
+ const callerSignal = operationOptions.signal;
1175
+ if (callerSignal !== undefined
1176
+ && (typeof callerSignal !== 'object'
1177
+ || typeof callerSignal.addEventListener !== 'function'
1178
+ || typeof callerSignal.removeEventListener !== 'function')) {
1179
+ return Promise.reject(new Error('operationOptions.signal must be an AbortSignal'));
1180
+ }
1181
+ if (callerSignal?.aborted) {
1182
+ return Promise.reject(normalizeAbortReason(callerSignal));
1183
+ }
799
1184
  if (this.status === 'stopping'
800
1185
  || this.normalStopRequested
801
1186
  || (this.status === 'stopped' && this.operationRunning)) {
@@ -805,7 +1190,22 @@ export class LiveBrowserSession {
805
1190
  return Promise.reject(new Error('LiveBrowserSession operation queue is full'));
806
1191
  }
807
1192
  this.admittedPublicOperations += 1;
808
- return this.enqueueQueuedOperation('public', operation);
1193
+ return this.enqueueQueuedOperation('public', async (signal) => {
1194
+ this.assertProxySecurityReady();
1195
+ return operation(signal);
1196
+ }, false, callerSignal);
1197
+ }
1198
+ assertProxySecurityReady() {
1199
+ if (!this.options.security?.proxyCredentials || this.status !== 'running') {
1200
+ return;
1201
+ }
1202
+ if (!this.browserSecurityConnection
1203
+ || !this.browserSecurityCdpSession
1204
+ || this.browserSecurityCdpSession.detached) {
1205
+ const error = new Error('Authenticated proxy security is not attached');
1206
+ this.handleProxySecurityFailure('proxy_security_unavailable', error);
1207
+ throw error;
1208
+ }
809
1209
  }
810
1210
  enqueueInternalOperation(operation, priority = false) {
811
1211
  if (this.status === 'stopped' || this.status === 'stopping') {
@@ -814,15 +1214,45 @@ export class LiveBrowserSession {
814
1214
  this.admittedInternalOperations += 1;
815
1215
  return this.enqueueQueuedOperation('internal', operation, priority);
816
1216
  }
817
- enqueueQueuedOperation(kind, operation, priority = false) {
1217
+ enqueueQueuedOperation(kind, operation, priority = false, callerSignal) {
818
1218
  return new Promise((resolve, reject) => {
819
1219
  const queuedOperation = {
820
1220
  kind,
1221
+ state: 'queued',
821
1222
  controller: new AbortController(),
822
1223
  run: operation,
823
1224
  resolve: (value) => resolve(value),
824
1225
  reject,
1226
+ capacityReleased: false,
825
1227
  };
1228
+ if (callerSignal) {
1229
+ const onCallerAbort = () => {
1230
+ const abortReason = normalizeAbortReason(callerSignal);
1231
+ if (queuedOperation.state === 'queued') {
1232
+ const operationIndex = this.operationQueue.indexOf(queuedOperation);
1233
+ if (operationIndex >= 0) {
1234
+ this.operationQueue.splice(operationIndex, 1);
1235
+ }
1236
+ queuedOperation.controller.abort(abortReason);
1237
+ queuedOperation.reject(abortReason);
1238
+ this.finalizeQueuedOperation(queuedOperation);
1239
+ this.drainOperationQueue();
1240
+ }
1241
+ else if (queuedOperation.state === 'active') {
1242
+ queuedOperation.controller.abort(abortReason);
1243
+ }
1244
+ };
1245
+ callerSignal.addEventListener('abort', onCallerAbort, { once: true });
1246
+ queuedOperation.removeCallerAbortListener = () => {
1247
+ callerSignal.removeEventListener('abort', onCallerAbort);
1248
+ };
1249
+ if (callerSignal.aborted) {
1250
+ onCallerAbort();
1251
+ }
1252
+ }
1253
+ if (queuedOperation.state !== 'queued') {
1254
+ return;
1255
+ }
826
1256
  if (priority) {
827
1257
  this.operationQueue.unshift(queuedOperation);
828
1258
  }
@@ -842,6 +1272,7 @@ export class LiveBrowserSession {
842
1272
  }
843
1273
  this.operationRunning = true;
844
1274
  this.activeOperation = queuedOperation;
1275
+ queuedOperation.state = 'active';
845
1276
  void this.executeQueuedOperation(queuedOperation).catch((error) => {
846
1277
  this.operationRunning = false;
847
1278
  this.activeOperation = undefined;
@@ -858,18 +1289,17 @@ export class LiveBrowserSession {
858
1289
  if (queuedOperation.controller.signal.aborted) {
859
1290
  throw queuedOperation.controller.signal.reason;
860
1291
  }
861
- queuedOperation.resolve(await queuedOperation.run(queuedOperation.controller.signal));
1292
+ const value = await queuedOperation.run(queuedOperation.controller.signal);
1293
+ if (queuedOperation.controller.signal.aborted) {
1294
+ throw queuedOperation.controller.signal.reason;
1295
+ }
1296
+ queuedOperation.resolve(value);
862
1297
  }
863
1298
  catch (error) {
864
1299
  queuedOperation.reject(error);
865
1300
  }
866
1301
  finally {
867
- if (queuedOperation.kind === 'public') {
868
- this.admittedPublicOperations -= 1;
869
- }
870
- else if (queuedOperation.kind === 'internal') {
871
- this.admittedInternalOperations -= 1;
872
- }
1302
+ this.finalizeQueuedOperation(queuedOperation);
873
1303
  if (this.activeOperation === queuedOperation) {
874
1304
  this.activeOperation = undefined;
875
1305
  }
@@ -881,16 +1311,29 @@ export class LiveBrowserSession {
881
1311
  this.drainOperationQueue();
882
1312
  }
883
1313
  }
1314
+ finalizeQueuedOperation(queuedOperation) {
1315
+ if (queuedOperation.state === 'settled') {
1316
+ return;
1317
+ }
1318
+ queuedOperation.state = 'settled';
1319
+ queuedOperation.removeCallerAbortListener?.();
1320
+ queuedOperation.removeCallerAbortListener = undefined;
1321
+ if (queuedOperation.capacityReleased) {
1322
+ return;
1323
+ }
1324
+ queuedOperation.capacityReleased = true;
1325
+ if (queuedOperation.kind === 'public') {
1326
+ this.admittedPublicOperations -= 1;
1327
+ }
1328
+ else if (queuedOperation.kind === 'internal') {
1329
+ this.admittedInternalOperations -= 1;
1330
+ }
1331
+ }
884
1332
  cancelQueuedOperations(error) {
885
1333
  for (const queuedOperation of this.operationQueue.splice(0)) {
886
1334
  queuedOperation.controller.abort(error);
887
- if (queuedOperation.kind === 'public') {
888
- this.admittedPublicOperations -= 1;
889
- }
890
- else if (queuedOperation.kind === 'internal') {
891
- this.admittedInternalOperations -= 1;
892
- }
893
1335
  queuedOperation.reject(error);
1336
+ this.finalizeQueuedOperation(queuedOperation);
894
1337
  }
895
1338
  }
896
1339
  beginShutdown(abortActiveOperation) {
@@ -910,7 +1353,8 @@ export class LiveBrowserSession {
910
1353
  this.cancelQueuedOperations(shutdownError);
911
1354
  }
912
1355
  requestShutdown(error) {
913
- if (this.status === 'stopped') {
1356
+ if (this.status === 'stopped' && !this.operationRunning && this.startRequestCount === 0) {
1357
+ this.normalStopRequested = false;
914
1358
  return Promise.resolve();
915
1359
  }
916
1360
  if (this.shutdownPromise) {
@@ -1004,6 +1448,207 @@ export class LiveBrowserSession {
1004
1448
  streaming: tab.streaming,
1005
1449
  };
1006
1450
  }
1451
+ async releaseExitedOwnedProcess() {
1452
+ const ownedProcess = this.ownedBrowserProcess;
1453
+ if (!ownedProcess) {
1454
+ return;
1455
+ }
1456
+ if (ownedProcess.childProcess.exitCode === null
1457
+ && ownedProcess.childProcess.signalCode === null) {
1458
+ await Promise.race([ownedProcess.exitPromise, delay(100)]);
1459
+ if (ownedProcess.childProcess.exitCode === null
1460
+ && ownedProcess.childProcess.signalCode === null) {
1461
+ return;
1462
+ }
1463
+ }
1464
+ if (process.platform === 'linux' && !ownedProcess.identity) {
1465
+ return;
1466
+ }
1467
+ if (ownedProcess.identity) {
1468
+ const members = await listOwnedProcessGroupMembers(ownedProcess.identity);
1469
+ if (members.length > 0) {
1470
+ return;
1471
+ }
1472
+ }
1473
+ this.ownedBrowserProcess = undefined;
1474
+ }
1475
+ async terminateInternal(gracefulTimeoutMs, forceTimeoutMs) {
1476
+ const errors = [];
1477
+ let shutdownSettled = this.status === 'stopped';
1478
+ const shutdownObserved = this.stop().then(() => {
1479
+ shutdownSettled = true;
1480
+ }, (error) => {
1481
+ errors.push(normalizeErrorMessage(error));
1482
+ shutdownSettled = true;
1483
+ });
1484
+ const createConfirmedResult = (ownedProcess, forced) => {
1485
+ const childProcess = ownedProcess?.childProcess;
1486
+ const result = {
1487
+ generation: ownedProcess?.generation ?? this.processGeneration,
1488
+ pid: childProcess?.pid ?? null,
1489
+ processGroupId: ownedProcess?.identity?.processGroupId ?? null,
1490
+ running: false,
1491
+ exitCode: childProcess?.exitCode ?? null,
1492
+ signalCode: childProcess?.signalCode ?? null,
1493
+ forced: forced || Boolean(ownedProcess?.forceSignalled),
1494
+ shutdownComplete: true,
1495
+ confirmedDead: true,
1496
+ errors,
1497
+ };
1498
+ if (this.ownedBrowserProcess === ownedProcess) {
1499
+ this.ownedBrowserProcess = undefined;
1500
+ }
1501
+ return result;
1502
+ };
1503
+ const isConfirmedDead = async (ownedProcess) => {
1504
+ if (!ownedProcess) {
1505
+ return true;
1506
+ }
1507
+ if (process.platform !== 'linux' || !ownedProcess.identity) {
1508
+ if (process.platform === 'linux' && this.startRequestCount > 0) {
1509
+ return false;
1510
+ }
1511
+ throw new Error('Confirmed browser process-group termination is supported on Linux only');
1512
+ }
1513
+ if (ownedProcess.childProcess.exitCode === null
1514
+ && ownedProcess.childProcess.signalCode === null) {
1515
+ return false;
1516
+ }
1517
+ const members = await listOwnedProcessGroupMembers(ownedProcess.identity);
1518
+ if (members.length > 0) {
1519
+ return false;
1520
+ }
1521
+ return true;
1522
+ };
1523
+ const gracefulDeadline = Date.now() + gracefulTimeoutMs;
1524
+ while (Date.now() < gracefulDeadline) {
1525
+ const ownedProcess = this.ownedBrowserProcess;
1526
+ if (await isConfirmedDead(ownedProcess)
1527
+ && shutdownSettled
1528
+ && this.status === 'stopped') {
1529
+ return createConfirmedResult(ownedProcess, false);
1530
+ }
1531
+ if (shutdownSettled) {
1532
+ await delay(100);
1533
+ }
1534
+ else {
1535
+ await Promise.race([shutdownObserved, delay(100)]);
1536
+ }
1537
+ }
1538
+ const ownedProcess = this.ownedBrowserProcess;
1539
+ let forced = false;
1540
+ if (ownedProcess) {
1541
+ if (process.platform !== 'linux') {
1542
+ throw new Error('Confirmed browser process-group termination is supported on Linux only');
1543
+ }
1544
+ if (ownedProcess.identity) {
1545
+ const membersBeforeFreeze = await listOwnedProcessGroupMembers(ownedProcess.identity);
1546
+ if (membersBeforeFreeze.length > 0) {
1547
+ forced = true;
1548
+ const groupStopped = await signalOwnedProcessGroup(ownedProcess.identity, 'SIGSTOP');
1549
+ if (groupStopped) {
1550
+ killFrozenOwnedProcessGroup(ownedProcess.identity);
1551
+ }
1552
+ else {
1553
+ await this.killOwnedProcessGroupSurvivors(ownedProcess.identity, membersBeforeFreeze);
1554
+ }
1555
+ }
1556
+ }
1557
+ else if (this.startRequestCount === 0) {
1558
+ throw new Error('Owned Chromium process identity was never confirmed');
1559
+ }
1560
+ }
1561
+ const forceDeadline = Date.now() + forceTimeoutMs;
1562
+ while (Date.now() < forceDeadline) {
1563
+ const currentOwnedProcess = this.ownedBrowserProcess;
1564
+ if (await isConfirmedDead(currentOwnedProcess)
1565
+ && shutdownSettled
1566
+ && this.status === 'stopped') {
1567
+ return createConfirmedResult(currentOwnedProcess, forced);
1568
+ }
1569
+ if (shutdownSettled) {
1570
+ await delay(100);
1571
+ }
1572
+ else {
1573
+ await Promise.race([shutdownObserved, delay(100)]);
1574
+ }
1575
+ }
1576
+ const remainingOwnedProcess = this.ownedBrowserProcess;
1577
+ if (remainingOwnedProcess?.identity) {
1578
+ const survivors = await listOwnedProcessGroupMembers(remainingOwnedProcess.identity);
1579
+ if (survivors.length > 0) {
1580
+ throw new Error(`Owned Chromium process group did not terminate: ${survivors.map((item) => item.pid).join(', ')}`);
1581
+ }
1582
+ }
1583
+ if (!shutdownSettled || this.status !== 'stopped') {
1584
+ throw new Error('Owned Chromium process group exited but LiveBrowserSession shutdown did not settle');
1585
+ }
1586
+ throw new Error('Owned Chromium process exit was not confirmed by Node.js');
1587
+ }
1588
+ async killOwnedProcessGroupSurvivors(rootIdentity, initialMembers) {
1589
+ let previousKeys = new Set(initialMembers.map((member) => `${member.pid}:${member.startTime}`));
1590
+ for (let attempt = 0; attempt < 20; attempt += 1) {
1591
+ const members = await listOwnedProcessGroupMembers(rootIdentity);
1592
+ if (members.length === 0) {
1593
+ return;
1594
+ }
1595
+ for (const member of members) {
1596
+ await signalOwnedProcessIdentity(member, 'SIGSTOP');
1597
+ }
1598
+ await delay(10);
1599
+ const frozenMembers = await listOwnedProcessGroupMembers(rootIdentity);
1600
+ const currentKeys = new Set(frozenMembers.map((member) => `${member.pid}:${member.startTime}`));
1601
+ const sameMembers = currentKeys.size === previousKeys.size
1602
+ && [...currentKeys].every((key) => previousKeys.has(key));
1603
+ const allFrozen = frozenMembers.every((member) => (member.state === 'T' || member.state === 't' || member.state === 'Z'));
1604
+ if (sameMembers && allFrozen) {
1605
+ for (const member of frozenMembers) {
1606
+ await signalOwnedProcessIdentity(member, 'SIGKILL');
1607
+ }
1608
+ return;
1609
+ }
1610
+ previousKeys = currentKeys;
1611
+ }
1612
+ throw new Error('Unable to stabilize the surviving Chromium process group');
1613
+ }
1614
+ async forceOwnedBrowserProcessGroup(ownedProcess) {
1615
+ ownedProcess.forceSignalled = true;
1616
+ if (process.platform !== 'linux') {
1617
+ ownedProcess.childProcess.kill('SIGKILL');
1618
+ await Promise.race([ownedProcess.exitPromise, delay(5000)]);
1619
+ if (ownedProcess.childProcess.exitCode === null
1620
+ && ownedProcess.childProcess.signalCode === null) {
1621
+ throw new Error('Owned Chromium process did not exit after SIGKILL');
1622
+ }
1623
+ return;
1624
+ }
1625
+ if (!ownedProcess.identity) {
1626
+ throw new Error('Owned Chromium process identity was never confirmed');
1627
+ }
1628
+ const members = await listOwnedProcessGroupMembers(ownedProcess.identity);
1629
+ if (members.length > 0) {
1630
+ const groupStopped = await signalOwnedProcessGroup(ownedProcess.identity, 'SIGSTOP');
1631
+ if (groupStopped) {
1632
+ killFrozenOwnedProcessGroup(ownedProcess.identity);
1633
+ }
1634
+ else {
1635
+ await this.killOwnedProcessGroupSurvivors(ownedProcess.identity, members);
1636
+ }
1637
+ }
1638
+ const deadline = Date.now() + 5000;
1639
+ while (Date.now() < deadline) {
1640
+ const survivors = await listOwnedProcessGroupMembers(ownedProcess.identity);
1641
+ if (survivors.length === 0) {
1642
+ await Promise.race([ownedProcess.exitPromise, delay(100)]);
1643
+ if (ownedProcess.childProcess.exitCode !== null
1644
+ || ownedProcess.childProcess.signalCode !== null) {
1645
+ return;
1646
+ }
1647
+ }
1648
+ await delay(100);
1649
+ }
1650
+ throw new Error('Owned Chromium process group survived forced startup cleanup');
1651
+ }
1007
1652
  async stopInternal(error) {
1008
1653
  if (this.status === 'stopped') {
1009
1654
  return;
@@ -1017,13 +1662,33 @@ export class LiveBrowserSession {
1017
1662
  this.browserLifetimeController.abort(new Error('LiveBrowserSession is stopping'));
1018
1663
  }
1019
1664
  const browser = this.browser;
1665
+ if (browser && this.browserTargetCreatedListener) {
1666
+ browser.off('targetcreated', this.browserTargetCreatedListener);
1667
+ }
1668
+ this.browserTargetCreatedListener = undefined;
1020
1669
  if (browser && this.browserDisconnectedListener) {
1021
1670
  browser.off('disconnected', this.browserDisconnectedListener);
1022
1671
  }
1023
1672
  this.browserDisconnectedListener = undefined;
1024
1673
  const shutdownErrors = [];
1674
+ try {
1675
+ await this.teardownProxySecurity();
1676
+ }
1677
+ catch (cleanupError) {
1678
+ shutdownErrors.push(cleanupError);
1679
+ }
1025
1680
  for (const tab of [...this.tabs.values()]) {
1026
1681
  tab.closing = true;
1682
+ const securityCdpSession = tab.securityCdpSession;
1683
+ tab.securityCdpSession = undefined;
1684
+ if (securityCdpSession && !securityCdpSession.detached) {
1685
+ try {
1686
+ await securityCdpSession.detach();
1687
+ }
1688
+ catch {
1689
+ // Browser lifetime cancellation may close the target before explicit detach settles.
1690
+ }
1691
+ }
1027
1692
  try {
1028
1693
  await this.stopScreencast(tab);
1029
1694
  }
@@ -1049,6 +1714,15 @@ export class LiveBrowserSession {
1049
1714
  }
1050
1715
  catch (closeError) {
1051
1716
  shutdownErrors.push(closeError);
1717
+ const ownedProcess = this.ownedBrowserProcess;
1718
+ if (ownedProcess) {
1719
+ try {
1720
+ await this.forceOwnedBrowserProcessGroup(ownedProcess);
1721
+ }
1722
+ catch (forceError) {
1723
+ shutdownErrors.push(forceError);
1724
+ }
1725
+ }
1052
1726
  }
1053
1727
  }
1054
1728
  for (const tab of this.tabs.values()) {
@@ -1062,10 +1736,356 @@ export class LiveBrowserSession {
1062
1736
  this.activeTabId = null;
1063
1737
  this.status = 'stopped';
1064
1738
  this.emitState();
1065
- if (shutdownErrors.length > 0 && !error) {
1739
+ if (shutdownErrors.length > 0) {
1066
1740
  throw new AggregateError(shutdownErrors, 'LiveBrowserSession shutdown was incomplete');
1067
1741
  }
1068
1742
  }
1743
+ async configureBrowserSecurity(browser) {
1744
+ const denyPermissions = this.options.security?.denyPermissions;
1745
+ const proxyCredentials = this.options.security?.proxyCredentials;
1746
+ if (!denyPermissions && !proxyCredentials) {
1747
+ return;
1748
+ }
1749
+ const cdpSession = await browser.target().createCDPSession();
1750
+ if (!proxyCredentials) {
1751
+ try {
1752
+ if (denyPermissions) {
1753
+ await cdpSession.send('Browser.grantPermissions', { permissions: [] });
1754
+ }
1755
+ }
1756
+ finally {
1757
+ if (!cdpSession.detached) {
1758
+ await cdpSession.detach();
1759
+ }
1760
+ }
1761
+ return;
1762
+ }
1763
+ const generation = this.ownedBrowserProcess?.generation;
1764
+ if (generation === undefined) {
1765
+ throw new Error('Proxy security requires an owned browser generation');
1766
+ }
1767
+ this.proxySecurityStopping = false;
1768
+ this.proxySecurityGeneration = generation;
1769
+ this.browserSecurityCdpSession = cdpSession;
1770
+ try {
1771
+ if (denyPermissions) {
1772
+ await cdpSession.send('Browser.grantPermissions', { permissions: [] });
1773
+ }
1774
+ const browserSecurityConnection = cdpSession.connection();
1775
+ if (!browserSecurityConnection) {
1776
+ throw new Error('Browser security CDP session has no connection');
1777
+ }
1778
+ this.browserSecurityConnection = browserSecurityConnection;
1779
+ this.browserSecuritySessionAttachedListener = (attachedSession) => {
1780
+ this.trackProxySecurityOperation(this.configureProxySecuritySession(attachedSession, generation), generation, 'proxy_security_session_setup_failed');
1781
+ };
1782
+ this.browserSecuritySessionDetachedListener = (detachedSession) => {
1783
+ if (detachedSession === cdpSession) {
1784
+ this.handleProxySecurityFailure('proxy_security_browser_session_detached', new Error('Browser security CDP session detached unexpectedly'), generation);
1785
+ return;
1786
+ }
1787
+ this.trackProxySecurityOperation(this.verifyProxySecuritySessionDetached(detachedSession, generation), generation, 'proxy_security_detach_verification_failed');
1788
+ };
1789
+ browserSecurityConnection.on('sessionattached', this.browserSecuritySessionAttachedListener);
1790
+ browserSecurityConnection.on('sessiondetached', this.browserSecuritySessionDetachedListener);
1791
+ for (const target of browser.targets()) {
1792
+ if (!proxySeedTargetTypes.has(target.type())) {
1793
+ continue;
1794
+ }
1795
+ const securitySession = await target.createCDPSession();
1796
+ const securityRecord = this.proxySecuritySessions.get(securitySession.id());
1797
+ if (!securityRecord) {
1798
+ throw new Error(`Proxy security did not observe session ${securitySession.id()}`);
1799
+ }
1800
+ securityRecord.ownedByProxySecurity = true;
1801
+ await securityRecord.setupPromise;
1802
+ }
1803
+ }
1804
+ catch (error) {
1805
+ await this.teardownProxySecurity();
1806
+ throw error;
1807
+ }
1808
+ }
1809
+ configureProxySecuritySession(session, generation) {
1810
+ const existing = this.proxySecuritySessions.get(session.id());
1811
+ if (existing) {
1812
+ if (existing.generation !== generation) {
1813
+ return Promise.reject(new Error(`CDP session ${session.id()} crossed browser generations`));
1814
+ }
1815
+ return existing.setupPromise;
1816
+ }
1817
+ if (this.proxySecuritySessions.size >= maxProxySecuritySessions) {
1818
+ return Promise.reject(new Error(`Proxy security exceeded ${maxProxySecuritySessions} CDP sessions`));
1819
+ }
1820
+ const attemptedAuthentications = new Set();
1821
+ const requestIdsByNetworkId = new Map();
1822
+ const handleProtocolFailure = (operation, error) => {
1823
+ this.handleProxySecurityFailure('proxy_security_protocol_failed', new Error(`${operation}: ${normalizeErrorMessage(error)}`), generation);
1824
+ };
1825
+ const authRequiredListener = (event) => {
1826
+ const credentials = this.options.security?.proxyCredentials;
1827
+ const totalTrackedRequests = [...this.proxySecuritySessions.values()].reduce((total, record) => total
1828
+ + record.attemptedAuthentications.size
1829
+ + record.requestIdsByNetworkId.size, 0);
1830
+ const hasTrackingCapacity = attemptedAuthentications.size < maxTrackedProxyRequests
1831
+ && totalTrackedRequests < maxTotalTrackedProxyRequests;
1832
+ const isFirstProxyAttempt = event.authChallenge.source === 'Proxy'
1833
+ && !attemptedAuthentications.has(event.requestId)
1834
+ && hasTrackingCapacity;
1835
+ if (isFirstProxyAttempt) {
1836
+ attemptedAuthentications.add(event.requestId);
1837
+ }
1838
+ else if (event.authChallenge.source === 'Proxy'
1839
+ && !attemptedAuthentications.has(event.requestId)
1840
+ && !hasTrackingCapacity) {
1841
+ handleProtocolFailure('Proxy authentication tracking failed', new Error(`A security session exceeded ${maxTrackedProxyRequests} tracked requests`));
1842
+ }
1843
+ const authChallengeResponse = isFirstProxyAttempt && credentials
1844
+ ? {
1845
+ response: 'ProvideCredentials',
1846
+ username: credentials.username,
1847
+ password: credentials.password,
1848
+ }
1849
+ : { response: 'CancelAuth' };
1850
+ this.trackProxySecurityOperation(session.send('Fetch.continueWithAuth', {
1851
+ requestId: event.requestId,
1852
+ authChallengeResponse,
1853
+ }).then(() => undefined), generation, 'proxy_security_protocol_failed');
1854
+ };
1855
+ const requestPausedListener = (event) => {
1856
+ if (event.networkId) {
1857
+ const totalTrackedRequests = [...this.proxySecuritySessions.values()].reduce((total, record) => total
1858
+ + record.attemptedAuthentications.size
1859
+ + record.requestIdsByNetworkId.size, 0);
1860
+ if (!requestIdsByNetworkId.has(event.networkId)
1861
+ && (requestIdsByNetworkId.size >= maxTrackedProxyRequests
1862
+ || totalTrackedRequests >= maxTotalTrackedProxyRequests)) {
1863
+ handleProtocolFailure('Proxy request tracking failed', new Error(`A security session exceeded ${maxTrackedProxyRequests} tracked requests`));
1864
+ }
1865
+ else {
1866
+ const previousRequestId = requestIdsByNetworkId.get(event.networkId);
1867
+ if (previousRequestId && previousRequestId !== event.requestId) {
1868
+ attemptedAuthentications.delete(previousRequestId);
1869
+ }
1870
+ requestIdsByNetworkId.set(event.networkId, event.requestId);
1871
+ }
1872
+ }
1873
+ this.trackProxySecurityOperation(session.send('Fetch.continueRequest', { requestId: event.requestId }).then(() => undefined), generation, 'proxy_security_protocol_failed');
1874
+ };
1875
+ const forgetAuthentication = (networkId) => {
1876
+ const requestId = requestIdsByNetworkId.get(networkId);
1877
+ if (!requestId) {
1878
+ return;
1879
+ }
1880
+ requestIdsByNetworkId.delete(networkId);
1881
+ attemptedAuthentications.delete(requestId);
1882
+ };
1883
+ const loadingFinishedListener = (event) => {
1884
+ forgetAuthentication(event.requestId);
1885
+ };
1886
+ const loadingFailedListener = (event) => {
1887
+ forgetAuthentication(event.requestId);
1888
+ };
1889
+ session.on('Fetch.authRequired', authRequiredListener);
1890
+ session.on('Fetch.requestPaused', requestPausedListener);
1891
+ session.on('Network.loadingFinished', loadingFinishedListener);
1892
+ session.on('Network.loadingFailed', loadingFailedListener);
1893
+ const proxySecuritySession = {
1894
+ session,
1895
+ generation,
1896
+ fetchEnabled: false,
1897
+ allowLiveTargetDetach: false,
1898
+ ownedByProxySecurity: false,
1899
+ attemptedAuthentications,
1900
+ requestIdsByNetworkId,
1901
+ authRequiredListener,
1902
+ requestPausedListener,
1903
+ loadingFinishedListener,
1904
+ loadingFailedListener,
1905
+ setupPromise: Promise.resolve(),
1906
+ };
1907
+ const targetInfoPromise = session.send('Target.getTargetInfo');
1908
+ const networkEnablePromise = session.send('Network.enable');
1909
+ const fetchEnablePromise = session.send('Fetch.enable', {
1910
+ handleAuthRequests: true,
1911
+ patterns: [{ urlPattern: '*' }],
1912
+ });
1913
+ const commandResultsPromise = Promise.allSettled([
1914
+ targetInfoPromise,
1915
+ networkEnablePromise,
1916
+ fetchEnablePromise,
1917
+ ]);
1918
+ const setupPromise = (async () => {
1919
+ try {
1920
+ const [targetInfoResult, networkResult, fetchResult] = await commandResultsPromise;
1921
+ if (targetInfoResult.status === 'rejected') {
1922
+ throw targetInfoResult.reason;
1923
+ }
1924
+ const { targetInfo } = targetInfoResult.value;
1925
+ proxySecuritySession.targetId = targetInfo.targetId;
1926
+ proxySecuritySession.targetType = targetInfo.type;
1927
+ if (fetchResult.status === 'rejected') {
1928
+ const unsupportedTarget = proxyFetchUnsupportedTargetTypes.has(targetInfo.type)
1929
+ && fetchResult.reason instanceof plugins.puppeteer.ProtocolError
1930
+ && fetchResult.reason.originalMessage === "'Fetch.enable' wasn't found";
1931
+ if (unsupportedTarget) {
1932
+ this.removeProxySecuritySession(proxySecuritySession);
1933
+ return;
1934
+ }
1935
+ throw fetchResult.reason;
1936
+ }
1937
+ if (networkResult.status === 'rejected') {
1938
+ throw networkResult.reason;
1939
+ }
1940
+ proxySecuritySession.fetchEnabled = true;
1941
+ }
1942
+ catch (error) {
1943
+ this.removeProxySecuritySession(proxySecuritySession);
1944
+ if (session.detached || this.proxySecurityStopping || this.normalStopRequested) {
1945
+ return;
1946
+ }
1947
+ throw error;
1948
+ }
1949
+ })();
1950
+ proxySecuritySession.setupPromise = setupPromise;
1951
+ this.proxySecuritySessions.set(session.id(), proxySecuritySession);
1952
+ return setupPromise;
1953
+ }
1954
+ async verifyProxySecuritySessionDetached(session, generation) {
1955
+ const proxySecuritySession = this.proxySecuritySessions.get(session.id());
1956
+ if (!proxySecuritySession || proxySecuritySession.generation !== generation) {
1957
+ return;
1958
+ }
1959
+ this.removeProxySecuritySession(proxySecuritySession);
1960
+ if (this.proxySecurityStopping || this.normalStopRequested || this.status !== 'running') {
1961
+ return;
1962
+ }
1963
+ if (proxySecuritySession.allowLiveTargetDetach) {
1964
+ return;
1965
+ }
1966
+ if (!proxySecuritySession.targetId) {
1967
+ throw new Error(`Proxy security session detached before target identification: ${session.id()}`);
1968
+ }
1969
+ for (let attempt = 0; attempt < 3; attempt += 1) {
1970
+ const generationSessions = [...this.proxySecuritySessions.values()].filter((candidate) => (candidate.generation === generation));
1971
+ await Promise.allSettled(generationSessions.map((candidate) => candidate.setupPromise));
1972
+ const hasReplacement = [...this.proxySecuritySessions.values()].some((candidate) => (candidate.generation === generation
1973
+ && candidate.targetId === proxySecuritySession.targetId
1974
+ && candidate.fetchEnabled
1975
+ && !candidate.session.detached));
1976
+ if (hasReplacement) {
1977
+ return;
1978
+ }
1979
+ if (attempt < 2) {
1980
+ await delay(25);
1981
+ }
1982
+ }
1983
+ const browserSecurityCdpSession = this.browserSecurityCdpSession;
1984
+ if (!browserSecurityCdpSession || browserSecurityCdpSession.detached) {
1985
+ throw new Error('Browser security CDP session detached unexpectedly');
1986
+ }
1987
+ const { targetInfos } = await browserSecurityCdpSession.send('Target.getTargets');
1988
+ if (targetInfos.some((targetInfo) => targetInfo.targetId === proxySecuritySession.targetId)) {
1989
+ throw new Error(`Proxy security detached from live target ${proxySecuritySession.targetId}`);
1990
+ }
1991
+ }
1992
+ removeProxySecuritySession(proxySecuritySession) {
1993
+ if (this.proxySecuritySessions.get(proxySecuritySession.session.id()) !== proxySecuritySession) {
1994
+ return;
1995
+ }
1996
+ proxySecuritySession.session.off('Fetch.authRequired', proxySecuritySession.authRequiredListener);
1997
+ proxySecuritySession.session.off('Fetch.requestPaused', proxySecuritySession.requestPausedListener);
1998
+ proxySecuritySession.session.off('Network.loadingFinished', proxySecuritySession.loadingFinishedListener);
1999
+ proxySecuritySession.session.off('Network.loadingFailed', proxySecuritySession.loadingFailedListener);
2000
+ proxySecuritySession.attemptedAuthentications.clear();
2001
+ proxySecuritySession.requestIdsByNetworkId.clear();
2002
+ this.proxySecuritySessions.delete(proxySecuritySession.session.id());
2003
+ }
2004
+ allowOperationalCdpSessionDetach(session) {
2005
+ const proxySecuritySession = this.proxySecuritySessions.get(session.id());
2006
+ if (proxySecuritySession) {
2007
+ proxySecuritySession.allowLiveTargetDetach = true;
2008
+ }
2009
+ }
2010
+ trackProxySecurityOperation(operation, generation, errorCode) {
2011
+ if (this.proxySecurityOperations.size >= maxProxySecurityOperations) {
2012
+ void operation.catch(() => undefined);
2013
+ this.handleProxySecurityFailure('proxy_security_operation_capacity_exceeded', new Error(`Proxy security exceeded ${maxProxySecurityOperations} protocol operations`), generation);
2014
+ return;
2015
+ }
2016
+ let trackedOperation;
2017
+ trackedOperation = operation.catch((error) => {
2018
+ this.handleProxySecurityFailure(errorCode, error, generation);
2019
+ }).finally(() => {
2020
+ this.proxySecurityOperations.delete(trackedOperation);
2021
+ });
2022
+ this.proxySecurityOperations.add(trackedOperation);
2023
+ }
2024
+ handleProxySecurityFailure(code, error, generation = this.proxySecurityGeneration) {
2025
+ if (generation !== this.proxySecurityGeneration
2026
+ || this.proxySecurityStopping
2027
+ || this.normalStopRequested
2028
+ || this.status === 'stopped'
2029
+ || this.status === 'stopping') {
2030
+ return;
2031
+ }
2032
+ const liveBrowserError = {
2033
+ code,
2034
+ message: normalizeErrorMessage(error),
2035
+ fatal: true,
2036
+ };
2037
+ this.emitError(liveBrowserError);
2038
+ this.beginShutdown(true);
2039
+ void this.terminate().catch((terminationError) => {
2040
+ this.emitError({
2041
+ code: 'proxy_security_termination_failed',
2042
+ message: normalizeErrorMessage(terminationError),
2043
+ fatal: true,
2044
+ });
2045
+ });
2046
+ }
2047
+ async teardownProxySecurity() {
2048
+ this.proxySecurityStopping = true;
2049
+ if (this.browserSecurityConnection && this.browserSecuritySessionAttachedListener) {
2050
+ this.browserSecurityConnection.off('sessionattached', this.browserSecuritySessionAttachedListener);
2051
+ }
2052
+ if (this.browserSecurityConnection && this.browserSecuritySessionDetachedListener) {
2053
+ this.browserSecurityConnection.off('sessiondetached', this.browserSecuritySessionDetachedListener);
2054
+ }
2055
+ this.browserSecuritySessionAttachedListener = undefined;
2056
+ this.browserSecuritySessionDetachedListener = undefined;
2057
+ this.browserSecurityConnection = undefined;
2058
+ const ownedSessions = [...this.proxySecuritySessions.values()]
2059
+ .filter((record) => record.ownedByProxySecurity)
2060
+ .map((record) => record.session);
2061
+ for (const proxySecuritySession of [...this.proxySecuritySessions.values()]) {
2062
+ this.removeProxySecuritySession(proxySecuritySession);
2063
+ }
2064
+ for (const ownedSession of ownedSessions) {
2065
+ if (!ownedSession.detached) {
2066
+ try {
2067
+ await ownedSession.detach();
2068
+ }
2069
+ catch {
2070
+ // Browser shutdown can close a target before explicit detach settles.
2071
+ }
2072
+ }
2073
+ }
2074
+ const browserSecurityCdpSession = this.browserSecurityCdpSession;
2075
+ this.browserSecurityCdpSession = undefined;
2076
+ if (browserSecurityCdpSession && !browserSecurityCdpSession.detached) {
2077
+ try {
2078
+ await browserSecurityCdpSession.detach();
2079
+ }
2080
+ catch {
2081
+ // Browser shutdown can detach the browser target first.
2082
+ }
2083
+ }
2084
+ while (this.proxySecurityOperations.size > 0) {
2085
+ await Promise.allSettled([...this.proxySecurityOperations]);
2086
+ }
2087
+ this.proxySecurityGeneration = 0;
2088
+ }
1069
2089
  requireBrowserContext() {
1070
2090
  if (this.status !== 'running' || !this.browserContext) {
1071
2091
  throw new Error('LiveBrowserSession is not running');
@@ -1125,6 +2145,56 @@ export class LiveBrowserSession {
1125
2145
  }
1126
2146
  }
1127
2147
  }
2148
+ scheduleDiscoveredPageRegistration(page) {
2149
+ if (page.isClosed()
2150
+ || this.tabIdsByPage.has(page)
2151
+ || this.normalStopRequested
2152
+ || this.status === 'stopped'
2153
+ || this.status === 'stopping') {
2154
+ return;
2155
+ }
2156
+ const wasScheduled = this.scheduleOperation(async () => {
2157
+ if (page.isClosed() || this.tabIdsByPage.has(page)) {
2158
+ return;
2159
+ }
2160
+ const previousActiveTabId = this.activeTabId;
2161
+ let discoveredTab;
2162
+ try {
2163
+ discoveredTab = await this.registerPage(page);
2164
+ await this.activateTabInternal(discoveredTab.id);
2165
+ }
2166
+ catch (error) {
2167
+ const rollbackError = await this.rollbackCreatedPage(page, discoveredTab, previousActiveTabId);
2168
+ if (rollbackError) {
2169
+ const aggregateError = new AggregateError([error, rollbackError], 'Discovered page registration rollback failed');
2170
+ this.handleDiscoveredPageFailure(aggregateError);
2171
+ throw aggregateError;
2172
+ }
2173
+ throw error;
2174
+ }
2175
+ }, 'discovered_page_registration_failed', undefined, true);
2176
+ if (!wasScheduled) {
2177
+ this.handleDiscoveredPageFailure(new Error('A discovered page could not be admitted to the internal operation queue'));
2178
+ }
2179
+ }
2180
+ handleDiscoveredPageFailure(error) {
2181
+ if (this.normalStopRequested || this.status === 'stopped' || this.status === 'stopping') {
2182
+ return;
2183
+ }
2184
+ const liveBrowserError = {
2185
+ code: 'untracked_page_detected',
2186
+ message: normalizeErrorMessage(error),
2187
+ fatal: true,
2188
+ };
2189
+ this.emitError(liveBrowserError);
2190
+ void this.requestShutdown(liveBrowserError).catch((shutdownError) => {
2191
+ this.emitError({
2192
+ code: 'untracked_page_shutdown_failed',
2193
+ message: normalizeErrorMessage(shutdownError),
2194
+ fatal: true,
2195
+ });
2196
+ });
2197
+ }
1128
2198
  async registerPage(page) {
1129
2199
  const existingTabId = this.tabIdsByPage.get(page);
1130
2200
  if (existingTabId) {
@@ -1153,6 +2223,18 @@ export class LiveBrowserSession {
1153
2223
  this.tabs.set(tab.id, tab);
1154
2224
  this.tabIdsByPage.set(page, tab.id);
1155
2225
  try {
2226
+ if (this.options.security?.denyFileChoosers) {
2227
+ const securityCdpSession = await page.createCDPSession();
2228
+ this.allowOperationalCdpSessionDetach(securityCdpSession);
2229
+ tab.securityCdpSession = securityCdpSession;
2230
+ await securityCdpSession.send('Page.enable', {
2231
+ enableFileChooserOpenedEvent: true,
2232
+ });
2233
+ await securityCdpSession.send('Page.setInterceptFileChooserDialog', {
2234
+ enabled: true,
2235
+ cancel: true,
2236
+ });
2237
+ }
1156
2238
  await this.ensureTabViewport(tab);
1157
2239
  await this.refreshTab(tab);
1158
2240
  const onPopup = (popup) => {
@@ -1202,6 +2284,7 @@ export class LiveBrowserSession {
1202
2284
  if (frame !== page.mainFrame() || tab.closing) {
1203
2285
  return;
1204
2286
  }
2287
+ tab.evaluationExecutionContextId = undefined;
1205
2288
  const navigationReset = !tab.navigationInProgress;
1206
2289
  if (navigationReset) {
1207
2290
  tab.streamInvalidated = true;
@@ -1270,6 +2353,14 @@ export class LiveBrowserSession {
1270
2353
  return tab;
1271
2354
  }
1272
2355
  catch (error) {
2356
+ if (tab.securityCdpSession && !tab.securityCdpSession.detached) {
2357
+ try {
2358
+ await tab.securityCdpSession.detach();
2359
+ }
2360
+ catch {
2361
+ // The page may have closed while security setup was failing.
2362
+ }
2363
+ }
1273
2364
  this.removePageListeners(tab);
1274
2365
  this.tabs.delete(tab.id);
1275
2366
  this.tabIdsByPage.delete(page);
@@ -1500,6 +2591,7 @@ export class LiveBrowserSession {
1500
2591
  }
1501
2592
  async navigateTab(tab, navigation, signal) {
1502
2593
  const isActive = this.activeTabId === tab.id;
2594
+ tab.evaluationExecutionContextId = undefined;
1503
2595
  tab.navigationInProgress = true;
1504
2596
  if (isActive) {
1505
2597
  await this.stopScreencast(tab);
@@ -1518,8 +2610,7 @@ export class LiveBrowserSession {
1518
2610
  if (isActive
1519
2611
  && this.activeTabId === tab.id
1520
2612
  && this.status === 'running'
1521
- && tab.status === 'open'
1522
- && !signal.aborted) {
2613
+ && tab.status === 'open') {
1523
2614
  await this.startScreencast(tab);
1524
2615
  }
1525
2616
  }
@@ -1556,6 +2647,7 @@ export class LiveBrowserSession {
1556
2647
  }
1557
2648
  await this.ensureTabViewport(tab);
1558
2649
  const cdpSession = await tab.page.createCDPSession();
2650
+ this.allowOperationalCdpSessionDetach(cdpSession);
1559
2651
  const generation = tab.generation + 1;
1560
2652
  const frameListener = (event) => {
1561
2653
  this.handleScreencastFrame(tab, cdpSession, generation, event);
@@ -1855,14 +2947,266 @@ export class LiveBrowserSession {
1855
2947
  }
1856
2948
  validateUrl(url) {
1857
2949
  const validatedUrl = validateBoundedString(url, 'url', 1, maxUrlLength);
2950
+ let parsedUrl;
1858
2951
  try {
1859
- new URL(validatedUrl);
2952
+ parsedUrl = new URL(validatedUrl);
1860
2953
  }
1861
2954
  catch {
1862
2955
  throw new Error('url must be absolute');
1863
2956
  }
2957
+ if (this.options.security?.httpNavigationOnly
2958
+ && parsedUrl.protocol !== 'http:'
2959
+ && parsedUrl.protocol !== 'https:') {
2960
+ throw new Error('url protocol must be http or https');
2961
+ }
1864
2962
  return validatedUrl;
1865
2963
  }
2964
+ normalizeEvaluationOptions(options) {
2965
+ return {
2966
+ timeoutMs: options.timeoutMs === undefined
2967
+ ? 5000
2968
+ : validateInteger(options.timeoutMs, 'timeoutMs', 1, 30000),
2969
+ maxOutputBytes: options.maxOutputBytes === undefined
2970
+ ? 262144
2971
+ : validateInteger(options.maxOutputBytes, 'maxOutputBytes', 1, maxEvaluationOutputBytes),
2972
+ maxDepth: options.maxDepth === undefined
2973
+ ? 16
2974
+ : validateInteger(options.maxDepth, 'maxDepth', 1, maxEvaluationDepth),
2975
+ maxNodes: options.maxNodes === undefined
2976
+ ? 10000
2977
+ : validateInteger(options.maxNodes, 'maxNodes', 1, maxEvaluationNodes),
2978
+ maxStringBytes: options.maxStringBytes === undefined
2979
+ ? 65536
2980
+ : validateInteger(options.maxStringBytes, 'maxStringBytes', 0, maxEvaluationStringBytes),
2981
+ maxArrayLength: options.maxArrayLength === undefined
2982
+ ? 1000
2983
+ : validateInteger(options.maxArrayLength, 'maxArrayLength', 0, maxEvaluationArrayLength),
2984
+ maxObjectKeys: options.maxObjectKeys === undefined
2985
+ ? 1000
2986
+ : validateInteger(options.maxObjectKeys, 'maxObjectKeys', 0, maxEvaluationObjectKeys),
2987
+ };
2988
+ }
2989
+ readCdpExceptionMessage(exceptionDetails) {
2990
+ const description = exceptionDetails.exception?.description;
2991
+ if (typeof description === 'string' && description.length > 0) {
2992
+ return truncate(description, 2048);
2993
+ }
2994
+ return truncate(exceptionDetails.text, 2048);
2995
+ }
2996
+ createEvaluationBootstrapExpression() {
2997
+ const bootstrapKeyLiteral = JSON.stringify(evaluationBootstrapKey);
2998
+ const cancelKeyLiteral = JSON.stringify(evaluationCancelKey);
2999
+ const cleanupKeyLiteral = JSON.stringify(evaluationCleanupKey);
3000
+ return `(() => {
3001
+ 'use strict';
3002
+ if (typeof globalThis[${bootstrapKeyLiteral}] === 'function') {
3003
+ return true;
3004
+ }
3005
+ const safeGlobalThis = globalThis;
3006
+ const SafeArray = Array;
3007
+ const SafeError = Error;
3008
+ const SafeFunction = Function;
3009
+ const SafeJSON = JSON;
3010
+ const SafeMap = Map;
3011
+ const SafeNumber = Number;
3012
+ const SafeObject = Object;
3013
+ const SafePromise = Promise;
3014
+ const SafeString = String;
3015
+ const SafeTextEncoder = TextEncoder;
3016
+ const SafeWeakSet = WeakSet;
3017
+ const SafeClearTimeout = clearTimeout;
3018
+ const SafeSetTimeout = setTimeout;
3019
+ const safeCreate = SafeObject.create;
3020
+ const safeDefineProperty = SafeObject.defineProperty;
3021
+ const safeGetOwnPropertyDescriptor = SafeObject.getOwnPropertyDescriptor;
3022
+ const safeGetOwnPropertySymbols = SafeObject.getOwnPropertySymbols;
3023
+ const safeGetPrototypeOf = SafeObject.getPrototypeOf;
3024
+ const safeIsArray = SafeArray.isArray;
3025
+ const safeIsFinite = SafeNumber.isFinite;
3026
+ const safeKeys = SafeObject.keys;
3027
+ const safeSetPrototypeOf = SafeObject.setPrototypeOf;
3028
+ const safeStringify = SafeJSON.stringify;
3029
+ const safeMapDelete = SafeFunction.prototype.call.bind(SafeMap.prototype.delete);
3030
+ const safeMapGet = SafeFunction.prototype.call.bind(SafeMap.prototype.get);
3031
+ const safeMapSet = SafeFunction.prototype.call.bind(SafeMap.prototype.set);
3032
+ const safePromiseThen = SafeFunction.prototype.call.bind(SafePromise.prototype.then);
3033
+ const safeWeakSetAdd = SafeFunction.prototype.call.bind(SafeWeakSet.prototype.add);
3034
+ const safeWeakSetHas = SafeFunction.prototype.call.bind(SafeWeakSet.prototype.has);
3035
+ const safeEncode = SafeFunction.prototype.call.bind(SafeTextEncoder.prototype.encode);
3036
+ const encoder = new SafeTextEncoder();
3037
+ const cancellationHandlers = new SafeMap();
3038
+
3039
+ const createEnvelope = (ok, value) => {
3040
+ const envelope = safeCreate(null);
3041
+ envelope.ok = ok;
3042
+ if (ok) {
3043
+ envelope.json = value;
3044
+ } else {
3045
+ envelope.error = value;
3046
+ }
3047
+ return envelope;
3048
+ };
3049
+ const byteLength = (value) => safeEncode(encoder, value).byteLength;
3050
+ const cancelEvaluation = (cancellationKey) => {
3051
+ const handler = safeMapGet(cancellationHandlers, cancellationKey);
3052
+ if (typeof handler === 'function') {
3053
+ handler();
3054
+ }
3055
+ return safeMapDelete(cancellationHandlers, cancellationKey);
3056
+ };
3057
+ const evaluate = async (source, options, cancellationKey) => {
3058
+ const seen = new SafeWeakSet();
3059
+ let visitedNodes = 0;
3060
+ const normalize = (value, depth) => {
3061
+ visitedNodes += 1;
3062
+ if (visitedNodes > options.maxNodes) {
3063
+ throw new SafeError('Evaluation result exceeded maxNodes');
3064
+ }
3065
+ if (depth > options.maxDepth) {
3066
+ throw new SafeError('Evaluation result exceeded maxDepth');
3067
+ }
3068
+ if (value === null || typeof value === 'boolean') {
3069
+ return value;
3070
+ }
3071
+ if (typeof value === 'number') {
3072
+ if (!safeIsFinite(value)) {
3073
+ throw new SafeError('Evaluation result contains a non-finite number');
3074
+ }
3075
+ return value;
3076
+ }
3077
+ if (typeof value === 'string') {
3078
+ if (byteLength(value) > options.maxStringBytes) {
3079
+ throw new SafeError('Evaluation result string exceeded maxStringBytes');
3080
+ }
3081
+ return value;
3082
+ }
3083
+ if (typeof value !== 'object') {
3084
+ throw new SafeError('Evaluation result contains a non-JSON value');
3085
+ }
3086
+ if (safeWeakSetHas(seen, value)) {
3087
+ throw new SafeError('Evaluation result contains a cycle or repeated object');
3088
+ }
3089
+ safeWeakSetAdd(seen, value);
3090
+
3091
+ if (safeIsArray(value)) {
3092
+ if (value.length > options.maxArrayLength) {
3093
+ throw new SafeError('Evaluation result array exceeded maxArrayLength');
3094
+ }
3095
+ const keys = safeKeys(value);
3096
+ if (keys.length !== value.length) {
3097
+ throw new SafeError('Evaluation result contains a sparse or extended array');
3098
+ }
3099
+ const output = SafeArray(value.length);
3100
+ safeSetPrototypeOf(output, null);
3101
+ for (let index = 0; index < value.length; index += 1) {
3102
+ const descriptor = safeGetOwnPropertyDescriptor(value, SafeString(index));
3103
+ if (!descriptor || !('value' in descriptor)) {
3104
+ throw new SafeError('Evaluation result contains an array accessor');
3105
+ }
3106
+ output[index] = normalize(descriptor.value, depth + 1);
3107
+ }
3108
+ return output;
3109
+ }
3110
+
3111
+ const prototype = safeGetPrototypeOf(value);
3112
+ if (prototype !== SafeObject.prototype && prototype !== null) {
3113
+ throw new SafeError('Evaluation result contains a non-plain object');
3114
+ }
3115
+ if (safeGetOwnPropertySymbols(value).length > 0) {
3116
+ throw new SafeError('Evaluation result contains symbol properties');
3117
+ }
3118
+ const keys = safeKeys(value);
3119
+ if (keys.length > options.maxObjectKeys) {
3120
+ throw new SafeError('Evaluation result object exceeded maxObjectKeys');
3121
+ }
3122
+ const output = safeCreate(null);
3123
+ for (let index = 0; index < keys.length; index += 1) {
3124
+ const key = keys[index];
3125
+ if (byteLength(key) > options.maxStringBytes) {
3126
+ throw new SafeError('Evaluation result key exceeded maxStringBytes');
3127
+ }
3128
+ const descriptor = safeGetOwnPropertyDescriptor(value, key);
3129
+ if (!descriptor || !('value' in descriptor)) {
3130
+ throw new SafeError('Evaluation result contains an object accessor');
3131
+ }
3132
+ output[key] = normalize(descriptor.value, depth + 1);
3133
+ }
3134
+ return output;
3135
+ };
3136
+
3137
+ try {
3138
+ const execute = SafeFunction(
3139
+ '\"use strict\"; return (async () => (' + source + '\\n))();',
3140
+ );
3141
+ const boundedExecution = new SafePromise((resolve, reject) => {
3142
+ let timeout;
3143
+ safeMapSet(cancellationHandlers, cancellationKey, () => {
3144
+ if (timeout !== undefined) {
3145
+ SafeClearTimeout(timeout);
3146
+ }
3147
+ reject(new SafeError('Evaluation cancelled'));
3148
+ });
3149
+ timeout = SafeSetTimeout(() => {
3150
+ reject(new SafeError('Evaluation timed out after ' + options.timeoutMs + 'ms'));
3151
+ }, options.timeoutMs);
3152
+ safePromiseThen(
3153
+ execute(),
3154
+ (value) => {
3155
+ SafeClearTimeout(timeout);
3156
+ resolve(value);
3157
+ },
3158
+ (error) => {
3159
+ SafeClearTimeout(timeout);
3160
+ reject(error);
3161
+ },
3162
+ );
3163
+ });
3164
+ let normalizedResult;
3165
+ try {
3166
+ normalizedResult = normalize(await boundedExecution, 0);
3167
+ } finally {
3168
+ safeMapDelete(cancellationHandlers, cancellationKey);
3169
+ }
3170
+ const json = safeStringify(normalizedResult);
3171
+ if (typeof json !== 'string' || byteLength(json) > options.maxOutputBytes) {
3172
+ throw new SafeError('Evaluation result exceeded maxOutputBytes');
3173
+ }
3174
+ return createEnvelope(true, json);
3175
+ } catch (error) {
3176
+ let message = 'Evaluation failed';
3177
+ if (typeof error === 'string') {
3178
+ message = error;
3179
+ } else if (error && typeof error === 'object') {
3180
+ const descriptor = safeGetOwnPropertyDescriptor(error, 'message');
3181
+ if (descriptor && 'value' in descriptor && typeof descriptor.value === 'string') {
3182
+ message = descriptor.value;
3183
+ }
3184
+ }
3185
+ if (byteLength(message) > 2048) {
3186
+ message = 'Evaluation failed with an oversized error';
3187
+ }
3188
+ return createEnvelope(false, message);
3189
+ }
3190
+ };
3191
+
3192
+ for (const [key, value] of [
3193
+ [${bootstrapKeyLiteral}, evaluate],
3194
+ [${cancelKeyLiteral}, cancelEvaluation],
3195
+ [${cleanupKeyLiteral}, cancelEvaluation],
3196
+ ]) {
3197
+ safeDefineProperty(safeGlobalThis, key, {
3198
+ value,
3199
+ configurable: false,
3200
+ enumerable: false,
3201
+ writable: false,
3202
+ });
3203
+ }
3204
+ return true;
3205
+ })()`;
3206
+ }
3207
+ createEvaluationExpression(expression, options, cancellationKey) {
3208
+ return `globalThis[${JSON.stringify(evaluationBootstrapKey)}](${JSON.stringify(expression)}, ${JSON.stringify(options)}, ${JSON.stringify(cancellationKey)})`;
3209
+ }
1866
3210
  validateTimeout(timeoutMs, defaultValue = 5000) {
1867
3211
  if (timeoutMs === undefined) {
1868
3212
  return defaultValue;
@@ -1903,4 +3247,4 @@ export class LiveBrowserSession {
1903
3247
  }
1904
3248
  }
1905
3249
  }
1906
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwdXBwZXRlZXIuY2xhc3Nlcy5saXZlYnJvd3NlcnNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHB1cHBldGVlci5jbGFzc2VzLmxpdmVicm93c2Vyc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQThCeEYsT0FBTyxLQUFLLE9BQU8sTUFBTSw2QkFBNkIsQ0FBQztBQUV2RCxNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLGlCQUFpQixFQUFFLENBQUM7Q0FDckIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQUM1QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBbUR4QyxNQUFNLHFCQUFxQixHQUFHLENBQzVCLEtBQWMsRUFDZCxJQUFZLEVBQ1osU0FBaUIsRUFDakIsU0FBaUIsRUFDVCxFQUFFO0lBQ1YsSUFDRSxPQUFPLEtBQUssS0FBSyxRQUFRO1dBQ3RCLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUztXQUN4QixLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFDM0IsQ0FBQztRQUNELE1BQU0sSUFB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
3250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwdXBwZXRlZXIuY2xhc3Nlcy5saXZlYnJvd3NlcnNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHB1cHBldGVlci5jbGFzc2VzLmxpdmVicm93c2Vyc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxFQUVMLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQix1QkFBdUIsR0FDeEIsTUFBTSxxQ0FBcUMsQ0FBQztBQW9DN0MsT0FBTyxLQUFLLE9BQU8sTUFBTSw2QkFBNkIsQ0FBQztBQUV2RCxNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLGlCQUFpQixFQUFFLENBQUM7Q0FDckIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQUM1QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDM0IsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDO0FBQ3hDLE1BQU0sd0JBQXdCLEdBQUcsT0FBTyxDQUFDO0FBQ3pDLE1BQU0sa0JBQWtCLEdB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