@letsscrapedata/controller 0.0.46 → 0.0.48
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 +104 -16
- package/dist/index.d.cts +30 -3
- package/dist/index.d.ts +30 -3
- package/dist/index.js +111 -23
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1214,8 +1214,11 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1214
1214
|
#browserIdx;
|
|
1215
1215
|
#browserContextIdx;
|
|
1216
1216
|
#browserContext;
|
|
1217
|
+
#browserContextCreationMethod;
|
|
1217
1218
|
#apiContext;
|
|
1218
1219
|
#createTime;
|
|
1220
|
+
#lastStatusUpdateTime;
|
|
1221
|
+
#status;
|
|
1219
1222
|
#incognito;
|
|
1220
1223
|
#proxy;
|
|
1221
1224
|
#maxPagesPerBrowserContext;
|
|
@@ -1241,7 +1244,7 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1241
1244
|
(0, import_utils3.loginfo)(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
1242
1245
|
}
|
|
1243
1246
|
}
|
|
1244
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1247
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1245
1248
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
1246
1249
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
1247
1250
|
}
|
|
@@ -1253,9 +1256,13 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1253
1256
|
this.#browserIdx = browserIdx;
|
|
1254
1257
|
this.#browserContextIdx = browserContextIdx;
|
|
1255
1258
|
this.#browserContext = browserContext;
|
|
1259
|
+
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
1256
1260
|
const apiRequestContext = browserContext.request;
|
|
1257
1261
|
this.#apiContext = new PlaywrightApiContext(apiRequestContext);
|
|
1258
|
-
|
|
1262
|
+
const currentTime = (0, import_utils3.getCurrentUnixTime)();
|
|
1263
|
+
this.#createTime = currentTime;
|
|
1264
|
+
this.#lastStatusUpdateTime = currentTime;
|
|
1265
|
+
this.#status = "free";
|
|
1259
1266
|
this.#incognito = incognito === false ? false : true;
|
|
1260
1267
|
this.#proxy = proxy?.proxyUrl ? proxy : null;
|
|
1261
1268
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
@@ -1271,8 +1278,8 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1271
1278
|
const { browserIdx: browserIdx2, browserContextIdx: browserContextIdx2, pageIdx } = pageInfo;
|
|
1272
1279
|
(0, import_utils3.logwarn)(`##browser page-${browserIdx2}-${browserContextIdx2}-${pageIdx} has been already created`);
|
|
1273
1280
|
} else {
|
|
1274
|
-
const
|
|
1275
|
-
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime:
|
|
1281
|
+
const currentTime2 = (0, import_utils3.getCurrentUnixTime)();
|
|
1282
|
+
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime2, lastStatusUpdateTime: currentTime2, taskId: 0, relatedId: 0, misc: {} };
|
|
1276
1283
|
const lsdPage = new PlaywrightPage(this, page, pageInfo2);
|
|
1277
1284
|
if (this.#maxViewportOfNewPage) {
|
|
1278
1285
|
await lsdPage.maximizeViewport();
|
|
@@ -1309,6 +1316,9 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1309
1316
|
}
|
|
1310
1317
|
async close() {
|
|
1311
1318
|
if (this.#browserContext) {
|
|
1319
|
+
this.#status = "closed";
|
|
1320
|
+
this.#lastStatusUpdateTime = (0, import_utils3.getCurrentUnixTime)();
|
|
1321
|
+
(0, import_utils3.loginfo)(`browserContext ${this.id()} closed at ${this.#lastStatusUpdateTime}`);
|
|
1312
1322
|
await this.#browserContext.close();
|
|
1313
1323
|
}
|
|
1314
1324
|
return true;
|
|
@@ -1361,6 +1371,9 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1361
1371
|
return false;
|
|
1362
1372
|
}
|
|
1363
1373
|
}
|
|
1374
|
+
creationMethod() {
|
|
1375
|
+
return this.#browserContextCreationMethod;
|
|
1376
|
+
}
|
|
1364
1377
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
1365
1378
|
if (!this.#lsdBrowser.doesMeetBrowserContextRequirements(browserContextRequirements)) {
|
|
1366
1379
|
return false;
|
|
@@ -1410,6 +1423,17 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1410
1423
|
return null;
|
|
1411
1424
|
}
|
|
1412
1425
|
}
|
|
1426
|
+
free(clearStateData = false) {
|
|
1427
|
+
if (this.#status === "busy") {
|
|
1428
|
+
this.#status = "free";
|
|
1429
|
+
this.#lastStatusUpdateTime = (0, import_utils3.getCurrentUnixTime)();
|
|
1430
|
+
if (clearStateData) {
|
|
1431
|
+
}
|
|
1432
|
+
return true;
|
|
1433
|
+
} else {
|
|
1434
|
+
return false;
|
|
1435
|
+
}
|
|
1436
|
+
}
|
|
1413
1437
|
hasFreePage(pageNum = 1) {
|
|
1414
1438
|
if (this.#maxPagesPerBrowserContext - this.#lsdPages.length > pageNum) {
|
|
1415
1439
|
return true;
|
|
@@ -1422,6 +1446,9 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1422
1446
|
id() {
|
|
1423
1447
|
return `browserContext-${this.#browserIdx}-${this.#browserContextIdx}`;
|
|
1424
1448
|
}
|
|
1449
|
+
isFree() {
|
|
1450
|
+
return this.#status === "free";
|
|
1451
|
+
}
|
|
1425
1452
|
isIncognito() {
|
|
1426
1453
|
return this.#incognito;
|
|
1427
1454
|
}
|
|
@@ -1477,6 +1504,18 @@ var PlaywrightBrowserContext = class extends import_node_events2.default {
|
|
|
1477
1504
|
return false;
|
|
1478
1505
|
}
|
|
1479
1506
|
}
|
|
1507
|
+
status() {
|
|
1508
|
+
return this.#status;
|
|
1509
|
+
}
|
|
1510
|
+
use() {
|
|
1511
|
+
if (this.#status === "free") {
|
|
1512
|
+
this.#status = "busy";
|
|
1513
|
+
this.#lastStatusUpdateTime = (0, import_utils3.getCurrentUnixTime)();
|
|
1514
|
+
return true;
|
|
1515
|
+
} else {
|
|
1516
|
+
return false;
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1480
1519
|
_origBrowserContext() {
|
|
1481
1520
|
return this.#browserContext;
|
|
1482
1521
|
}
|
|
@@ -1488,6 +1527,7 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1488
1527
|
#browser;
|
|
1489
1528
|
#browserIdx;
|
|
1490
1529
|
#pid;
|
|
1530
|
+
#createTime;
|
|
1491
1531
|
#lsdBrowserContexts;
|
|
1492
1532
|
#browserControllerType;
|
|
1493
1533
|
#browserType;
|
|
@@ -1521,6 +1561,7 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1521
1561
|
this.#browser = browser;
|
|
1522
1562
|
this.#browserIdx = browserIdx;
|
|
1523
1563
|
this.#pid = pid;
|
|
1564
|
+
this.#createTime = (0, import_utils4.getCurrentUnixTime)();
|
|
1524
1565
|
this.#lsdBrowserContexts = [];
|
|
1525
1566
|
this.#browserControllerType = "playwright";
|
|
1526
1567
|
this.#browserType = browerType;
|
|
@@ -1538,7 +1579,7 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1538
1579
|
}
|
|
1539
1580
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
1540
1581
|
for (const browserContext of browserContexts) {
|
|
1541
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1582
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1542
1583
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1543
1584
|
(0, import_utils4.loginfo)(`##browserContext ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
1544
1585
|
}
|
|
@@ -1596,7 +1637,7 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1596
1637
|
}
|
|
1597
1638
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
1598
1639
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
1599
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1640
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1600
1641
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1601
1642
|
(0, import_utils4.loginfo)(`##browser ${lsdBrowserContext.id()} created`);
|
|
1602
1643
|
return lsdBrowserContext;
|
|
@@ -1623,6 +1664,9 @@ var PlaywrightBrowser = class extends import_node_events3.default {
|
|
|
1623
1664
|
browserType() {
|
|
1624
1665
|
return this.#browserType;
|
|
1625
1666
|
}
|
|
1667
|
+
createTime() {
|
|
1668
|
+
return this.#createTime;
|
|
1669
|
+
}
|
|
1626
1670
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
1627
1671
|
const { browserControllerTypes, browserTypes, browserHeadlesses } = browserContextRequirements;
|
|
1628
1672
|
return (browserControllerTypes.length === 0 || browserControllerTypes.includes(this.#browserControllerType)) && (browserTypes.length === 0 || browserTypes.includes(this.#browserType)) && (browserHeadlesses.length === 0 || browserHeadlesses.includes(this.#headless));
|
|
@@ -2748,12 +2792,15 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2748
2792
|
#browserIdx;
|
|
2749
2793
|
#browserContextIdx;
|
|
2750
2794
|
#browserContext;
|
|
2795
|
+
#browserContextCreationMethod;
|
|
2751
2796
|
/**
|
|
2752
2797
|
* the userAgent of pages in this browserContext if userAgent
|
|
2753
2798
|
* * Notice: it is not the actual userAgent if !#userAgent (ignored if !#userAgent)
|
|
2754
2799
|
*/
|
|
2755
2800
|
#userAgent;
|
|
2756
2801
|
#createTime;
|
|
2802
|
+
#lastStatusUpdateTime;
|
|
2803
|
+
#status;
|
|
2757
2804
|
#incognito;
|
|
2758
2805
|
#proxy;
|
|
2759
2806
|
#maxPagesPerBrowserContext;
|
|
@@ -2782,7 +2829,7 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2782
2829
|
(0, import_utils7.loginfo)(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
2783
2830
|
}
|
|
2784
2831
|
}
|
|
2785
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
2832
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
2786
2833
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
2787
2834
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
2788
2835
|
}
|
|
@@ -2794,8 +2841,12 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2794
2841
|
this.#browserIdx = browserIdx;
|
|
2795
2842
|
this.#browserContextIdx = browserContextIdx;
|
|
2796
2843
|
this.#browserContext = browserContext;
|
|
2844
|
+
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
2797
2845
|
this.#userAgent = userAgent;
|
|
2798
|
-
|
|
2846
|
+
const currentTime = (0, import_utils7.getCurrentUnixTime)();
|
|
2847
|
+
this.#createTime = currentTime;
|
|
2848
|
+
this.#lastStatusUpdateTime = currentTime;
|
|
2849
|
+
this.#status = "free";
|
|
2799
2850
|
this.#incognito = incognito === false ? false : true;
|
|
2800
2851
|
this.#proxy = proxy?.proxyUrl ? proxy : null;
|
|
2801
2852
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
@@ -2816,8 +2867,8 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2816
2867
|
const { browserIdx: browserIdx2, browserContextIdx: browserContextIdx2, pageIdx } = pageInfo;
|
|
2817
2868
|
(0, import_utils7.logwarn)(`##browser page-${browserIdx2}-${browserContextIdx2}-${pageIdx} has been already created`);
|
|
2818
2869
|
} else {
|
|
2819
|
-
const
|
|
2820
|
-
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime:
|
|
2870
|
+
const currentTime2 = (0, import_utils7.getCurrentUnixTime)();
|
|
2871
|
+
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime2, lastStatusUpdateTime: currentTime2, taskId: 0, relatedId: 0, misc: {} };
|
|
2821
2872
|
const lsdPage = new PuppeteerPage(this, page, pageInfo2);
|
|
2822
2873
|
if (this.#maxViewportOfNewPage) {
|
|
2823
2874
|
await lsdPage.maximizeViewport();
|
|
@@ -2855,7 +2906,12 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2855
2906
|
}
|
|
2856
2907
|
async close() {
|
|
2857
2908
|
if (this.#browserContext) {
|
|
2858
|
-
|
|
2909
|
+
this.#status = "closed";
|
|
2910
|
+
this.#lastStatusUpdateTime = (0, import_utils7.getCurrentUnixTime)();
|
|
2911
|
+
(0, import_utils7.loginfo)(`browserContext ${this.id()} closed at ${this.#lastStatusUpdateTime}`);
|
|
2912
|
+
if (this.#browserContextCreationMethod !== "launch") {
|
|
2913
|
+
await this.#browserContext.close();
|
|
2914
|
+
}
|
|
2859
2915
|
}
|
|
2860
2916
|
return true;
|
|
2861
2917
|
}
|
|
@@ -2907,6 +2963,9 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2907
2963
|
return false;
|
|
2908
2964
|
}
|
|
2909
2965
|
}
|
|
2966
|
+
creationMethod() {
|
|
2967
|
+
return this.#browserContextCreationMethod;
|
|
2968
|
+
}
|
|
2910
2969
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
2911
2970
|
if (!this.#lsdBrowser.doesMeetBrowserContextRequirements(browserContextRequirements)) {
|
|
2912
2971
|
return false;
|
|
@@ -2958,6 +3017,17 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2958
3017
|
return null;
|
|
2959
3018
|
}
|
|
2960
3019
|
}
|
|
3020
|
+
free(clearStateData = false) {
|
|
3021
|
+
if (this.#status === "busy") {
|
|
3022
|
+
this.#status = "free";
|
|
3023
|
+
this.#lastStatusUpdateTime = (0, import_utils7.getCurrentUnixTime)();
|
|
3024
|
+
if (clearStateData) {
|
|
3025
|
+
}
|
|
3026
|
+
return true;
|
|
3027
|
+
} else {
|
|
3028
|
+
return false;
|
|
3029
|
+
}
|
|
3030
|
+
}
|
|
2961
3031
|
hasFreePage(pageNum = 1) {
|
|
2962
3032
|
if (this.#maxPagesPerBrowserContext - this.#lsdPages.length > pageNum) {
|
|
2963
3033
|
return true;
|
|
@@ -2973,6 +3043,9 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
2973
3043
|
isIncognito() {
|
|
2974
3044
|
return this.#incognito;
|
|
2975
3045
|
}
|
|
3046
|
+
isFree() {
|
|
3047
|
+
return this.#status === "free";
|
|
3048
|
+
}
|
|
2976
3049
|
page(pageIdx) {
|
|
2977
3050
|
const lsdPage = this.#lsdPages.find((p) => p.pageInfo().pageIdx === pageIdx);
|
|
2978
3051
|
return lsdPage ? lsdPage : null;
|
|
@@ -3025,6 +3098,18 @@ var PuppeteerBrowserContext = class extends import_node_events5.default {
|
|
|
3025
3098
|
return false;
|
|
3026
3099
|
}
|
|
3027
3100
|
}
|
|
3101
|
+
status() {
|
|
3102
|
+
return this.#status;
|
|
3103
|
+
}
|
|
3104
|
+
use() {
|
|
3105
|
+
if (this.#status === "free") {
|
|
3106
|
+
this.#status = "busy";
|
|
3107
|
+
this.#lastStatusUpdateTime = (0, import_utils7.getCurrentUnixTime)();
|
|
3108
|
+
return true;
|
|
3109
|
+
} else {
|
|
3110
|
+
return false;
|
|
3111
|
+
}
|
|
3112
|
+
}
|
|
3028
3113
|
_origBrowserContext() {
|
|
3029
3114
|
return this.#browserContext;
|
|
3030
3115
|
}
|
|
@@ -3036,6 +3121,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
3036
3121
|
#browser;
|
|
3037
3122
|
#browserIdx;
|
|
3038
3123
|
#pid;
|
|
3124
|
+
#createTime;
|
|
3039
3125
|
#lsdBrowserContexts;
|
|
3040
3126
|
#browserControllerType;
|
|
3041
3127
|
#browserType;
|
|
@@ -3072,6 +3158,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
3072
3158
|
this.#browser = browser;
|
|
3073
3159
|
this.#browserIdx = browserIdx;
|
|
3074
3160
|
this.#pid = pid;
|
|
3161
|
+
this.#createTime = (0, import_utils8.getCurrentUnixTime)();
|
|
3075
3162
|
this.#lsdBrowserContexts = [];
|
|
3076
3163
|
this.#browserControllerType = "puppeteer";
|
|
3077
3164
|
this.#browserType = browerType;
|
|
@@ -3086,7 +3173,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
3086
3173
|
const browserContexts = browser.browserContexts();
|
|
3087
3174
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : false;
|
|
3088
3175
|
for (const browserContext of browserContexts) {
|
|
3089
|
-
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent(), maxViewportOfNewPage);
|
|
3176
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent(), maxViewportOfNewPage);
|
|
3090
3177
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
3091
3178
|
(0, import_utils8.loginfo)(`##browser ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
3092
3179
|
}
|
|
@@ -3138,7 +3225,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
3138
3225
|
const browserContext = await this.#browser.createBrowserContext(browserContextOptions);
|
|
3139
3226
|
const userAgent = options?.userAgent ? options.userAgent : "";
|
|
3140
3227
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
3141
|
-
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
3228
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
3142
3229
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
3143
3230
|
(0, import_utils8.loginfo)(`##browser ${lsdBrowserContext.id()} created`);
|
|
3144
3231
|
return lsdBrowserContext;
|
|
@@ -3148,9 +3235,7 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
3148
3235
|
clearInterval(this.#closeFreePagesIntervalId);
|
|
3149
3236
|
}
|
|
3150
3237
|
for (const lsdBrowserContext of this.#lsdBrowserContexts) {
|
|
3151
|
-
|
|
3152
|
-
await lsdBrowserContext.close();
|
|
3153
|
-
}
|
|
3238
|
+
await lsdBrowserContext.close();
|
|
3154
3239
|
}
|
|
3155
3240
|
await this.#browser.close();
|
|
3156
3241
|
return true;
|
|
@@ -3167,6 +3252,9 @@ var PuppeteerBrowser = class extends import_node_events6.default {
|
|
|
3167
3252
|
browserType() {
|
|
3168
3253
|
return this.#browserType;
|
|
3169
3254
|
}
|
|
3255
|
+
createTime() {
|
|
3256
|
+
return this.#createTime;
|
|
3257
|
+
}
|
|
3170
3258
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
3171
3259
|
const { browserControllerTypes, browserTypes, browserHeadlesses } = browserContextRequirements;
|
|
3172
3260
|
return (browserControllerTypes.length === 0 || browserControllerTypes.includes(this.#browserControllerType)) && (browserTypes.length === 0 || browserTypes.includes(this.#browserType)) && (browserHeadlesses.length === 0 || browserHeadlesses.includes(this.#headless));
|
package/dist/index.d.cts
CHANGED
|
@@ -12,6 +12,8 @@ type AllApiRequestContext = APIRequestContext;
|
|
|
12
12
|
type CheerioNode = cheerio.Cheerio;
|
|
13
13
|
type BrowserControllerType = "puppeteer" | "playwright";
|
|
14
14
|
type BrowserCreationMethod = "launch" | "connect";
|
|
15
|
+
type BrowserContextCreationMethod = "launch" | "new";
|
|
16
|
+
type BrowserContextStatus = "free" | "busy" | "closed";
|
|
15
17
|
type LsdBrowserType = "chromium" | "firefox" | "webkit";
|
|
16
18
|
interface BrowserContextRequirements {
|
|
17
19
|
browserControllerTypes: BrowserControllerType[];
|
|
@@ -992,6 +994,11 @@ interface LsdBrowserContext extends EventEmitter {
|
|
|
992
994
|
* @param browserContextRequirements
|
|
993
995
|
*/
|
|
994
996
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
997
|
+
/**
|
|
998
|
+
* Free a busy LsdBrowserContext.
|
|
999
|
+
* @param clearStateData default false
|
|
1000
|
+
*/
|
|
1001
|
+
free(clearStateData?: boolean): boolean;
|
|
995
1002
|
/**
|
|
996
1003
|
* get a free page from current pages or by creating a new page
|
|
997
1004
|
*/
|
|
@@ -1003,11 +1010,18 @@ interface LsdBrowserContext extends EventEmitter {
|
|
|
1003
1010
|
*/
|
|
1004
1011
|
hasFreePage(pageNum?: number): boolean;
|
|
1005
1012
|
id(): string;
|
|
1013
|
+
isFree(): boolean;
|
|
1006
1014
|
isIncognito(): boolean;
|
|
1015
|
+
creationMethod(): BrowserContextCreationMethod;
|
|
1007
1016
|
page(pageIdx: number): LsdPage | null;
|
|
1008
1017
|
pages(): LsdPage[];
|
|
1009
1018
|
proxy(): ProxyInController | null;
|
|
1010
1019
|
setStateData(stateData: BrowserStateData): Promise<boolean>;
|
|
1020
|
+
status(): BrowserContextStatus;
|
|
1021
|
+
/**
|
|
1022
|
+
* start to use this LsdBrowserContext
|
|
1023
|
+
*/
|
|
1024
|
+
use(): boolean;
|
|
1011
1025
|
_origBrowserContext(): AllBrowserContext;
|
|
1012
1026
|
}
|
|
1013
1027
|
interface LsdBrowser extends EventEmitter {
|
|
@@ -1023,6 +1037,7 @@ interface LsdBrowser extends EventEmitter {
|
|
|
1023
1037
|
browserControllerType(): BrowserControllerType;
|
|
1024
1038
|
browserCreationMethod(): BrowserCreationMethod;
|
|
1025
1039
|
browserType(): LsdBrowserType;
|
|
1040
|
+
createTime(): number;
|
|
1026
1041
|
/**
|
|
1027
1042
|
* doest this browser meet browserContextRequirements (incognitos ignored in browser)?
|
|
1028
1043
|
* @param browserContextRequirements
|
|
@@ -1097,6 +1112,7 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1097
1112
|
browserControllerType(): BrowserControllerType;
|
|
1098
1113
|
browserCreationMethod(): BrowserCreationMethod;
|
|
1099
1114
|
browserType(): LsdBrowserType;
|
|
1115
|
+
createTime(): number;
|
|
1100
1116
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1101
1117
|
executablePath(): string;
|
|
1102
1118
|
id(): string;
|
|
@@ -1115,20 +1131,25 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1115
1131
|
|
|
1116
1132
|
declare class PlaywrightBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
1117
1133
|
#private;
|
|
1118
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, maxViewportOfNewPage?: boolean);
|
|
1134
|
+
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, maxViewportOfNewPage?: boolean);
|
|
1119
1135
|
apiContext(): LsdApiContext;
|
|
1120
1136
|
browser(): LsdBrowser;
|
|
1121
1137
|
close(): Promise<boolean>;
|
|
1122
1138
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
|
1139
|
+
creationMethod(): BrowserContextCreationMethod;
|
|
1123
1140
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1124
1141
|
getPage(always?: boolean): Promise<LsdPage | null>;
|
|
1142
|
+
free(clearStateData?: boolean): boolean;
|
|
1125
1143
|
hasFreePage(pageNum?: number): boolean;
|
|
1126
1144
|
id(): string;
|
|
1145
|
+
isFree(): boolean;
|
|
1127
1146
|
isIncognito(): boolean;
|
|
1128
1147
|
page(pageIdx: number): LsdPage | null;
|
|
1129
1148
|
pages(): LsdPage[];
|
|
1130
1149
|
proxy(): ProxyInController | null;
|
|
1131
1150
|
setStateData(stateData: BrowserStateData): Promise<boolean>;
|
|
1151
|
+
status(): BrowserContextStatus;
|
|
1152
|
+
use(): boolean;
|
|
1132
1153
|
_origBrowserContext(): AllBrowserContext;
|
|
1133
1154
|
}
|
|
1134
1155
|
|
|
@@ -1219,6 +1240,7 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1219
1240
|
browserControllerType(): BrowserControllerType;
|
|
1220
1241
|
browserCreationMethod(): BrowserCreationMethod;
|
|
1221
1242
|
browserType(): LsdBrowserType;
|
|
1243
|
+
createTime(): number;
|
|
1222
1244
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1223
1245
|
executablePath(): string;
|
|
1224
1246
|
id(): string;
|
|
@@ -1237,20 +1259,25 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1237
1259
|
|
|
1238
1260
|
declare class PuppeteerBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
1239
1261
|
#private;
|
|
1240
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
|
|
1262
|
+
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);
|
|
1241
1263
|
apiContext(): LsdApiContext;
|
|
1242
1264
|
browser(): LsdBrowser;
|
|
1243
1265
|
close(): Promise<boolean>;
|
|
1244
1266
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
|
1267
|
+
creationMethod(): BrowserContextCreationMethod;
|
|
1245
1268
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1246
1269
|
getPage(always?: boolean): Promise<LsdPage | null>;
|
|
1270
|
+
free(clearStateData?: boolean): boolean;
|
|
1247
1271
|
hasFreePage(pageNum?: number): boolean;
|
|
1248
1272
|
id(): string;
|
|
1249
1273
|
isIncognito(): boolean;
|
|
1274
|
+
isFree(): boolean;
|
|
1250
1275
|
page(pageIdx: number): LsdPage | null;
|
|
1251
1276
|
pages(): LsdPage[];
|
|
1252
1277
|
proxy(): ProxyInController | null;
|
|
1253
1278
|
setStateData(stateData: BrowserStateData): Promise<boolean>;
|
|
1279
|
+
status(): BrowserContextStatus;
|
|
1280
|
+
use(): boolean;
|
|
1254
1281
|
_origBrowserContext(): AllBrowserContext;
|
|
1255
1282
|
}
|
|
1256
1283
|
|
|
@@ -1425,4 +1452,4 @@ declare class LsdBrowserController implements LsdBrowserController$1 {
|
|
|
1425
1452
|
}
|
|
1426
1453
|
declare const controller: LsdBrowserController;
|
|
1427
1454
|
|
|
1428
|
-
export { type AllApiRequestContext, type AllBrowser, type AllBrowserContext, type AllElement, type AllFrame, type AllPage, type AllResponse, type BrowserContextRequirements, type BrowserControllerType, type BrowserCreationMethod, type BrowserLaunchMethod, type BrowserStateData, CheerioElement, type CheerioNode, CheerioPage, type ClientCertificate, type CookieItem, type GotoOptions, type IframeOption, type InputOptions, type KeyInput, type KeyPressOptions, type LocalStorageItem, type LocalStorageOrigin, type LowerCasePaperFormat, type LsdApiContext, type LsdApiContextOptions, type LsdApiResponse, type LsdBrowser, type LsdBrowserContext, type LsdBrowserContextOptions, type LsdBrowserController$1 as LsdBrowserController, type LsdBrowserType, type LsdConnectOptions, type LsdElement, type LsdFetchOptions, type LsdLaunchOptions, type LsdPage, type MouseClickOptions, type MouseClickType, type NavigationWaitUntil, type PDFMargin, type PDFOptions, type PageEvent, type PageExtInPlaywright, type PageExtInPuppeteer, type PageInfo, type PageOpenType, type PageStatus, type PaperFormat, PlaywrightBrowser, PlaywrightBrowserContext, type PlaywrightBrowserTypes, PlaywrightElement, PlaywrightPage, type ProxyInController, PuppeteerBrowser, PuppeteerBrowserContext, PuppeteerElement, PuppeteerPage, type RequestInterceptionAction, type RequestInterceptionOption, type RequestMatch, type RequestMethod, type RequestResourceType, type ResponseHandler, type ResponseHandlerOptions, type ResponseInterceptionItem, type ResponseInterceptionOption, type ResponseMatch, type ResponsePageData, type ScreenshotOptions, type SelectOptions, type UpdatablePageInfo, type ViewportSize, type WaitElementOptions, type WaitElementState, type WaitNavigationOptions, controller };
|
|
1455
|
+
export { type AllApiRequestContext, type AllBrowser, type AllBrowserContext, type AllElement, type AllFrame, type AllPage, type AllResponse, type BrowserContextCreationMethod, type BrowserContextRequirements, type BrowserContextStatus, type BrowserControllerType, type BrowserCreationMethod, type BrowserLaunchMethod, type BrowserStateData, CheerioElement, type CheerioNode, CheerioPage, type ClientCertificate, type CookieItem, type GotoOptions, type IframeOption, type InputOptions, type KeyInput, type KeyPressOptions, type LocalStorageItem, type LocalStorageOrigin, type LowerCasePaperFormat, type LsdApiContext, type LsdApiContextOptions, type LsdApiResponse, type LsdBrowser, type LsdBrowserContext, type LsdBrowserContextOptions, type LsdBrowserController$1 as LsdBrowserController, type LsdBrowserType, type LsdConnectOptions, type LsdElement, type LsdFetchOptions, type LsdLaunchOptions, type LsdPage, type MouseClickOptions, type MouseClickType, type NavigationWaitUntil, type PDFMargin, type PDFOptions, type PageEvent, type PageExtInPlaywright, type PageExtInPuppeteer, type PageInfo, type PageOpenType, type PageStatus, type PaperFormat, PlaywrightBrowser, PlaywrightBrowserContext, type PlaywrightBrowserTypes, PlaywrightElement, PlaywrightPage, type ProxyInController, PuppeteerBrowser, PuppeteerBrowserContext, PuppeteerElement, PuppeteerPage, type RequestInterceptionAction, type RequestInterceptionOption, type RequestMatch, type RequestMethod, type RequestResourceType, type ResponseHandler, type ResponseHandlerOptions, type ResponseInterceptionItem, type ResponseInterceptionOption, type ResponseMatch, type ResponsePageData, type ScreenshotOptions, type SelectOptions, type UpdatablePageInfo, type ViewportSize, type WaitElementOptions, type WaitElementState, type WaitNavigationOptions, controller };
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ type AllApiRequestContext = APIRequestContext;
|
|
|
12
12
|
type CheerioNode = cheerio.Cheerio;
|
|
13
13
|
type BrowserControllerType = "puppeteer" | "playwright";
|
|
14
14
|
type BrowserCreationMethod = "launch" | "connect";
|
|
15
|
+
type BrowserContextCreationMethod = "launch" | "new";
|
|
16
|
+
type BrowserContextStatus = "free" | "busy" | "closed";
|
|
15
17
|
type LsdBrowserType = "chromium" | "firefox" | "webkit";
|
|
16
18
|
interface BrowserContextRequirements {
|
|
17
19
|
browserControllerTypes: BrowserControllerType[];
|
|
@@ -992,6 +994,11 @@ interface LsdBrowserContext extends EventEmitter {
|
|
|
992
994
|
* @param browserContextRequirements
|
|
993
995
|
*/
|
|
994
996
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
997
|
+
/**
|
|
998
|
+
* Free a busy LsdBrowserContext.
|
|
999
|
+
* @param clearStateData default false
|
|
1000
|
+
*/
|
|
1001
|
+
free(clearStateData?: boolean): boolean;
|
|
995
1002
|
/**
|
|
996
1003
|
* get a free page from current pages or by creating a new page
|
|
997
1004
|
*/
|
|
@@ -1003,11 +1010,18 @@ interface LsdBrowserContext extends EventEmitter {
|
|
|
1003
1010
|
*/
|
|
1004
1011
|
hasFreePage(pageNum?: number): boolean;
|
|
1005
1012
|
id(): string;
|
|
1013
|
+
isFree(): boolean;
|
|
1006
1014
|
isIncognito(): boolean;
|
|
1015
|
+
creationMethod(): BrowserContextCreationMethod;
|
|
1007
1016
|
page(pageIdx: number): LsdPage | null;
|
|
1008
1017
|
pages(): LsdPage[];
|
|
1009
1018
|
proxy(): ProxyInController | null;
|
|
1010
1019
|
setStateData(stateData: BrowserStateData): Promise<boolean>;
|
|
1020
|
+
status(): BrowserContextStatus;
|
|
1021
|
+
/**
|
|
1022
|
+
* start to use this LsdBrowserContext
|
|
1023
|
+
*/
|
|
1024
|
+
use(): boolean;
|
|
1011
1025
|
_origBrowserContext(): AllBrowserContext;
|
|
1012
1026
|
}
|
|
1013
1027
|
interface LsdBrowser extends EventEmitter {
|
|
@@ -1023,6 +1037,7 @@ interface LsdBrowser extends EventEmitter {
|
|
|
1023
1037
|
browserControllerType(): BrowserControllerType;
|
|
1024
1038
|
browserCreationMethod(): BrowserCreationMethod;
|
|
1025
1039
|
browserType(): LsdBrowserType;
|
|
1040
|
+
createTime(): number;
|
|
1026
1041
|
/**
|
|
1027
1042
|
* doest this browser meet browserContextRequirements (incognitos ignored in browser)?
|
|
1028
1043
|
* @param browserContextRequirements
|
|
@@ -1097,6 +1112,7 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1097
1112
|
browserControllerType(): BrowserControllerType;
|
|
1098
1113
|
browserCreationMethod(): BrowserCreationMethod;
|
|
1099
1114
|
browserType(): LsdBrowserType;
|
|
1115
|
+
createTime(): number;
|
|
1100
1116
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1101
1117
|
executablePath(): string;
|
|
1102
1118
|
id(): string;
|
|
@@ -1115,20 +1131,25 @@ declare class PlaywrightBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1115
1131
|
|
|
1116
1132
|
declare class PlaywrightBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
1117
1133
|
#private;
|
|
1118
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, maxViewportOfNewPage?: boolean);
|
|
1134
|
+
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext, browserContextCreationMethod: BrowserContextCreationMethod, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, maxViewportOfNewPage?: boolean);
|
|
1119
1135
|
apiContext(): LsdApiContext;
|
|
1120
1136
|
browser(): LsdBrowser;
|
|
1121
1137
|
close(): Promise<boolean>;
|
|
1122
1138
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
|
1139
|
+
creationMethod(): BrowserContextCreationMethod;
|
|
1123
1140
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1124
1141
|
getPage(always?: boolean): Promise<LsdPage | null>;
|
|
1142
|
+
free(clearStateData?: boolean): boolean;
|
|
1125
1143
|
hasFreePage(pageNum?: number): boolean;
|
|
1126
1144
|
id(): string;
|
|
1145
|
+
isFree(): boolean;
|
|
1127
1146
|
isIncognito(): boolean;
|
|
1128
1147
|
page(pageIdx: number): LsdPage | null;
|
|
1129
1148
|
pages(): LsdPage[];
|
|
1130
1149
|
proxy(): ProxyInController | null;
|
|
1131
1150
|
setStateData(stateData: BrowserStateData): Promise<boolean>;
|
|
1151
|
+
status(): BrowserContextStatus;
|
|
1152
|
+
use(): boolean;
|
|
1132
1153
|
_origBrowserContext(): AllBrowserContext;
|
|
1133
1154
|
}
|
|
1134
1155
|
|
|
@@ -1219,6 +1240,7 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1219
1240
|
browserControllerType(): BrowserControllerType;
|
|
1220
1241
|
browserCreationMethod(): BrowserCreationMethod;
|
|
1221
1242
|
browserType(): LsdBrowserType;
|
|
1243
|
+
createTime(): number;
|
|
1222
1244
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1223
1245
|
executablePath(): string;
|
|
1224
1246
|
id(): string;
|
|
@@ -1237,20 +1259,25 @@ declare class PuppeteerBrowser extends EventEmitter implements LsdBrowser {
|
|
|
1237
1259
|
|
|
1238
1260
|
declare class PuppeteerBrowserContext extends EventEmitter implements LsdBrowserContext {
|
|
1239
1261
|
#private;
|
|
1240
|
-
constructor(lsdBrowser: LsdBrowser, browserContext: BrowserContext$1, incognito?: boolean, proxy?: ProxyInController | null, browserIdx?: number, browserContextIdx?: number, maxPagesPerBrowserContext?: number, maxPageFreeSeconds?: number, userAgent?: string, maxViewportOfNewPage?: boolean);
|
|
1262
|
+
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);
|
|
1241
1263
|
apiContext(): LsdApiContext;
|
|
1242
1264
|
browser(): LsdBrowser;
|
|
1243
1265
|
close(): Promise<boolean>;
|
|
1244
1266
|
closeFreePages(maxPageFreeSeconds?: number): Promise<boolean>;
|
|
1267
|
+
creationMethod(): BrowserContextCreationMethod;
|
|
1245
1268
|
doesMeetBrowserContextRequirements(browserContextRequirements: BrowserContextRequirements): boolean;
|
|
1246
1269
|
getPage(always?: boolean): Promise<LsdPage | null>;
|
|
1270
|
+
free(clearStateData?: boolean): boolean;
|
|
1247
1271
|
hasFreePage(pageNum?: number): boolean;
|
|
1248
1272
|
id(): string;
|
|
1249
1273
|
isIncognito(): boolean;
|
|
1274
|
+
isFree(): boolean;
|
|
1250
1275
|
page(pageIdx: number): LsdPage | null;
|
|
1251
1276
|
pages(): LsdPage[];
|
|
1252
1277
|
proxy(): ProxyInController | null;
|
|
1253
1278
|
setStateData(stateData: BrowserStateData): Promise<boolean>;
|
|
1279
|
+
status(): BrowserContextStatus;
|
|
1280
|
+
use(): boolean;
|
|
1254
1281
|
_origBrowserContext(): AllBrowserContext;
|
|
1255
1282
|
}
|
|
1256
1283
|
|
|
@@ -1425,4 +1452,4 @@ declare class LsdBrowserController implements LsdBrowserController$1 {
|
|
|
1425
1452
|
}
|
|
1426
1453
|
declare const controller: LsdBrowserController;
|
|
1427
1454
|
|
|
1428
|
-
export { type AllApiRequestContext, type AllBrowser, type AllBrowserContext, type AllElement, type AllFrame, type AllPage, type AllResponse, type BrowserContextRequirements, type BrowserControllerType, type BrowserCreationMethod, type BrowserLaunchMethod, type BrowserStateData, CheerioElement, type CheerioNode, CheerioPage, type ClientCertificate, type CookieItem, type GotoOptions, type IframeOption, type InputOptions, type KeyInput, type KeyPressOptions, type LocalStorageItem, type LocalStorageOrigin, type LowerCasePaperFormat, type LsdApiContext, type LsdApiContextOptions, type LsdApiResponse, type LsdBrowser, type LsdBrowserContext, type LsdBrowserContextOptions, type LsdBrowserController$1 as LsdBrowserController, type LsdBrowserType, type LsdConnectOptions, type LsdElement, type LsdFetchOptions, type LsdLaunchOptions, type LsdPage, type MouseClickOptions, type MouseClickType, type NavigationWaitUntil, type PDFMargin, type PDFOptions, type PageEvent, type PageExtInPlaywright, type PageExtInPuppeteer, type PageInfo, type PageOpenType, type PageStatus, type PaperFormat, PlaywrightBrowser, PlaywrightBrowserContext, type PlaywrightBrowserTypes, PlaywrightElement, PlaywrightPage, type ProxyInController, PuppeteerBrowser, PuppeteerBrowserContext, PuppeteerElement, PuppeteerPage, type RequestInterceptionAction, type RequestInterceptionOption, type RequestMatch, type RequestMethod, type RequestResourceType, type ResponseHandler, type ResponseHandlerOptions, type ResponseInterceptionItem, type ResponseInterceptionOption, type ResponseMatch, type ResponsePageData, type ScreenshotOptions, type SelectOptions, type UpdatablePageInfo, type ViewportSize, type WaitElementOptions, type WaitElementState, type WaitNavigationOptions, controller };
|
|
1455
|
+
export { type AllApiRequestContext, type AllBrowser, type AllBrowserContext, type AllElement, type AllFrame, type AllPage, type AllResponse, type BrowserContextCreationMethod, type BrowserContextRequirements, type BrowserContextStatus, type BrowserControllerType, type BrowserCreationMethod, type BrowserLaunchMethod, type BrowserStateData, CheerioElement, type CheerioNode, CheerioPage, type ClientCertificate, type CookieItem, type GotoOptions, type IframeOption, type InputOptions, type KeyInput, type KeyPressOptions, type LocalStorageItem, type LocalStorageOrigin, type LowerCasePaperFormat, type LsdApiContext, type LsdApiContextOptions, type LsdApiResponse, type LsdBrowser, type LsdBrowserContext, type LsdBrowserContextOptions, type LsdBrowserController$1 as LsdBrowserController, type LsdBrowserType, type LsdConnectOptions, type LsdElement, type LsdFetchOptions, type LsdLaunchOptions, type LsdPage, type MouseClickOptions, type MouseClickType, type NavigationWaitUntil, type PDFMargin, type PDFOptions, type PageEvent, type PageExtInPlaywright, type PageExtInPuppeteer, type PageInfo, type PageOpenType, type PageStatus, type PaperFormat, PlaywrightBrowser, PlaywrightBrowserContext, type PlaywrightBrowserTypes, PlaywrightElement, PlaywrightPage, type ProxyInController, PuppeteerBrowser, PuppeteerBrowserContext, PuppeteerElement, PuppeteerPage, type RequestInterceptionAction, type RequestInterceptionOption, type RequestMatch, type RequestMethod, type RequestResourceType, type ResponseHandler, type ResponseHandlerOptions, type ResponseInterceptionItem, type ResponseInterceptionOption, type ResponseMatch, type ResponsePageData, type ScreenshotOptions, type SelectOptions, type UpdatablePageInfo, type ViewportSize, type WaitElementOptions, type WaitElementState, type WaitNavigationOptions, controller };
|
package/dist/index.js
CHANGED
|
@@ -1168,8 +1168,11 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1168
1168
|
#browserIdx;
|
|
1169
1169
|
#browserContextIdx;
|
|
1170
1170
|
#browserContext;
|
|
1171
|
+
#browserContextCreationMethod;
|
|
1171
1172
|
#apiContext;
|
|
1172
1173
|
#createTime;
|
|
1174
|
+
#lastStatusUpdateTime;
|
|
1175
|
+
#status;
|
|
1173
1176
|
#incognito;
|
|
1174
1177
|
#proxy;
|
|
1175
1178
|
#maxPagesPerBrowserContext;
|
|
@@ -1195,7 +1198,7 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1195
1198
|
loginfo3(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
1196
1199
|
}
|
|
1197
1200
|
}
|
|
1198
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1201
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, maxViewportOfNewPage = true) {
|
|
1199
1202
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
1200
1203
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
1201
1204
|
}
|
|
@@ -1207,9 +1210,13 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1207
1210
|
this.#browserIdx = browserIdx;
|
|
1208
1211
|
this.#browserContextIdx = browserContextIdx;
|
|
1209
1212
|
this.#browserContext = browserContext;
|
|
1213
|
+
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
1210
1214
|
const apiRequestContext = browserContext.request;
|
|
1211
1215
|
this.#apiContext = new PlaywrightApiContext(apiRequestContext);
|
|
1212
|
-
|
|
1216
|
+
const currentTime = getCurrentUnixTime2();
|
|
1217
|
+
this.#createTime = currentTime;
|
|
1218
|
+
this.#lastStatusUpdateTime = currentTime;
|
|
1219
|
+
this.#status = "free";
|
|
1213
1220
|
this.#incognito = incognito === false ? false : true;
|
|
1214
1221
|
this.#proxy = proxy?.proxyUrl ? proxy : null;
|
|
1215
1222
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
@@ -1225,8 +1232,8 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1225
1232
|
const { browserIdx: browserIdx2, browserContextIdx: browserContextIdx2, pageIdx } = pageInfo;
|
|
1226
1233
|
logwarn2(`##browser page-${browserIdx2}-${browserContextIdx2}-${pageIdx} has been already created`);
|
|
1227
1234
|
} else {
|
|
1228
|
-
const
|
|
1229
|
-
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime:
|
|
1235
|
+
const currentTime2 = getCurrentUnixTime2();
|
|
1236
|
+
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime2, lastStatusUpdateTime: currentTime2, taskId: 0, relatedId: 0, misc: {} };
|
|
1230
1237
|
const lsdPage = new PlaywrightPage(this, page, pageInfo2);
|
|
1231
1238
|
if (this.#maxViewportOfNewPage) {
|
|
1232
1239
|
await lsdPage.maximizeViewport();
|
|
@@ -1263,6 +1270,9 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1263
1270
|
}
|
|
1264
1271
|
async close() {
|
|
1265
1272
|
if (this.#browserContext) {
|
|
1273
|
+
this.#status = "closed";
|
|
1274
|
+
this.#lastStatusUpdateTime = getCurrentUnixTime2();
|
|
1275
|
+
loginfo3(`browserContext ${this.id()} closed at ${this.#lastStatusUpdateTime}`);
|
|
1266
1276
|
await this.#browserContext.close();
|
|
1267
1277
|
}
|
|
1268
1278
|
return true;
|
|
@@ -1315,6 +1325,9 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1315
1325
|
return false;
|
|
1316
1326
|
}
|
|
1317
1327
|
}
|
|
1328
|
+
creationMethod() {
|
|
1329
|
+
return this.#browserContextCreationMethod;
|
|
1330
|
+
}
|
|
1318
1331
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
1319
1332
|
if (!this.#lsdBrowser.doesMeetBrowserContextRequirements(browserContextRequirements)) {
|
|
1320
1333
|
return false;
|
|
@@ -1364,6 +1377,17 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1364
1377
|
return null;
|
|
1365
1378
|
}
|
|
1366
1379
|
}
|
|
1380
|
+
free(clearStateData = false) {
|
|
1381
|
+
if (this.#status === "busy") {
|
|
1382
|
+
this.#status = "free";
|
|
1383
|
+
this.#lastStatusUpdateTime = getCurrentUnixTime2();
|
|
1384
|
+
if (clearStateData) {
|
|
1385
|
+
}
|
|
1386
|
+
return true;
|
|
1387
|
+
} else {
|
|
1388
|
+
return false;
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1367
1391
|
hasFreePage(pageNum = 1) {
|
|
1368
1392
|
if (this.#maxPagesPerBrowserContext - this.#lsdPages.length > pageNum) {
|
|
1369
1393
|
return true;
|
|
@@ -1376,6 +1400,9 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1376
1400
|
id() {
|
|
1377
1401
|
return `browserContext-${this.#browserIdx}-${this.#browserContextIdx}`;
|
|
1378
1402
|
}
|
|
1403
|
+
isFree() {
|
|
1404
|
+
return this.#status === "free";
|
|
1405
|
+
}
|
|
1379
1406
|
isIncognito() {
|
|
1380
1407
|
return this.#incognito;
|
|
1381
1408
|
}
|
|
@@ -1431,17 +1458,30 @@ var PlaywrightBrowserContext = class extends EventEmitter2 {
|
|
|
1431
1458
|
return false;
|
|
1432
1459
|
}
|
|
1433
1460
|
}
|
|
1461
|
+
status() {
|
|
1462
|
+
return this.#status;
|
|
1463
|
+
}
|
|
1464
|
+
use() {
|
|
1465
|
+
if (this.#status === "free") {
|
|
1466
|
+
this.#status = "busy";
|
|
1467
|
+
this.#lastStatusUpdateTime = getCurrentUnixTime2();
|
|
1468
|
+
return true;
|
|
1469
|
+
} else {
|
|
1470
|
+
return false;
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1434
1473
|
_origBrowserContext() {
|
|
1435
1474
|
return this.#browserContext;
|
|
1436
1475
|
}
|
|
1437
1476
|
};
|
|
1438
1477
|
|
|
1439
1478
|
// src/playwright/browser.ts
|
|
1440
|
-
import { getPerformanceOfPidTree, logerr as logerr3, loginfo as loginfo4, logwarn as logwarn3 } from "@letsscrapedata/utils";
|
|
1479
|
+
import { getCurrentUnixTime as getCurrentUnixTime3, getPerformanceOfPidTree, logerr as logerr3, loginfo as loginfo4, logwarn as logwarn3 } from "@letsscrapedata/utils";
|
|
1441
1480
|
var PlaywrightBrowser = class extends EventEmitter3 {
|
|
1442
1481
|
#browser;
|
|
1443
1482
|
#browserIdx;
|
|
1444
1483
|
#pid;
|
|
1484
|
+
#createTime;
|
|
1445
1485
|
#lsdBrowserContexts;
|
|
1446
1486
|
#browserControllerType;
|
|
1447
1487
|
#browserType;
|
|
@@ -1475,6 +1515,7 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1475
1515
|
this.#browser = browser;
|
|
1476
1516
|
this.#browserIdx = browserIdx;
|
|
1477
1517
|
this.#pid = pid;
|
|
1518
|
+
this.#createTime = getCurrentUnixTime3();
|
|
1478
1519
|
this.#lsdBrowserContexts = [];
|
|
1479
1520
|
this.#browserControllerType = "playwright";
|
|
1480
1521
|
this.#browserType = browerType;
|
|
@@ -1492,7 +1533,7 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1492
1533
|
}
|
|
1493
1534
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : true;
|
|
1494
1535
|
for (const browserContext of browserContexts) {
|
|
1495
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1536
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1496
1537
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1497
1538
|
loginfo4(`##browserContext ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
1498
1539
|
}
|
|
@@ -1550,7 +1591,7 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1550
1591
|
}
|
|
1551
1592
|
const browserContext = await this.#browser.newContext(browserContextOptions);
|
|
1552
1593
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
1553
|
-
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1594
|
+
const lsdBrowserContext = new PlaywrightBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), maxViewportOfNewPage);
|
|
1554
1595
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
1555
1596
|
loginfo4(`##browser ${lsdBrowserContext.id()} created`);
|
|
1556
1597
|
return lsdBrowserContext;
|
|
@@ -1577,6 +1618,9 @@ var PlaywrightBrowser = class extends EventEmitter3 {
|
|
|
1577
1618
|
browserType() {
|
|
1578
1619
|
return this.#browserType;
|
|
1579
1620
|
}
|
|
1621
|
+
createTime() {
|
|
1622
|
+
return this.#createTime;
|
|
1623
|
+
}
|
|
1580
1624
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
1581
1625
|
const { browserControllerTypes, browserTypes, browserHeadlesses } = browserContextRequirements;
|
|
1582
1626
|
return (browserControllerTypes.length === 0 || browserControllerTypes.includes(this.#browserControllerType)) && (browserTypes.length === 0 || browserTypes.includes(this.#browserType)) && (browserHeadlesses.length === 0 || browserHeadlesses.includes(this.#headless));
|
|
@@ -1900,7 +1944,7 @@ var PuppeteerElement = class _PuppeteerElement {
|
|
|
1900
1944
|
};
|
|
1901
1945
|
|
|
1902
1946
|
// src/puppeteer/page.ts
|
|
1903
|
-
import { getCurrentUnixTime as
|
|
1947
|
+
import { getCurrentUnixTime as getCurrentUnixTime4, logerr as logerr5, loginfo as loginfo5, unreachable as unreachable4 } from "@letsscrapedata/utils";
|
|
1904
1948
|
var PuppeteerPage = class extends EventEmitter4 {
|
|
1905
1949
|
#lsdBrowserContext;
|
|
1906
1950
|
#page;
|
|
@@ -2098,7 +2142,7 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
2098
2142
|
this.#lsdBrowserContext = browserContext;
|
|
2099
2143
|
this.#page = page;
|
|
2100
2144
|
this.#status = "free";
|
|
2101
|
-
const currentTime =
|
|
2145
|
+
const currentTime = getCurrentUnixTime4();
|
|
2102
2146
|
const { browserIdx = 0, browserContextIdx = 0, pageIdx = 0, openType = "other", openTime = currentTime, lastStatusUpdateTime = currentTime, taskId = 0, relatedId = 0, misc = {} } = pageInfo ? pageInfo : {};
|
|
2103
2147
|
this.#page.pageInfo = { browserIdx, browserContextIdx, pageIdx, openType, openTime, lastStatusUpdateTime, taskId, relatedId, misc };
|
|
2104
2148
|
this.#pageId = `page-${browserIdx}-${browserContextIdx}-${pageIdx}`;
|
|
@@ -2696,18 +2740,21 @@ var PuppeteerPage = class extends EventEmitter4 {
|
|
|
2696
2740
|
};
|
|
2697
2741
|
|
|
2698
2742
|
// src/puppeteer/context.ts
|
|
2699
|
-
import { getCurrentUnixTime as
|
|
2743
|
+
import { getCurrentUnixTime as getCurrentUnixTime5, logerr as logerr6, loginfo as loginfo6, logwarn as logwarn4, sleep as sleep2 } from "@letsscrapedata/utils";
|
|
2700
2744
|
var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
2701
2745
|
#lsdBrowser;
|
|
2702
2746
|
#browserIdx;
|
|
2703
2747
|
#browserContextIdx;
|
|
2704
2748
|
#browserContext;
|
|
2749
|
+
#browserContextCreationMethod;
|
|
2705
2750
|
/**
|
|
2706
2751
|
* the userAgent of pages in this browserContext if userAgent
|
|
2707
2752
|
* * Notice: it is not the actual userAgent if !#userAgent (ignored if !#userAgent)
|
|
2708
2753
|
*/
|
|
2709
2754
|
#userAgent;
|
|
2710
2755
|
#createTime;
|
|
2756
|
+
#lastStatusUpdateTime;
|
|
2757
|
+
#status;
|
|
2711
2758
|
#incognito;
|
|
2712
2759
|
#proxy;
|
|
2713
2760
|
#maxPagesPerBrowserContext;
|
|
@@ -2722,7 +2769,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2722
2769
|
}
|
|
2723
2770
|
const pages = await this.#browserContext.pages();
|
|
2724
2771
|
const openType = this.#lsdBrowser.browserCreationMethod();
|
|
2725
|
-
const lastStatusUpdateTime =
|
|
2772
|
+
const lastStatusUpdateTime = getCurrentUnixTime5();
|
|
2726
2773
|
for (const page of pages) {
|
|
2727
2774
|
const pageInfo = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType, openTime: this.#createTime, lastStatusUpdateTime, taskId: 0, relatedId: 0, misc: {} };
|
|
2728
2775
|
const lsdPage = new PuppeteerPage(this, page, pageInfo);
|
|
@@ -2736,7 +2783,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2736
2783
|
loginfo6(`##browser ${lsdPage.id()} ${openType}ed`);
|
|
2737
2784
|
}
|
|
2738
2785
|
}
|
|
2739
|
-
constructor(lsdBrowser, browserContext, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
2786
|
+
constructor(lsdBrowser, browserContext, browserContextCreationMethod, incognito = false, proxy = null, browserIdx = 0, browserContextIdx = 0, maxPagesPerBrowserContext = 20, maxPageFreeSeconds = 0, userAgent = "", maxViewportOfNewPage = true) {
|
|
2740
2787
|
if (!lsdBrowser || typeof lsdBrowser.browserContexts !== "function") {
|
|
2741
2788
|
throw new Error(`Invalid lsdBrowser parameter`);
|
|
2742
2789
|
}
|
|
@@ -2748,8 +2795,12 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2748
2795
|
this.#browserIdx = browserIdx;
|
|
2749
2796
|
this.#browserContextIdx = browserContextIdx;
|
|
2750
2797
|
this.#browserContext = browserContext;
|
|
2798
|
+
this.#browserContextCreationMethod = browserContextCreationMethod;
|
|
2751
2799
|
this.#userAgent = userAgent;
|
|
2752
|
-
|
|
2800
|
+
const currentTime = getCurrentUnixTime5();
|
|
2801
|
+
this.#createTime = currentTime;
|
|
2802
|
+
this.#lastStatusUpdateTime = currentTime;
|
|
2803
|
+
this.#status = "free";
|
|
2753
2804
|
this.#incognito = incognito === false ? false : true;
|
|
2754
2805
|
this.#proxy = proxy?.proxyUrl ? proxy : null;
|
|
2755
2806
|
this.#maxPagesPerBrowserContext = maxPagesPerBrowserContext;
|
|
@@ -2770,8 +2821,8 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2770
2821
|
const { browserIdx: browserIdx2, browserContextIdx: browserContextIdx2, pageIdx } = pageInfo;
|
|
2771
2822
|
logwarn4(`##browser page-${browserIdx2}-${browserContextIdx2}-${pageIdx} has been already created`);
|
|
2772
2823
|
} else {
|
|
2773
|
-
const
|
|
2774
|
-
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime:
|
|
2824
|
+
const currentTime2 = getCurrentUnixTime5();
|
|
2825
|
+
const pageInfo2 = { browserIdx: this.#browserIdx, browserContextIdx: this.#browserContextIdx, pageIdx: this.#nextPageIdx++, openType: "other", openTime: currentTime2, lastStatusUpdateTime: currentTime2, taskId: 0, relatedId: 0, misc: {} };
|
|
2775
2826
|
const lsdPage = new PuppeteerPage(this, page, pageInfo2);
|
|
2776
2827
|
if (this.#maxViewportOfNewPage) {
|
|
2777
2828
|
await lsdPage.maximizeViewport();
|
|
@@ -2809,7 +2860,12 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2809
2860
|
}
|
|
2810
2861
|
async close() {
|
|
2811
2862
|
if (this.#browserContext) {
|
|
2812
|
-
|
|
2863
|
+
this.#status = "closed";
|
|
2864
|
+
this.#lastStatusUpdateTime = getCurrentUnixTime5();
|
|
2865
|
+
loginfo6(`browserContext ${this.id()} closed at ${this.#lastStatusUpdateTime}`);
|
|
2866
|
+
if (this.#browserContextCreationMethod !== "launch") {
|
|
2867
|
+
await this.#browserContext.close();
|
|
2868
|
+
}
|
|
2813
2869
|
}
|
|
2814
2870
|
return true;
|
|
2815
2871
|
}
|
|
@@ -2845,7 +2901,7 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2845
2901
|
return false;
|
|
2846
2902
|
}
|
|
2847
2903
|
try {
|
|
2848
|
-
const maxUpdateTime =
|
|
2904
|
+
const maxUpdateTime = getCurrentUnixTime5() - this.#maxPageFreeSeconds;
|
|
2849
2905
|
let freePages = this.#lsdPages.filter((p) => p.isFree() && p.pageInfo().lastStatusUpdateTime < maxUpdateTime);
|
|
2850
2906
|
if (freePages.length === this.#lsdPages.length) {
|
|
2851
2907
|
freePages = freePages.slice(1);
|
|
@@ -2861,6 +2917,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2861
2917
|
return false;
|
|
2862
2918
|
}
|
|
2863
2919
|
}
|
|
2920
|
+
creationMethod() {
|
|
2921
|
+
return this.#browserContextCreationMethod;
|
|
2922
|
+
}
|
|
2864
2923
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
2865
2924
|
if (!this.#lsdBrowser.doesMeetBrowserContextRequirements(browserContextRequirements)) {
|
|
2866
2925
|
return false;
|
|
@@ -2912,6 +2971,17 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2912
2971
|
return null;
|
|
2913
2972
|
}
|
|
2914
2973
|
}
|
|
2974
|
+
free(clearStateData = false) {
|
|
2975
|
+
if (this.#status === "busy") {
|
|
2976
|
+
this.#status = "free";
|
|
2977
|
+
this.#lastStatusUpdateTime = getCurrentUnixTime5();
|
|
2978
|
+
if (clearStateData) {
|
|
2979
|
+
}
|
|
2980
|
+
return true;
|
|
2981
|
+
} else {
|
|
2982
|
+
return false;
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2915
2985
|
hasFreePage(pageNum = 1) {
|
|
2916
2986
|
if (this.#maxPagesPerBrowserContext - this.#lsdPages.length > pageNum) {
|
|
2917
2987
|
return true;
|
|
@@ -2927,6 +2997,9 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2927
2997
|
isIncognito() {
|
|
2928
2998
|
return this.#incognito;
|
|
2929
2999
|
}
|
|
3000
|
+
isFree() {
|
|
3001
|
+
return this.#status === "free";
|
|
3002
|
+
}
|
|
2930
3003
|
page(pageIdx) {
|
|
2931
3004
|
const lsdPage = this.#lsdPages.find((p) => p.pageInfo().pageIdx === pageIdx);
|
|
2932
3005
|
return lsdPage ? lsdPage : null;
|
|
@@ -2979,17 +3052,30 @@ var PuppeteerBrowserContext = class extends EventEmitter5 {
|
|
|
2979
3052
|
return false;
|
|
2980
3053
|
}
|
|
2981
3054
|
}
|
|
3055
|
+
status() {
|
|
3056
|
+
return this.#status;
|
|
3057
|
+
}
|
|
3058
|
+
use() {
|
|
3059
|
+
if (this.#status === "free") {
|
|
3060
|
+
this.#status = "busy";
|
|
3061
|
+
this.#lastStatusUpdateTime = getCurrentUnixTime5();
|
|
3062
|
+
return true;
|
|
3063
|
+
} else {
|
|
3064
|
+
return false;
|
|
3065
|
+
}
|
|
3066
|
+
}
|
|
2982
3067
|
_origBrowserContext() {
|
|
2983
3068
|
return this.#browserContext;
|
|
2984
3069
|
}
|
|
2985
3070
|
};
|
|
2986
3071
|
|
|
2987
3072
|
// src/puppeteer/browser.ts
|
|
2988
|
-
import { getPerformanceOfPidTree as getPerformanceOfPidTree2, logerr as logerr7, loginfo as loginfo7, logwarn as logwarn5 } from "@letsscrapedata/utils";
|
|
3073
|
+
import { getCurrentUnixTime as getCurrentUnixTime6, getPerformanceOfPidTree as getPerformanceOfPidTree2, logerr as logerr7, loginfo as loginfo7, logwarn as logwarn5 } from "@letsscrapedata/utils";
|
|
2989
3074
|
var PuppeteerBrowser = class extends EventEmitter6 {
|
|
2990
3075
|
#browser;
|
|
2991
3076
|
#browserIdx;
|
|
2992
3077
|
#pid;
|
|
3078
|
+
#createTime;
|
|
2993
3079
|
#lsdBrowserContexts;
|
|
2994
3080
|
#browserControllerType;
|
|
2995
3081
|
#browserType;
|
|
@@ -3026,6 +3112,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
3026
3112
|
this.#browser = browser;
|
|
3027
3113
|
this.#browserIdx = browserIdx;
|
|
3028
3114
|
this.#pid = pid;
|
|
3115
|
+
this.#createTime = getCurrentUnixTime6();
|
|
3029
3116
|
this.#lsdBrowserContexts = [];
|
|
3030
3117
|
this.#browserControllerType = "puppeteer";
|
|
3031
3118
|
this.#browserType = browerType;
|
|
@@ -3040,7 +3127,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
3040
3127
|
const browserContexts = browser.browserContexts();
|
|
3041
3128
|
const incognito = typeof options?.incognito === "boolean" ? options.incognito : false;
|
|
3042
3129
|
for (const browserContext of browserContexts) {
|
|
3043
|
-
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent(), maxViewportOfNewPage);
|
|
3130
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, "launch", incognito, this.#proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), this.#userAgent(), maxViewportOfNewPage);
|
|
3044
3131
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
3045
3132
|
loginfo7(`##browser ${lsdBrowserContext.id()} ${this.#browserCreationMethod}ed`);
|
|
3046
3133
|
}
|
|
@@ -3092,7 +3179,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
3092
3179
|
const browserContext = await this.#browser.createBrowserContext(browserContextOptions);
|
|
3093
3180
|
const userAgent = options?.userAgent ? options.userAgent : "";
|
|
3094
3181
|
const { maxViewportOfNewPage = this.#options.maxViewportOfNewPage } = options ? options : {};
|
|
3095
|
-
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
3182
|
+
const lsdBrowserContext = new PuppeteerBrowserContext(this, browserContext, "new", true, proxy, this.#browserIdx, this.#nextBrowserContextIdx++, this.#maxPagesPerBrowserContext(), this.#maxPageFreeSeconds(), userAgent, maxViewportOfNewPage);
|
|
3096
3183
|
this.#lsdBrowserContexts.push(lsdBrowserContext);
|
|
3097
3184
|
loginfo7(`##browser ${lsdBrowserContext.id()} created`);
|
|
3098
3185
|
return lsdBrowserContext;
|
|
@@ -3102,9 +3189,7 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
3102
3189
|
clearInterval(this.#closeFreePagesIntervalId);
|
|
3103
3190
|
}
|
|
3104
3191
|
for (const lsdBrowserContext of this.#lsdBrowserContexts) {
|
|
3105
|
-
|
|
3106
|
-
await lsdBrowserContext.close();
|
|
3107
|
-
}
|
|
3192
|
+
await lsdBrowserContext.close();
|
|
3108
3193
|
}
|
|
3109
3194
|
await this.#browser.close();
|
|
3110
3195
|
return true;
|
|
@@ -3121,6 +3206,9 @@ var PuppeteerBrowser = class extends EventEmitter6 {
|
|
|
3121
3206
|
browserType() {
|
|
3122
3207
|
return this.#browserType;
|
|
3123
3208
|
}
|
|
3209
|
+
createTime() {
|
|
3210
|
+
return this.#createTime;
|
|
3211
|
+
}
|
|
3124
3212
|
doesMeetBrowserContextRequirements(browserContextRequirements) {
|
|
3125
3213
|
const { browserControllerTypes, browserTypes, browserHeadlesses } = browserContextRequirements;
|
|
3126
3214
|
return (browserControllerTypes.length === 0 || browserControllerTypes.includes(this.#browserControllerType)) && (browserTypes.length === 0 || browserTypes.includes(this.#browserType)) && (browserHeadlesses.length === 0 || browserHeadlesses.includes(this.#headless));
|
package/package.json
CHANGED