@crawlee/browser-pool 3.0.0-alpha.3 → 3.0.0-alpha.4

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.
Files changed (80) hide show
  1. package/README.md +151 -769
  2. package/{dist/index.js → index.js} +0 -0
  3. package/package.json +9 -10
  4. package/dist/LICENSE.md +0 -201
  5. package/dist/README.md +0 -214
  6. package/dist/abstract-classes/browser-controller.d.ts +0 -153
  7. package/dist/abstract-classes/browser-controller.d.ts.map +0 -1
  8. package/dist/abstract-classes/browser-controller.js +0 -234
  9. package/dist/abstract-classes/browser-controller.js.map +0 -1
  10. package/dist/abstract-classes/browser-plugin.d.ts +0 -91
  11. package/dist/abstract-classes/browser-plugin.d.ts.map +0 -1
  12. package/dist/abstract-classes/browser-plugin.js +0 -116
  13. package/dist/abstract-classes/browser-plugin.js.map +0 -1
  14. package/dist/abstract-classes/utils.d.ts +0 -2
  15. package/dist/abstract-classes/utils.d.ts.map +0 -1
  16. package/dist/abstract-classes/utils.js +0 -8
  17. package/dist/abstract-classes/utils.js.map +0 -1
  18. package/dist/browser-pool.d.ts +0 -406
  19. package/dist/browser-pool.d.ts.map +0 -1
  20. package/dist/browser-pool.js +0 -582
  21. package/dist/browser-pool.js.map +0 -1
  22. package/dist/events.d.ts +0 -11
  23. package/dist/events.d.ts.map +0 -1
  24. package/dist/events.js +0 -17
  25. package/dist/events.js.map +0 -1
  26. package/dist/fingerprinting/hooks.d.ts +0 -8
  27. package/dist/fingerprinting/hooks.d.ts.map +0 -1
  28. package/dist/fingerprinting/hooks.js +0 -81
  29. package/dist/fingerprinting/hooks.js.map +0 -1
  30. package/dist/fingerprinting/types.d.ts +0 -33
  31. package/dist/fingerprinting/types.d.ts.map +0 -1
  32. package/dist/fingerprinting/types.js +0 -21
  33. package/dist/fingerprinting/types.js.map +0 -1
  34. package/dist/fingerprinting/utils.d.ts +0 -5
  35. package/dist/fingerprinting/utils.d.ts.map +0 -1
  36. package/dist/fingerprinting/utils.js +0 -61
  37. package/dist/fingerprinting/utils.js.map +0 -1
  38. package/dist/index.d.ts +0 -35
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/index.js.map +0 -1
  41. package/dist/index.mjs +0 -11
  42. package/dist/launch-context.d.ts +0 -68
  43. package/dist/launch-context.d.ts.map +0 -1
  44. package/dist/launch-context.js +0 -94
  45. package/dist/launch-context.js.map +0 -1
  46. package/dist/logger.d.ts +0 -2
  47. package/dist/logger.d.ts.map +0 -1
  48. package/dist/logger.js +0 -9
  49. package/dist/logger.js.map +0 -1
  50. package/dist/package.json +0 -53
  51. package/dist/playwright/browser.d.ts +0 -26
  52. package/dist/playwright/browser.d.ts.map +0 -1
  53. package/dist/playwright/browser.js +0 -66
  54. package/dist/playwright/browser.js.map +0 -1
  55. package/dist/playwright/playwright-controller.d.ts +0 -11
  56. package/dist/playwright/playwright-controller.d.ts.map +0 -1
  57. package/dist/playwright/playwright-controller.js +0 -51
  58. package/dist/playwright/playwright-controller.js.map +0 -1
  59. package/dist/playwright/playwright-plugin.d.ts +0 -11
  60. package/dist/playwright/playwright-plugin.d.ts.map +0 -1
  61. package/dist/playwright/playwright-plugin.js +0 -61
  62. package/dist/playwright/playwright-plugin.js.map +0 -1
  63. package/dist/proxy-server.d.ts +0 -2
  64. package/dist/proxy-server.d.ts.map +0 -1
  65. package/dist/proxy-server.js +0 -19
  66. package/dist/proxy-server.js.map +0 -1
  67. package/dist/puppeteer/puppeteer-controller.d.ts +0 -11
  68. package/dist/puppeteer/puppeteer-controller.d.ts.map +0 -1
  69. package/dist/puppeteer/puppeteer-controller.js +0 -88
  70. package/dist/puppeteer/puppeteer-controller.js.map +0 -1
  71. package/dist/puppeteer/puppeteer-plugin.d.ts +0 -11
  72. package/dist/puppeteer/puppeteer-plugin.d.ts.map +0 -1
  73. package/dist/puppeteer/puppeteer-plugin.js +0 -82
  74. package/dist/puppeteer/puppeteer-plugin.js.map +0 -1
  75. package/dist/puppeteer/puppeteer-proxy-per-page.d.ts +0 -25
  76. package/dist/tsconfig.build.tsbuildinfo +0 -1
  77. package/dist/utils.d.ts +0 -6
  78. package/dist/utils.d.ts.map +0 -1
  79. package/dist/utils.js +0 -7
  80. package/dist/utils.js.map +0 -1
