@crawlee/core 4.0.0-beta.7 → 4.0.0-beta.71

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 (253) hide show
  1. package/README.md +17 -13
  2. package/autoscaling/autoscaled_pool.d.ts +3 -5
  3. package/autoscaling/autoscaled_pool.d.ts.map +1 -1
  4. package/autoscaling/autoscaled_pool.js +3 -9
  5. package/autoscaling/autoscaled_pool.js.map +1 -1
  6. package/autoscaling/snapshotter.d.ts +3 -13
  7. package/autoscaling/snapshotter.d.ts.map +1 -1
  8. package/autoscaling/snapshotter.js +18 -29
  9. package/autoscaling/snapshotter.js.map +1 -1
  10. package/autoscaling/system_status.d.ts +0 -3
  11. package/autoscaling/system_status.d.ts.map +1 -1
  12. package/autoscaling/system_status.js +2 -3
  13. package/autoscaling/system_status.js.map +1 -1
  14. package/configuration.d.ts +88 -227
  15. package/configuration.d.ts.map +1 -1
  16. package/configuration.js +162 -223
  17. package/configuration.js.map +1 -1
  18. package/cookie_utils.d.ts +4 -2
  19. package/cookie_utils.d.ts.map +1 -1
  20. package/cookie_utils.js +18 -12
  21. package/cookie_utils.js.map +1 -1
  22. package/crawlers/context_pipeline.d.ts +71 -0
  23. package/crawlers/context_pipeline.d.ts.map +1 -0
  24. package/crawlers/context_pipeline.js +123 -0
  25. package/crawlers/context_pipeline.js.map +1 -0
  26. package/crawlers/crawler_commons.d.ts +20 -29
  27. package/crawlers/crawler_commons.d.ts.map +1 -1
  28. package/crawlers/crawler_commons.js +12 -20
  29. package/crawlers/crawler_commons.js.map +1 -1
  30. package/crawlers/crawler_utils.d.ts +2 -2
  31. package/crawlers/crawler_utils.d.ts.map +1 -1
  32. package/crawlers/crawler_utils.js +1 -1
  33. package/crawlers/crawler_utils.js.map +1 -1
  34. package/crawlers/error_snapshotter.d.ts +3 -2
  35. package/crawlers/error_snapshotter.d.ts.map +1 -1
  36. package/crawlers/error_snapshotter.js +2 -2
  37. package/crawlers/error_snapshotter.js.map +1 -1
  38. package/crawlers/error_tracker.d.ts +2 -1
  39. package/crawlers/error_tracker.d.ts.map +1 -1
  40. package/crawlers/error_tracker.js.map +1 -1
  41. package/crawlers/index.d.ts +1 -1
  42. package/crawlers/index.d.ts.map +1 -1
  43. package/crawlers/index.js +1 -1
  44. package/crawlers/index.js.map +1 -1
  45. package/crawlers/internals/types.d.ts +8 -0
  46. package/crawlers/internals/types.d.ts.map +1 -0
  47. package/crawlers/internals/types.js +2 -0
  48. package/crawlers/internals/types.js.map +1 -0
  49. package/crawlers/statistics.d.ts +16 -16
  50. package/crawlers/statistics.d.ts.map +1 -1
  51. package/crawlers/statistics.js +22 -25
  52. package/crawlers/statistics.js.map +1 -1
  53. package/enqueue_links/enqueue_links.d.ts +36 -21
  54. package/enqueue_links/enqueue_links.d.ts.map +1 -1
  55. package/enqueue_links/enqueue_links.js +47 -26
  56. package/enqueue_links/enqueue_links.js.map +1 -1
  57. package/enqueue_links/shared.d.ts +25 -8
  58. package/enqueue_links/shared.d.ts.map +1 -1
  59. package/enqueue_links/shared.js +69 -37
  60. package/enqueue_links/shared.js.map +1 -1
  61. package/errors.d.ts +33 -3
  62. package/errors.d.ts.map +1 -1
  63. package/errors.js +48 -4
  64. package/errors.js.map +1 -1
  65. package/events/event_manager.d.ts +34 -7
  66. package/events/event_manager.d.ts.map +1 -1
  67. package/events/event_manager.js +8 -9
  68. package/events/event_manager.js.map +1 -1
  69. package/events/local_event_manager.d.ts +14 -4
  70. package/events/local_event_manager.d.ts.map +1 -1
  71. package/events/local_event_manager.js +33 -39
  72. package/events/local_event_manager.js.map +1 -1
  73. package/index.d.ts +4 -2
  74. package/index.d.ts.map +1 -1
  75. package/index.js +3 -1
  76. package/index.js.map +1 -1
  77. package/log.d.ts +82 -2
  78. package/log.d.ts.map +1 -1
  79. package/log.js +102 -0
  80. package/log.js.map +1 -1
  81. package/memory-storage/consts.d.ts +5 -0
  82. package/memory-storage/consts.d.ts.map +1 -0
  83. package/memory-storage/consts.js +5 -0
  84. package/memory-storage/consts.js.map +1 -0
  85. package/memory-storage/index.d.ts +2 -0
  86. package/memory-storage/index.d.ts.map +1 -0
  87. package/memory-storage/index.js +2 -0
  88. package/memory-storage/index.js.map +1 -0
  89. package/memory-storage/memory-storage.d.ts +47 -0
  90. package/memory-storage/memory-storage.d.ts.map +1 -0
  91. package/memory-storage/memory-storage.js +137 -0
  92. package/memory-storage/memory-storage.js.map +1 -0
  93. package/memory-storage/resource-clients/common/base-client.d.ts +5 -0
  94. package/memory-storage/resource-clients/common/base-client.d.ts.map +1 -0
  95. package/memory-storage/resource-clients/common/base-client.js +7 -0
  96. package/memory-storage/resource-clients/common/base-client.js.map +1 -0
  97. package/memory-storage/resource-clients/dataset.d.ts +41 -0
  98. package/memory-storage/resource-clients/dataset.d.ts.map +1 -0
  99. package/memory-storage/resource-clients/dataset.js +114 -0
  100. package/memory-storage/resource-clients/dataset.js.map +1 -0
  101. package/memory-storage/resource-clients/key-value-store.d.ts +64 -0
  102. package/memory-storage/resource-clients/key-value-store.d.ts.map +1 -0
  103. package/memory-storage/resource-clients/key-value-store.js +204 -0
  104. package/memory-storage/resource-clients/key-value-store.js.map +1 -0
  105. package/memory-storage/resource-clients/request-queue.d.ts +97 -0
  106. package/memory-storage/resource-clients/request-queue.d.ts.map +1 -0
  107. package/memory-storage/resource-clients/request-queue.js +422 -0
  108. package/memory-storage/resource-clients/request-queue.js.map +1 -0
  109. package/memory-storage/utils.d.ts +12 -0
  110. package/memory-storage/utils.d.ts.map +1 -0
  111. package/memory-storage/utils.js +28 -0
  112. package/memory-storage/utils.js.map +1 -0
  113. package/package.json +12 -10
  114. package/proxy_configuration.d.ts +14 -148
  115. package/proxy_configuration.d.ts.map +1 -1
  116. package/proxy_configuration.js +19 -167
  117. package/proxy_configuration.js.map +1 -1
  118. package/recoverable_state.d.ts +121 -0
  119. package/recoverable_state.d.ts.map +1 -0
  120. package/recoverable_state.js +142 -0
  121. package/recoverable_state.js.map +1 -0
  122. package/request.d.ts +84 -12
  123. package/request.d.ts.map +1 -1
  124. package/request.js +107 -27
  125. package/request.js.map +1 -1
  126. package/router.d.ts.map +1 -1
  127. package/router.js.map +1 -1
  128. package/serialization.js +1 -1
  129. package/serialization.js.map +1 -1
  130. package/service_locator.d.ts +157 -0
  131. package/service_locator.d.ts.map +1 -0
  132. package/service_locator.js +239 -0
  133. package/service_locator.js.map +1 -0
  134. package/session_pool/consts.d.ts +1 -1
  135. package/session_pool/consts.d.ts.map +1 -1
  136. package/session_pool/consts.js +1 -1
  137. package/session_pool/consts.js.map +1 -1
  138. package/session_pool/fingerprint.d.ts +10 -0
  139. package/session_pool/fingerprint.d.ts.map +1 -0
  140. package/session_pool/fingerprint.js +31 -0
  141. package/session_pool/fingerprint.js.map +1 -0
  142. package/session_pool/index.d.ts +0 -1
  143. package/session_pool/index.d.ts.map +1 -1
  144. package/session_pool/index.js +0 -1
  145. package/session_pool/index.js.map +1 -1
  146. package/session_pool/session.d.ts +35 -72
  147. package/session_pool/session.d.ts.map +1 -1
  148. package/session_pool/session.js +46 -98
  149. package/session_pool/session.js.map +1 -1
  150. package/session_pool/session_pool.d.ts +71 -71
  151. package/session_pool/session_pool.d.ts.map +1 -1
  152. package/session_pool/session_pool.js +111 -99
  153. package/session_pool/session_pool.js.map +1 -1
  154. package/storages/access_checking.d.ts.map +1 -1
  155. package/storages/access_checking.js +5 -1
  156. package/storages/access_checking.js.map +1 -1
  157. package/storages/dataset.d.ts +98 -47
  158. package/storages/dataset.d.ts.map +1 -1
  159. package/storages/dataset.js +166 -123
  160. package/storages/dataset.js.map +1 -1
  161. package/storages/index.d.ts +8 -6
  162. package/storages/index.d.ts.map +1 -1
  163. package/storages/index.js +6 -6
  164. package/storages/index.js.map +1 -1
  165. package/storages/key_value_store.d.ts +163 -33
  166. package/storages/key_value_store.d.ts.map +1 -1
  167. package/storages/key_value_store.js +267 -119
  168. package/storages/key_value_store.js.map +1 -1
  169. package/storages/key_value_store_codec.d.ts +33 -0
  170. package/storages/key_value_store_codec.d.ts.map +1 -0
  171. package/storages/key_value_store_codec.js +114 -0
  172. package/storages/key_value_store_codec.js.map +1 -0
  173. package/storages/request_list.d.ts +32 -81
  174. package/storages/request_list.d.ts.map +1 -1
  175. package/storages/request_list.js +49 -39
  176. package/storages/request_list.js.map +1 -1
  177. package/storages/request_loader.d.ts +97 -0
  178. package/storages/request_loader.d.ts.map +1 -0
  179. package/storages/request_loader.js +2 -0
  180. package/storages/request_loader.js.map +1 -0
  181. package/storages/request_manager.d.ts +34 -0
  182. package/storages/request_manager.d.ts.map +1 -0
  183. package/storages/request_manager.js +2 -0
  184. package/storages/request_manager.js.map +1 -0
  185. package/storages/request_manager_tandem.d.ts +107 -0
  186. package/storages/request_manager_tandem.d.ts.map +1 -0
  187. package/storages/request_manager_tandem.js +198 -0
  188. package/storages/request_manager_tandem.js.map +1 -0
  189. package/storages/request_queue.d.ts +282 -45
  190. package/storages/request_queue.d.ts.map +1 -1
  191. package/storages/request_queue.js +592 -213
  192. package/storages/request_queue.js.map +1 -1
  193. package/storages/{sitemap_request_list.d.ts → sitemap_request_loader.d.ts} +29 -24
  194. package/storages/sitemap_request_loader.d.ts.map +1 -0
  195. package/storages/{sitemap_request_list.js → sitemap_request_loader.js} +50 -46
  196. package/storages/sitemap_request_loader.js.map +1 -0
  197. package/storages/storage_instance_manager.d.ts +92 -0
  198. package/storages/storage_instance_manager.d.ts.map +1 -0
  199. package/storages/storage_instance_manager.js +261 -0
  200. package/storages/storage_instance_manager.js.map +1 -0
  201. package/storages/storage_stats.d.ts +49 -0
  202. package/storages/storage_stats.d.ts.map +1 -0
  203. package/storages/storage_stats.js +30 -0
  204. package/storages/storage_stats.js.map +1 -0
  205. package/storages/utils.d.ts +51 -5
  206. package/storages/utils.d.ts.map +1 -1
  207. package/storages/utils.js +60 -8
  208. package/storages/utils.js.map +1 -1
  209. package/typedefs.d.ts +1 -1
  210. package/typedefs.d.ts.map +1 -1
  211. package/validators.d.ts +8 -0
  212. package/validators.d.ts.map +1 -1
  213. package/validators.js +8 -0
  214. package/validators.js.map +1 -1
  215. package/crawlers/crawler_extension.d.ts +0 -12
  216. package/crawlers/crawler_extension.d.ts.map +0 -1
  217. package/crawlers/crawler_extension.js +0 -14
  218. package/crawlers/crawler_extension.js.map +0 -1
  219. package/http_clients/base-http-client.d.ts +0 -134
  220. package/http_clients/base-http-client.d.ts.map +0 -1
  221. package/http_clients/base-http-client.js +0 -33
  222. package/http_clients/base-http-client.js.map +0 -1
  223. package/http_clients/form-data-like.d.ts +0 -67
  224. package/http_clients/form-data-like.d.ts.map +0 -1
  225. package/http_clients/form-data-like.js +0 -5
  226. package/http_clients/form-data-like.js.map +0 -1
  227. package/http_clients/got-scraping-http-client.d.ts +0 -15
  228. package/http_clients/got-scraping-http-client.d.ts.map +0 -1
  229. package/http_clients/got-scraping-http-client.js +0 -69
  230. package/http_clients/got-scraping-http-client.js.map +0 -1
  231. package/http_clients/index.d.ts +0 -3
  232. package/http_clients/index.d.ts.map +0 -1
  233. package/http_clients/index.js +0 -3
  234. package/http_clients/index.js.map +0 -1
  235. package/session_pool/events.d.ts +0 -3
  236. package/session_pool/events.d.ts.map +0 -1
  237. package/session_pool/events.js +0 -3
  238. package/session_pool/events.js.map +0 -1
  239. package/storages/request_provider.d.ts +0 -307
  240. package/storages/request_provider.d.ts.map +0 -1
  241. package/storages/request_provider.js +0 -555
  242. package/storages/request_provider.js.map +0 -1
  243. package/storages/request_queue_v2.d.ts +0 -87
  244. package/storages/request_queue_v2.d.ts.map +0 -1
  245. package/storages/request_queue_v2.js +0 -438
  246. package/storages/request_queue_v2.js.map +0 -1
  247. package/storages/sitemap_request_list.d.ts.map +0 -1
  248. package/storages/sitemap_request_list.js.map +0 -1
  249. package/storages/storage_manager.d.ts +0 -58
  250. package/storages/storage_manager.d.ts.map +0 -1
  251. package/storages/storage_manager.js +0 -105
  252. package/storages/storage_manager.js.map +0 -1
  253. package/tsconfig.build.tsbuildinfo +0 -1
