@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 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
- this.#page.removeListener("response", this.#reponseListener);
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 #reponseListener(response) {
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.#page.on("response", this.#reponseListener);
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 lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, true, proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds());
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 lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent);
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
- this.#page.removeListener("response", this.#reponseListener);
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 #reponseListener(response) {
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.#page.on("response", this.#reponseListener);
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 lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, true, proxy, this.#browserIdx++, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds());
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 lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letsscrapedata/controller",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "Unified browser / HTML controller interfaces that support playwright, puppeteer and cheerio",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",