@crawlee/core 4.0.0-beta.6 → 4.0.0-beta.60
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/README.md +9 -5
- package/autoscaling/autoscaled_pool.d.ts +3 -5
- package/autoscaling/autoscaled_pool.d.ts.map +1 -1
- package/autoscaling/autoscaled_pool.js +3 -9
- package/autoscaling/autoscaled_pool.js.map +1 -1
- package/autoscaling/snapshotter.d.ts +3 -13
- package/autoscaling/snapshotter.d.ts.map +1 -1
- package/autoscaling/snapshotter.js +18 -29
- package/autoscaling/snapshotter.js.map +1 -1
- package/autoscaling/system_status.d.ts +0 -3
- package/autoscaling/system_status.d.ts.map +1 -1
- package/autoscaling/system_status.js +2 -3
- package/autoscaling/system_status.js.map +1 -1
- package/configuration.d.ts +85 -227
- package/configuration.d.ts.map +1 -1
- package/configuration.js +159 -223
- package/configuration.js.map +1 -1
- package/cookie_utils.d.ts +4 -2
- package/cookie_utils.d.ts.map +1 -1
- package/cookie_utils.js +18 -12
- package/cookie_utils.js.map +1 -1
- package/crawlers/context_pipeline.d.ts +71 -0
- package/crawlers/context_pipeline.d.ts.map +1 -0
- package/crawlers/context_pipeline.js +123 -0
- package/crawlers/context_pipeline.js.map +1 -0
- package/crawlers/crawler_commons.d.ts +19 -28
- package/crawlers/crawler_commons.d.ts.map +1 -1
- package/crawlers/crawler_commons.js +12 -20
- package/crawlers/crawler_commons.js.map +1 -1
- package/crawlers/crawler_utils.d.ts +2 -2
- package/crawlers/crawler_utils.d.ts.map +1 -1
- package/crawlers/crawler_utils.js +1 -1
- package/crawlers/crawler_utils.js.map +1 -1
- package/crawlers/error_snapshotter.d.ts +3 -2
- package/crawlers/error_snapshotter.d.ts.map +1 -1
- package/crawlers/error_snapshotter.js +2 -2
- package/crawlers/error_snapshotter.js.map +1 -1
- package/crawlers/error_tracker.d.ts +2 -1
- package/crawlers/error_tracker.d.ts.map +1 -1
- package/crawlers/error_tracker.js.map +1 -1
- package/crawlers/index.d.ts +1 -1
- package/crawlers/index.d.ts.map +1 -1
- package/crawlers/index.js +1 -1
- package/crawlers/index.js.map +1 -1
- package/crawlers/internals/types.d.ts +8 -0
- package/crawlers/internals/types.d.ts.map +1 -0
- package/crawlers/internals/types.js +2 -0
- package/crawlers/internals/types.js.map +1 -0
- package/crawlers/statistics.d.ts +15 -15
- package/crawlers/statistics.d.ts.map +1 -1
- package/crawlers/statistics.js +21 -18
- package/crawlers/statistics.js.map +1 -1
- package/enqueue_links/enqueue_links.d.ts +32 -18
- package/enqueue_links/enqueue_links.d.ts.map +1 -1
- package/enqueue_links/enqueue_links.js +45 -24
- package/enqueue_links/enqueue_links.js.map +1 -1
- package/enqueue_links/shared.d.ts +25 -8
- package/enqueue_links/shared.d.ts.map +1 -1
- package/enqueue_links/shared.js +69 -37
- package/enqueue_links/shared.js.map +1 -1
- package/errors.d.ts +33 -3
- package/errors.d.ts.map +1 -1
- package/errors.js +48 -4
- package/errors.js.map +1 -1
- package/events/event_manager.d.ts +8 -5
- package/events/event_manager.d.ts.map +1 -1
- package/events/event_manager.js +7 -9
- package/events/event_manager.js.map +1 -1
- package/events/local_event_manager.d.ts +14 -4
- package/events/local_event_manager.d.ts.map +1 -1
- package/events/local_event_manager.js +33 -39
- package/events/local_event_manager.js.map +1 -1
- package/index.d.ts +3 -2
- package/index.d.ts.map +1 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/log.d.ts +82 -2
- package/log.d.ts.map +1 -1
- package/log.js +102 -0
- package/log.js.map +1 -1
- package/package.json +9 -10
- package/proxy_configuration.d.ts +14 -148
- package/proxy_configuration.d.ts.map +1 -1
- package/proxy_configuration.js +19 -167
- package/proxy_configuration.js.map +1 -1
- package/recoverable_state.d.ts +121 -0
- package/recoverable_state.d.ts.map +1 -0
- package/recoverable_state.js +142 -0
- package/recoverable_state.js.map +1 -0
- package/request.d.ts +74 -10
- package/request.d.ts.map +1 -1
- package/request.js +85 -23
- package/request.js.map +1 -1
- package/router.d.ts.map +1 -1
- package/router.js.map +1 -1
- package/serialization.js +1 -1
- package/serialization.js.map +1 -1
- package/service_locator.d.ts +157 -0
- package/service_locator.d.ts.map +1 -0
- package/service_locator.js +234 -0
- package/service_locator.js.map +1 -0
- package/session_pool/index.d.ts +0 -1
- package/session_pool/index.d.ts.map +1 -1
- package/session_pool/index.js +0 -1
- package/session_pool/index.js.map +1 -1
- package/session_pool/session.d.ts +26 -72
- package/session_pool/session.d.ts.map +1 -1
- package/session_pool/session.js +36 -98
- package/session_pool/session.js.map +1 -1
- package/session_pool/session_pool.d.ts +65 -71
- package/session_pool/session_pool.d.ts.map +1 -1
- package/session_pool/session_pool.js +102 -95
- package/session_pool/session_pool.js.map +1 -1
- package/storages/dataset.d.ts +64 -19
- package/storages/dataset.d.ts.map +1 -1
- package/storages/dataset.js +92 -25
- package/storages/dataset.js.map +1 -1
- package/storages/index.d.ts +3 -1
- package/storages/index.d.ts.map +1 -1
- package/storages/index.js +3 -1
- package/storages/index.js.map +1 -1
- package/storages/key_value_store.d.ts +80 -10
- package/storages/key_value_store.d.ts.map +1 -1
- package/storages/key_value_store.js +110 -26
- package/storages/key_value_store.js.map +1 -1
- package/storages/request_list.d.ts +9 -9
- package/storages/request_list.d.ts.map +1 -1
- package/storages/request_list.js +13 -8
- package/storages/request_list.js.map +1 -1
- package/storages/request_list_adapter.d.ts +58 -0
- package/storages/request_list_adapter.d.ts.map +1 -0
- package/storages/request_list_adapter.js +81 -0
- package/storages/request_list_adapter.js.map +1 -0
- package/storages/request_manager_tandem.d.ts +68 -0
- package/storages/request_manager_tandem.d.ts.map +1 -0
- package/storages/request_manager_tandem.js +124 -0
- package/storages/request_manager_tandem.js.map +1 -0
- package/storages/request_provider.d.ts +87 -22
- package/storages/request_provider.d.ts.map +1 -1
- package/storages/request_provider.js +126 -76
- package/storages/request_provider.js.map +1 -1
- package/storages/request_queue.d.ts +1 -3
- package/storages/request_queue.d.ts.map +1 -1
- package/storages/request_queue.js +2 -4
- package/storages/request_queue.js.map +1 -1
- package/storages/request_queue_v2.d.ts +3 -3
- package/storages/request_queue_v2.d.ts.map +1 -1
- package/storages/request_queue_v2.js +4 -5
- package/storages/request_queue_v2.js.map +1 -1
- package/storages/sitemap_request_list.d.ts +5 -5
- package/storages/sitemap_request_list.d.ts.map +1 -1
- package/storages/sitemap_request_list.js +10 -7
- package/storages/sitemap_request_list.js.map +1 -1
- package/storages/storage_instance_manager.d.ts +91 -0
- package/storages/storage_instance_manager.d.ts.map +1 -0
- package/storages/storage_instance_manager.js +236 -0
- package/storages/storage_instance_manager.js.map +1 -0
- package/storages/utils.d.ts +25 -1
- package/storages/utils.d.ts.map +1 -1
- package/storages/utils.js +6 -5
- package/storages/utils.js.map +1 -1
- package/typedefs.d.ts +1 -1
- package/typedefs.d.ts.map +1 -1
- package/validators.d.ts +4 -0
- package/validators.d.ts.map +1 -1
- package/validators.js +4 -0
- package/validators.js.map +1 -1
- package/crawlers/crawler_extension.d.ts +0 -12
- package/crawlers/crawler_extension.d.ts.map +0 -1
- package/crawlers/crawler_extension.js +0 -14
- package/crawlers/crawler_extension.js.map +0 -1
- package/http_clients/base-http-client.d.ts +0 -134
- package/http_clients/base-http-client.d.ts.map +0 -1
- package/http_clients/base-http-client.js +0 -33
- package/http_clients/base-http-client.js.map +0 -1
- package/http_clients/form-data-like.d.ts +0 -67
- package/http_clients/form-data-like.d.ts.map +0 -1
- package/http_clients/form-data-like.js +0 -5
- package/http_clients/form-data-like.js.map +0 -1
- package/http_clients/got-scraping-http-client.d.ts +0 -15
- package/http_clients/got-scraping-http-client.d.ts.map +0 -1
- package/http_clients/got-scraping-http-client.js +0 -69
- package/http_clients/got-scraping-http-client.js.map +0 -1
- package/http_clients/index.d.ts +0 -3
- package/http_clients/index.d.ts.map +0 -1
- package/http_clients/index.js +0 -3
- package/http_clients/index.js.map +0 -1
- package/session_pool/events.d.ts +0 -3
- package/session_pool/events.d.ts.map +0 -1
- package/session_pool/events.js +0 -3
- package/session_pool/events.js.map +0 -1
- package/storages/storage_manager.d.ts +0 -58
- package/storages/storage_manager.d.ts.map +0 -1
- package/storages/storage_manager.js +0 -105
- package/storages/storage_manager.js.map +0 -1
- package/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Dictionary } from '@crawlee/types';
|
|
2
|
+
import type { Request, Source } from '../request.js';
|
|
3
|
+
import type { IRequestList } from './request_list.js';
|
|
4
|
+
import type { AddRequestsBatchedOptions, AddRequestsBatchedResult, IRequestManager, RequestQueueOperationInfo, RequestQueueOperationOptions, RequestsLike } from './request_provider.js';
|
|
5
|
+
/**
|
|
6
|
+
* A request manager that combines a RequestList and a RequestQueue.
|
|
7
|
+
* It first reads requests from the RequestList and then, when needed,
|
|
8
|
+
* transfers them in batches to the RequestQueue.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RequestManagerTandem implements IRequestManager {
|
|
11
|
+
private log;
|
|
12
|
+
private requestList;
|
|
13
|
+
private requestQueue;
|
|
14
|
+
constructor(requestList: IRequestList, requestQueue: IRequestManager);
|
|
15
|
+
/**
|
|
16
|
+
* Transfers a batch of requests from the RequestList to the RequestQueue.
|
|
17
|
+
* Handles both successful transfers and failures appropriately.
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
private transferNextBatchToQueue;
|
|
21
|
+
/**
|
|
22
|
+
* Fetches the next request from the RequestQueue. If the queue is empty and the RequestList
|
|
23
|
+
* is not finished, it will transfer a batch of requests from the list to the queue first.
|
|
24
|
+
* @inheritdoc
|
|
25
|
+
*/
|
|
26
|
+
fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
27
|
+
/**
|
|
28
|
+
* @inheritdoc
|
|
29
|
+
*/
|
|
30
|
+
isFinished(): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* @inheritdoc
|
|
33
|
+
*/
|
|
34
|
+
isEmpty(): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* @inheritdoc
|
|
37
|
+
*/
|
|
38
|
+
handledCount(): Promise<number>;
|
|
39
|
+
/**
|
|
40
|
+
* @inheritdoc
|
|
41
|
+
*/
|
|
42
|
+
getTotalCount(): number;
|
|
43
|
+
/**
|
|
44
|
+
* @inheritdoc
|
|
45
|
+
*/
|
|
46
|
+
getPendingCount(): number;
|
|
47
|
+
/**
|
|
48
|
+
* @inheritdoc
|
|
49
|
+
*/
|
|
50
|
+
[Symbol.asyncIterator](): AsyncGenerator<Request<Dictionary>, void, unknown>;
|
|
51
|
+
/**
|
|
52
|
+
* @inheritdoc
|
|
53
|
+
*/
|
|
54
|
+
markRequestHandled(request: Request): Promise<RequestQueueOperationInfo | void | null>;
|
|
55
|
+
/**
|
|
56
|
+
* @inheritdoc
|
|
57
|
+
*/
|
|
58
|
+
reclaimRequest(request: Request, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo | null>;
|
|
59
|
+
/**
|
|
60
|
+
* @inheritdoc
|
|
61
|
+
*/
|
|
62
|
+
addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
|
|
63
|
+
/**
|
|
64
|
+
* @inheritdoc
|
|
65
|
+
*/
|
|
66
|
+
addRequestsBatched(requests: RequestsLike, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=request_manager_tandem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request_manager_tandem.d.ts","sourceRoot":"","sources":["../../src/storages/request_manager_tandem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EACR,yBAAyB,EACzB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACf,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IACxD,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,YAAY,CAAkB;gBAE1B,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe;IAMpE;;;;OAIG;YACW,wBAAwB;IAuBtC;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAevF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAKpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC;IAQ7B;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC;IAI5F;;OAEG;IACG,cAAc,CAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,4BAA4B,GACvC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAI5C;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIjH;;OAEG;IACG,kBAAkB,CACpB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,wBAAwB,CAAC;CAGvC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { serviceLocator } from '../service_locator.js';
|
|
2
|
+
/**
|
|
3
|
+
* A request manager that combines a RequestList and a RequestQueue.
|
|
4
|
+
* It first reads requests from the RequestList and then, when needed,
|
|
5
|
+
* transfers them in batches to the RequestQueue.
|
|
6
|
+
*/
|
|
7
|
+
export class RequestManagerTandem {
|
|
8
|
+
log;
|
|
9
|
+
requestList;
|
|
10
|
+
requestQueue;
|
|
11
|
+
constructor(requestList, requestQueue) {
|
|
12
|
+
this.log = serviceLocator.getLogger().child({ prefix: 'RequestManagerTandem' });
|
|
13
|
+
this.requestList = requestList;
|
|
14
|
+
this.requestQueue = requestQueue;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Transfers a batch of requests from the RequestList to the RequestQueue.
|
|
18
|
+
* Handles both successful transfers and failures appropriately.
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
async transferNextBatchToQueue() {
|
|
22
|
+
const request = await this.requestList.fetchNextRequest();
|
|
23
|
+
if (request === null) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
await this.requestQueue.addRequest(request, { forefront: true });
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// If requestQueue.addRequest() fails here then we must reclaim it back to
|
|
31
|
+
// the RequestList because probably it's not yet in the queue!
|
|
32
|
+
this.log.error('Adding of request from the RequestList to the RequestQueue failed, reclaiming request back to the list.', { request });
|
|
33
|
+
await this.requestList.reclaimRequest(request);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await this.requestList.markRequestHandled(request);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Fetches the next request from the RequestQueue. If the queue is empty and the RequestList
|
|
40
|
+
* is not finished, it will transfer a batch of requests from the list to the queue first.
|
|
41
|
+
* @inheritdoc
|
|
42
|
+
*/
|
|
43
|
+
async fetchNextRequest() {
|
|
44
|
+
// First, try to transfer a request from the requestList
|
|
45
|
+
const [listEmpty, listFinished] = await Promise.all([
|
|
46
|
+
this.requestList.isEmpty(),
|
|
47
|
+
this.requestList.isFinished(),
|
|
48
|
+
]);
|
|
49
|
+
if (!listEmpty && !listFinished) {
|
|
50
|
+
await this.transferNextBatchToQueue();
|
|
51
|
+
}
|
|
52
|
+
// Try to fetch from queue after potential transfer
|
|
53
|
+
return this.requestQueue.fetchNextRequest();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* @inheritdoc
|
|
57
|
+
*/
|
|
58
|
+
async isFinished() {
|
|
59
|
+
const storagesFinished = await Promise.all([this.requestList.isFinished(), this.requestQueue.isFinished()]);
|
|
60
|
+
return storagesFinished.every(Boolean);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @inheritdoc
|
|
64
|
+
*/
|
|
65
|
+
async isEmpty() {
|
|
66
|
+
const storagesEmpty = await Promise.all([this.requestList.isEmpty(), this.requestQueue.isEmpty()]);
|
|
67
|
+
return storagesEmpty.every(Boolean);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @inheritdoc
|
|
71
|
+
*/
|
|
72
|
+
async handledCount() {
|
|
73
|
+
// Since one of the stores needs to have priority when both are present, we query the request queue - the request list will first be dumped into the queue and then left empty.
|
|
74
|
+
return await this.requestQueue.handledCount();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* @inheritdoc
|
|
78
|
+
*/
|
|
79
|
+
getTotalCount() {
|
|
80
|
+
return this.requestQueue.getTotalCount();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @inheritdoc
|
|
84
|
+
*/
|
|
85
|
+
getPendingCount() {
|
|
86
|
+
return this.requestQueue.getPendingCount() + this.requestList.length() - this.requestList.handledCount();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @inheritdoc
|
|
90
|
+
*/
|
|
91
|
+
async *[Symbol.asyncIterator]() {
|
|
92
|
+
while (true) {
|
|
93
|
+
const req = await this.fetchNextRequest();
|
|
94
|
+
if (!req)
|
|
95
|
+
break;
|
|
96
|
+
yield req;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @inheritdoc
|
|
101
|
+
*/
|
|
102
|
+
async markRequestHandled(request) {
|
|
103
|
+
return this.requestQueue.markRequestHandled(request);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* @inheritdoc
|
|
107
|
+
*/
|
|
108
|
+
async reclaimRequest(request, options) {
|
|
109
|
+
return await this.requestQueue.reclaimRequest(request, options);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @inheritdoc
|
|
113
|
+
*/
|
|
114
|
+
async addRequest(requestLike, options) {
|
|
115
|
+
return await this.requestQueue.addRequest(requestLike, options);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* @inheritdoc
|
|
119
|
+
*/
|
|
120
|
+
async addRequestsBatched(requests, options) {
|
|
121
|
+
return await this.requestQueue.addRequestsBatched(requests, options);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=request_manager_tandem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request_manager_tandem.js","sourceRoot":"","sources":["../../src/storages/request_manager_tandem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,81 @@
|
|
|
1
|
-
import type { BatchAddRequestsResult, Dictionary, ProcessedRequest, QueueOperationInfo, RequestQueueClient, RequestQueueInfo
|
|
1
|
+
import type { BaseHttpClient, BatchAddRequestsResult, Dictionary, ProcessedRequest, QueueOperationInfo, RequestQueueClient, RequestQueueInfo } from '@crawlee/types';
|
|
2
|
+
import type { ReadonlyDeep } from 'type-fest';
|
|
2
3
|
import { ListDictionary, LruCache } from '@apify/datastructures';
|
|
3
|
-
import type { Log } from '@apify/log';
|
|
4
4
|
import { Configuration } from '../configuration.js';
|
|
5
|
+
import type { EventManager } from '../events/event_manager.js';
|
|
6
|
+
import type { CrawleeLogger } from '../log.js';
|
|
5
7
|
import type { ProxyConfiguration } from '../proxy_configuration.js';
|
|
6
8
|
import type { InternalSource, RequestOptions, Source } from '../request.js';
|
|
7
9
|
import { Request } from '../request.js';
|
|
8
|
-
import type { IStorage,
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
import type { IStorage, StorageIdentifier } from './storage_instance_manager.js';
|
|
11
|
+
import type { StorageOpenOptions } from './utils.js';
|
|
12
|
+
export type RequestsLike = AsyncIterable<Source | string> | Iterable<Source | string> | (Source | string)[];
|
|
13
|
+
/**
|
|
14
|
+
* Represents a provider of requests/URLs to crawl.
|
|
15
|
+
*/
|
|
16
|
+
export interface IRequestManager {
|
|
17
|
+
/**
|
|
18
|
+
* Returns `true` if all requests were already handled and there are no more left.
|
|
19
|
+
*/
|
|
20
|
+
isFinished(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Resolves to `true` if the next call to {@link IRequestManager.fetchNextRequest} function
|
|
23
|
+
* would return `null`, otherwise it resolves to `false`.
|
|
24
|
+
* Note that even if the provider is empty, there might be some pending requests currently being processed.
|
|
25
|
+
*/
|
|
26
|
+
isEmpty(): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns number of handled requests.
|
|
29
|
+
*/
|
|
30
|
+
handledCount(): Promise<number>;
|
|
31
|
+
/**
|
|
32
|
+
* Get the total number of requests known to the request manager.
|
|
33
|
+
*/
|
|
34
|
+
getTotalCount(): number;
|
|
35
|
+
/**
|
|
36
|
+
* Get an offline approximation of the number of pending requests.
|
|
37
|
+
*/
|
|
38
|
+
getPendingCount(): number;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the next {@link Request} to process.
|
|
41
|
+
*
|
|
42
|
+
* The function's `Promise` resolves to `null` if there are no more
|
|
43
|
+
* requests to process.
|
|
44
|
+
*/
|
|
45
|
+
fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Can be used to iterate over the `RequestManager` instance in a `for await .. of` loop.
|
|
48
|
+
* Provides an alternative for the repeated use of `fetchNextRequest`.
|
|
49
|
+
*/
|
|
50
|
+
[Symbol.asyncIterator](): AsyncGenerator<Request>;
|
|
51
|
+
/**
|
|
52
|
+
* Marks request as handled after successful processing.
|
|
53
|
+
*/
|
|
54
|
+
markRequestHandled(request: Request): Promise<RequestQueueOperationInfo | void | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Reclaims request to the provider if its processing failed.
|
|
57
|
+
* The request will become available in the next `fetchNextRequest()`.
|
|
58
|
+
*/
|
|
59
|
+
reclaimRequest(request: Request, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo | null>;
|
|
60
|
+
addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
|
|
61
|
+
addRequestsBatched(requests: RequestsLike, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
62
|
+
}
|
|
63
|
+
export declare abstract class RequestProvider implements IStorage, IRequestManager {
|
|
64
|
+
protected readonly config: Configuration;
|
|
11
65
|
id: string;
|
|
12
66
|
name?: string;
|
|
13
67
|
timeoutSecs: number;
|
|
14
68
|
clientKey: string;
|
|
15
69
|
client: RequestQueueClient;
|
|
16
70
|
protected proxyConfiguration?: ProxyConfiguration;
|
|
17
|
-
log:
|
|
71
|
+
log: CrawleeLogger;
|
|
18
72
|
internalTimeoutMillis: number;
|
|
19
73
|
requestLockSecs: number;
|
|
20
74
|
assumedTotalCount: number;
|
|
21
75
|
assumedHandledCount: number;
|
|
22
76
|
private initialCount;
|
|
77
|
+
private initialHandledCount;
|
|
78
|
+
private isInitialized;
|
|
23
79
|
protected queueHeadIds: ListDictionary<string>;
|
|
24
80
|
protected requestCache: LruCache<RequestLruItem>;
|
|
25
81
|
protected recentlyHandledRequestsCache: LruCache<boolean>;
|
|
@@ -27,6 +83,8 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
27
83
|
protected lastActivity: Date;
|
|
28
84
|
protected isFinishedCalledWhileHeadWasNotEmpty: number;
|
|
29
85
|
protected inProgressRequestBatchCount: number;
|
|
86
|
+
protected httpClient?: BaseHttpClient;
|
|
87
|
+
protected readonly events: EventManager;
|
|
30
88
|
constructor(options: InternalRequestProviderOptions, config?: Configuration);
|
|
31
89
|
/**
|
|
32
90
|
* Returns an offline approximation of the total number of requests in the queue (i.e. pending + handled).
|
|
@@ -34,6 +92,12 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
34
92
|
* Survives restarts and actor migrations.
|
|
35
93
|
*/
|
|
36
94
|
getTotalCount(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Returns an offline approximation of the total number of pending requests in the queue.
|
|
97
|
+
*
|
|
98
|
+
* Survives restarts and Actor migrations.
|
|
99
|
+
*/
|
|
100
|
+
getPendingCount(): number;
|
|
37
101
|
/**
|
|
38
102
|
* Adds a request to the queue.
|
|
39
103
|
*
|
|
@@ -63,7 +127,7 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
63
127
|
* Note that the function sets the `uniqueKey` and `id` fields to the passed requests if missing.
|
|
64
128
|
* @param [options] Request queue operation options.
|
|
65
129
|
*/
|
|
66
|
-
addRequests(requestsLike:
|
|
130
|
+
addRequests(requestsLike: RequestsLike, options?: RequestQueueOperationOptions): Promise<BatchAddRequestsResult>;
|
|
67
131
|
/**
|
|
68
132
|
* Adds requests to the queue in batches. By default, it will resolve after the initial batch is added, and continue
|
|
69
133
|
* adding the rest in the background. You can configure the batch size via `batchSize` option and the sleep time in between
|
|
@@ -73,7 +137,7 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
73
137
|
* @param requests The requests to add
|
|
74
138
|
* @param options Options for the request queue
|
|
75
139
|
*/
|
|
76
|
-
addRequestsBatched(requests:
|
|
140
|
+
addRequestsBatched(requests: ReadonlyDeep<RequestsLike>, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
77
141
|
/**
|
|
78
142
|
* Gets the request from the queue specified by ID.
|
|
79
143
|
*
|
|
@@ -98,7 +162,7 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
98
162
|
* @returns
|
|
99
163
|
* Returns the request object or `null` if there are no more pending requests.
|
|
100
164
|
*/
|
|
101
|
-
abstract fetchNextRequest<T extends Dictionary = Dictionary>(
|
|
165
|
+
abstract fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
102
166
|
/**
|
|
103
167
|
* Marks a request that was previously returned by the
|
|
104
168
|
* {@link RequestQueue.fetchNextRequest}
|
|
@@ -142,6 +206,10 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
142
206
|
* depending on the mode of operation.
|
|
143
207
|
*/
|
|
144
208
|
drop(): Promise<void>;
|
|
209
|
+
/**
|
|
210
|
+
* @inheritdoc
|
|
211
|
+
*/
|
|
212
|
+
[Symbol.asyncIterator](): AsyncGenerator<Request<Dictionary>, void, unknown>;
|
|
145
213
|
/**
|
|
146
214
|
* Returns the number of handled requests.
|
|
147
215
|
*
|
|
@@ -150,23 +218,17 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
150
218
|
* ```javascript
|
|
151
219
|
* const { handledRequestCount } = await queue.getInfo();
|
|
152
220
|
* ```
|
|
221
|
+
* @inheritdoc
|
|
153
222
|
*/
|
|
154
223
|
handledCount(): Promise<number>;
|
|
155
224
|
/**
|
|
156
225
|
* Returns an object containing general information about the request queue.
|
|
157
226
|
*
|
|
158
|
-
* The function returns the same object as the Apify API Client's
|
|
159
|
-
* [getQueue](https://docs.apify.com/api/apify-client-js/latest#ApifyClient-requestQueues)
|
|
160
|
-
* function, which in turn calls the
|
|
161
|
-
* [Get request queue](https://apify.com/docs/api/v2#/reference/request-queues/queue/get-request-queue)
|
|
162
|
-
* API endpoint.
|
|
163
|
-
*
|
|
164
227
|
* **Example:**
|
|
165
228
|
* ```
|
|
166
229
|
* {
|
|
167
230
|
* id: "WkzbQMuFYuamGv3YF",
|
|
168
231
|
* name: "my-queue",
|
|
169
|
-
* userId: "wRsJZtadYvn4mBZmm",
|
|
170
232
|
* createdAt: new Date("2015-12-12T07:34:14.202Z"),
|
|
171
233
|
* modifiedAt: new Date("2015-12-13T08:36:13.202Z"),
|
|
172
234
|
* accessedAt: new Date("2015-12-14T08:36:13.202Z"),
|
|
@@ -175,8 +237,10 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
175
237
|
* pendingRequestCount: 20,
|
|
176
238
|
* }
|
|
177
239
|
* ```
|
|
240
|
+
*
|
|
241
|
+
* @throws If the underlying storage no longer exists (e.g. it was deleted externally).
|
|
178
242
|
*/
|
|
179
|
-
getInfo(): Promise<RequestQueueInfo
|
|
243
|
+
getInfo(): Promise<RequestQueueInfo>;
|
|
180
244
|
/**
|
|
181
245
|
* Fetches URLs from requestsFromUrl and returns them in format of list of requests
|
|
182
246
|
*/
|
|
@@ -200,12 +264,13 @@ export declare abstract class RequestProvider implements IStorage {
|
|
|
200
264
|
*
|
|
201
265
|
* For more details and code examples, see the {@link RequestQueue} class.
|
|
202
266
|
*
|
|
203
|
-
* @param [
|
|
204
|
-
* ID or name of the request queue to be opened. If
|
|
205
|
-
*
|
|
267
|
+
* @param [identifier]
|
|
268
|
+
* ID or name of the request queue to be opened. If a string is provided, it will first be
|
|
269
|
+
* looked up as an ID; if no such storage exists, it will be treated as a name.
|
|
270
|
+
* If `null` or `undefined`, the function returns the default request queue associated with the crawler run.
|
|
206
271
|
* @param [options] Open Request Queue options.
|
|
207
272
|
*/
|
|
208
|
-
static open(
|
|
273
|
+
static open(identifier?: string | StorageIdentifier | null, options?: StorageOpenOptions): Promise<RequestProvider>;
|
|
209
274
|
}
|
|
210
275
|
interface RequestLruItem {
|
|
211
276
|
uniqueKey: string;
|
|
@@ -218,7 +283,7 @@ interface RequestLruItem {
|
|
|
218
283
|
export interface RequestProviderOptions {
|
|
219
284
|
id: string;
|
|
220
285
|
name?: string;
|
|
221
|
-
client:
|
|
286
|
+
client: RequestQueueClient;
|
|
222
287
|
/**
|
|
223
288
|
* Used to pass the proxy configuration for the `requestsFromUrl` objects.
|
|
224
289
|
* Takes advantage of the internal address rotation and authentication process.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request_provider.d.ts","sourceRoot":"","sources":["../../src/storages/request_provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"request_provider.d.ts","sourceRoot":"","sources":["../../src/storages/request_provider.ts"],"names":[],"mappings":"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"}
|