@@ -1,31 +1,19 @@
1
- import { EventEmitter } from 'node:events';
2
1
  import { AsyncQueue } from '@sapphire/async-queue';
3
2
  import ow from 'ow';
4
- import { Configuration } from '../configuration.js';
5
- import { log as defaultLog } from '../log.js';
3
+ import { serviceLocator } from '../service_locator.js';
6
4
  import { KeyValueStore } from '../storages/key_value_store.js';
7
- import { BLOCKED_STATUS_CODES, MAX_POOL_SIZE, PERSIST_STATE_KEY } from './consts.js';
5
+ import { MAX_POOL_SIZE, PERSIST_STATE_KEY } from './consts.js';
6
+ import { createDefaultSessionFingerprint } from './fingerprint.js';
8
7
  import { Session } from './session.js';
8
+ const SESSION_REUSE_STRATEGIES = ['random', 'round-robin', 'use-until-failure'];
9
9
  /**
10
10
  * Handles the rotation, creation and persistence of user-like sessions.
11
11
  * Creates a pool of {@link Session} instances, that are randomly rotated.
12
12
  * When some session is marked as blocked, it is removed and new one is created instead (the pool never returns an unusable session).
13
13
  * Learn more in the {@doclink guides/session-management | Session management guide}.
14
14
  *
15
- * You can create one by calling the {@link SessionPool.open} function.
16
- *
17
- * Session pool is already integrated into crawlers, and it can significantly improve your scraper
18
- * performance with just 2 lines of code.
19
- *
20
- * **Example usage:**
21
- *
22
- * ```javascript
23
- * const crawler = new CheerioCrawler({
24
- * useSessionPool: true,
25
- * persistCookiesPerSession: true,
26
- * // ...
27
- * })
28
- * ```
15
+ * Session pool is already integrated into crawlers and is always active.
16
+ * All public methods are lazy-initialized — the pool initializes itself on first use.
29
17
  *
30
18
  * You can configure the pool with many options. See the {@link SessionPoolOptions}.
31
19
  * Session pool is by default persisted in default {@link KeyValueStore}.
@@ -35,7 +23,7 @@ import { Session } from './session.js';
35
23
  * **Advanced usage:**
36
24
  *
37
25
  * ```javascript
38
- * const sessionPool = await SessionPool.open({
26
+ * const sessionPool = new SessionPool({
39
27
  * maxPoolSize: 25,
40
28
  * sessionOptions:{
41
29
  * maxAgeSecs: 10,
@@ -71,8 +59,9 @@ import { Session } from './session.js';
71
59
  *
72
60
  * @category Scaling
73
61
  */
