@letsscrapedata/controller 0.1.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -159,6 +159,11 @@ interface BrowserOptions {
159
159
  * @default 900
160
160
  */
161
161
  maxPageFreeSeconds?: number;
162
+ /**
163
+ * maximum duration (in seconds) for which the idle page is reserved for tasks with the same domainName.
164
+ * @default 0, that means no reservation
165
+ */
166
+ maxReservedSeconds?: number;
162
167
  /**
163
168
  * @default true
164
169
  */
@@ -284,6 +289,11 @@ type LsdBrowserContextOptions = {
284
289
  * * puppeteer: set when creating the new page in the browserContext
285
290
  */
286
291
  userAgent?: string;
292
+ /**
293
+ * maximum duration (in seconds) for which the idle page is reserved for tasks with the same domainName.
294
+ * @default 0, that means no reservation
295
+ */
296
+ maxReservedSeconds?: number;
287
297
  };
288
298
  type PageStatus = "free" | "busy" | "closed";
289
299
  /**
@@ -332,7 +342,6 @@ interface PageInfo {
332
342
  * page's status: free or busy
333
343
  * @default current unix time
334
344
  */
335
- lastStatusUpdateTime: number;
336
345
  /**
337
346
  * taskId that are using this page
338
347
  * @default 0
@@ -352,7 +361,6 @@ interface UpdatablePageInfo {
352
361
  * page's status: free or busy
353
362
  * @default current unix time
354
363
  */
355
- lastStatusUpdateTime?: number;
356
364
  /**
357
365
  * taskId that are using this page
358
366
  * @default 0
@@ -1087,7 +1095,14 @@ interface LsdPage extends EventEmitter {
1087
1095
  */
1088
1096
  goto(url: string, options?: GotoOptions): Promise<boolean>;
1089
1097
  id(): string;
1090
- isFree(): boolean;
1098
+ /**
1099
+ * Is the current page free (available) for a new task for domainName?
1100
+ * @param domainName default "":
1101
+ ** If it is "" and the current page URL is not "" / "about:blank", the current page must have been idle for maxReservedSeconds; otherwise, return false.
1102
+ ** If it is not "", the current page URL must contain domainName; otherwise, return false.
1103
+ */
1104
+ isAvailable(domainName?: string): boolean;
1105
+ lastStatusUpdateTime(): number;
1091
1106
  /**
1092
1107
  * valid only in CheerioPage
1093
1108
  * @param html
@@ -1213,8 +1228,10 @@ interface LsdBrowserContext extends EventEmitter {
1213
1228
  free(clearStateData?: boolean): boolean;
1214
1229
  /**
1215
1230
  * get a free page from current pages or by creating a new page
1231
+ * @param domainName default "", if it is not "", prioritize retrieving from a free page whose URL includes that value
1232
+ * @param always default false, whether a (new) page is always allocated, ignoring maxPagesPerBrowserContext
1216
1233
  */
1217
- getPage(always?: boolean): Promise<LsdPage | null>;
1234
+ getPage(domainName?: string, always?: boolean): Promise<LsdPage | null>;
1218
1235
  /**
1219
1236
  * whether can get a number of free page(s)
1220
1237
  * * refer to getPage()
@@ -1225,6 +1242,10 @@ interface LsdBrowserContext extends EventEmitter {
1225
1242
  isFree(): boolean;
1226
1243
  isIncognito(): boolean;
1227
1244
  creationMethod(): BrowserContextCreationMethod;
1245
+ /**
1246
+ * get maximum duration (in seconds) for which the idle page is reserved for tasks with the same domainName.
1247
+ */
1248
+ maxReservedSeconds(): number;
1228
1249
  page(pageIdx: number): LsdPage | null;
1229
1250
  pages(): LsdPage[];
1230
1251
  proxy(): ProxyInController | null;
@@ -1347,19 +1368,20 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
1347
1368
 
1348
1369
  declare class PlaywrightBrowserContext extends EventEmitter implements LsdBrowserContext {
1349
1370
  #private;
1350
- constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
1371
+ constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxReservedSeconds?: number, maxViewportOfNewPage?: boolean);
1351
1372
  apiContext(): LsdApiContext;
1352
1373
  browser(): LsdBrowser;
1353
1374
  close(): Promise<boolean>;
1354
1375
  closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
1355
1376
  creationMethod(): BrowserContextCreationMethod;
1356
1377
  doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
1357
- getPage(always?: boolean): Promise<LsdPage | null>;
1378
+ getPage(domainName?: string, always?: boolean): Promise<LsdPage | null>;
1358
1379
  free(clearStateData?: boolean): boolean;
1359
1380
  hasFreePage(pageNum?: number): boolean;
1360
1381
  id(): string;
1361
1382
  isFree(): boolean;
1362
1383
  isIncognito(): boolean;
1384
+ maxReservedSeconds(): number;
1363
1385
  page(pageIdx: number): LsdPage | null;
1364
1386
  pages(): LsdPage[];
1365
1387
  proxy(): ProxyInController | null;
@@ -1395,7 +1417,8 @@ declare class PlaywrightPage extends EventEmitter implements LsdPage {
1395
1417
  free(): Promise<boolean>;
1396
1418
  goto(url: string, options?: GotoOptions | undefined): Promise<boolean>;
1397
1419
  id(): string;
1398
- isFree(): boolean;
1420
+ isAvailable(domainName?: string): boolean;
1421
+ lastStatusUpdateTime(): number;
1399
1422
  localStroage(): Promise<LocalStorageOrigin[]>;
1400
1423
  load(): boolean;
1401
1424
  mainFrame(): AllFrame;
@@ -1497,19 +1520,20 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
1497
1520
 
1498
1521
  declare class PuppeteerBrowserContext extends EventEmitter implements LsdBrowserContext {
1499
1522
  #private;
1500
- constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
1523
+ constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxReservedSeconds?: number, maxViewportOfNewPage?: boolean);
1501
1524
  apiContext(): LsdApiContext;
1502
1525
  browser(): LsdBrowser;
1503
1526
  close(): Promise<boolean>;
1504
1527
  closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
1505
1528
  creationMethod(): BrowserContextCreationMethod;
1506
1529
  doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
1507
- getPage(always?: boolean): Promise<LsdPage | null>;
1530
+ getPage(domainName?: string, always?: boolean): Promise<LsdPage | null>;
1508
1531
  free(clearStateData?: boolean): boolean;
1509
1532
  hasFreePage(pageNum?: number): boolean;
1510
1533
  id(): string;
1511
1534
  isIncognito(): boolean;
1512
1535
  isFree(): boolean;
1536
+ maxReservedSeconds(): number;
1513
1537
  page(pageIdx: number): LsdPage | null;
1514
1538
  pages(): LsdPage[];
1515
1539
  proxy(): ProxyInController | null;
@@ -1545,7 +1569,8 @@ declare class PuppeteerPage extends EventEmitter implements LsdPage {
1545
1569
  free(): Promise<boolean>;
1546
1570
  goto(url: string, options?: GotoOptions | undefined): Promise<boolean>;
1547
1571
  id(): string;
1548
- isFree(): boolean;
1572
+ isAvailable(domainName?: string): boolean;
1573
+ lastStatusUpdateTime(): number;
1549
1574
  localStroage(): Promise<LocalStorageOrigin[]>;
1550
1575
  load(): boolean;
1551
1576
  mainFrame(): AllFrame;
@@ -1651,7 +1676,8 @@ declare class CheerioPage extends EventEmitter implements LsdPage {
1651
1676
  free(): Promise<boolean>;
1652
1677
  goto(): Promise<boolean>;
1653
1678
  id(): string;
1654
- isFree(): boolean;
1679
+ isAvailable(): boolean;
1680
+ lastStatusUpdateTime(): number;
1655
1681
  load(html: string, isHtml?: boolean): boolean;
1656
1682
  localStroage(): Promise<LocalStorageOrigin[]>;
1657
1683
  mainFrame(): AllFrame;
package/dist/index.d.ts CHANGED
@@ -159,6 +159,11 @@ interface BrowserOptions {
159
159
  * @default 900
160
160
  */
161
161
  maxPageFreeSeconds?: number;
162
+ /**
163
+ * maximum duration (in seconds) for which the idle page is reserved for tasks with the same domainName.
164
+ * @default 0, that means no reservation
165
+ */
166
+ maxReservedSeconds?: number;
162
167
  /**
163
168
  * @default true
164
169
  */
@@ -284,6 +289,11 @@ type LsdBrowserContextOptions = {
284
289
  * * puppeteer: set when creating the new page in the browserContext
285
290
  */
286
291
  userAgent?: string;
292
+ /**
293
+ * maximum duration (in seconds) for which the idle page is reserved for tasks with the same domainName.
294
+ * @default 0, that means no reservation
295
+ */
296
+ maxReservedSeconds?: number;
287
297
  };
288
298
  type PageStatus = "free" | "busy" | "closed";
289
299
  /**
@@ -332,7 +342,6 @@ interface PageInfo {
332
342
  * page's status: free or busy
333
343
  * @default current unix time
334
344
  */
335
- lastStatusUpdateTime: number;
336
345
  /**
337
346
  * taskId that are using this page
338
347
  * @default 0
@@ -352,7 +361,6 @@ interface UpdatablePageInfo {
352
361
  * page's status: free or busy
353
362
  * @default current unix time
354
363
  */
355
- lastStatusUpdateTime?: number;
356
364
  /**
357
365
  * taskId that are using this page
358
366
  * @default 0
@@ -1087,7 +1095,14 @@ interface LsdPage extends EventEmitter {
1087
1095
  */
1088
1096
  goto(url: string, options?: GotoOptions): Promise<boolean>;
1089
1097
  id(): string;
1090
- isFree(): boolean;
1098
+ /**
1099
+ * Is the current page free (available) for a new task for domainName?
1100
+ * @param domainName default "":
1101
+ ** If it is "" and the current page URL is not "" / "about:blank", the current page must have been idle for maxReservedSeconds; otherwise, return false.
1102
+ ** If it is not "", the current page URL must contain domainName; otherwise, return false.
1103
+ */
1104
+ isAvailable(domainName?: string): boolean;
1105
+ lastStatusUpdateTime(): number;
1091
1106
  /**
1092
1107
  * valid only in CheerioPage
1093
1108
  * @param html
@@ -1213,8 +1228,10 @@ interface LsdBrowserContext extends EventEmitter {
1213
1228
  free(clearStateData?: boolean): boolean;
1214
1229
  /**
1215
1230
  * get a free page from current pages or by creating a new page
1231
+ * @param domainName default "", if it is not "", prioritize retrieving from a free page whose URL includes that value
1232
+ * @param always default false, whether a (new) page is always allocated, ignoring maxPagesPerBrowserContext
1216
1233
  */
1217
- getPage(always?: boolean): Promise<LsdPage | null>;
1234
+ getPage(domainName?: string, always?: boolean): Promise<LsdPage | null>;
1218
1235
  /**
1219
1236
  * whether can get a number of free page(s)
1220
1237
  * * refer to getPage()
@@ -1225,6 +1242,10 @@ interface LsdBrowserContext extends EventEmitter {
1225
1242
  isFree(): boolean;
1226
1243
  isIncognito(): boolean;
1227
1244
  creationMethod(): BrowserContextCreationMethod;
1245
+ /**
1246
+ * get maximum duration (in seconds) for which the idle page is reserved for tasks with the same domainName.
1247
+ */
1248
+ maxReservedSeconds(): number;
1228
1249
  page(pageIdx: number): LsdPage | null;
1229
1250
  pages(): LsdPage[];
1230
1251
  proxy(): ProxyInController | null;
@@ -1347,19 +1368,20 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
1347
1368
 
1348
1369
  declare class PlaywrightBrowserContext extends EventEmitter implements LsdBrowserContext {
1349
1370
  #private;
1350
- constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
1371
+ constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxReservedSeconds?: number, maxViewportOfNewPage?: boolean);
1351
1372
  apiContext(): LsdApiContext;
1352
1373
  browser(): LsdBrowser;
1353
1374
  close(): Promise<boolean>;
1354
1375
  closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
1355
1376
  creationMethod(): BrowserContextCreationMethod;
1356
1377
  doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
1357
- getPage(always?: boolean): Promise<LsdPage | null>;
1378
+ getPage(domainName?: string, always?: boolean): Promise<LsdPage | null>;
1358
1379
  free(clearStateData?: boolean): boolean;
1359
1380
  hasFreePage(pageNum?: number): boolean;
1360
1381
  id(): string;
1361
1382
  isFree(): boolean;
1362
1383
  isIncognito(): boolean;
1384
+ maxReservedSeconds(): number;
1363
1385
  page(pageIdx: number): LsdPage | null;
1364
1386
  pages(): LsdPage[];
1365
1387
  proxy(): ProxyInController | null;
@@ -1395,7 +1417,8 @@ declare class PlaywrightPage extends EventEmitter implements LsdPage {
1395
1417
  free(): Promise<boolean>;
1396
1418
  goto(url: string, options?: GotoOptions | undefined): Promise<boolean>;
1397
1419
  id(): string;
1398
- isFree(): boolean;
1420
+ isAvailable(domainName?: string): boolean;
1421
+ lastStatusUpdateTime(): number;
1399
1422
  localStroage(): Promise<LocalStorageOrigin[]>;
1400
1423
  load(): boolean;
1401
1424
  mainFrame(): AllFrame;
@@ -1497,19 +1520,20 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
1497
1520
 
1498
1521
  declare class PuppeteerBrowserContext extends EventEmitter implements LsdBrowserContext {
1499
1522
  #private;
1500
- constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
1523
+ constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxReservedSeconds?: number, maxViewportOfNewPage?: boolean);
1501
1524
  apiContext(): LsdApiContext;
1502
1525
  browser(): LsdBrowser;
1503
1526
  close(): Promise<boolean>;
1504
1527
  closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
1505
1528
  creationMethod(): BrowserContextCreationMethod;
1506
1529
  doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
1507
- getPage(always?: boolean): Promise<LsdPage | null>;
1530
+ getPage(domainName?: string, always?: boolean): Promise<LsdPage | null>;
1508
1531
  free(clearStateData?: boolean): boolean;
1509
1532
  hasFreePage(pageNum?: number): boolean;
1510
1533
  id(): string;
1511
1534
  isIncognito(): boolean;
1512
1535
  isFree(): boolean;
1536
+ maxReservedSeconds(): number;
1513
1537
  page(pageIdx: number): LsdPage | null;
1514
1538
  pages(): LsdPage[];
1515
1539
  proxy(): ProxyInController | null;
@@ -1545,7 +1569,8 @@ declare class PuppeteerPage extends EventEmitter implements LsdPage {
1545
1569
  free(): Promise<boolean>;
1546
1570
  goto(url: string, options?: GotoOptions | undefined): Promise<boolean>;
1547
1571
  id(): string;
1548
- isFree(): boolean;
1572
+ isAvailable(domainName?: string): boolean;
1573
+ lastStatusUpdateTime(): number;
1549
1574
  localStroage(): Promise<LocalStorageOrigin[]>;
1550
1575
  load(): boolean;
1551
1576
  mainFrame(): AllFrame;
@@ -1651,7 +1676,8 @@ declare class CheerioPage extends EventEmitter implements LsdPage {
1651
1676
  free(): Promise<boolean>;
1652
1677
  goto(): Promise<boolean>;
1653
1678
  id(): string;
1654
- isFree(): boolean;
1679
+ isAvailable(): boolean;
1680
+ lastStatusUpdateTime(): number;
1655
1681
  load(html: string, isHtml?: boolean): boolean;
1656
1682
  localStroage(): Promise<LocalStorageOrigin[]>;
1657
1683
  mainFrame(): AllFrame;