@crawlee/core 3.0.0-alpha.3 → 3.0.0-alpha.6

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 (174) hide show
  1. package/{dist/README.md → README.md} +0 -0
  2. package/{dist/autoscaling → autoscaling}/autoscaled_pool.d.ts +10 -0
  3. package/autoscaling/autoscaled_pool.d.ts.map +1 -0
  4. package/{dist/autoscaling → autoscaling}/autoscaled_pool.js +50 -1
  5. package/autoscaling/autoscaled_pool.js.map +1 -0
  6. package/{dist/autoscaling → autoscaling}/index.d.ts +0 -0
  7. package/{dist/autoscaling → autoscaling}/index.d.ts.map +0 -0
  8. package/{dist/autoscaling → autoscaling}/index.js +0 -0
  9. package/{dist/autoscaling → autoscaling}/index.js.map +0 -0
  10. package/{dist/autoscaling → autoscaling}/snapshotter.d.ts +0 -0
  11. package/{dist/autoscaling → autoscaling}/snapshotter.d.ts.map +0 -0
  12. package/{dist/autoscaling → autoscaling}/snapshotter.js +0 -0
  13. package/{dist/autoscaling → autoscaling}/snapshotter.js.map +0 -0
  14. package/{dist/autoscaling → autoscaling}/system_status.d.ts +0 -0
  15. package/{dist/autoscaling → autoscaling}/system_status.d.ts.map +0 -0
  16. package/{dist/autoscaling → autoscaling}/system_status.js +0 -0
  17. package/{dist/autoscaling → autoscaling}/system_status.js.map +0 -0
  18. package/{dist/cache_container.d.ts → cache_container.d.ts} +0 -0
  19. package/{dist/cache_container.d.ts.map → cache_container.d.ts.map} +0 -0
  20. package/{dist/cache_container.js → cache_container.js} +0 -0
  21. package/{dist/cache_container.js.map → cache_container.js.map} +0 -0
  22. package/{dist/configuration.d.ts → configuration.d.ts} +0 -0
  23. package/{dist/configuration.d.ts.map → configuration.d.ts.map} +0 -0
  24. package/{dist/configuration.js → configuration.js} +0 -0
  25. package/{dist/configuration.js.map → configuration.js.map} +0 -0
  26. package/{dist/constants.d.ts → constants.d.ts} +0 -0
  27. package/{dist/constants.d.ts.map → constants.d.ts.map} +0 -0
  28. package/{dist/constants.js → constants.js} +0 -0
  29. package/{dist/constants.js.map → constants.js.map} +0 -0
  30. package/{dist/crawlers → crawlers}/crawler_commons.d.ts +2 -0
  31. package/crawlers/crawler_commons.d.ts.map +1 -0
  32. package/{dist/crawlers → crawlers}/crawler_commons.js +0 -0
  33. package/{dist/crawlers → crawlers}/crawler_commons.js.map +0 -0
  34. package/{dist/crawlers → crawlers}/crawler_extension.d.ts +0 -0
  35. package/{dist/crawlers → crawlers}/crawler_extension.d.ts.map +0 -0
  36. package/{dist/crawlers → crawlers}/crawler_extension.js +0 -0
  37. package/{dist/crawlers → crawlers}/crawler_extension.js.map +0 -0
  38. package/{dist/crawlers → crawlers}/crawler_utils.d.ts +0 -0
  39. package/{dist/crawlers → crawlers}/crawler_utils.d.ts.map +0 -0
  40. package/{dist/crawlers → crawlers}/crawler_utils.js +0 -0
  41. package/{dist/crawlers → crawlers}/crawler_utils.js.map +0 -0
  42. package/{dist/crawlers → crawlers}/index.d.ts +0 -0
  43. package/{dist/crawlers → crawlers}/index.d.ts.map +0 -0
  44. package/{dist/crawlers → crawlers}/index.js +0 -0
  45. package/{dist/crawlers → crawlers}/index.js.map +0 -0
  46. package/{dist/crawlers → crawlers}/statistics.d.ts +0 -0
  47. package/{dist/crawlers → crawlers}/statistics.d.ts.map +0 -0
  48. package/{dist/crawlers → crawlers}/statistics.js +0 -0
  49. package/{dist/crawlers → crawlers}/statistics.js.map +0 -0
  50. package/{dist/enqueue_links → enqueue_links}/enqueue_links.d.ts +13 -0
  51. package/{dist/enqueue_links → enqueue_links}/enqueue_links.d.ts.map +1 -1
  52. package/{dist/enqueue_links → enqueue_links}/enqueue_links.js +31 -2
  53. package/enqueue_links/enqueue_links.js.map +1 -0
  54. package/{dist/enqueue_links → enqueue_links}/index.d.ts +0 -0
  55. package/{dist/enqueue_links → enqueue_links}/index.d.ts.map +0 -0
  56. package/{dist/enqueue_links → enqueue_links}/index.js +0 -0
  57. package/{dist/enqueue_links → enqueue_links}/index.js.map +0 -0
  58. package/{dist/enqueue_links → enqueue_links}/shared.d.ts +0 -0
  59. package/{dist/enqueue_links → enqueue_links}/shared.d.ts.map +0 -0
  60. package/{dist/enqueue_links → enqueue_links}/shared.js +0 -0
  61. package/{dist/enqueue_links → enqueue_links}/shared.js.map +0 -0
  62. package/{dist/errors.d.ts → errors.d.ts} +0 -0
  63. package/{dist/errors.d.ts.map → errors.d.ts.map} +0 -0
  64. package/{dist/errors.js → errors.js} +0 -0
  65. package/{dist/errors.js.map → errors.js.map} +0 -0
  66. package/{dist/events → events}/event_manager.d.ts +0 -0
  67. package/{dist/events → events}/event_manager.d.ts.map +0 -0
  68. package/{dist/events → events}/event_manager.js +0 -0
  69. package/{dist/events → events}/event_manager.js.map +0 -0
  70. package/{dist/events → events}/index.d.ts +0 -0
  71. package/{dist/events → events}/index.d.ts.map +0 -0
  72. package/{dist/events → events}/index.js +0 -0
  73. package/{dist/events → events}/index.js.map +0 -0
  74. package/{dist/events → events}/local_event_manager.d.ts +0 -0
  75. package/{dist/events → events}/local_event_manager.d.ts.map +0 -0
  76. package/{dist/events → events}/local_event_manager.js +0 -0
  77. package/{dist/events → events}/local_event_manager.js.map +0 -0
  78. package/{dist/index.d.ts → index.d.ts} +0 -0
  79. package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  80. package/{dist/index.js → index.js} +0 -0
  81. package/{dist/index.js.map → index.js.map} +0 -0
  82. package/{dist/index.mjs → index.mjs} +1 -0
  83. package/{dist/log.d.ts → log.d.ts} +0 -0
  84. package/{dist/log.d.ts.map → log.d.ts.map} +0 -0
  85. package/{dist/log.js → log.js} +0 -0
  86. package/{dist/log.js.map → log.js.map} +0 -0
  87. package/package.json +10 -14
  88. package/{dist/proxy_configuration.d.ts → proxy_configuration.d.ts} +8 -8
  89. package/proxy_configuration.d.ts.map +1 -0
  90. package/{dist/proxy_configuration.js → proxy_configuration.js} +6 -6
  91. package/proxy_configuration.js.map +1 -0
  92. package/{dist/request.d.ts → request.d.ts} +0 -0
  93. package/{dist/request.d.ts.map → request.d.ts.map} +0 -0
  94. package/{dist/request.js → request.js} +0 -0
  95. package/{dist/request.js.map → request.js.map} +0 -0
  96. package/{dist/serialization.d.ts → serialization.d.ts} +0 -0
  97. package/{dist/serialization.d.ts.map → serialization.d.ts.map} +0 -0
  98. package/{dist/serialization.js → serialization.js} +0 -0
  99. package/{dist/serialization.js.map → serialization.js.map} +0 -0
  100. package/{dist/session_pool → session_pool}/errors.d.ts +0 -0
  101. package/{dist/session_pool → session_pool}/errors.d.ts.map +0 -0
  102. package/{dist/session_pool → session_pool}/errors.js +0 -0
  103. package/{dist/session_pool → session_pool}/errors.js.map +0 -0
  104. package/{dist/session_pool → session_pool}/events.d.ts +0 -0
  105. package/{dist/session_pool → session_pool}/events.d.ts.map +0 -0
  106. package/{dist/session_pool → session_pool}/events.js +0 -0
  107. package/{dist/session_pool → session_pool}/events.js.map +0 -0
  108. package/{dist/session_pool → session_pool}/index.d.ts +0 -0
  109. package/{dist/session_pool → session_pool}/index.d.ts.map +0 -0
  110. package/{dist/session_pool → session_pool}/index.js +0 -0
  111. package/{dist/session_pool → session_pool}/index.js.map +0 -0
  112. package/{dist/session_pool → session_pool}/session.d.ts +0 -0
  113. package/{dist/session_pool → session_pool}/session.d.ts.map +0 -0
  114. package/{dist/session_pool → session_pool}/session.js +0 -0
  115. package/{dist/session_pool → session_pool}/session.js.map +0 -0
  116. package/{dist/session_pool → session_pool}/session_pool.d.ts +0 -0
  117. package/{dist/session_pool → session_pool}/session_pool.d.ts.map +0 -0
  118. package/{dist/session_pool → session_pool}/session_pool.js +0 -0
  119. package/{dist/session_pool → session_pool}/session_pool.js.map +0 -0
  120. package/{dist/session_pool → session_pool}/session_utils.d.ts +0 -0
  121. package/{dist/session_pool → session_pool}/session_utils.d.ts.map +0 -0
  122. package/{dist/session_pool → session_pool}/session_utils.js +0 -0
  123. package/{dist/session_pool → session_pool}/session_utils.js.map +0 -0
  124. package/{dist/storages → storages}/dataset.d.ts +0 -0
  125. package/{dist/storages → storages}/dataset.d.ts.map +0 -0
  126. package/{dist/storages → storages}/dataset.js +0 -0
  127. package/{dist/storages → storages}/dataset.js.map +0 -0
  128. package/{dist/storages → storages}/index.d.ts +0 -0
  129. package/{dist/storages → storages}/index.d.ts.map +0 -0
  130. package/{dist/storages → storages}/index.js +0 -0
  131. package/{dist/storages → storages}/index.js.map +0 -0
  132. package/{dist/storages → storages}/key_value_store.d.ts +0 -0
  133. package/{dist/storages → storages}/key_value_store.d.ts.map +1 -1
  134. package/{dist/storages → storages}/key_value_store.js +3 -2
  135. package/storages/key_value_store.js.map +1 -0
  136. package/{dist/storages → storages}/request_list.d.ts +8 -0
  137. package/storages/request_list.d.ts.map +1 -0
  138. package/{dist/storages → storages}/request_list.js +11 -2
  139. package/storages/request_list.js.map +1 -0
  140. package/{dist/storages → storages}/request_queue.d.ts +3 -0
  141. package/storages/request_queue.d.ts.map +1 -0
  142. package/{dist/storages → storages}/request_queue.js +34 -0
  143. package/storages/request_queue.js.map +1 -0
  144. package/{dist/storages → storages}/storage.d.ts +0 -0
  145. package/{dist/storages → storages}/storage.d.ts.map +0 -0
  146. package/{dist/storages → storages}/storage.js +0 -0
  147. package/{dist/storages → storages}/storage.js.map +0 -0
  148. package/{dist/storages → storages}/storage_manager.d.ts +0 -0
  149. package/{dist/storages → storages}/storage_manager.d.ts.map +0 -0
  150. package/{dist/storages → storages}/storage_manager.js +0 -0
  151. package/{dist/storages → storages}/storage_manager.js.map +0 -0
  152. package/tsconfig.build.tsbuildinfo +1 -0
  153. package/{dist/typedefs.d.ts → typedefs.d.ts} +0 -0
  154. package/{dist/typedefs.d.ts.map → typedefs.d.ts.map} +0 -0
  155. package/{dist/typedefs.js → typedefs.js} +0 -0
  156. package/{dist/typedefs.js.map → typedefs.js.map} +0 -0
  157. package/{dist/validators.d.ts → validators.d.ts} +0 -0
  158. package/{dist/validators.d.ts.map → validators.d.ts.map} +0 -0
  159. package/{dist/validators.js → validators.js} +0 -0
  160. package/{dist/validators.js.map → validators.js.map} +0 -0
  161. package/dist/LICENSE.md +0 -201
  162. package/dist/autoscaling/autoscaled_pool.d.ts.map +0 -1
  163. package/dist/autoscaling/autoscaled_pool.js.map +0 -1
  164. package/dist/crawlers/crawler_commons.d.ts.map +0 -1
  165. package/dist/enqueue_links/enqueue_links.js.map +0 -1
  166. package/dist/package.json +0 -82
  167. package/dist/proxy_configuration.d.ts.map +0 -1
  168. package/dist/proxy_configuration.js.map +0 -1
  169. package/dist/storages/key_value_store.js.map +0 -1
  170. package/dist/storages/request_list.d.ts.map +0 -1
  171. package/dist/storages/request_list.js.map +0 -1
  172. package/dist/storages/request_queue.d.ts.map +0 -1
  173. package/dist/storages/request_queue.js.map +0 -1
  174. package/dist/tsconfig.build.tsbuildinfo +0 -1