@@ -1,582 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BrowserPool = void 0;
4
- const tslib_1 = require("tslib");
5
- const p_limit_1 = tslib_1.__importDefault(require("p-limit"));
6
- const nanoid_1 = require("nanoid");
7
- const ow_1 = tslib_1.__importDefault(require("ow"));
8
- const tiny_typed_emitter_1 = require("tiny-typed-emitter");
9
- const timeout_1 = require("@apify/timeout");
10
- const fingerprint_injector_1 = require("fingerprint-injector");
11
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
- // @ts-expect-error no types for this package yet
13
- const fingerprint_generator_1 = tslib_1.__importDefault(require("fingerprint-generator"));
14
- const quick_lru_1 = tslib_1.__importDefault(require("quick-lru"));
15
- const logger_1 = require("./logger");
16
- const hooks_1 = require("./fingerprinting/hooks");
17
- const PAGE_CLOSE_KILL_TIMEOUT_MILLIS = 1000;
18
- const BROWSER_KILLER_INTERVAL_MILLIS = 10 * 1000;
19
- /**
20
- * The `BrowserPool` class is the most important class of the `browser-pool` module.
21
- * It manages opening and closing of browsers and their pages and its constructor
22
- * options allow easy configuration of the browsers' and pages' lifecycle.
23
- *
24
- * The most important and useful constructor options are the various lifecycle hooks.
25
- * Those allow you to sequentially call a list of (asynchronous) functions at each
26
- * stage of the browser / page lifecycle.
27
- *
28
- * **Example:**
29
- * ```js
30
- * const { BrowserPool, PlaywrightPlugin } = require('@crawlee/browser-pool');
31
- * const playwright = require('playwright');
32
- *
33
- * const browserPool = new BrowserPool({
34
- * browserPlugins: [ new PlaywrightPlugin(playwright.chromium)],
35
- * preLaunchHooks: [(pageId, launchContext) => {
36
- * // do something before a browser gets launched
37
- * launchContext.launchOptions.headless = false;
38
- * }],
39
- * postLaunchHooks: [(pageId, browserController) => {
40
- * // manipulate the browser right after launch
41
- * console.dir(browserController.browser.contexts());
42
- * }],
43
- * prePageCreateHooks: [(pageId, browserController) => {
44
- * if (pageId === 'my-page') {
45
- * // make changes right before a specific page is created
46
- * }
47
- * }],
48
- * postPageCreateHooks: [async (page, browserController) => {
49
- * // update some or all new pages
50
- * await page.evaluate(() => {
51
- * // now all pages will have 'foo'
52
- * window.foo = 'bar'
53
- * })
54
- * }],
55
- * prePageCloseHooks: [async (page, browserController) => {
56
- * // collect information just before a page closes
57
- * await page.screenshot();
58
- * }],
59
- * postPageCloseHooks: [(pageId, browserController) => {
60
- * // clean up or log after a job is done
61
- * console.log('Page closed: ', pageId)
62
- * }]
63
- * });
64
- * ```
65
- */
66
- class BrowserPool extends tiny_typed_emitter_1.TypedEmitter {
67
- constructor(options) {
68
- super();
69
- Object.defineProperty(this, "browserPlugins", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: void 0
74
- });
75
- Object.defineProperty(this, "maxOpenPagesPerBrowser", {
76
- enumerable: true,
77
- configurable: true,
78
- writable: true,
79
- value: void 0
80
- });
81
- Object.defineProperty(this, "retireBrowserAfterPageCount", {
82
- enumerable: true,
83
- configurable: true,
84
- writable: true,
85
- value: void 0
86
- });
87
- Object.defineProperty(this, "operationTimeoutMillis", {
88
- enumerable: true,
89
- configurable: true,
90
- writable: true,
91
- value: void 0
92
- });
93
- Object.defineProperty(this, "closeInactiveBrowserAfterMillis", {
94
- enumerable: true,
95
- configurable: true,
96
- writable: true,
97
- value: void 0
98
- });
99
- Object.defineProperty(this, "useFingerprints", {
100
- enumerable: true,
101
- configurable: true,
102
- writable: true,
103
- value: void 0
104
- });
105
- Object.defineProperty(this, "fingerprintsOptions", {
106
- enumerable: true,
107
- configurable: true,
108
- writable: true,
109
- value: void 0
110
- });
111
- Object.defineProperty(this, "preLaunchHooks", {
112
- enumerable: true,
113
- configurable: true,
114
- writable: true,
115
- value: void 0
116
- });
117
- Object.defineProperty(this, "postLaunchHooks", {
118
- enumerable: true,
119
- configurable: true,
120
- writable: true,
121
- value: void 0
122
- });
123
- Object.defineProperty(this, "prePageCreateHooks", {
124
- enumerable: true,
125
- configurable: true,
126
- writable: true,
127
- value: void 0
128
- });
129
- Object.defineProperty(this, "postPageCreateHooks", {
130
- enumerable: true,
131
- configurable: true,
132
- writable: true,
133
- value: void 0
134
- });
135
- Object.defineProperty(this, "prePageCloseHooks", {
136
- enumerable: true,
137
- configurable: true,
138
- writable: true,
139
- value: void 0
140
- });
141
- Object.defineProperty(this, "postPageCloseHooks", {
142
- enumerable: true,
143
- configurable: true,
144
- writable: true,
145
- value: void 0
146
- });
147
- Object.defineProperty(this, "pageCounter", {
148
- enumerable: true,
149
- configurable: true,
150
- writable: true,
151
- value: 0
152
- });
153
- Object.defineProperty(this, "pages", {
154
- enumerable: true,
155
- configurable: true,
156
- writable: true,
157
- value: new Map()
158
- });
159
- Object.defineProperty(this, "pageIds", {
160
- enumerable: true,
161
- configurable: true,
162
- writable: true,
163
- value: new WeakMap()
164
- });
165
- Object.defineProperty(this, "activeBrowserControllers", {
166
- enumerable: true,
167
- configurable: true,
168
- writable: true,
169
- value: new Set()
170
- });
171
- Object.defineProperty(this, "retiredBrowserControllers", {
172
- enumerable: true,
173
- configurable: true,
174
- writable: true,
175
- value: new Set()
176
- });
177
- Object.defineProperty(this, "pageToBrowserController", {
178
- enumerable: true,
179
- configurable: true,
180
- writable: true,
181
- value: new WeakMap()
182
- });
183
- Object.defineProperty(this, "fingerprintInjector", {
184
- enumerable: true,
185
- configurable: true,
186
- writable: true,
187
- value: void 0
188
- });
189
- Object.defineProperty(this, "fingerprintGenerator", {
190
- enumerable: true,
191
- configurable: true,
192
- writable: true,
193
- value: void 0
194
- });
195
- Object.defineProperty(this, "fingerprintCache", {
196
- enumerable: true,
197
- configurable: true,
198
- writable: true,
199
- value: void 0
200
- });
201
- Object.defineProperty(this, "browserKillerInterval", {
202
- enumerable: true,
203
- configurable: true,
204
- writable: true,
205
- value: setInterval(() => this._closeInactiveRetiredBrowsers(), BROWSER_KILLER_INTERVAL_MILLIS)
206
- });
207
- Object.defineProperty(this, "limiter", {
208
- enumerable: true,
209
- configurable: true,
210
- writable: true,
211
- value: (0, p_limit_1.default)(1)
212
- });
213
- (0, ow_1.default)(options, ow_1.default.object.exactShape({
214
- browserPlugins: ow_1.default.array.minLength(1),
215
- maxOpenPagesPerBrowser: ow_1.default.optional.number,
216
- retireBrowserAfterPageCount: ow_1.default.optional.number,
217
- operationTimeoutSecs: ow_1.default.optional.number,
218
- closeInactiveBrowserAfterSecs: ow_1.default.optional.number,
219
- preLaunchHooks: ow_1.default.optional.array,
220
- postLaunchHooks: ow_1.default.optional.array,
221
- prePageCreateHooks: ow_1.default.optional.array,
222
- postPageCreateHooks: ow_1.default.optional.array,
223
- prePageCloseHooks: ow_1.default.optional.array,
224
- postPageCloseHooks: ow_1.default.optional.array,
225
- useFingerprints: ow_1.default.optional.boolean,
226
- fingerprintsOptions: ow_1.default.optional.object,
227
- }));
228
- const { browserPlugins, maxOpenPagesPerBrowser = 20, retireBrowserAfterPageCount = 100, operationTimeoutSecs = 15, closeInactiveBrowserAfterSecs = 300, preLaunchHooks = [], postLaunchHooks = [], prePageCreateHooks = [], postPageCreateHooks = [], prePageCloseHooks = [], postPageCloseHooks = [], useFingerprints = false, fingerprintsOptions = {}, } = options;
229
- this.browserPlugins = browserPlugins;
230
- this.maxOpenPagesPerBrowser = maxOpenPagesPerBrowser;
231
- this.retireBrowserAfterPageCount = retireBrowserAfterPageCount;
232
- this.operationTimeoutMillis = operationTimeoutSecs * 1000;
233
- this.closeInactiveBrowserAfterMillis = closeInactiveBrowserAfterSecs * 1000;
234
- this.useFingerprints = useFingerprints;
235
- this.fingerprintsOptions = fingerprintsOptions;
236
- // hooks
237
- this.preLaunchHooks = preLaunchHooks;
238
- this.postLaunchHooks = postLaunchHooks;
239
- this.prePageCreateHooks = prePageCreateHooks;
240
- this.postPageCreateHooks = postPageCreateHooks;
241
- this.prePageCloseHooks = prePageCloseHooks;
242
- this.postPageCloseHooks = postPageCloseHooks;
243
- // fingerprinting
244
- if (this.useFingerprints) {
245
- this._initializeFingerprinting();
246
- }
247
- }
248
- /**
249
- * Opens a new page in one of the running browsers or launches
250
- * a new browser and opens a page there, if no browsers are active,
251
- * or their page limits have been exceeded.
252
- */
253
- async newPage(options = {}) {
254
- const { id = (0, nanoid_1.nanoid)(), pageOptions, browserPlugin = this._pickBrowserPlugin(), proxyUrl, } = options;
255
- if (this.pages.has(id)) {
256
- throw new Error(`Page with ID: ${id} already exists.`);
257
- }
258
- if (browserPlugin && !this.browserPlugins.includes(browserPlugin)) {
259
- throw new Error('Provided browserPlugin is not one of the plugins used by BrowserPool.');
260
- }
261
- // Limiter is necessary - https://github.com/apify/apify-js/issues/1126
262
- return this.limiter(async () => {
263
- let browserController = this._pickBrowserWithFreeCapacity(browserPlugin);
264
- if (!browserController)
265
- browserController = await this._launchBrowser(id, { browserPlugin });
266
- (0, timeout_1.tryCancel)();
267
- return this._createPageForBrowser(id, browserController, pageOptions, proxyUrl);
268
- });
269
- }
270
- /**
271
- * Unlike {@link newPage}, `newPageInNewBrowser` always launches a new
272
- * browser to open the page in. Use the `launchOptions` option to
273
- * configure the new browser.
274
- */
275
- async newPageInNewBrowser(options = {}) {
276
- const { id = (0, nanoid_1.nanoid)(), pageOptions, launchOptions, browserPlugin = this._pickBrowserPlugin(), } = options;
277
- if (this.pages.has(id)) {
278
- throw new Error(`Page with ID: ${id} already exists.`);
279
- }
280
- const browserController = await this._launchBrowser(id, { launchOptions, browserPlugin });
281
- (0, timeout_1.tryCancel)();
282
- return this._createPageForBrowser(id, browserController, pageOptions);
283
- }
284
- /**
285
- * Opens new pages with all available plugins and returns an array
286
- * of pages in the same order as the plugins were provided to `BrowserPool`.
287
- * This is useful when you want to run a script in multiple environments
288
- * at the same time, typically in testing or website analysis.
289
- *
290
- * **Example:**
291
- * ```js
292
- * const browserPool = new BrowserPool({
293
- * browserPlugins: [
294
- * new PlaywrightPlugin(playwright.chromium),
295
- * new PlaywrightPlugin(playwright.firefox),
296
- * new PlaywrightPlugin(playwright.webkit),
297
- * new PuppeteerPlugin(puppeteer),
298
- * ]
299
- * });
300
- *
301
- * const pages = await browserPool.newPageWithEachPlugin();
302
- * const [chromiumPage, firefoxPage, webkitPage, puppeteerPage] = pages;
303
- * ```
304
- */
305
- async newPageWithEachPlugin(optionsList = []) {
306
- const pagePromises = this.browserPlugins.map((browserPlugin, idx) => {
307
- const userOptions = optionsList[idx] || {};
308
- return this.newPage({
309
- ...userOptions,
310
- browserPlugin,
311
- });
312
- });
313
- return Promise.all(pagePromises);
314
- }
315
- /**
316
- * Retrieves a {@link BrowserController} for a given page. This is useful
317
- * when you're working only with pages and need to access the browser
318
- * manipulation functionality.
319
- *
320
- * You could access the browser directly from the page,
321
- * but that would circumvent `BrowserPool` and most likely
322
- * cause weird things to happen, so please always use `BrowserController`
323
- * to control your browsers. The function returns `undefined` if the
324
- * browser is closed.
325
- *
326
- * @param page - Browser plugin page
327
- */
328
- getBrowserControllerByPage(page) {
329
- return this.pageToBrowserController.get(page);
330
- }
331
- /**
332
- * If you provided a custom ID to one of your pages or saved the
333
- * randomly generated one, you can use this function to retrieve
334
- * the page. If the page is no longer open, the function will
335
- * return `undefined`.
336
- */
337
- getPage(id) {
338
- return this.pages.get(id);
339
- }
340
- /**
341
- * Page IDs are used throughout `BrowserPool` as a method of linking
342
- * events. You can use a page ID to track the full lifecycle of the page.
343
- * It is created even before a browser is launched and stays with the page
344
- * until it's closed.
345
- */
346
- getPageId(page) {
347
- return this.pageIds.get(page);
348
- }
349
- async _createPageForBrowser(pageId, browserController, pageOptions = {}, proxyUrl) {
350
- // TODO This is needed for concurrent newPage calls to wait for the browser launch.
351
- // It's not ideal though, we need to come up with a better API.
352
- // eslint-disable-next-line dot-notation -- accessing private property
353
- await browserController['isActivePromise'];
354
- (0, timeout_1.tryCancel)();
355
- const finalPageOptions = browserController.launchContext.useIncognitoPages ? pageOptions : undefined;
356
- if (finalPageOptions) {
357
- Object.assign(finalPageOptions, browserController.normalizeProxyOptions(proxyUrl, pageOptions));
358
- }
359
- await this._executeHooks(this.prePageCreateHooks, pageId, browserController, finalPageOptions);
360
- (0, timeout_1.tryCancel)();
361
- let page;
362
- try {
363
- page = await (0, timeout_1.addTimeoutToPromise)(() => browserController.newPage(finalPageOptions), this.operationTimeoutMillis, 'browserController.newPage() timed out.');
364
- (0, timeout_1.tryCancel)();
365
- this.pages.set(pageId, page);
366
- this.pageIds.set(page, pageId);
367
- this.pageToBrowserController.set(page, browserController);
368
- // TODO if you synchronously trigger a lot of page launches, browser
369
- // will not get retired soon enough. Not sure if it's a problem, let's monitor it.
370
- if (browserController.totalPages >= this.retireBrowserAfterPageCount) {
371
- this.retireBrowserController(browserController);
372
- }
373
- this._overridePageClose(page);
374
- }
375
- catch (err) {
376
- this.retireBrowserController(browserController);
377
- throw new Error(`browserController.newPage() failed: ${browserController.id}\nCause:${err.message}.`);
378
- }
379
- await this._executeHooks(this.postPageCreateHooks, page, browserController);
380
- (0, timeout_1.tryCancel)();
381
- this.emit("pageCreated" /* PAGE_CREATED */, page); // @TODO: CONSIDER renaming this event.
382
- return page;
383
- }
384
- /**
385
- * Removes a browser controller from the pool. The underlying
386
- * browser will be closed after all its pages are closed.
387
- *
388
- */
389
- retireBrowserController(browserController) {
390
- const hasBeenRetiredOrKilled = !this.activeBrowserControllers.has(browserController);
391
- if (hasBeenRetiredOrKilled)
392
- return;
393
- this.retiredBrowserControllers.add(browserController);
394
- this.emit("browserRetired" /* BROWSER_RETIRED */, browserController);
395
- this.activeBrowserControllers.delete(browserController);
396
- }
397
- /**
398
- * Removes a browser from the pool. It will be
399
- * closed after all its pages are closed.
400
- */
401
- retireBrowserByPage(page) {
402
- const browserController = this.getBrowserControllerByPage(page);
403
- if (browserController)
404
- this.retireBrowserController(browserController);
405
- }
406
- /**
407
- * Removes all active browsers from the pool. The browsers will be
408
- * closed after all their pages are closed.
409
- */
410
- retireAllBrowsers() {
411
- this.activeBrowserControllers.forEach((controller) => {
412
- this.retireBrowserController(controller);
413
- });
414
- }
415
- /**
416
- * Closes all managed browsers without waiting for pages to close.
417
- * @return {Promise<void>}
418
- */
419
- async closeAllBrowsers() {
420
- const controllers = this._getAllBrowserControllers();
421
- const promises = [...controllers]
422
- .filter((controller) => controller.isActive)
423
- .map((controller) => controller.close());
424
- await Promise.all(promises);
425
- }
426
- /**
427
- * Closes all managed browsers and tears down the pool.
428
- */
429
- async destroy() {
430
- clearInterval(this.browserKillerInterval);
431
- this.browserKillerInterval = undefined;
432
- await this.closeAllBrowsers();
433
- this._teardown();
434
- }
435
- _teardown() {
436
- this.activeBrowserControllers.clear();
437
- this.retiredBrowserControllers.clear();
438
- this.removeAllListeners();
439
- }
440
- _getAllBrowserControllers() {
441
- return new Set([...this.activeBrowserControllers, ...this.retiredBrowserControllers]);
442
- }
443
- async _launchBrowser(pageId, options) {
444
- const { browserPlugin, launchOptions, } = options;
445
- const browserController = browserPlugin.createController();
446
- this.activeBrowserControllers.add(browserController);
447
- const launchContext = browserPlugin.createLaunchContext({
448
- id: pageId,
449
- launchOptions,
450
- });
451
- try {
452
- // If the hooks or the launch fails, we need to delete the controller,
453
- // because otherwise it would be stuck in limbo without a browser.
454
- await this._executeHooks(this.preLaunchHooks, pageId, launchContext);
455
- (0, timeout_1.tryCancel)();
456
- const browser = await browserPlugin.launch(launchContext);
457
- (0, timeout_1.tryCancel)();
458
- browserController.assignBrowser(browser, launchContext);
459
- }
460
- catch (err) {
461
- this.activeBrowserControllers.delete(browserController);
462
- throw err;
463
- }
464
- logger_1.log.debug('Launched new browser.', { id: browserController.id });
465
- try {
466
- // If the launch fails on the post-launch hooks, we need to clean up
467
- // both the controller and the browser before throwing.
468
- await this._executeHooks(this.postLaunchHooks, pageId, browserController);
469
- }
470
- catch (err) {
471
- this.activeBrowserControllers.delete(browserController);
472
- browserController.close().catch((closeErr) => {
473
- logger_1.log.error(`Could not close browser whose post-launch hooks failed.\nCause:${closeErr.message}`, { id: browserController.id });
474
- });
475
- throw err;
476
- }
477
- (0, timeout_1.tryCancel)();
478
- browserController.activate();
479
- this.emit("browserLaunched" /* BROWSER_LAUNCHED */, browserController);
480
- return browserController;
481
- }
482
- /**
483
- * Picks plugins round robin.
484
- * @private
485
- */
486
- _pickBrowserPlugin() {
487
- const pluginIndex = this.pageCounter % this.browserPlugins.length;
488
- this.pageCounter++;
489
- return this.browserPlugins[pluginIndex];
490
- }
491
- _pickBrowserWithFreeCapacity(browserPlugin) {
492
- for (const controller of this.activeBrowserControllers) {
493
- const hasCapacity = controller.activePages < this.maxOpenPagesPerBrowser;
494
- const isCorrectPlugin = controller.browserPlugin === browserPlugin;
495
- if (hasCapacity && isCorrectPlugin) {
496
- return controller;
497
- }
498
- }
499
- return undefined;
500
- }
501
- async _closeInactiveRetiredBrowsers() {
502
- const closedBrowserIds = [];
503
- for (const controller of this.retiredBrowserControllers) {
504
- const millisSinceLastPageOpened = Date.now() - controller.lastPageOpenedAt;
505
- const isBrowserIdle = millisSinceLastPageOpened >= this.closeInactiveBrowserAfterMillis;
506
- const isBrowserEmpty = controller.activePages === 0;
507
- if (isBrowserIdle || isBrowserEmpty) {
508
- const { id } = controller;
509
- logger_1.log.debug('Closing retired browser.', { id });
510
- await controller.close();
511
- this.retiredBrowserControllers.delete(controller);
512
- closedBrowserIds.push(id);
513
- }
514
- }
515
- if (closedBrowserIds.length) {
516
- logger_1.log.debug('Closed retired browsers.', {
517
- count: closedBrowserIds.length,
518
- closedBrowserIds,
519
- });
520
- }
521
- }
522
- _overridePageClose(page) {
523
- const originalPageClose = page.close;
524
- const browserController = this.pageToBrowserController.get(page);
525
- const pageId = this.getPageId(page);
526
- page.close = async (...args) => {
527
- await this._executeHooks(this.prePageCloseHooks, page, browserController);
528
- await originalPageClose.apply(page, args)
529
- .catch((err) => {
530
- logger_1.log.debug(`Could not close page.\nCause:${err.message}`, { id: browserController.id });
531
- });
532
- await this._executeHooks(this.postPageCloseHooks, pageId, browserController);
533
- this.pages.delete(pageId);
534
- this._closeRetiredBrowserWithNoPages(browserController);
535
- this.emit("pageClosed" /* PAGE_CLOSED */, page);
536
- };
537
- }
538
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
539
- async _executeHooks(hooks, ...args) {
540
- for (const hook of hooks) {
541
- await hook(...args);
542
- }
543
- }
544
- _closeRetiredBrowserWithNoPages(browserController) {
545
- if (browserController.activePages === 0 && this.retiredBrowserControllers.has(browserController)) {
546
- // Run this with a delay, otherwise page.close()
547
- // might fail with "Protocol error (Target.closeTarget): Target closed."
548
- setTimeout(() => {
549
- logger_1.log.debug('Closing retired browser because it has no active pages', { id: browserController.id });
550
- // TODO: @typescript-eslint/no-floating-promises
551
- browserController.close(); // eslint-disable-line
552
- this.retiredBrowserControllers.delete(browserController);
553
- }, PAGE_CLOSE_KILL_TIMEOUT_MILLIS);
554
- }
555
- }
556
- _initializeFingerprinting() {
557
- const { useFingerprintPerProxyCache = true, fingerprintPerProxyCacheSize = 10000 } = this.fingerprintsOptions;
558
- this.fingerprintGenerator = new fingerprint_generator_1.default(this.fingerprintsOptions.fingerprintGeneratorOptions);
559
- this.fingerprintInjector = new fingerprint_injector_1.FingerprintInjector();
560
- if (useFingerprintPerProxyCache) {
561
- this.fingerprintCache = new quick_lru_1.default({ maxSize: fingerprintPerProxyCacheSize });
562
- }
563
- this._addFingerprintHooks();
564
- }
565
- _addFingerprintHooks() {
566
- this.preLaunchHooks = [
567
- ...this.preLaunchHooks,
568
- // This is flipped because of the fingerprint cache.
569
- // It is usual to generate proxy per browser and we want to know the proxyUrl for the caching.
570
- (0, hooks_1.createFingerprintPreLaunchHook)(this),
571
- ];
572
- this.prePageCreateHooks = [
573
- (0, hooks_1.createPrePageCreateHook)(),
574
- ...this.prePageCreateHooks,
575
- ];
576
- this.postPageCreateHooks = [
577
- (0, hooks_1.createPostPageCreateHook)(this.fingerprintInjector),
578
- ];
579
- }
580
- }
581
- exports.BrowserPool = BrowserPool;
582
- //# sourceMappingURL=browser-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-pool.js","sourceRoot":"","sources":["../src/browser-pool.ts"],"names":[],"mappings":"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"}
package/dist/events.d.ts DELETED
@@ -1,11 +0,0 @@
1
- export declare const enum BROWSER_POOL_EVENTS {
2
- BROWSER_LAUNCHED = "browserLaunched",
3
- BROWSER_RETIRED = "browserRetired",
4
- BROWSER_CLOSED = "browserClosed",
5
- PAGE_CREATED = "pageCreated",
6
- PAGE_CLOSED = "pageClosed"
7
- }
8
- export declare const enum BROWSER_CONTROLLER_EVENTS {
9
- BROWSER_CLOSED = "browserClosed"
10
- }
11
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,0BAAkB,mBAAmB;IACjC,gBAAgB,oBAAoB;IACpC,eAAe,mBAAmB;IAClC,cAAc,kBAAkB;IAEhC,YAAY,gBAAgB;IAC5B,WAAW,eAAe;CAC7B;AAED,0BAAkB,yBAAyB;IACvC,cAAc,kBAAkB;CACnC"}
package/dist/events.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BROWSER_CONTROLLER_EVENTS = exports.BROWSER_POOL_EVENTS = void 0;
4
- var BROWSER_POOL_EVENTS;
5
- (function (BROWSER_POOL_EVENTS) {
6
- BROWSER_POOL_EVENTS["BROWSER_LAUNCHED"] = "browserLaunched";
7
- BROWSER_POOL_EVENTS["BROWSER_RETIRED"] = "browserRetired";
8
- BROWSER_POOL_EVENTS["BROWSER_CLOSED"] = "browserClosed";
9
- BROWSER_POOL_EVENTS["PAGE_CREATED"] = "pageCreated";
10
- BROWSER_POOL_EVENTS["PAGE_CLOSED"] = "pageClosed";
11
- })(BROWSER_POOL_EVENTS = exports.BROWSER_POOL_EVENTS || (exports.BROWSER_POOL_EVENTS = {}));
12
- var BROWSER_CONTROLLER_EVENTS;
13
- (function (BROWSER_CONTROLLER_EVENTS) {
14
- BROWSER_CONTROLLER_EVENTS["BROWSER_CLOSED"] = "browserClosed";
15
- })(BROWSER_CONTROLLER_EVENTS = exports.BROWSER_CONTROLLER_EVENTS || (exports.BROWSER_CONTROLLER_EVENTS = {}));
16
- ;
17
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;AAAA,IAAkB,mBAOjB;AAPD,WAAkB,mBAAmB;IACjC,2DAAoC,CAAA;IACpC,yDAAkC,CAAA;IAClC,uDAAgC,CAAA;IAEhC,mDAA4B,CAAA;IAC5B,iDAA0B,CAAA;AAC9B,CAAC,EAPiB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAOpC;AAED,IAAkB,yBAEjB;AAFD,WAAkB,yBAAyB;IACvC,6DAAgC,CAAA;AACpC,CAAC,EAFiB,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAE1C;AAAA,CAAC"}
@@ -1,8 +0,0 @@
1
- import { FingerprintInjector } from 'fingerprint-injector';
2
- import { BrowserPool } from '..';
3
- import { BrowserController } from '../abstract-classes/browser-controller';
4
- import { LaunchContext } from '../launch-context';
5
- export declare function createFingerprintPreLaunchHook(browserPool: BrowserPool<any, any, any, any, any>): (_pageId: string, launchContext: LaunchContext) => void;
6
- export declare function createPrePageCreateHook(): (_pageId: string, browserController: BrowserController, pageOptions: any) => void;
7
- export declare function createPostPageCreateHook(fingerprintInjector: FingerprintInjector): (page: any, browserController: BrowserController) => Promise<void>;
8
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/fingerprinting/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAqC,MAAM,IAAI,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,aAS3E,MAAM,iBAAiB,aAAa,UAiCxD;AAED,wBAAgB,uBAAuB,cAClB,MAAM,qBAAqB,iBAAiB,eAAe,GAAG,KAAG,IAAI,CAYzF;AAED,wBAAgB,wBAAwB,CAAC,mBAAmB,EAAE,mBAAmB,UACzD,GAAG,qBAAqB,iBAAiB,KAAG,QAAQ,IAAI,CAAC,CAwBhF"}