@letsscrapedata/controller 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +37 -14
- package/dist/index.d.cts +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +37 -14
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -329,6 +329,7 @@ var PlaywrightPage = class extends import_node_events.default {
|
|
|
329
329
|
#resquestInterceptionOptions;
|
|
330
330
|
#responseInterceptionOptions;
|
|
331
331
|
#client;
|
|
332
|
+
#responseCb;
|
|
332
333
|
#hasValidUrl(page) {
|
|
333
334
|
const url = page.url();
|
|
334
335
|
return url.toLowerCase().startsWith("http");
|
|
@@ -541,6 +542,7 @@ var PlaywrightPage = class extends import_node_events.default {
|
|
|
541
542
|
this.#resquestInterceptionOptions = [];
|
|
542
543
|
this.#responseInterceptionOptions = [];
|
|
543
544
|
this.#client = null;
|
|
545
|
+
this.#responseCb = null;
|
|
544
546
|
this.#addPageOn();
|
|
545
547
|
}
|
|
546
548
|
async bringToFront() {
|
|
@@ -578,7 +580,9 @@ var PlaywrightPage = class extends import_node_events.default {
|
|
|
578
580
|
}
|
|
579
581
|
try {
|
|
580
582
|
if (this.#responseInterceptionOptions.length > 0) {
|
|
581
|
-
|
|
583
|
+
if (this.#responseCb) {
|
|
584
|
+
this.#page.removeListener("response", this.#responseCb);
|
|
585
|
+
}
|
|
582
586
|
this.#responseInterceptionOptions = [];
|
|
583
587
|
}
|
|
584
588
|
return true;
|
|
@@ -941,7 +945,7 @@ var PlaywrightPage = class extends import_node_events.default {
|
|
|
941
945
|
}
|
|
942
946
|
return true;
|
|
943
947
|
}
|
|
944
|
-
async #
|
|
948
|
+
async #responseListener(response) {
|
|
945
949
|
try {
|
|
946
950
|
const pageUrl = this.#page ? this.#page.url() : "";
|
|
947
951
|
if (!response.ok()) {
|
|
@@ -1008,7 +1012,8 @@ var PlaywrightPage = class extends import_node_events.default {
|
|
|
1008
1012
|
}
|
|
1009
1013
|
}
|
|
1010
1014
|
if (firstResponseInterception && this.#responseInterceptionOptions.length > 0) {
|
|
1011
|
-
this.#
|
|
1015
|
+
this.#responseCb = this.#responseListener.bind(this);
|
|
1016
|
+
this.#page.on("response", this.#responseCb);
|
|
1012
1017
|
}
|
|
1013
1018
|
return true;
|
|
1014
1019
|
}
|
|
@@ -1138,10 +1143,11 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1138
1143
|
#proxy;
|
|
1139
1144
|
#maxPagesPerBrowserContext;
|
|
1140
1145
|
#maxPageFreeSeconds;
|
|
1146
|
+
#maxViewportOfNewPage;
|
|
1141
1147
|
#lsdPages;
|
|
1142
1148
|
#nextPageIdx;
|
|
1143
1149
|
#gettingPage;
|
|
1144
|
-
#initPages() {
|
|
1150
|
+
async #initPages() {
|
|
1145
1151
|
if (!this.#browserContext) {
|
|
1146
1152
|
throw new Error("Invalid browserContext");
|
|
1147
1153
|
}
|
|
@@ -1151,11 +1157,14 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1151
1157
|
for (const page of pages) {
|
|
1152
1158
|
const pageInfo = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType, openTime: this.#createTime, lastStatusUpdateTime, taskId: 0, relatedId: 0, misc: {} };
|
|
1153
1159
|
const lsdPage = new PlaywrightPage(this, page, pageInfo);
|
|
1160
|
+
if (this.#maxViewportOfNewPage) {
|
|
1161
|
+
await lsdPage.maximizeViewport();
|
|
1162
|
+
}
|
|
1154
1163
|
this.#lsdPages.push(lsdPage);
|
|
1155
1164
|
(0, import_utils3.loginfo)(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
1156
1165
|
}
|
|
1157
1166
|
}
|
|
1158
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0) {
|
|
1167
|
+
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1159
1168
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
1160
1169
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
1161
1170
|
}
|
|
@@ -1172,6 +1181,7 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1172
1181
|
this.#proxy = proxy?.server ? proxy : null;
|
|
1173
1182
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
1174
1183
|
this.#maxPageFreeSeconds = maxPageFreeSeconds;
|
|
1184
|
+
this.#maxViewportOfNewPage = maxViewportOfNewPage;
|
|
1175
1185
|
this.#lsdPages = [];
|
|
1176
1186
|
this.#nextPageIdx = 1;
|
|
1177
1187
|
this.#gettingPage = false;
|
|
@@ -1185,6 +1195,9 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1185
1195
|
const currentTime = (0, import_utils3.getCurrentUnixTime)();
|
|
1186
1196
|
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime, lastStatusUpdateTime: currentTime, taskId: 0, relatedId: 0, misc: {} };
|
|
1187
1197
|
const lsdPage = new PlaywrightPage(this, page, pageInfo2);
|
|
1198
|
+
if (this.#maxViewportOfNewPage) {
|
|
1199
|
+
await lsdPage.maximizeViewport();
|
|
1200
|
+
}
|
|
1188
1201
|
this.#lsdPages.push(lsdPage);
|
|
1189
1202
|
(0, import_utils3.loginfo)(`##browser ${lsdPage.id()} created`);
|
|
1190
1203
|
}
|
|
@@ -1402,7 +1415,7 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1402
1415
|
throw new Error(`Invalid playwright browser parameter`);
|
|
1403
1416
|
}
|
|
1404
1417
|
super();
|
|
1405
|
-
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, headless = false, executablePath = "" } = options;
|
|
1418
|
+
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, maxViewportOfNewPage = true, headless = false, executablePath = "" } = options;
|
|
1406
1419
|
this.#browser = browser;
|
|
1407
1420
|
this.#browserIdx = browserIdx;
|
|
1408
1421
|
this.#lsdBrowserContexts = [];
|
|
@@ -1410,8 +1423,8 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1410
1423
|
this.#browserType = browerType;
|
|
1411
1424
|
this.#browserCreationMethod = browserCreateMethod;
|
|
1412
1425
|
this.#headless = headless;
|
|
1413
|
-
this.#options = options;
|
|
1414
1426
|
this.#proxy = options?.proxy ? Object.assign({}, options.proxy) : null;
|
|
1427
|
+
this.#options = Object.assign({}, options, { closeFreePagesIntervalSeconds, maxPageFreeSeconds, maxViewportOfNewPage, headless, executablePath, proxy: this.#proxy });
|
|
1415
1428
|
this.#executablePath = executablePath;
|
|
1416
1429
|
this.#nextBrowserContextIdx = 1;
|
|
1417
1430
|
this.#closeFreePagesIntervalId = null;
|
|
@@ -1422,7 +1435,7 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1422
1435
|
}
|
|
1423
1436
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
1424
1437
|
for (const browserContext of browserContexts) {
|
|
1425
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds());
|
|
1438
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1426
1439
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1427
1440
|
(0, import_utils4.loginfo)(`##browser ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
1428
1441
|
}
|
|
@@ -1477,7 +1490,8 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1477
1490
|
browserContextOptions.userAgent = options.userAgent;
|
|
1478
1491
|
}
|
|
1479
1492
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
1480
|
-
const
|
|
1493
|
+
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
1494
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, true, proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1481
1495
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1482
1496
|
(0, import_utils4.loginfo)(`##browser ${lsdBrowserContext.id()} created`);
|
|
1483
1497
|
return lsdBrowserContext;
|
|
@@ -2594,6 +2608,7 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2594
2608
|
#proxy;
|
|
2595
2609
|
#maxPagesPerBrowserContext;
|
|
2596
2610
|
#maxPageFreeSeconds;
|
|
2611
|
+
#maxViewportOfNewPage;
|
|
2597
2612
|
#lsdPages;
|
|
2598
2613
|
#nextPageIdx;
|
|
2599
2614
|
#gettingPage;
|
|
@@ -2607,6 +2622,9 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2607
2622
|
for (const page of pages) {
|
|
2608
2623
|
const pageInfo = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType, openTime: this.#createTime, lastStatusUpdateTime, taskId: 0, relatedId: 0, misc: {} };
|
|
2609
2624
|
const lsdPage = new PuppeteerPage(this, page, pageInfo);
|
|
2625
|
+
if (this.#maxViewportOfNewPage) {
|
|
2626
|
+
await lsdPage.maximizeViewport();
|
|
2627
|
+
}
|
|
2610
2628
|
if (this.#userAgent) {
|
|
2611
2629
|
await lsdPage.setUserAgent(this.#userAgent);
|
|
2612
2630
|
}
|
|
@@ -2614,7 +2632,7 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2614
2632
|
(0, import_utils7.loginfo)(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
2615
2633
|
}
|
|
2616
2634
|
}
|
|
2617
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "") {
|
|
2635
|
+
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
2618
2636
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
2619
2637
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
2620
2638
|
}
|
|
@@ -2632,6 +2650,7 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2632
2650
|
this.#proxy = proxy?.server ? proxy : null;
|
|
2633
2651
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
2634
2652
|
this.#maxPageFreeSeconds = maxPageFreeSeconds;
|
|
2653
|
+
this.#maxViewportOfNewPage = maxViewportOfNewPage;
|
|
2635
2654
|
this.#lsdPages = [];
|
|
2636
2655
|
this.#nextPageIdx = 1;
|
|
2637
2656
|
this.#gettingPage = false;
|
|
@@ -2650,6 +2669,9 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2650
2669
|
const currentTime = (0, import_utils7.getCurrentUnixTime)();
|
|
2651
2670
|
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime, lastStatusUpdateTime: currentTime, taskId: 0, relatedId: 0, misc: {} };
|
|
2652
2671
|
const lsdPage = new PuppeteerPage(this, page, pageInfo2);
|
|
2672
|
+
if (this.#maxViewportOfNewPage) {
|
|
2673
|
+
await lsdPage.maximizeViewport();
|
|
2674
|
+
}
|
|
2653
2675
|
if (this.#userAgent) {
|
|
2654
2676
|
await lsdPage.setUserAgent(this.#userAgent);
|
|
2655
2677
|
}
|
|
@@ -2873,7 +2895,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
2873
2895
|
throw new Error(`Invalid puppeteer browser parameter`);
|
|
2874
2896
|
}
|
|
2875
2897
|
super();
|
|
2876
|
-
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, headless = false, executablePath = "" } = options;
|
|
2898
|
+
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, maxViewportOfNewPage = true, headless = false, executablePath = "" } = options;
|
|
2877
2899
|
this.#browser = browser;
|
|
2878
2900
|
this.#browserIdx = browserIdx;
|
|
2879
2901
|
this.#lsdBrowserContexts = [];
|
|
@@ -2882,7 +2904,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
2882
2904
|
this.#browserCreationMethod = browserCreateMethod;
|
|
2883
2905
|
this.#headless = headless;
|
|
2884
2906
|
this.#proxy = options?.proxy ? Object.assign({}, options.proxy) : null;
|
|
2885
|
-
this.#options = options;
|
|
2907
|
+
this.#options = Object.assign({}, options, { closeFreePagesIntervalSeconds, maxPageFreeSeconds, maxViewportOfNewPage, headless, executablePath, proxy: this.#proxy });
|
|
2886
2908
|
this.#executablePath = executablePath;
|
|
2887
2909
|
this.#nextBrowserContextIdx = 1;
|
|
2888
2910
|
this.#closeFreePagesIntervalId = null;
|
|
@@ -2890,7 +2912,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
2890
2912
|
const browserContexts = browser.browserContexts();
|
|
2891
2913
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : false;
|
|
2892
2914
|
for (const browserContext of browserContexts) {
|
|
2893
|
-
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent());
|
|
2915
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent(), maxViewportOfNewPage);
|
|
2894
2916
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
2895
2917
|
(0, import_utils8.loginfo)(`##browser ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
2896
2918
|
}
|
|
@@ -2942,7 +2964,8 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
2942
2964
|
}
|
|
2943
2965
|
const browserContext = await this.#browser.createBrowserContext(browserContextOptions);
|
|
2944
2966
|
const userAgent = options?.userAgent ? options.userAgent : "";
|
|
2945
|
-
const
|
|
2967
|
+
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
2968
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
2946
2969
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
2947
2970
|
(0, import_utils8.loginfo)(`##browser ${lsdBrowserContext.id()} created`);
|
|
2948
2971
|
return lsdBrowserContext;
|
package/dist/index.d.cts
CHANGED
|
@@ -61,6 +61,10 @@ interface BrowserOptions {
|
|
|
61
61
|
* @default 900
|
|
62
62
|
*/
|
|
63
63
|
maxPageFreeSeconds?: number;
|
|
64
|
+
/**
|
|
65
|
+
* @default true
|
|
66
|
+
*/
|
|
67
|
+
maxViewportOfNewPage?: boolean;
|
|
64
68
|
/**
|
|
65
69
|
* The proxy actually used by the connected browser; for efficient web scraping, please pass an accurate value
|
|
66
70
|
* * this will used as default proxy when creating new browserContexts later
|
|
@@ -130,6 +134,10 @@ interface LsdConnectOptions extends BrowserOptions {
|
|
|
130
134
|
}
|
|
131
135
|
type LsdBrowserContextOptions = {
|
|
132
136
|
proxy: Proxy | null;
|
|
137
|
+
/**
|
|
138
|
+
* @default browser.options.maxViewportOfNewPage
|
|
139
|
+
*/
|
|
140
|
+
maxViewportOfNewPage?: boolean;
|
|
133
141
|
/**
|
|
134
142
|
* userAgent of the browserContext:
|
|
135
143
|
* * playwright: set when creating the new browserContext
|
|
@@ -968,7 +976,7 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
|
|
|
968
976
|
|
|
969
977
|
declare class PlaywrightBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
970
978
|
#private;
|
|
971
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number);
|
|
979
|
+
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, maxViewportOfNewPage?: boolean);
|
|
972
980
|
browser(): LsdBrowser;
|
|
973
981
|
close(): Promise<boolean>;
|
|
974
982
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
|
@@ -1076,7 +1084,7 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1076
1084
|
|
|
1077
1085
|
declare class PuppeteerBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
1078
1086
|
#private;
|
|
1079
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string);
|
|
1087
|
+
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
|
|
1080
1088
|
browser(): LsdBrowser;
|
|
1081
1089
|
close(): Promise<boolean>;
|
|
1082
1090
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
package/dist/index.d.ts
CHANGED
|
@@ -61,6 +61,10 @@ interface BrowserOptions {
|
|
|
61
61
|
* @default 900
|
|
62
62
|
*/
|
|
63
63
|
maxPageFreeSeconds?: number;
|
|
64
|
+
/**
|
|
65
|
+
* @default true
|
|
66
|
+
*/
|
|
67
|
+
maxViewportOfNewPage?: boolean;
|
|
64
68
|
/**
|
|
65
69
|
* The proxy actually used by the connected browser; for efficient web scraping, please pass an accurate value
|
|
66
70
|
* * this will used as default proxy when creating new browserContexts later
|
|
@@ -130,6 +134,10 @@ interface LsdConnectOptions extends BrowserOptions {
|
|
|
130
134
|
}
|
|
131
135
|
type LsdBrowserContextOptions = {
|
|
132
136
|
proxy: Proxy | null;
|
|
137
|
+
/**
|
|
138
|
+
* @default browser.options.maxViewportOfNewPage
|
|
139
|
+
*/
|
|
140
|
+
maxViewportOfNewPage?: boolean;
|
|
133
141
|
/**
|
|
134
142
|
* userAgent of the browserContext:
|
|
135
143
|
* * playwright: set when creating the new browserContext
|
|
@@ -968,7 +976,7 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
|
|
|
968
976
|
|
|
969
977
|
declare class PlaywrightBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
970
978
|
#private;
|
|
971
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number);
|
|
979
|
+
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, maxViewportOfNewPage?: boolean);
|
|
972
980
|
browser(): LsdBrowser;
|
|
973
981
|
close(): Promise<boolean>;
|
|
974
982
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
|
@@ -1076,7 +1084,7 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1076
1084
|
|
|
1077
1085
|
declare class PuppeteerBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
1078
1086
|
#private;
|
|
1079
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string);
|
|
1087
|
+
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, incognito?: boolean, proxy?: Proxy | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
|
|
1080
1088
|
browser(): LsdBrowser;
|
|
1081
1089
|
close(): Promise<boolean>;
|
|
1082
1090
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
package/dist/index.js
CHANGED
|
@@ -309,6 +309,7 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
309
309
|
#resquestInterceptionOptions;
|
|
310
310
|
#responseInterceptionOptions;
|
|
311
311
|
#client;
|
|
312
|
+
#responseCb;
|
|
312
313
|
#hasValidUrl(page) {
|
|
313
314
|
const url = page.url();
|
|
314
315
|
return url.toLowerCase().startsWith("http");
|
|
@@ -521,6 +522,7 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
521
522
|
this.#resquestInterceptionOptions = [];
|
|
522
523
|
this.#responseInterceptionOptions = [];
|
|
523
524
|
this.#client = null;
|
|
525
|
+
this.#responseCb = null;
|
|
524
526
|
this.#addPageOn();
|
|
525
527
|
}
|
|
526
528
|
async bringToFront() {
|
|
@@ -558,7 +560,9 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
558
560
|
}
|
|
559
561
|
try {
|
|
560
562
|
if (this.#responseInterceptionOptions.length > 0) {
|
|
561
|
-
|
|
563
|
+
if (this.#responseCb) {
|
|
564
|
+
this.#page.removeListener("response", this.#responseCb);
|
|
565
|
+
}
|
|
562
566
|
this.#responseInterceptionOptions = [];
|
|
563
567
|
}
|
|
564
568
|
return true;
|
|
@@ -921,7 +925,7 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
921
925
|
}
|
|
922
926
|
return true;
|
|
923
927
|
}
|
|
924
|
-
async #
|
|
928
|
+
async #responseListener(response) {
|
|
925
929
|
try {
|
|
926
930
|
const pageUrl = this.#page ? this.#page.url() : "";
|
|
927
931
|
if (!response.ok()) {
|
|
@@ -988,7 +992,8 @@ var PlaywrightPage = class extends EventEmitter {
|
|
|
988
992
|
}
|
|
989
993
|
}
|
|
990
994
|
if (firstResponseInterception && this.#responseInterceptionOptions.length > 0) {
|
|
991
|
-
this.#
|
|
995
|
+
this.#responseCb = this.#responseListener.bind(this);
|
|
996
|
+
this.#page.on("response", this.#responseCb);
|
|
992
997
|
}
|
|
993
998
|
return true;
|
|
994
999
|
}
|
|
@@ -1118,10 +1123,11 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1118
1123
|
#proxy;
|
|
1119
1124
|
#maxPagesPerBrowserContext;
|
|
1120
1125
|
#maxPageFreeSeconds;
|
|
1126
|
+
#maxViewportOfNewPage;
|
|
1121
1127
|
#lsdPages;
|
|
1122
1128
|
#nextPageIdx;
|
|
1123
1129
|
#gettingPage;
|
|
1124
|
-
#initPages() {
|
|
1130
|
+
async #initPages() {
|
|
1125
1131
|
if (!this.#browserContext) {
|
|
1126
1132
|
throw new Error("Invalid browserContext");
|
|
1127
1133
|
}
|
|
@@ -1131,11 +1137,14 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1131
1137
|
for (const page of pages) {
|
|
1132
1138
|
const pageInfo = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType, openTime: this.#createTime, lastStatusUpdateTime, taskId: 0, relatedId: 0, misc: {} };
|
|
1133
1139
|
const lsdPage = new PlaywrightPage(this, page, pageInfo);
|
|
1140
|
+
if (this.#maxViewportOfNewPage) {
|
|
1141
|
+
await lsdPage.maximizeViewport();
|
|
1142
|
+
}
|
|
1134
1143
|
this.#lsdPages.push(lsdPage);
|
|
1135
1144
|
loginfo2(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
1136
1145
|
}
|
|
1137
1146
|
}
|
|
1138
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0) {
|
|
1147
|
+
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1139
1148
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
1140
1149
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
1141
1150
|
}
|
|
@@ -1152,6 +1161,7 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1152
1161
|
this.#proxy = proxy?.server ? proxy : null;
|
|
1153
1162
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
1154
1163
|
this.#maxPageFreeSeconds = maxPageFreeSeconds;
|
|
1164
|
+
this.#maxViewportOfNewPage = maxViewportOfNewPage;
|
|
1155
1165
|
this.#lsdPages = [];
|
|
1156
1166
|
this.#nextPageIdx = 1;
|
|
1157
1167
|
this.#gettingPage = false;
|
|
@@ -1165,6 +1175,9 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1165
1175
|
const currentTime = getCurrentUnixTime2();
|
|
1166
1176
|
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime, lastStatusUpdateTime: currentTime, taskId: 0, relatedId: 0, misc: {} };
|
|
1167
1177
|
const lsdPage = new PlaywrightPage(this, page, pageInfo2);
|
|
1178
|
+
if (this.#maxViewportOfNewPage) {
|
|
1179
|
+
await lsdPage.maximizeViewport();
|
|
1180
|
+
}
|
|
1168
1181
|
this.#lsdPages.push(lsdPage);
|
|
1169
1182
|
loginfo2(`##browser ${lsdPage.id()} created`);
|
|
1170
1183
|
}
|
|
@@ -1382,7 +1395,7 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1382
1395
|
throw new Error(`Invalid playwright browser parameter`);
|
|
1383
1396
|
}
|
|
1384
1397
|
super();
|
|
1385
|
-
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, headless = false, executablePath = "" } = options;
|
|
1398
|
+
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, maxViewportOfNewPage = true, headless = false, executablePath = "" } = options;
|
|
1386
1399
|
this.#browser = browser;
|
|
1387
1400
|
this.#browserIdx = browserIdx;
|
|
1388
1401
|
this.#lsdBrowserContexts = [];
|
|
@@ -1390,8 +1403,8 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1390
1403
|
this.#browserType = browerType;
|
|
1391
1404
|
this.#browserCreationMethod = browserCreateMethod;
|
|
1392
1405
|
this.#headless = headless;
|
|
1393
|
-
this.#options = options;
|
|
1394
1406
|
this.#proxy = options?.proxy ? Object.assign({}, options.proxy) : null;
|
|
1407
|
+
this.#options = Object.assign({}, options, { closeFreePagesIntervalSeconds, maxPageFreeSeconds, maxViewportOfNewPage, headless, executablePath, proxy: this.#proxy });
|
|
1395
1408
|
this.#executablePath = executablePath;
|
|
1396
1409
|
this.#nextBrowserContextIdx = 1;
|
|
1397
1410
|
this.#closeFreePagesIntervalId = null;
|
|
@@ -1402,7 +1415,7 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1402
1415
|
}
|
|
1403
1416
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
1404
1417
|
for (const browserContext of browserContexts) {
|
|
1405
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds());
|
|
1418
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1406
1419
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1407
1420
|
loginfo3(`##browser ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
1408
1421
|
}
|
|
@@ -1457,7 +1470,8 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1457
1470
|
browserContextOptions.userAgent = options.userAgent;
|
|
1458
1471
|
}
|
|
1459
1472
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
1460
|
-
const
|
|
1473
|
+
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
1474
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, true, proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1461
1475
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1462
1476
|
loginfo3(`##browser ${lsdBrowserContext.id()} created`);
|
|
1463
1477
|
return lsdBrowserContext;
|
|
@@ -2574,6 +2588,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2574
2588
|
#proxy;
|
|
2575
2589
|
#maxPagesPerBrowserContext;
|
|
2576
2590
|
#maxPageFreeSeconds;
|
|
2591
|
+
#maxViewportOfNewPage;
|
|
2577
2592
|
#lsdPages;
|
|
2578
2593
|
#nextPageIdx;
|
|
2579
2594
|
#gettingPage;
|
|
@@ -2587,6 +2602,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2587
2602
|
for (const page of pages) {
|
|
2588
2603
|
const pageInfo = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType, openTime: this.#createTime, lastStatusUpdateTime, taskId: 0, relatedId: 0, misc: {} };
|
|
2589
2604
|
const lsdPage = new PuppeteerPage(this, page, pageInfo);
|
|
2605
|
+
if (this.#maxViewportOfNewPage) {
|
|
2606
|
+
await lsdPage.maximizeViewport();
|
|
2607
|
+
}
|
|
2590
2608
|
if (this.#userAgent) {
|
|
2591
2609
|
await lsdPage.setUserAgent(this.#userAgent);
|
|
2592
2610
|
}
|
|
@@ -2594,7 +2612,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2594
2612
|
loginfo5(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
2595
2613
|
}
|
|
2596
2614
|
}
|
|
2597
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "") {
|
|
2615
|
+
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
2598
2616
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
2599
2617
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
2600
2618
|
}
|
|
@@ -2612,6 +2630,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2612
2630
|
this.#proxy = proxy?.server ? proxy : null;
|
|
2613
2631
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
2614
2632
|
this.#maxPageFreeSeconds = maxPageFreeSeconds;
|
|
2633
|
+
this.#maxViewportOfNewPage = maxViewportOfNewPage;
|
|
2615
2634
|
this.#lsdPages = [];
|
|
2616
2635
|
this.#nextPageIdx = 1;
|
|
2617
2636
|
this.#gettingPage = false;
|
|
@@ -2630,6 +2649,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2630
2649
|
const currentTime = getCurrentUnixTime4();
|
|
2631
2650
|
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime, lastStatusUpdateTime: currentTime, taskId: 0, relatedId: 0, misc: {} };
|
|
2632
2651
|
const lsdPage = new PuppeteerPage(this, page, pageInfo2);
|
|
2652
|
+
if (this.#maxViewportOfNewPage) {
|
|
2653
|
+
await lsdPage.maximizeViewport();
|
|
2654
|
+
}
|
|
2633
2655
|
if (this.#userAgent) {
|
|
2634
2656
|
await lsdPage.setUserAgent(this.#userAgent);
|
|
2635
2657
|
}
|
|
@@ -2853,7 +2875,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
2853
2875
|
throw new Error(`Invalid puppeteer browser parameter`);
|
|
2854
2876
|
}
|
|
2855
2877
|
super();
|
|
2856
|
-
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, headless = false, executablePath = "" } = options;
|
|
2878
|
+
const { closeFreePagesIntervalSeconds = 300, maxPageFreeSeconds = 900, maxViewportOfNewPage = true, headless = false, executablePath = "" } = options;
|
|
2857
2879
|
this.#browser = browser;
|
|
2858
2880
|
this.#browserIdx = browserIdx;
|
|
2859
2881
|
this.#lsdBrowserContexts = [];
|
|
@@ -2862,7 +2884,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
2862
2884
|
this.#browserCreationMethod = browserCreateMethod;
|
|
2863
2885
|
this.#headless = headless;
|
|
2864
2886
|
this.#proxy = options?.proxy ? Object.assign({}, options.proxy) : null;
|
|
2865
|
-
this.#options = options;
|
|
2887
|
+
this.#options = Object.assign({}, options, { closeFreePagesIntervalSeconds, maxPageFreeSeconds, maxViewportOfNewPage, headless, executablePath, proxy: this.#proxy });
|
|
2866
2888
|
this.#executablePath = executablePath;
|
|
2867
2889
|
this.#nextBrowserContextIdx = 1;
|
|
2868
2890
|
this.#closeFreePagesIntervalId = null;
|
|
@@ -2870,7 +2892,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
2870
2892
|
const browserContexts = browser.browserContexts();
|
|
2871
2893
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : false;
|
|
2872
2894
|
for (const browserContext of browserContexts) {
|
|
2873
|
-
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent());
|
|
2895
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent(), maxViewportOfNewPage);
|
|
2874
2896
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
2875
2897
|
loginfo6(`##browser ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
2876
2898
|
}
|
|
@@ -2922,7 +2944,8 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
2922
2944
|
}
|
|
2923
2945
|
const browserContext = await this.#browser.createBrowserContext(browserContextOptions);
|
|
2924
2946
|
const userAgent = options?.userAgent ? options.userAgent : "";
|
|
2925
|
-
const
|
|
2947
|
+
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
2948
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
2926
2949
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
2927
2950
|
loginfo6(`##browser ${lsdBrowserContext.id()} created`);
|
|
2928
2951
|
return lsdBrowserContext;
|
package/package.json
CHANGED