File without changes
@@ -94,6 +94,11 @@ export interface AutoscaledPoolOptions {
94
94
  * by the pool.
95
95
  */
96
96
  systemStatusOptions?: SystemStatusOptions;
97
+ /**
98
+ * The maximum number of tasks per minute the pool can run.
99
+ * By default, this is set to `Infinity`, but you can pass any positive, non-zero integer.
100
+ */
101
+ maxTasksPerMinute?: number;
97
102
  log?: Log;
98
103
  }
99
104
  /**
@@ -157,6 +162,7 @@ export declare class AutoscaledPool {
157
162
  private readonly runTaskFunction;
158
163
  private readonly isFinishedFunction;
159
164
  private readonly isTaskReadyFunction;
165
+ private readonly maxTasksPerMinute;
160
166
  private _minConcurrency;
161
167
  private _maxConcurrency;
162
168
  private _desiredConcurrency;
@@ -172,6 +178,8 @@ export declare class AutoscaledPool {
172
178
  private maybeRunInterval;
173
179
  private queryingIsTaskReady;
174
180
  private queryingIsFinished;
181
+ private tasksDonePerSecondInterval?;
182
+ private _tasksPerMinute;
175
183
  constructor(options: AutoscaledPoolOptions, config?: Configuration);
176
184
  /**
177
185
  * Gets the minimum number of tasks running in parallel.
@@ -282,5 +290,7 @@ export declare class AutoscaledPool {
282
290
  * Cleans up resources.
283
291
  */