74
- export class SessionPool extends EventEmitter {
75
- config;
62
+ export class SessionPool {
63
+ static nextId = 0;
64
+ id;
76
65
  log;
77
66
  maxPoolSize;
78
67
  createSessionFunction;
@@ -84,73 +73,76 @@ export class SessionPool extends EventEmitter {
84
73
  persistStateKey;
85
74
  _listener;
86
75
  events;
87
- blockedStatusCodes;
88
76
  persistenceOptions;
89
- isInitialized = false;
77
+ sessionReuseStrategy;
78
+ initPromise;
90
79
  queue = new AsyncQueue();
91
- /**
92
- * @internal
93
- */
94
- constructor(options = {}, config = Configuration.getGlobalConfig()) {
95
- super();
96
- this.config = config;
80
+ roundRobinIndex = 0;
81
+ constructor(options = {}) {
97
82
  ow(options, ow.object.exactShape({
83
+ id: ow.optional.any(ow.number, ow.string),
98
84
  maxPoolSize: ow.optional.number,
99
85
  persistStateKeyValueStoreId: ow.optional.string,
100
86
  persistStateKey: ow.optional.string,
101
87
  createSessionFunction: ow.optional.function,
102
88
  sessionOptions: ow.optional.object,
103
- blockedStatusCodes: ow.optional.array.ofType(ow.number),
104
89
  log: ow.optional.object,
105
90
  persistenceOptions: ow.optional.object,
91
+ sessionReuseStrategy: ow.optional.string.oneOf([...SESSION_REUSE_STRATEGIES]),
106
92
  }));
107
- const { maxPoolSize = MAX_POOL_SIZE, persistStateKeyValueStoreId, persistStateKey = PERSIST_STATE_KEY, createSessionFunction, sessionOptions = {}, blockedStatusCodes = BLOCKED_STATUS_CODES, log = defaultLog, persistenceOptions = {
93
+ const { id, maxPoolSize = MAX_POOL_SIZE, persistStateKeyValueStoreId, persistStateKey, createSessionFunction, sessionOptions = {}, log = serviceLocator.getLogger(), persistenceOptions = {
108
94
  enable: true,
109
- }, } = options;
110
- this.config = config;
111
- this.blockedStatusCodes = blockedStatusCodes;
112
- this.events = config.getEventManager();
95
+ }, sessionReuseStrategy = 'random', } = options;
96
+ this.id = id != null ? String(id) : String(SessionPool.nextId++);
97
+ this.sessionReuseStrategy = sessionReuseStrategy;
98
+ this.events = serviceLocator.getEventManager();
113
99
  this.log = log.child({ prefix: 'SessionPool' });
114
100
  this.persistenceOptions = persistenceOptions;
115
101
  // Pool Configuration
116
102
  this.maxPoolSize = maxPoolSize;
117
103
  this.createSessionFunction = createSessionFunction || this._defaultCreateSessionFunction;
118
- // Session configuration
104
+ // Session configuration. The pool-scoped logger is merged into per-call sessionOptions inside
105
+ // `_invokeCreateSessionFunction`, so every Session inherits it without custom createSessionFunctions
106
+ // having to know about it.
119
107
  this.sessionOptions = {
120
108
  ...sessionOptions,
121
- // the log needs to propagate to createSessionFunction as in "new Session({ ...sessionPool.sessionOptions })"
122
- // and can't go inside _defaultCreateSessionFunction
123
109
  log: this.log,
124
110
  };
125
111
  // Session keyValueStore
126
112
  this.persistStateKeyValueStoreId = persistStateKeyValueStoreId;
127
- this.persistStateKey = persistStateKey;
113
+ this.persistStateKey = persistStateKey ?? `${PERSIST_STATE_KEY}_${this.id}`;
128
114
  }
129
115
  /**
130
116
  * Gets count of usable sessions in the pool.
131
117
  */
132
- get usableSessionsCount() {
118
+ async usableSessionsCount() {
119
+ await this.ensureInitialized();
133
120
  return this.sessions.filter((session) => session.isUsable()).length;
134
121
  }
135
122
  /**
136
123
  * Gets count of retired sessions in the pool.
137
124
  */
138
- get retiredSessionsCount() {
125
+ async retiredSessionsCount() {
126
+ await this.ensureInitialized();
139
127
  return this.sessions.filter((session) => !session.isUsable()).length;
140
128
  }
141
129
  /**
142
130
  * Starts periodic state persistence and potentially loads SessionPool state from {@link KeyValueStore}.
143
- * It is called automatically by the {@link SessionPool.open} function.
131
+ * Called automatically on first use of any public method.
144
132
  */
145
- async initialize() {
146
- if (this.isInitialized) {
147
- return;
133
+ async ensureInitialized() {
134
+ if (!this.initPromise) {
135
+ this.initPromise = this.setupPool();
148
136
  }
149
- this.keyValueStore = await KeyValueStore.open(this.persistStateKeyValueStoreId, { config: this.config });
137
+ return this.initPromise;
138
+ }
139
+ async setupPool() {
150
140
  if (!this.persistenceOptions.enable) {
151
- this.isInitialized = true;
152
141
  return;
153
142
  }
143
+ this.keyValueStore = await KeyValueStore.open(this.persistStateKeyValueStoreId ? { id: this.persistStateKeyValueStoreId } : null, {
144
+ config: serviceLocator.getConfiguration(),
145
+ });
154
146
  if (!this.persistStateKeyValueStoreId) {
155
147
  this.log.debug(`No 'persistStateKeyValueStoreId' options specified, this session pool's data has been saved in the KeyValueStore with the id: ${this.keyValueStore.id}`);
156
148
  }
@@ -158,7 +150,6 @@ export class SessionPool extends EventEmitter {
158
150
  await this._maybeLoadSessionPool();
159
151
  this._listener = this.persistState.bind(this);
160
152
  this.events.on("persistState" /* EventType.PERSIST_STATE */, this._listener);
161
- this.isInitialized = true;
162
153
  }
163
154
  /**
164
155
  * Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
@@ -167,7 +158,7 @@ export class SessionPool extends EventEmitter {
167
158
  * @param [options] The configuration options for the session being added to the session pool.
168
159
  */
169
160
  async addSession(options = {}) {
170
- this._throwIfNotInitialized();
161
+ await this.ensureInitialized();
171
162
  const { id } = options;
172
163
  if (id) {
173
164
  const sessionExists = this.sessionMap.has(id);
@@ -178,10 +169,22 @@ export class SessionPool extends EventEmitter {
178
169
  if (!this._hasSpaceForSession()) {
179
170
  this._removeRetiredSessions();
180
171
  }
181
- const newSession = options instanceof Session ? options : await this.createSessionFunction(this, { sessionOptions: options });
172
+ const newSession = options instanceof Session ? options : await this._invokeCreateSessionFunction(options);
182
173
  this.log.debug(`Adding new Session - ${newSession.id}`);
183
174
  this._addSession(newSession);
184
175
  }
176
+ /**
177
+ * Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
178
+ * but this allows you to add more sessions once the max pool size is reached.
179
+ * This also allows you to add session with overridden session options (e.g. with specific session id).
180
+ * @param [options] The configuration options for the session being added to the session pool.
181
+ */
182
+ async newSession(sessionOptions) {
183
+ await this.ensureInitialized();
184
+ const newSession = await this._invokeCreateSessionFunction(sessionOptions);
185
+ this._addSession(newSession);
186
+ return newSession;
187
+ }
185
188
  /**
186
189
  * Gets session.
187
190
  * If there is space for new session, it creates and returns new session.
@@ -190,21 +193,20 @@ export class SessionPool extends EventEmitter {
190
193
  * @param [sessionId] If provided, it returns the usable session with this id, `undefined` otherwise.
191
194
  */
192
195
  async getSession(sessionId) {
196
+ await this.ensureInitialized();
193
197
  await this.queue.wait();
194
198
  try {
195
- this._throwIfNotInitialized();
196
199
  if (sessionId) {
197
200
  const session = this.sessionMap.get(sessionId);
198
- if (session && session.isUsable())
201
+ if (session?.isUsable())
199
202
  return session;
200
203
  return undefined;
201
204
  }
202
- if (this._hasSpaceForSession()) {
203
- return await this._createSession();
204
- }
205
205
  const pickedSession = this._pickSession();
206
- if (pickedSession.isUsable()) {
206
+ if (pickedSession)
207
207
  return pickedSession;
208
+ if (this._hasSpaceForSession()) {
209
+ return await this._createSession();
208
210
  }
209
211
  this._removeRetiredSessions();
210
212
  return await this._createSession();
@@ -220,16 +222,18 @@ export class SessionPool extends EventEmitter {
220
222
  if (!this.persistenceOptions.enable && !options?.enable) {
221
223
  return;
222
224
  }
225
+ await this.ensureInitialized();
223
226
  await this.keyValueStore?.setValue(this.persistStateKey, null);
224
227
  }
225
228
  /**
226
229
  * Returns an object representing the internal state of the `SessionPool` instance.
227
230
  * Note that the object's fields can change in future releases.
228
231
  */
229
- getState() {
232
+ async getState() {
233
+ await this.ensureInitialized();
230
234
  return {
231
- usableSessionsCount: this.usableSessionsCount,
232
- retiredSessionsCount: this.retiredSessionsCount,
235
+ usableSessionsCount: await this.usableSessionsCount(),
236
+ retiredSessionsCount: await this.retiredSessionsCount(),
233
237
  sessions: this.sessions.map((session) => session.getState()),
234
238
  };
235
239
  }
@@ -242,18 +246,13 @@ export class SessionPool extends EventEmitter {
242
246
  if (!this.persistenceOptions.enable && !options?.enable) {
243
247
  return;
244
248
  }
249
+ await this.ensureInitialized();
245
250
  this.log.debug('Persisting state', {
246
251
  persistStateKeyValueStoreId: this.persistStateKeyValueStoreId,
247
252
  persistStateKey: this.persistStateKey,
248
253
  });
249
- // use half the interval of `persistState` to avoid race conditions
250
- const persistStateIntervalMillis = this.config.get('persistStateIntervalMillis');
251
- const timeoutSecs = persistStateIntervalMillis / 2_000;
252
254
  await this.keyValueStore
253
- .setValue(this.persistStateKey, this.getState(), {
254
- timeoutSecs,
255
- doNotRetryTimeouts: true,
256
- })
255
+ ?.setValue(this.persistStateKey, await this.getState())
257
256
  .catch((error) => this.log.warning(`Failed to persist the session pool stats to ${this.persistStateKey}`, { error }));
258
257
  }
259
258
  /**
@@ -261,16 +260,14 @@ export class SessionPool extends EventEmitter {
261
260
  * This function should be called after you are done with using the `SessionPool` instance.
262
261
  */
263
262
  async teardown() {
264
- this.events.off("persistState" /* EventType.PERSIST_STATE */, this._listener);
263
+ if (!this.initPromise)
264
+ return;
265
+ await this.ensureInitialized();
266
+ if (this._listener) {
267
+ this.events.off("persistState" /* EventType.PERSIST_STATE */, this._listener);
268
+ }
265
269
  await this.persistState();
266
270
  }
267
- /**
268
- * SessionPool should not work before initialization.
269
- */
270
- _throwIfNotInitialized() {
271
- if (!this.isInitialized)
272
- throw new Error('SessionPool is not initialized.');
273
- }
274
271
  /**
275
272
  * Removes retired `Session` instances from `SessionPool`.
276
273
  */
@@ -299,26 +296,39 @@ export class SessionPool extends EventEmitter {
299
296
  }
300
297
  /**
301
298
  * Creates new session without any extra behavior.
302
- * @param sessionPool
303
299
  * @param [options]
304
300
  * @param [options.sessionOptions] The configuration options for the session being created.
305
301
  * @returns New session.
306
302
  */
307
- _defaultCreateSessionFunction(sessionPool, options = {}) {
303
+ async _defaultCreateSessionFunction(options = {}) {
308
304
  ow(options, ow.object.exactShape({ sessionOptions: ow.optional.object }));
309
305
  const { sessionOptions = {} } = options;
310
- return new Session({
306
+ return new Session(sessionOptions);
307
+ }
308
+ /**
309
+ * Invokes `createSessionFunction` with `sessionOptions` already merged from pool-wide defaults and
310
+ * the supplied per-call overrides, so custom implementations don't need to spread `pool.sessionOptions` themselves.
311
+ *
312
+ * A default {@link SessionFingerprint} is generated up front (host OS as
313
+ * `platform`, a random valid `browser`/`device` for that platform). Pool-wide
314
+ * and per-call options override it, and a persisted fingerprint coming
315
+ * through `_maybeLoadSessionPool` naturally wins because it arrives in
316
+ * `perCallOptions`.
317
+ */
318
+ async _invokeCreateSessionFunction(perCallOptions) {
319
+ const sessionOptions = {
320
+ fingerprint: createDefaultSessionFingerprint(),
311
321
  ...this.sessionOptions,
312
- ...sessionOptions,
313
- sessionPool,
314
- });
322
+ ...perCallOptions,
323
+ };
324
+ return this.createSessionFunction({ sessionOptions });
315
325
  }
316
326
  /**
317
327
  * Creates new session and adds it to the pool.
318
328
  * @returns Newly created `Session` instance.
319
329
  */
320
330
  async _createSession() {
321
- const newSession = await this.createSessionFunction(this);
331
+ const newSession = await this._invokeCreateSessionFunction();
322
332
  this._addSession(newSession);
323
333
  this.log.debug(`Created new Session - ${newSession.id}`);
324
334
  return newSession;
@@ -330,18 +340,32 @@ export class SessionPool extends EventEmitter {
330
340
  return this.sessions.length < this.maxPoolSize;
331
341
  }
332
342
  /**
333
- * Picks random session from the `SessionPool`.
334
- * @returns Picked `Session`.
343
+ * Picks a session from the `SessionPool` according to the configured `sessionReuseStrategy`.
344
+ * Returns `undefined` when no session should be reused and a new one should be created instead.
335
345
  */
336
346
  _pickSession() {
337
- return this.sessions[this._getRandomIndex()]; // Or maybe we should let the developer to customize the picking algorithm
347
+ if (this.sessionReuseStrategy !== 'use-until-failure' && this._hasSpaceForSession())
348
+ return undefined;
349
+ if (this.sessionReuseStrategy === 'use-until-failure') {
350
+ return this.sessions.find((session) => session.isUsable());
351
+ }
352
+ let picked;
353
+ if (this.sessionReuseStrategy === 'round-robin') {
354
+ const index = this.roundRobinIndex % this.sessions.length;
355
+ this.roundRobinIndex = index + 1;
356
+ picked = this.sessions[index];
357
+ }
358
+ else {
359
+ picked = this.sessions[this._getRandomIndex()];
360
+ }
361
+ return picked.isUsable() ? picked : undefined;
338
362
  }
339
363
  /**
340
364
  * Potentially loads `SessionPool`.
341
365
  * If the state was persisted it loads the `SessionPool` from the persisted state.
342
366
  */
343
367
  async _maybeLoadSessionPool() {
344
- const loadedSessionPool = await this.keyValueStore.getValue(this.persistStateKey);
368
+ const loadedSessionPool = await this.keyValueStore?.getValue(this.persistStateKey);
345
369
  if (!loadedSessionPool)
346
370
  return;
347
371
  // Invalidate old sessions and load active sessions only
@@ -350,26 +374,14 @@ export class SessionPool extends EventEmitter {
350
374
  persistStateKey: this.persistStateKey,
351
375
  });
352
376
  for (const sessionObject of loadedSessionPool.sessions) {
353
- sessionObject.sessionPool = this;
354
377
  sessionObject.createdAt = new Date(sessionObject.createdAt);
355
378
  sessionObject.expiresAt = new Date(sessionObject.expiresAt);
356
- const recreatedSession = await this.createSessionFunction(this, { sessionOptions: sessionObject });
379
+ const recreatedSession = await this._invokeCreateSessionFunction(sessionObject);
357
380
  if (recreatedSession.isUsable()) {
358
381
  this._addSession(recreatedSession);
359
382
  }
360
383
  }
361
- this.log.debug(`${this.usableSessionsCount} active sessions loaded from KeyValueStore`);
362
- }
363
- /**
364
- * Opens a SessionPool and returns a promise resolving to an instance
365
- * of the {@link SessionPool} class that is already initialized.
366
- *
367
- * For more details and code examples, see the {@link SessionPool} class.
368
- */
369
- static async open(options, config) {
370
- const sessionPool = new SessionPool(options, config);
371
- await sessionPool.initialize();
372
- return sessionPool;
384
+ this.log.debug(`${this.sessions.length} active sessions loaded from KeyValueStore`);
373
385
  }
374
386
  }
375
387
  //# sourceMappingURL=session_pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session_pool.js","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session_pool.js","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"access_checking.d.ts","sourceRoot":"","sources":["../../src/storages/access_checking.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAA4C,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAU,CAAC,EAAE,eAAe,MAAM,IAAI,EAAE,UAAU,MAAM,SAAS,CAAC,CAAC,CAAC,eAC7D,CAAC"}
1
+ {"version":3,"file":"access_checking.d.ts","sourceRoot":"","sources":["../../src/storages/access_checking.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKhD;;GAEG;AACH,eAAO,MAAM,kBAAkB,wBAG9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAU,CAAC,EAAE,eAAe,MAAM,IAAI,EAAE,UAAU,MAAM,SAAS,CAAC,CAAC,CAAC,eAC7D,CAAC"}
@@ -1,9 +1,13 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { tryCancel } from '@apify/timeout';
2
3
  const storage = new AsyncLocalStorage();
3
4
  /**
4
5
  * Invoke a storage access checker function defined using {@link withCheckedStorageAccess} higher up in the call stack.
5
6
  */
6
- export const checkStorageAccess = () => storage.getStore()?.checkFunction();
7
+ export const checkStorageAccess = () => {
8
+ tryCancel();
9
+ return storage.getStore()?.checkFunction();
10
+ };
7
11
  /**
8
12
  * Define a storage access checker function that should be used by calls to {@link checkStorageAccess} in the callbacks.
9
13
  *
@@ -1 +1 @@
1
- {"version":3,"file":"access_checking.js","sourceRoot":"","sources":["../../src/storages/access_checking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAiC,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAK,aAAyB,EAAE,QAA4B,EAAE,EAAE,CACzG,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"access_checking.js","sourceRoot":"","sources":["../../src/storages/access_checking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAiC,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACnC,SAAS,EAAE,CAAC;IACZ,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAK,aAAyB,EAAE,QAA4B,EAAE,EAAE,CACzG,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC"}