@crawlee/core 4.0.0-beta.99 → 4.0.0-rc.1

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.
Files changed (133) hide show
  1. package/README.md +1 -1
  2. package/configuration.d.ts +16 -47
  3. package/configuration.js +13 -25
  4. package/debug.js +4 -4
  5. package/errors.d.ts +28 -38
  6. package/errors.js +33 -47
  7. package/events/event_manager.d.ts +2 -2
  8. package/events/event_manager.js +7 -6
  9. package/events/index.d.ts +1 -0
  10. package/events/local_event_manager.d.ts +1 -8
  11. package/events/local_event_manager.js +13 -13
  12. package/events/system_info.d.ts +38 -0
  13. package/index.d.ts +2 -8
  14. package/index.js +4 -8
  15. package/internal.d.ts +8 -0
  16. package/internal.js +9 -0
  17. package/log.d.ts +10 -11
  18. package/log.js +52 -20
  19. package/memory-storage/memory-storage.d.ts +15 -18
  20. package/memory-storage/memory-storage.js +80 -58
  21. package/memory-storage/resource-clients/dataset.d.ts +1 -6
  22. package/memory-storage/resource-clients/dataset.js +23 -31
  23. package/memory-storage/resource-clients/key-value-store.d.ts +1 -10
  24. package/memory-storage/resource-clients/key-value-store.js +43 -67
  25. package/memory-storage/resource-clients/request-queue.d.ts +1 -42
  26. package/memory-storage/resource-clients/request-queue.js +109 -117
  27. package/owned_or_injected.d.ts +1 -3
  28. package/owned_or_injected.js +17 -17
  29. package/package.json +17 -20
  30. package/proxy_configuration.d.ts +21 -26
  31. package/proxy_configuration.js +35 -25
  32. package/recoverable_state.d.ts +104 -47
  33. package/recoverable_state.js +199 -74
  34. package/request.d.ts +20 -107
  35. package/request.js +78 -244
  36. package/serialization.js +17 -16
  37. package/service_locator.d.ts +22 -10
  38. package/service_locator.js +59 -48
  39. package/storages/batched_adds.d.ts +37 -0
  40. package/storages/batched_adds.js +73 -0
  41. package/storages/dataset.d.ts +13 -8
  42. package/storages/dataset.js +149 -40
  43. package/storages/index.d.ts +4 -4
  44. package/storages/index.js +2 -4
  45. package/storages/key_value_store.d.ts +16 -35
  46. package/storages/key_value_store.js +223 -110
  47. package/storages/key_value_store_codec.js +6 -11
  48. package/storages/request_dedup_cache.d.ts +1 -4
  49. package/storages/request_dedup_cache.js +15 -15
  50. package/storages/request_list.d.ts +9 -104
  51. package/storages/request_list.js +236 -233
  52. package/storages/request_loader.d.ts +49 -18
  53. package/storages/request_loader.js +36 -1
  54. package/storages/request_manager.d.ts +86 -0
  55. package/storages/request_manager_tandem.d.ts +14 -38
  56. package/storages/request_manager_tandem.js +67 -64
  57. package/storages/request_queue.d.ts +23 -50
  58. package/storages/request_queue.js +371 -226
  59. package/storages/storage_instance_manager.d.ts +2 -4
  60. package/storages/storage_instance_manager.js +21 -21
  61. package/storages/storage_stats.d.ts +1 -1
  62. package/storages/storage_stats.js +4 -4
  63. package/storages/transaction.d.ts +270 -0
  64. package/storages/transaction.js +296 -0
  65. package/storages/utils.d.ts +6 -3
  66. package/storages/utils.js +11 -2
  67. package/system-info/runtime.js +7 -7
  68. package/url.d.ts +9 -0
  69. package/url.js +11 -0
  70. package/validators.d.ts +23 -25
  71. package/validators.js +14 -25
  72. package/autoscaling/autoscaled_pool.d.ts +0 -213
  73. package/autoscaling/autoscaled_pool.js +0 -378
  74. package/autoscaling/client_load_signal.d.ts +0 -59
  75. package/autoscaling/client_load_signal.js +0 -73
  76. package/autoscaling/concurrency_system.d.ts +0 -283
  77. package/autoscaling/concurrency_system.js +0 -350
  78. package/autoscaling/cpu_load_signal.d.ts +0 -44
  79. package/autoscaling/cpu_load_signal.js +0 -46
  80. package/autoscaling/event_loop_load_signal.d.ts +0 -54
  81. package/autoscaling/event_loop_load_signal.js +0 -60
  82. package/autoscaling/index.d.ts +0 -9
  83. package/autoscaling/index.js +0 -9
  84. package/autoscaling/load_signal.d.ts +0 -99
  85. package/autoscaling/load_signal.js +0 -103
  86. package/autoscaling/memory_load_signal.d.ts +0 -56
  87. package/autoscaling/memory_load_signal.js +0 -106
  88. package/autoscaling/snapshotter.d.ts +0 -87
  89. package/autoscaling/snapshotter.js +0 -67
  90. package/autoscaling/system_status.d.ts +0 -161
  91. package/autoscaling/system_status.js +0 -139
  92. package/autoscaling/weighted_avg.d.ts +0 -5
  93. package/autoscaling/weighted_avg.js +0 -14
  94. package/cookie_utils.d.ts +0 -44
  95. package/cookie_utils.js +0 -122
  96. package/crawlers/context_pipeline.d.ts +0 -70
  97. package/crawlers/context_pipeline.js +0 -122
  98. package/crawlers/crawler_commons.d.ts +0 -257
  99. package/crawlers/crawler_commons.js +0 -107
  100. package/crawlers/error_snapshotter.d.ts +0 -59
  101. package/crawlers/error_snapshotter.js +0 -117
  102. package/crawlers/error_tracker.d.ts +0 -54
  103. package/crawlers/error_tracker.js +0 -308
  104. package/crawlers/index.d.ts +0 -5
  105. package/crawlers/index.js +0 -5
  106. package/crawlers/internals/types.d.ts +0 -7
  107. package/crawlers/statistics.d.ts +0 -209
  108. package/crawlers/statistics.js +0 -350
  109. package/enqueue_links/enqueue_links.d.ts +0 -264
  110. package/enqueue_links/enqueue_links.js +0 -271
  111. package/enqueue_links/index.d.ts +0 -2
  112. package/enqueue_links/index.js +0 -2
  113. package/enqueue_links/shared.d.ts +0 -83
  114. package/enqueue_links/shared.js +0 -221
  115. package/router.d.ts +0 -309
  116. package/router.js +0 -309
  117. package/session_pool/consts.d.ts +0 -3
  118. package/session_pool/consts.js +0 -3
  119. package/session_pool/errors.d.ts +0 -7
  120. package/session_pool/errors.js +0 -11
  121. package/session_pool/fingerprint.d.ts +0 -9
  122. package/session_pool/fingerprint.js +0 -30
  123. package/session_pool/index.d.ts +0 -4
  124. package/session_pool/index.js +0 -4
  125. package/session_pool/session.d.ts +0 -161
  126. package/session_pool/session.js +0 -218
  127. package/session_pool/session_pool.d.ts +0 -246
  128. package/session_pool/session_pool.js +0 -386
  129. package/storages/access_checking.d.ts +0 -12
  130. package/storages/access_checking.js +0 -17
  131. package/storages/sitemap_request_loader.d.ts +0 -249
  132. package/storages/sitemap_request_loader.js +0 -432
  133. /package/{crawlers/internals/types.js → events/system_info.js} +0 -0