284
292
  protected _destroy(): Promise<void>;
293
+ protected _incrementTasksDonePerSecond(intervalCallback: () => void): void;
294
+ protected get _isOverMaxRequestLimit(): boolean;
285
295
  }
286
296
  //# sourceMappingURL=autoscaled_pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoscaled_pool.d.ts","sourceRoot":"","sources":["../../src/autoscaling/autoscaled_pool.ts"],"names":[],"mappings":"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"}
@@ -132,6 +132,12 @@ class AutoscaledPool {
132
132
  writable: true,
133
133
  value: void 0
134
134
  });
135
+ Object.defineProperty(this, "maxTasksPerMinute", {
136
+ enumerable: true,
137
+ configurable: true,
138
+ writable: true,
139
+ value: void 0
140
+ });
135
141
  // Internal properties.
136
142
  Object.defineProperty(this, "_minConcurrency", {
137
143
  enumerable: true,
@@ -223,6 +229,18 @@ class AutoscaledPool {
223
229
  writable: true,
224
230
  value: void 0
225
231
  });
232
+ Object.defineProperty(this, "tasksDonePerSecondInterval", {
233
+ enumerable: true,
234
+ configurable: true,
235
+ writable: true,
236
+ value: void 0
237
+ });
238
+ Object.defineProperty(this, "_tasksPerMinute", {
239
+ enumerable: true,
240
+ configurable: true,
241
+ writable: true,
242
+ value: Array.from({ length: 60 }, () => 0)
243
+ });
226
244
  (0, ow_1.default)(options, ow_1.default.object.exactShape({
227
245
  runTaskFunction: ow_1.default.function,
228
246
  isFinishedFunction: ow_1.default.function,
@@ -240,8 +258,9 @@ class AutoscaledPool {
240
258
  systemStatusOptions: ow_1.default.optional.object,
241
259
  snapshotterOptions: ow_1.default.optional.object,
242
260
  log: ow_1.default.optional.object,
261
+ maxTasksPerMinute: ow_1.default.optional.number.integerOrInfinite.positive.greaterThanOrEqual(1),
243
262
  }));
244
- const { runTaskFunction, isFinishedFunction, isTaskReadyFunction, maxConcurrency = 1000, minConcurrency = 1, desiredConcurrency, desiredConcurrencyRatio = 0.90, scaleUpStepRatio = 0.05, scaleDownStepRatio = 0.05, maybeRunIntervalSecs = 0.5, loggingIntervalSecs = 60, taskTimeoutSecs = 0, autoscaleIntervalSecs = 10, systemStatusOptions, snapshotterOptions, log = log_1.log, } = options;
263
+ const { runTaskFunction, isFinishedFunction, isTaskReadyFunction, maxConcurrency = 1000, minConcurrency = 1, desiredConcurrency, desiredConcurrencyRatio = 0.90, scaleUpStepRatio = 0.05, scaleDownStepRatio = 0.05, maybeRunIntervalSecs = 0.5, loggingIntervalSecs = 60, taskTimeoutSecs = 0, autoscaleIntervalSecs = 10, systemStatusOptions, snapshotterOptions, log = log_1.log, maxTasksPerMinute = Infinity, } = options;
245
264
  this.log = log.child({ prefix: 'AutoscaledPool' });
246
265
  // Configurable properties.
247
266
  this.desiredConcurrencyRatio = desiredConcurrencyRatio;
@@ -254,6 +273,7 @@ class AutoscaledPool {
254
273
  this.runTaskFunction = runTaskFunction;
255
274
  this.isFinishedFunction = isFinishedFunction;
256
275
  this.isTaskReadyFunction = isTaskReadyFunction;
276
+ this.maxTasksPerMinute = maxTasksPerMinute;
257
277
  // Internal properties.
258
278
  this._minConcurrency = minConcurrency;
259
279
  this._maxConcurrency = maxConcurrency;
@@ -265,6 +285,7 @@ class AutoscaledPool {
265
285
  this.reject = null;
266
286
  this._autoscale = this._autoscale.bind(this);
267
287
  this._maybeRunTask = this._maybeRunTask.bind(this);
288
+ this._incrementTasksDonePerSecond = this._incrementTasksDonePerSecond.bind(this);
268
289
  // Create instances with correct options.
269
290
  const ssoCopy = { ...systemStatusOptions };
270
291
  ssoCopy.snapshotter ?? (ssoCopy.snapshotter = new snapshotter_1.Snapshotter({
@@ -343,6 +364,10 @@ class AutoscaledPool {
343
364
  // this._maybeRunTask() doesn't trigger another one. So if that 1 instance gets stuck it results
344
365
  // in the actor getting stuck and even after scaling up it never triggers another promise.
345
366
  this.maybeRunInterval = (0, utilities_1.betterSetInterval)(this._maybeRunTask, this.maybeRunIntervalMillis);
367
+ if (this.maxTasksPerMinute !== Infinity) {
368
+ // Start the interval that resets the counter of tasks per minute.
369
+ this.tasksDonePerSecondInterval = (0, utilities_1.betterSetInterval)(this._incrementTasksDonePerSecond, 1000);
370
+ }
346
371
  try {
347
372
  await this.poolPromise;
348
373
  }
@@ -475,9 +500,17 @@ class AutoscaledPool {
475
500
  // No tasks could mean that we're finished with all tasks.
476
501
  return this._maybeFinish();
477
502
  }
503
+ // - we have already reached the maximum tasks per minute
504
+ // we need to check this *after* checking if a task is ready to prevent hanging the pool
505
+ // for an extra minute if there are no more tasks
506
+ if (this._isOverMaxRequestLimit) {
507
+ this.log.perf('Task will not run. Maximum tasks per minute reached.');
508
+ return done();
509
+ }
478
510
  try {
479
511
  // Everything's fine. Run task.
480
512
  this._currentConcurrency++;
513
+ this._tasksPerMinute[0]++;
481
514
  // Try to run next task to build up concurrency,
482
515
  // but defer it so it doesn't create a cycle.
483
516
  setImmediate(this._maybeRunTask);
@@ -516,6 +549,9 @@ class AutoscaledPool {
516
549
  // Don't scale if paused.
517
550
  if (this.isStopped)
518
551
  return intervalCallback();
552
+ // Don't scale if we've hit the maximum requests per minute
553
+ if (this._isOverMaxRequestLimit)
554
+ return intervalCallback();
519
555
  // Only scale up if:
520
556
  // - system has not been overloaded lately.
521
557
  const systemStatus = this.systemStatus.getHistoricalStatus();
@@ -616,9 +652,22 @@ class AutoscaledPool {
616
652
  this.reject = null;
617
653
  (0, utilities_1.betterClearInterval)(this.autoscaleInterval);
618
654
  (0, utilities_1.betterClearInterval)(this.maybeRunInterval);
655
+ if (this.tasksDonePerSecondInterval)
656
+ (0, utilities_1.betterClearInterval)(this.tasksDonePerSecondInterval);
619
657
  if (this.snapshotter)
620
658
  await this.snapshotter.stop();
621
659
  }
660
+ _incrementTasksDonePerSecond(intervalCallback) {
661
+ this._tasksPerMinute.unshift(0);
662
+ this._tasksPerMinute.pop();
663
+ return intervalCallback();
664
+ }
665
+ get _isOverMaxRequestLimit() {
666
+ if (this.maxTasksPerMinute === Infinity) {
667
+ return false;
668
+ }
669
+ return this._tasksPerMinute.reduce((acc, curr) => acc + curr, 0) >= this.maxTasksPerMinute;
670
+ }
622
671
  }
623
672
  exports.AutoscaledPool = AutoscaledPool;
624
673
  //# sourceMappingURL=autoscaled_pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoscaled_pool.js","sourceRoot":"","sources":["../../src/autoscaling/autoscaled_pool.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,3 +1,4 @@
1
+ import { Log } from '../log';
1
2
  import { ProxyInfo } from '../proxy_configuration';
2
3
  import { Request } from '../request';
3
4
  import { Session } from '../session_pool/session';
@@ -13,6 +14,7 @@ export interface CrawlingContext extends Record<PropertyKey, unknown> {
13
14
  * and configured by the {@link ProxyConfiguration} class.
14
15
  */
15
16
  proxyInfo?: ProxyInfo;
17
+ log: Log;
16
18
  }
17
19
  export interface CrawlerHandleFailedRequestInput extends CrawlingContext {
18
20
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawler_commons.d.ts","sourceRoot":"","sources":["../../src/crawlers/crawler_commons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,WAAW,eAAgB,SAAQ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;IACjE,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,+BAAgC,SAAQ,eAAe;IACpE;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CAChB"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -135,4 +135,17 @@ export declare enum EnqueueStrategy {
135
135
  * @returns Promise that resolves to {@link BatchAddRequestsResult} object.
136
136
  */
137
137
  export declare function enqueueLinks(options: EnqueueLinksOptions): Promise<BatchAddRequestsResult>;
138
+ /**
139
+ * @internal
140
+ */
141
+ export declare function resolveBaseUrl({ enqueueStrategy, finalRequestUrl, originalRequestUrl, userProvidedBaseUrl, }: ResolveBaseUrl): string | undefined;
142
+ /**
143
+ * @internal
144
+ */
145
+ export interface ResolveBaseUrl {
146
+ userProvidedBaseUrl?: string;
147
+ enqueueStrategy?: EnqueueLinksOptions['strategy'];
148
+ originalRequestUrl: string;
149
+ finalRequestUrl?: string;
150
+ }
138
151
  //# sourceMappingURL=enqueue_links.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enqueue_links.d.ts","sourceRoot":"","sources":["../../src/enqueue_links/enqueue_links.ts"],"names":[],"mappings":"AAGA,OAAO,EAMH,SAAS,EACT,cAAc,EACd,WAAW,EACX,gBAAgB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAChC,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mCAAmC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,0DAA0D;IAC1D,YAAY,EAAE,YAAY,CAAC;IAE3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAExB;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,wBAAwB,CAAC,EAAE,gBAAgB,CAAC;IAE5C;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,KAAK,GAAG,gBAAgB,GAAG,eAAe,CAAC;CAC3E;AAED,oBAAY,eAAe;IACvB;;OAEG;IACH,GAAG,QAAQ;IACX;;OAEG;IACH,aAAa,mBAAmB;IAChC;;;;OAIG;IACH,YAAY,kBAAkB;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmGhG"}
1
+ {"version":3,"file":"enqueue_links.d.ts","sourceRoot":"","sources":["../../src/enqueue_links/enqueue_links.ts"],"names":[],"mappings":"AAGA,OAAO,EAMH,SAAS,EACT,cAAc,EACd,WAAW,EACX,gBAAgB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAChC,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mCAAmC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,0DAA0D;IAC1D,YAAY,EAAE,YAAY,CAAC;IAE3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IAExB;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,wBAAwB,CAAC,EAAE,gBAAgB,CAAC;IAE5C;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,KAAK,GAAG,gBAAgB,GAAG,eAAe,CAAC;CAC3E;AAED,oBAAY,eAAe;IACvB;;OAEG;IACH,GAAG,QAAQ;IACX;;OAEG;IACH,aAAa,mBAAmB;IAChC;;;;OAIG;IACH,YAAY,kBAAkB;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAqGhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC3B,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACtB,EAAE,cAAc,sBA4BhB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAClD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enqueueLinks = exports.EnqueueStrategy = void 0;
3
+ exports.resolveBaseUrl = exports.enqueueLinks = exports.EnqueueStrategy = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const tldts_1 = require("tldts");
6
6
  const ow_1 = tslib_1.__importDefault(require("ow"));
@@ -80,7 +80,9 @@ async function enqueueLinks(options) {
80
80
  if (regexps?.length) {
81
81
  urlPatternObjects.push(...(0, shared_1.constructRegExpObjectsFromRegExps)(regexps));
82
82
  }
83
- options.strategy ?? (options.strategy = urlPatternObjects.length > 0 ? undefined : EnqueueStrategy.SameSubdomain);
83
+ if (!urlPatternObjects.length) {
84
+ options.strategy ?? (options.strategy = EnqueueStrategy.SameSubdomain);
85
+ }
84
86
  if (options.baseUrl) {
85
87
  switch (options.strategy) {
86
88
  case EnqueueStrategy.SameSubdomain:
@@ -120,4 +122,31 @@ async function enqueueLinks(options) {
120
122
  return requestQueue.addRequests(requests);
121
123
  }
122
124
  exports.enqueueLinks = enqueueLinks;
125
+ /**
126
+ * @internal
127
+ */
128
+ function resolveBaseUrl({ enqueueStrategy, finalRequestUrl, originalRequestUrl, userProvidedBaseUrl, }) {
129
+ // User provided base url takes priority
130
+ if (userProvidedBaseUrl) {
131
+ return userProvidedBaseUrl;
132
+ }
133
+ const originalUrlOrigin = new URL(originalRequestUrl).origin;
134
+ const finalUrlOrigin = new URL(finalRequestUrl ?? originalRequestUrl).origin;
135
+ // We can assume users want to go off the domain in this case
136
+ if (enqueueStrategy === EnqueueStrategy.All) {
137
+ return finalUrlOrigin ?? originalUrlOrigin;
138
+ }
139
+ // Ensure links use the same hostname
140
+ if (enqueueStrategy === EnqueueStrategy.SameHostname) {
141
+ const originalHostname = (0, tldts_1.getDomain)(originalUrlOrigin, { mixedInputs: false });
142
+ const finalHostname = (0, tldts_1.getDomain)(finalUrlOrigin, { mixedInputs: false });
143
+ if (originalHostname === finalHostname) {
144
+ return finalUrlOrigin;
145
+ }
146
+ return undefined;
147
+ }
148
+ // Always enqueue urls that are from the same origin
149
+ return originalUrlOrigin;
150
+ }
151
+ exports.resolveBaseUrl = resolveBaseUrl;
123
152
  //# sourceMappingURL=enqueue_links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enqueue_links.js","sourceRoot":"","sources":["../../src/enqueue_links/enqueue_links.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -55,6 +55,7 @@ export const maybeStringify = mod.maybeStringify;
55
55
  export const mergeCookies = mod.mergeCookies;
56
56
  export const openDataset = mod.openDataset;
57
57
  export const pushData = mod.pushData;
58
+ export const resolveBaseUrl = mod.resolveBaseUrl;
58
59
  export const serializeArray = mod.serializeArray;
59
60
  export const storage = mod.storage;
60
61
  export const throwOnBlockedRequest = mod.throwOnBlockedRequest;
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@crawlee/core",
3
- "version": "3.0.0-alpha.3",
3
+ "version": "3.0.0-alpha.6",
4
4
  "description": "The scalable web crawling and scraping library for JavaScript/Node.js. Enables development of data extraction and web automation jobs (not only) with headless Chrome and Puppeteer.",
5
5
  "engines": {
6
6
  "node": ">=16.0.0"
7
7
  },
8
- "types": "dist/index.d.ts",
8
+ "types": "index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
- "import": "./dist/index.mjs",
12
- "require": "./dist/index.js"
11
+ "import": "./index.mjs",
12
+ "require": "./index.js"
13
13
  }
14
14
  },
15
15
  "keywords": [
@@ -39,13 +39,10 @@
39
39
  "url": "https://github.com/apify/apify-js/issues"
40
40
  },
41
41
  "homepage": "https://sdk.apify.com/",
42
- "files": [
43
- "dist"
44
- ],
45
42
  "scripts": {
46
43
  "build": "npm run clean && npm run compile && npm run copy",
47
44
  "clean": "rimraf ./dist",
48
- "compile": "tsc -p tsconfig.build.json && gen-esm-wrapper ./dist/index.js ./dist/index.mjs",
45
+ "compile": "tsc -p tsconfig.build.json && gen-esm-wrapper ./index.js ./index.mjs",
49
46
  "copy": "ts-node -T ../../scripts/copy.ts"
50
47
  },
51
48
  "publishConfig": {
@@ -57,12 +54,12 @@
57
54
  "@apify/log": "^1.1.6",
58
55
  "@apify/ps-tree": "^1.1.4",
59
56
  "@apify/pseudo_url": "^1.1.0",
60
- "@apify/storage-local": "^2.0.3-beta.3",
61
57
  "@apify/timeout": "^0.2.1",
62
58
  "@apify/utilities": "^1.2.5",
63
- "@crawlee/browser-pool": "^3.0.0-alpha.3",
64
- "@crawlee/storage": "^3.0.0-alpha.3",
65
- "@crawlee/utils": "^3.0.0-alpha.3",
59
+ "@apify/storage-local": "^2.0.3-beta.3",
60
+ "@crawlee/browser-pool": "^3.0.0-alpha.6",
61
+ "@crawlee/storage": "^3.0.0-alpha.6",
62
+ "@crawlee/utils": "^3.0.0-alpha.6",
66
63
  "@types/mime-types": "^2.1.1",
67
64
  "@types/stream-json": "^1.7.1",
68
65
  "content-type": "^1.0.4",
@@ -78,6 +75,5 @@
78
75
  "tldts": "^5.7.69",
79
76
  "tough-cookie": "^4.0.0",
80
77
  "ws": "^7.5.3"
81
- },
82
- "gitHead": "548b65585f29cd3c662acddbb30abfb79d0579e6"
78
+ }
83
79
  }
@@ -1,6 +1,6 @@
1
1
  import { Configuration } from './configuration';
2
2
  export interface ProxyConfigurationFunction {
3
- (sessionId: string | number): string;
3
+ (sessionId: string | number): string | Promise<string>;
4
4
  }
5
5
  export interface ProxyConfigurationOptions {
6
6
  /**
@@ -11,7 +11,7 @@ export interface ProxyConfigurationOptions {
11
11
  proxyUrls?: string[];
12
12
  /**
13
13
  * Custom function that allows you to generate the new proxy URL dynamically. It gets the `sessionId` as a parameter
14
- * and should always return stringified proxy URL.
14
+ * and should always return stringified proxy URL. Can be asynchronous.
15
15
  * This function is used to generate the URL when {@link ProxyConfiguration.newUrl} or {@link ProxyConfiguration.newProxyInfo} is called.
16
16
  */
17
17
  newUrlFunction?: ProxyConfigurationFunction;
@@ -151,7 +151,7 @@ export declare class ProxyConfiguration {
151
151
  * The identifier must not be longer than 50 characters and include only the following: `0-9`, `a-z`, `A-Z`, `"."`, `"_"` and `"~"`.
152
152
  * @return Represents information about used proxy and its configuration.
153
153
  */
154
- newProxyInfo(sessionId?: string | number): ProxyInfo;
154
+ newProxyInfo(sessionId?: string | number): Promise<ProxyInfo>;
155
155
  /**
156
156
  * Returns a new proxy URL based on provided configuration options and the `sessionId` parameter.
157
157
  * @param [sessionId]
@@ -165,7 +165,7 @@ export declare class ProxyConfiguration {
165
165
  * @return A string with a proxy URL, including authentication credentials and port number.
166
166
  * For example, `http://bob:password123@proxy.example.com:8000`
167
167
  */
168
- newUrl(sessionId?: string | number): string;
168
+ newUrl(sessionId?: string | number): Promise<string>;
169
169
  /**
170
170
  * Handles custom url rotation with session
171
171
  */
@@ -173,9 +173,9 @@ export declare class ProxyConfiguration {
173
173
  /**
174
174
  * Calls the custom newUrlFunction and checks format of its return value
175
175
  */
176
- protected _callNewUrlFunction(sessionId?: string): string | undefined;
177
- protected _throwNewUrlFunctionInvalid(err: Error): void;
178
- protected _throwCannotCombineCustomMethods(): void;
179
- protected _throwNoOptionsProvided(): void;
176
+ protected _callNewUrlFunction(sessionId?: string): Promise<string>;
177
+ protected _throwNewUrlFunctionInvalid(err: Error): never;
178
+ protected _throwCannotCombineCustomMethods(): never;
179
+ protected _throwNoOptionsProvided(): never;
180
180
  }
181
181
  //# sourceMappingURL=proxy_configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy_configuration.d.ts","sourceRoot":"","sources":["../src/proxy_configuration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,WAAW,0BAA0B;IACvC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,yBAAyB;IACtC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,SAAS;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAkB;IA+B0B,QAAQ,CAAC,MAAM;IA9BpE,gBAAgB,UAAS;IACzB,SAAS,CAAC,kBAAkB,SAAK;IACjC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,SAAS,CAAC,aAAa,sBAA6B;IACpD,SAAS,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IACtD,SAAS,CAAC,GAAG,2BAA+C;IAE5D;;;;;;;;;;;;;;;;;;;;;;OAsBG;gBACS,OAAO,GAAE,yBAA8B,EAAW,MAAM,gBAAkC,EAAE,gBAAgB,UAAO;IAe/H;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAgBnE;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU1D;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBtD;;OAEG;cACa,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM;IAYtD,SAAS,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,GAAI,KAAK;IAIzD,SAAS,CAAC,gCAAgC,IAAK,KAAK;IAIpD,SAAS,CAAC,uBAAuB,IAAK,KAAK;CAG9C"}