@@ -4,7 +4,9 @@ import type { CrawleeLogger } from '../log.js';
4
4
  import type { IProxyConfiguration } from '../proxy_configuration.js';
5
5
  import type { Source } from '../request.js';
6
6
  import { Request } from '../request.js';
7
- import type { IRequestManager, RequestsLike } from './request_manager.js';
7
+ import type { JournalEntry } from './transaction.js';
8
+ import type { RequestLoaderStatus } from './request_loader.js';
9
+ import type { IRequestManager, PacingSignal, RequestsLike } from './request_manager.js';
8
10
  import type { RequestQueueStats } from './storage_stats.js';
9
11
  import type { IStorage, StorageIdentifier } from './storage_instance_manager.js';
10
12
  import type { StorageOpenOptions } from './utils.js';
@@ -43,29 +45,11 @@ import type { StorageOpenOptions } from './utils.js';
43
45
  * @category Sources
44
46
  */
45
47
  export declare class RequestQueue implements IStorage, IRequestManager {
48
+ #private;
46
49
  readonly id: string;
47
50
  readonly name?: string;
48
51
  readonly backend: RequestQueueBackend;
49
- private proxyConfiguration?;
50
52
  readonly log: CrawleeLogger;
51
- private requestCache;
52
- /**
53
- * Remembers the `requestId` of every request already submitted to the client — including background
54
- * batches that `requestCache` skips — so overlapping URL sets aren't re-submitted.
55
- * See {@link RequestDeduplicationCache} for why this is a separate, cheaper cache.
56
- */
57
- private requestSeenCache;
58
- private queuePausedForMigration;
59
- private inProgressRequestBatchCount;
60
- /**
61
- * The largest expected request-processing time (in seconds) seen so far via
62
- * {@link setExpectedRequestProcessingTimeSecs}. Used to ensure that value is only ever raised, never
63
- * lowered, before being forwarded to the storage backend.
64
- */
65
- private expectedRequestProcessingSecs;
66
- private httpClient?;
67
- private readonly events;
68
- private readonly statsTracker;
69
53
  /**
70
54
  * Backend-independent usage counters tracked for this request queue (write operations and
71
55
  * queue-head reads issued to the underlying storage backend). Counted per backend call.
@@ -102,6 +86,8 @@ export declare class RequestQueue implements IStorage, IRequestManager {
102
86
  * @param [options] Request queue operation options.
103
87
  */
104
88
  addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
89
+ /** @internal */
90
+ commitJournalEntries(entries: JournalEntry[]): Promise<void>;
105
91
  /**
106
92
  * Adds requests to the queue in batches of 25. This method will wait till all the requests are added
107
93
  * to the queue before resolving. You should prefer using `queue.addRequestsBatched()` or `crawler.addRequests()`
@@ -146,7 +132,7 @@ export declare class RequestQueue implements IStorage, IRequestManager {
146
132
  * Note that the `null` return value doesn't mean the queue processing finished,
147
133
  * it means there are currently no pending requests.
148
134
  * To check whether all requests in queue were finished,
149
- * use {@link RequestQueue.isFinished} instead.
135
+ * use {@link RequestQueue.checkReadiness} instead.
150
136
  *
151
137
  * @returns
152
138
  * Returns the request object or `null` if there are no more pending requests.
@@ -167,25 +153,21 @@ export declare class RequestQueue implements IStorage, IRequestManager {
167
153
  */
168
154
  reclaimRequest(request: Request, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo | null>;
169
155
  /**
170
- * Resolves to `true` if the next call to {@link RequestQueue.fetchNextRequest} would return
171
- * `null`, i.e. there are no pending requests to fetch right now. Otherwise it resolves to `false`.
172
- *
173
- * Note that even if the queue is empty, there might be some requests currently being processed
174
- * (fetched but not yet handled or reclaimed). An empty queue therefore does not mean crawling is
175
- * finished — those in-progress requests may still be reclaimed, and background tasks may still be
176
- * adding more requests. To check whether all activity in the queue has finished, use
177
- * {@link RequestQueue.isFinished}.
156
+ * A queue hands requests out as fast as they are asked for; pacing is a job for a manager wrapped around it,
157
+ * such as {@link ThrottlingRequestManager}.
158
+ * @inheritdoc
178
159
  */
179
- isEmpty(): Promise<boolean>;
160
+ recordPacingSignal(_signal: PacingSignal): boolean;
180
161
  /**
181
- * Resolves to `true` if all requests were already handled and there are no more left — including no
182
- * requests currently in progress (fetched but not yet handled or reclaimed, including requests
183
- * locked by other clients sharing the same queue) and no background add operations still in flight.
162
+ * Reports whether the queue has a request to hand over, is waiting on one, or is done.
163
+ *
164
+ * `waiting` means requests are in progress (fetched but not yet handled or reclaimed, possibly by another
165
+ * client sharing the queue) or a background add is still landing; neither has a clock, so no `readyAt`.
184
166
  *
185
- * Due to the nature of distributed storage used by the queue, the function may occasionally return
186
- * a false negative, but it shall never return a false positive.
167
+ * Due to the nature of distributed storage used by the queue, `finished` may occasionally arrive a probe or
168
+ * two late, but it is never reported early.
187
169
  */
188
- isFinished(): Promise<boolean>;
170
+ checkReadiness(): Promise<RequestLoaderStatus>;
189
171
  /**
190
172
  * Tells the queue how long a consumer expects to hold a fetched request before marking it handled
191
173
  * or reclaiming it (typically the request-handler timeout plus padding), so that a storage backend
@@ -198,9 +180,11 @@ export declare class RequestQueue implements IStorage, IRequestManager {
198
180
  */
199
181
  setExpectedRequestProcessingTimeSecs(secs: number): Promise<void>;
200
182
  /**
201
- * Caches information about request to beware of unneeded addRequest() calls.
183
+ * @inheritdoc
184
+ * Unlike {@link RequestQueue.setExpectedRequestProcessingTimeSecs}, which sizes every future lock,
185
+ * this only touches the one request it is given.
202
186
  */
203
- private cacheRequest;
187
+ extendRequestProcessingTimeSecs(request: Request, secs: number): Promise<boolean>;
204
188
  /**
205
189
  * Removes the queue either from the Apify Cloud storage or from the local database,
206
190
  * depending on the mode of operation.
@@ -246,18 +230,6 @@ export declare class RequestQueue implements IStorage, IRequestManager {
246
230
  * @throws If the underlying storage no longer exists (e.g. it was deleted externally).
247
231
  */
248
232
  getInfo(): Promise<RequestQueueInfo>;
249
- /**
250
- * Fetches URLs from requestsFromUrl and returns them in format of list of requests
251
- */
252
- private fetchRequestsFromUrl;
253
- /**
254
- * Adds all fetched requests from a URL from a remote resource.
255
- */
256
- private addFetchedRequests;
257
- /**
258
- * @internal wraps public utility for mocking purposes
259
- */
260
- private _downloadListOfUrls;
261
233
  /**
262
234
  * Opens a request queue and returns a promise resolving to an instance
263
235
  * of the {@link RequestQueue} class.
@@ -277,6 +249,7 @@ export declare class RequestQueue implements IStorage, IRequestManager {
277
249
  */
278
250
  static open(identifier?: string | StorageIdentifier | null, options?: StorageOpenOptions): Promise<RequestQueue>;
279
251
  }
252
+ /** @internal */
280
253
  export interface RequestQueueOptions {
281
254
  /** Resolved metadata for the request queue, as returned by the backend's `getMetadata()`. */
282
255
  metadata: RequestQueueInfo;