@crawlee/core 4.0.0-beta.3 → 4.0.0-beta.30

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 (170) hide show
  1. package/README.md +5 -1
  2. package/autoscaling/autoscaled_pool.d.ts +1 -3
  3. package/autoscaling/autoscaled_pool.d.ts.map +1 -1
  4. package/autoscaling/autoscaled_pool.js +1 -7
  5. package/autoscaling/autoscaled_pool.js.map +1 -1
  6. package/autoscaling/snapshotter.d.ts +0 -10
  7. package/autoscaling/snapshotter.d.ts.map +1 -1
  8. package/autoscaling/snapshotter.js +15 -28
  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 +4 -77
  15. package/configuration.d.ts.map +1 -1
  16. package/configuration.js +5 -101
  17. package/configuration.js.map +1 -1
  18. package/cookie_utils.d.ts +1 -1
  19. package/cookie_utils.d.ts.map +1 -1
  20. package/cookie_utils.js +4 -6
  21. package/cookie_utils.js.map +1 -1
  22. package/crawlers/context_pipeline.d.ts +61 -0
  23. package/crawlers/context_pipeline.d.ts.map +1 -0
  24. package/crawlers/context_pipeline.js +99 -0
  25. package/crawlers/context_pipeline.js.map +1 -0
  26. package/crawlers/crawler_commons.d.ts +12 -20
  27. package/crawlers/crawler_commons.d.ts.map +1 -1
  28. package/crawlers/crawler_commons.js +0 -8
  29. package/crawlers/crawler_commons.js.map +1 -1
  30. package/crawlers/error_snapshotter.d.ts +3 -2
  31. package/crawlers/error_snapshotter.d.ts.map +1 -1
  32. package/crawlers/error_snapshotter.js +2 -2
  33. package/crawlers/error_snapshotter.js.map +1 -1
  34. package/crawlers/error_tracker.d.ts +2 -1
  35. package/crawlers/error_tracker.d.ts.map +1 -1
  36. package/crawlers/error_tracker.js.map +1 -1
  37. package/crawlers/index.d.ts +1 -1
  38. package/crawlers/index.d.ts.map +1 -1
  39. package/crawlers/index.js +1 -1
  40. package/crawlers/index.js.map +1 -1
  41. package/crawlers/internals/types.d.ts +8 -0
  42. package/crawlers/internals/types.d.ts.map +1 -0
  43. package/crawlers/internals/types.js +2 -0
  44. package/crawlers/internals/types.js.map +1 -0
  45. package/crawlers/statistics.d.ts +13 -13
  46. package/crawlers/statistics.d.ts.map +1 -1
  47. package/crawlers/statistics.js +20 -16
  48. package/crawlers/statistics.js.map +1 -1
  49. package/enqueue_links/enqueue_links.d.ts +30 -18
  50. package/enqueue_links/enqueue_links.d.ts.map +1 -1
  51. package/enqueue_links/enqueue_links.js +39 -21
  52. package/enqueue_links/enqueue_links.js.map +1 -1
  53. package/enqueue_links/shared.d.ts +24 -7
  54. package/enqueue_links/shared.d.ts.map +1 -1
  55. package/enqueue_links/shared.js +66 -37
  56. package/enqueue_links/shared.js.map +1 -1
  57. package/errors.d.ts +18 -0
  58. package/errors.d.ts.map +1 -1
  59. package/errors.js +29 -0
  60. package/errors.js.map +1 -1
  61. package/events/event_manager.d.ts +7 -4
  62. package/events/event_manager.d.ts.map +1 -1
  63. package/events/event_manager.js +5 -7
  64. package/events/event_manager.js.map +1 -1
  65. package/events/local_event_manager.d.ts +14 -4
  66. package/events/local_event_manager.d.ts.map +1 -1
  67. package/events/local_event_manager.js +26 -37
  68. package/events/local_event_manager.js.map +1 -1
  69. package/index.d.ts +2 -1
  70. package/index.d.ts.map +1 -1
  71. package/index.js +2 -1
  72. package/index.js.map +1 -1
  73. package/log.d.ts +4 -2
  74. package/log.d.ts.map +1 -1
  75. package/log.js.map +1 -1
  76. package/package.json +6 -7
  77. package/proxy_configuration.d.ts +16 -93
  78. package/proxy_configuration.d.ts.map +1 -1
  79. package/proxy_configuration.js +15 -51
  80. package/proxy_configuration.js.map +1 -1
  81. package/recoverable_state.d.ts +122 -0
  82. package/recoverable_state.d.ts.map +1 -0
  83. package/recoverable_state.js +138 -0
  84. package/recoverable_state.js.map +1 -0
  85. package/request.d.ts +39 -5
  86. package/request.d.ts.map +1 -1
  87. package/request.js +52 -12
  88. package/request.js.map +1 -1
  89. package/service_locator.d.ts +139 -0
  90. package/service_locator.d.ts.map +1 -0
  91. package/service_locator.js +252 -0
  92. package/service_locator.js.map +1 -0
  93. package/session_pool/session.d.ts +7 -20
  94. package/session_pool/session.d.ts.map +1 -1
  95. package/session_pool/session.js +16 -4
  96. package/session_pool/session.js.map +1 -1
  97. package/session_pool/session_pool.d.ts +12 -7
  98. package/session_pool/session_pool.d.ts.map +1 -1
  99. package/session_pool/session_pool.js +22 -11
  100. package/session_pool/session_pool.js.map +1 -1
  101. package/storages/dataset.d.ts +7 -0
  102. package/storages/dataset.d.ts.map +1 -1
  103. package/storages/dataset.js +14 -4
  104. package/storages/dataset.js.map +1 -1
  105. package/storages/index.d.ts +2 -0
  106. package/storages/index.d.ts.map +1 -1
  107. package/storages/index.js +2 -0
  108. package/storages/index.js.map +1 -1
  109. package/storages/key_value_store.d.ts +13 -1
  110. package/storages/key_value_store.d.ts.map +1 -1
  111. package/storages/key_value_store.js +16 -10
  112. package/storages/key_value_store.js.map +1 -1
  113. package/storages/request_list.d.ts +9 -9
  114. package/storages/request_list.d.ts.map +1 -1
  115. package/storages/request_list.js +10 -6
  116. package/storages/request_list.js.map +1 -1
  117. package/storages/request_list_adapter.d.ts +58 -0
  118. package/storages/request_list_adapter.d.ts.map +1 -0
  119. package/storages/request_list_adapter.js +81 -0
  120. package/storages/request_list_adapter.js.map +1 -0
  121. package/storages/request_manager_tandem.d.ts +68 -0
  122. package/storages/request_manager_tandem.d.ts.map +1 -0
  123. package/storages/request_manager_tandem.js +124 -0
  124. package/storages/request_manager_tandem.js.map +1 -0
  125. package/storages/request_provider.d.ts +74 -7
  126. package/storages/request_provider.d.ts.map +1 -1
  127. package/storages/request_provider.js +89 -52
  128. package/storages/request_provider.js.map +1 -1
  129. package/storages/request_queue.d.ts +1 -1
  130. package/storages/request_queue.d.ts.map +1 -1
  131. package/storages/request_queue.js +2 -2
  132. package/storages/request_queue.js.map +1 -1
  133. package/storages/request_queue_v2.d.ts +3 -3
  134. package/storages/request_queue_v2.d.ts.map +1 -1
  135. package/storages/request_queue_v2.js +4 -5
  136. package/storages/request_queue_v2.js.map +1 -1
  137. package/storages/sitemap_request_list.d.ts +5 -5
  138. package/storages/sitemap_request_list.d.ts.map +1 -1
  139. package/storages/sitemap_request_list.js +6 -5
  140. package/storages/sitemap_request_list.js.map +1 -1
  141. package/storages/storage_manager.d.ts +10 -8
  142. package/storages/storage_manager.d.ts.map +1 -1
  143. package/storages/storage_manager.js +12 -22
  144. package/storages/storage_manager.js.map +1 -1
  145. package/storages/utils.d.ts.map +1 -1
  146. package/storages/utils.js +4 -3
  147. package/storages/utils.js.map +1 -1
  148. package/typedefs.d.ts +1 -1
  149. package/typedefs.d.ts.map +1 -1
  150. package/crawlers/crawler_extension.d.ts +0 -12
  151. package/crawlers/crawler_extension.d.ts.map +0 -1
  152. package/crawlers/crawler_extension.js +0 -14
  153. package/crawlers/crawler_extension.js.map +0 -1
  154. package/http_clients/base-http-client.d.ts +0 -134
  155. package/http_clients/base-http-client.d.ts.map +0 -1
  156. package/http_clients/base-http-client.js +0 -33
  157. package/http_clients/base-http-client.js.map +0 -1
  158. package/http_clients/form-data-like.d.ts +0 -67
  159. package/http_clients/form-data-like.d.ts.map +0 -1
  160. package/http_clients/form-data-like.js +0 -5
  161. package/http_clients/form-data-like.js.map +0 -1
  162. package/http_clients/got-scraping-http-client.d.ts +0 -15
  163. package/http_clients/got-scraping-http-client.d.ts.map +0 -1
  164. package/http_clients/got-scraping-http-client.js +0 -69
  165. package/http_clients/got-scraping-http-client.js.map +0 -1
  166. package/http_clients/index.d.ts +0 -3
  167. package/http_clients/index.d.ts.map +0 -1
  168. package/http_clients/index.js +0 -3
  169. package/http_clients/index.js.map +0 -1
  170. package/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,252 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { MemoryStorage } from '@crawlee/memory-storage';
3
+ import log from '@apify/log';
4
+ import { Configuration } from './configuration.js';
5
+ import { ServiceConflictError } from './errors.js';
6
+ import { LocalEventManager } from './events/local_event_manager.js';
7
+ /**
8
+ * Service locator for managing the services used by Crawlee.
9
+ *
10
+ * All services are initialized to their default value lazily.
11
+ *
12
+ * There are two primary usage patterns:
13
+ *
14
+ * **1. Global service locator (for default services):**
15
+ * ```typescript
16
+ * import { serviceLocator, BasicCrawler } from 'crawlee';
17
+ *
18
+ * // Optionally configure global services before creating crawlers
19
+ * serviceLocator.setStorageClient(myCustomClient);
20
+ *
21
+ * // Crawler uses global services
22
+ * const crawler = new BasicCrawler({ ... });
23
+ * ```
24
+ *
25
+ * **2. Per-crawler services (recommended for isolation):**
26
+ * ```typescript
27
+ * import { BasicCrawler, Configuration, LocalEventManager } from 'crawlee';
28
+ * import { MemoryStorage } from '@crawlee/memory-storage';
29
+ *
30
+ * const crawler = new BasicCrawler({
31
+ * requestHandler: async ({ request }) => { ... },
32
+ * configuration: new Configuration({ ... }), // custom config
33
+ * storageClient: new MemoryStorage(), // custom storage
34
+ * eventManager: LocalEventManager.fromConfig(), // custom events
35
+ * });
36
+ * // Crawler has its own isolated ServiceLocator instance
37
+ * ```
38
+ */
39
+ export class ServiceLocator {
40
+ configuration;
41
+ eventManager;
42
+ storageClient;
43
+ /**
44
+ * Storage managers for Dataset, KeyValueStore, and RequestQueue.
45
+ * Manages caching and lifecycle of storage instances.
46
+ */
47
+ storageManagers = new Map();
48
+ /**
49
+ * Creates a new ServiceLocator instance.
50
+ *
51
+ * @param configuration Optional configuration instance to use
52
+ * @param eventManager Optional event manager instance to use
53
+ * @param storageClient Optional storage client instance to use
54
+ */
55
+ constructor(configuration, eventManager, storageClient) {
56
+ this.configuration = configuration;
57
+ this.eventManager = eventManager;
58
+ this.storageClient = storageClient;
59
+ }
60
+ getConfiguration() {
61
+ if (!this.configuration) {
62
+ log.debug('No configuration set, implicitly creating and using default Configuration.');
63
+ this.configuration = new Configuration();
64
+ }
65
+ return this.configuration;
66
+ }
67
+ setConfiguration(configuration) {
68
+ // Same instance, no need to do anything
69
+ if (this.configuration === configuration) {
70
+ return;
71
+ }
72
+ // Already have a different configuration that was retrieved
73
+ if (this.configuration) {
74
+ throw new ServiceConflictError('Configuration', configuration, this.configuration);
75
+ }
76
+ this.configuration = configuration;
77
+ }
78
+ getEventManager() {
79
+ if (!this.eventManager) {
80
+ log.debug('No event manager set, implicitly creating and using default LocalEventManager.');
81
+ if (!this.configuration) {
82
+ log.warning('Implicit creation of event manager will implicitly set configuration as side effect. ' +
83
+ 'It is advised to explicitly first set the configuration instead.');
84
+ }
85
+ this.eventManager = LocalEventManager.fromConfig(this.getConfiguration());
86
+ }
87
+ return this.eventManager;
88
+ }
89
+ setEventManager(eventManager) {
90
+ // Same instance, no need to do anything
91
+ if (this.eventManager === eventManager) {
92
+ return;
93
+ }
94
+ // Already have a different event manager that was retrieved
95
+ if (this.eventManager) {
96
+ throw new ServiceConflictError('EventManager', eventManager, this.eventManager);
97
+ }
98
+ this.eventManager = eventManager;
99
+ }
100
+ getStorageClient() {
101
+ if (!this.storageClient) {
102
+ log.debug('No storage client set, implicitly creating and using default MemoryStorage.');
103
+ if (!this.configuration) {
104
+ log.warning('Implicit creation of storage client will implicitly set configuration as side effect. ' +
105
+ 'It is advised to explicitly first set the configuration instead.');
106
+ }
107
+ const config = this.getConfiguration();
108
+ this.storageClient = new MemoryStorage({
109
+ persistStorage: config.get('persistStorage'),
110
+ });
111
+ }
112
+ return this.storageClient;
113
+ }
114
+ setStorageClient(storageClient) {
115
+ // Same instance, no need to do anything
116
+ if (this.storageClient === storageClient) {
117
+ return;
118
+ }
119
+ // Already have a different storage client that was retrieved
120
+ if (this.storageClient) {
121
+ throw new ServiceConflictError('StorageClient', storageClient, this.storageClient);
122
+ }
123
+ this.storageClient = storageClient;
124
+ }
125
+ getStorageManager(constructor) {
126
+ return this.storageManagers.get(constructor);
127
+ }
128
+ setStorageManager(constructor, storageManager) {
129
+ if (this.storageManagers.has(constructor)) {
130
+ throw new ServiceConflictError(`StorageManager(${constructor.name})`, storageManager, this.storageManagers.get(constructor));
131
+ }
132
+ this.storageManagers.set(constructor, storageManager);
133
+ }
134
+ clearStorageManagerCache() {
135
+ this.storageManagers.forEach((manager) => {
136
+ // KeyValueStore has a clearCache method on its instances
137
+ // TODO this uses fragile string matching and `any` casts into private fields - remove as part of
138
+ // https://github.com/apify/crawlee/issues/3075 (Storage instance management will be reworked significantly)
139
+ if (manager.name === 'KeyValueStore') {
140
+ manager.cache?.forEach((item) => {
141
+ item.clearCache?.();
142
+ });
143
+ }
144
+ });
145
+ this.storageManagers.clear();
146
+ }
147
+ reset() {
148
+ this.configuration = undefined;
149
+ this.eventManager = undefined;
150
+ this.storageClient = undefined;
151
+ this.clearStorageManagerCache();
152
+ }
153
+ }
154
+ /**
155
+ * Used as the default service provider when crawlers don't specify custom services.
156
+ */
157
+ const globalServiceLocator = new ServiceLocator();
158
+ const serviceLocatorStorage = new AsyncLocalStorage();
159
+ /**
160
+ * Wraps all methods on `target` so that any code they invoke will see the given
161
+ * `serviceLocator` via `AsyncLocalStorage`, rather than the global one.
162
+ *
163
+ * Walks the prototype chain and replaces each method on the *instance* (not the prototype)
164
+ * with a wrapper that calls `serviceLocatorStorage.run(serviceLocator, originalMethod)`.
165
+ *
166
+ * The `AsyncLocalStorage` context propagates through the entire sync/async call tree of each
167
+ * wrapped method — including `super` calls, since the prototype methods execute within the
168
+ * context established by the instance-level wrapper.
169
+ *
170
+ * @internal
171
+ * @returns Scope control functions: `run` executes a callback within the scoped context,
172
+ * `enterScope`/`exitScope` allow entering/leaving the scope imperatively (e.g., for constructor bodies).
173
+ */
174
+ export function bindMethodsToServiceLocator(serviceLocator, target) {
175
+ let proto = Object.getPrototypeOf(target);
176
+ while (proto !== null && proto !== Object.prototype) {
177
+ const propertyKeys = [...Object.getOwnPropertyNames(proto), ...Object.getOwnPropertySymbols(proto)];
178
+ for (const propertyKey of propertyKeys) {
179
+ const descriptor = Object.getOwnPropertyDescriptor(proto, propertyKey);
180
+ // We use property descriptors rather than accessing target[propertyKey] directly,
181
+ // because that would trigger getters and cause unwanted side effects.
182
+ // Skip getters, setters, and constructors — only wrap regular methods.
183
+ if (propertyKey === 'constructor' ||
184
+ !descriptor ||
185
+ descriptor.get ||
186
+ descriptor.set ||
187
+ typeof descriptor.value !== 'function')
188
+ continue;
189
+ const original = descriptor.value;
190
+ target[propertyKey] = (...args) => {
191
+ return serviceLocatorStorage.run(serviceLocator, () => {
192
+ return original.apply(target, args);
193
+ });
194
+ };
195
+ }
196
+ proto = Object.getPrototypeOf(proto);
197
+ }
198
+ let previousStore;
199
+ return {
200
+ run: (fn) => serviceLocatorStorage.run(serviceLocator, fn),
201
+ enterScope: () => {
202
+ previousStore = serviceLocatorStorage.getStore();
203
+ serviceLocatorStorage.enterWith(serviceLocator);
204
+ },
205
+ exitScope: () => {
206
+ serviceLocatorStorage.enterWith(previousStore); // casting to any so that `undefined` is accepted - this "unsets" the AsyncLocalStorage
207
+ },
208
+ };
209
+ }
210
+ export const serviceLocator = {
211
+ getConfiguration() {
212
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
213
+ return currentServiceLocator.getConfiguration();
214
+ },
215
+ setConfiguration(configuration) {
216
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
217
+ currentServiceLocator.setConfiguration(configuration);
218
+ },
219
+ getEventManager() {
220
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
221
+ return currentServiceLocator.getEventManager();
222
+ },
223
+ setEventManager(eventManager) {
224
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
225
+ currentServiceLocator.setEventManager(eventManager);
226
+ },
227
+ getStorageClient() {
228
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
229
+ return currentServiceLocator.getStorageClient();
230
+ },
231
+ setStorageClient(storageClient) {
232
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
233
+ currentServiceLocator.setStorageClient(storageClient);
234
+ },
235
+ getStorageManager(constructor) {
236
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
237
+ return currentServiceLocator.getStorageManager(constructor);
238
+ },
239
+ setStorageManager(constructor, storageManager) {
240
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
241
+ currentServiceLocator.setStorageManager(constructor, storageManager);
242
+ },
243
+ clearStorageManagerCache() {
244
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
245
+ currentServiceLocator.clearStorageManagerCache();
246
+ },
247
+ reset() {
248
+ const currentServiceLocator = serviceLocatorStorage.getStore() ?? globalServiceLocator;
249
+ currentServiceLocator.reset();
250
+ },
251
+ };
252
+ //# sourceMappingURL=service_locator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service_locator.js","sourceRoot":"","sources":["../src/service_locator.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,7 @@
1
- import type { Cookie as CookieObject, Dictionary } from '@crawlee/types';
2
- import type { Cookie, SerializedCookieJar } from 'tough-cookie';
1
+ import type { Cookie as CookieObject, Dictionary, ISession, ProxyInfo, SessionState } from '@crawlee/types';
2
+ import type { Cookie } from 'tough-cookie';
3
3
  import { CookieJar } from 'tough-cookie';
4
4
  import type { Log } from '@apify/log';
5
- import type { ResponseLike } from '../cookie_utils.js';
6
- /**
7
- * Persistable {@link Session} state.
8
- */
9
- export interface SessionState {
10
- id: string;
11
- cookieJar: SerializedCookieJar;
12
- userData: object;
13
- errorScore: number;
14
- maxErrorScore: number;
15
- errorScoreDecrement: number;
16
- usageCount: number;
17
- maxUsageCount: number;
18
- expiresAt: string;
19
- createdAt: string;
20
- }
21
5
  export interface SessionOptions {
22
6
  /** Id of session used for generating fingerprints. It is used as proxy session name. */
23
7
  id?: string;
@@ -63,6 +47,7 @@ export interface SessionOptions {
63
47
  log?: Log;
64
48
  errorScore?: number;
65
49
  cookieJar?: CookieJar;
50
+ proxyInfo?: ProxyInfo;
66
51
  }
67
52
  /**
68
53
  * Sessions are used to store information such as cookies and can be used for generating fingerprints and proxy sessions.
@@ -70,7 +55,7 @@ export interface SessionOptions {
70
55
  * Session internal state can be enriched with custom user data for example some authorization tokens and specific headers in general.
71
56
  * @category Scaling
72
57
  */
73
- export declare class Session {
58
+ export declare class Session implements ISession {
74
59
  readonly id: string;
75
60
  private maxAgeSecs;
76
61
  userData: Dictionary;
@@ -82,6 +67,7 @@ export declare class Session {
82
67
  private _maxUsageCount;
83
68
  private sessionPool;
84
69
  private _errorScore;
70
+ private _proxyInfo?;
85
71
  private _cookieJar;
86
72
  private log;
87
73
  get errorScore(): number;
@@ -92,6 +78,7 @@ export declare class Session {
92
78
  get createdAt(): Date;
93
79
  get maxUsageCount(): number;
94
80
  get cookieJar(): CookieJar;
81
+ get proxyInfo(): ProxyInfo | undefined;
95
82
  /**
96
83
  * Session configuration.
97
84
  */
@@ -156,7 +143,7 @@ export declare class Session {
156
143
  *
157
144
  * It then parses and saves the cookies from the `set-cookie` header, if available.
158
145
  */
159
- setCookiesFromResponse(response: ResponseLike): void;
146
+ setCookiesFromResponse(response: Response): void;
160
147
  /**
161
148
  * Saves an array with cookie objects to be used with the session.
162
149
  * The objects should be in the format that
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session_pool/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session_pool/session.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export class Session {
23
23
  _maxUsageCount;
24
24
  sessionPool;
25
25
  _errorScore;
26
+ _proxyInfo;
26
27
  _cookieJar;
27
28
  log;
28
29
  get errorScore() {
@@ -49,6 +50,9 @@ export class Session {
49
50
  get cookieJar() {
50
51
  return this._cookieJar;
51
52
  }
53
+ get proxyInfo() {
54
+ return this._proxyInfo;
55
+ }
52
56
  /**
53
57
  * Session configuration.
54
58
  */
@@ -57,6 +61,7 @@ export class Session {
57
61
  sessionPool: ow.object.instanceOf(EventEmitter),
58
62
  id: ow.optional.string,
59
63
  cookieJar: ow.optional.object,
64
+ proxyInfo: ow.optional.object,
60
65
  maxAgeSecs: ow.optional.number,
61
66
  userData: ow.optional.object,
62
67
  maxErrorScore: ow.optional.number,
@@ -68,10 +73,11 @@ export class Session {
68
73
  maxUsageCount: ow.optional.number,
69
74
  log: ow.optional.object,
70
75
  }));
71
- const { sessionPool, id = `session_${cryptoRandomObjectId(10)}`, cookieJar = new CookieJar(), maxAgeSecs = 3000, userData = {}, maxErrorScore = 3, errorScoreDecrement = 0.5, createdAt = new Date(), usageCount = 0, errorScore = 0, maxUsageCount = 50, log = defaultLog, } = options;
76
+ const { sessionPool, id = `session_${cryptoRandomObjectId(10)}`, cookieJar = new CookieJar(), proxyInfo = undefined, maxAgeSecs = 3000, userData = {}, maxErrorScore = 3, errorScoreDecrement = 0.5, createdAt = new Date(), usageCount = 0, errorScore = 0, maxUsageCount = 50, log = defaultLog, } = options;
72
77
  const { expiresAt = getDefaultCookieExpirationDate(maxAgeSecs) } = options;
73
78
  this.log = log.child({ prefix: 'Session' });
74
79
  this._cookieJar = cookieJar.setCookie ? cookieJar : CookieJar.fromJSON(JSON.stringify(cookieJar));
80
+ this._proxyInfo = proxyInfo;
75
81
  this.id = id;
76
82
  this.maxAgeSecs = maxAgeSecs;
77
83
  this.userData = userData;
@@ -133,6 +139,7 @@ export class Session {
133
139
  return {
134
140
  id: this.id,
135
141
  cookieJar: this.cookieJar.toJSON(),
142
+ proxyInfo: this._proxyInfo,
136
143
  userData: this.userData,
137
144
  maxErrorScore: this.maxErrorScore,
138
145
  errorScoreDecrement: this.errorScoreDecrement,
@@ -192,7 +199,7 @@ export class Session {
192
199
  setCookiesFromResponse(response) {
193
200
  try {
194
201
  const cookies = getCookiesFromResponse(response).filter((c) => c);
195
- this._setCookies(cookies, typeof response.url === 'function' ? response.url() : response.url);
202
+ this._setCookies(cookies, response.url);
196
203
  }
197
204
  catch (e) {
198
205
  const err = e;
@@ -238,7 +245,12 @@ export class Session {
238
245
  * Sets a cookie within this session for the specific URL.
239
246
  */
240
247
  setCookie(rawCookie, url) {
241
- this.cookieJar.setCookieSync(rawCookie, url);
248
+ try {
249
+ this.cookieJar.setCookieSync(rawCookie, url);
250
+ }
251
+ catch (e) {
252
+ this.log.warning('Could not set cookie.', { url, error: e.message });
253
+ }
242
254
  }
243
255
  /**
244
256
  * Sets cookies.
@@ -256,7 +268,7 @@ export class Session {
256
268
  }
257
269
  // if invalid cookies are provided just log the exception. No need to retry the request automatically.
258
270
  if (errorMessages.length) {
259
- this.log.debug('Could not set cookies.', { errorMessages });
271
+ this.log.warning('Could not set cookies.', { errorMessages });
260
272
  }
261
273
  }
262
274
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session_pool/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session_pool/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EACH,8BAA8B,EAC9B,sBAAsB,EACtB,8BAA8B,EAC9B,8BAA8B,GACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AA4DpD;;;;;GAKG;AACH,MAAM,OAAO,OAAO;IACP,EAAE,CAAS;IACZ,UAAU,CAAS;IAC3B,QAAQ,CAAa;IACb,cAAc,CAAS;IACvB,oBAAoB,CAAS;IAC7B,UAAU,CAAO;IACjB,UAAU,CAAO;IACjB,WAAW,CAAS;IACpB,cAAc,CAAS;IACvB,WAAW,CAA0C;IACrD,WAAW,CAAS;IACpB,UAAU,CAAa;IACvB,UAAU,CAAY;IACtB,GAAG,CAAM;IAEjB,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY,OAAuB;QAC/B,EAAE,CACE,OAAO,EACP,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;YACjB,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;YAC/C,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YACtB,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC7B,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC7B,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC9B,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC5B,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YACjC,mBAAmB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YACvC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YAC3B,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YAC3B,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC9B,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC9B,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;YACjC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;SAC1B,CAAC,CACL,CAAC;QAEF,MAAM,EACF,WAAW,EACX,EAAE,GAAG,WAAW,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAC1C,SAAS,GAAG,IAAI,SAAS,EAAE,EAC3B,SAAS,GAAG,SAAS,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,EAAE,EACb,aAAa,GAAG,CAAC,EACjB,mBAAmB,GAAG,GAAG,EACzB,SAAS,GAAG,IAAI,IAAI,EAAE,EACtB,UAAU,GAAG,CAAC,EACd,UAAU,GAAG,CAAC,EACd,aAAa,GAAG,EAAE,EAClB,GAAG,GAAG,UAAU,GACnB,GAAG,OAAO,CAAC;QAEZ,MAAM,EAAE,SAAS,GAAG,8BAA8B,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC;QAE3E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5C,IAAI,CAAC,UAAU,GAAI,SAAS,CAAC,SAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAEhD,WAAW;QACX,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,qDAAqD;QACpF,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,yDAAyD;QACxF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,sBAAsB;QAClB,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACpF,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAG;YACnC,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACF,6DAA6D;QAC7D,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;QACxC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAEtB,wDAAwD;QACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,0BAA0B,CAAC,UAAkB;QACzC,sEAAsE;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,QAAkB;QACrC,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,CAAU,CAAC;YACvB,+DAA+D;YAC/D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,OAAuB,EAAE,GAAW;QAC3C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,GAAW;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,SAAiB,EAAE,GAAW;QACpC,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC;IACL,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,OAAiB,EAAE,GAAW;QAChD,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,MAAM,GAAG,GAAG,CAAU,CAAC;gBACvB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,sGAAsG;QACtG,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;OAEG;IACO,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;CACJ"}
@@ -1,6 +1,5 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
  import type { Log } from '@apify/log';
3
- import { Configuration } from '../configuration.js';
4
3
  import type { PersistenceOptions } from '../crawlers/statistics.js';
5
4
  import type { EventManager } from '../events/event_manager.js';
6
5
  import { KeyValueStore } from '../storages/key_value_store.js';
@@ -34,7 +33,7 @@ export interface SessionPoolOptions {
34
33
  */
35
34
  persistStateKey?: string;
36
35
  /**
37
- * Custom function that should return `Session` instance.
36
+ * Custom function that should return a `Session` instance, or a promise resolving to such instance.
38
37
  * Any error thrown from this function will terminate the process.
39
38
  * Function receives `SessionPool` instance as a parameter
40
39
  */
@@ -118,7 +117,6 @@ export interface SessionPoolOptions {
118
117
  * @category Scaling
119
118
  */
120
119
  export declare class SessionPool extends EventEmitter {
121
- readonly config: Configuration;
122
120
  protected log: Log;
123
121
  protected maxPoolSize: number;
124
122
  protected createSessionFunction: CreateSession;
@@ -137,7 +135,7 @@ export declare class SessionPool extends EventEmitter {
137
135
  /**
138
136
  * @internal
139
137
  */
140
- constructor(options?: SessionPoolOptions, config?: Configuration);
138
+ constructor(options?: SessionPoolOptions);
141
139
  /**
142
140
  * Gets count of usable sessions in the pool.
143
141
  */
@@ -158,6 +156,13 @@ export declare class SessionPool extends EventEmitter {
158
156
  * @param [options] The configuration options for the session being added to the session pool.
159
157
  */
160
158
  addSession(options?: Session | SessionOptions): Promise<void>;
159
+ /**
160
+ * Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
161
+ * but this allows you to add more sessions once the max pool size is reached.
162
+ * This also allows you to add session with overridden session options (e.g. with specific session id).
163
+ * @param [options] The configuration options for the session being added to the session pool.
164
+ */
165
+ newSession(sessionOptions?: SessionOptions): Promise<Session>;
161
166
  /**
162
167
  * Gets session.
163
168
  * If there is space for new session, it creates and returns new session.
@@ -181,7 +186,7 @@ export declare class SessionPool extends EventEmitter {
181
186
  usableSessionsCount: number;
182
187
  retiredSessionsCount: number;
183
188
  // @ts-ignore optional peer dependency or compatibility with es2022
184
- sessions: import("./session.js").SessionState[];
189
+ sessions: import("@crawlee/types").SessionState[];
185
190
  };
186
191
  /**
187
192
  * Persists the current state of the `SessionPool` into the default {@link KeyValueStore}.
@@ -220,7 +225,7 @@ export declare class SessionPool extends EventEmitter {
220
225
  */
221
226
  protected _defaultCreateSessionFunction(sessionPool: SessionPool, options?: {
222
227
  sessionOptions?: SessionOptions;
223
- }): Session;
228
+ }): Promise<Session>;
224
229
  /**
225
230
  * Creates new session and adds it to the pool.
226
231
  * @returns Newly created `Session` instance.
@@ -246,6 +251,6 @@ export declare class SessionPool extends EventEmitter {
246
251
  *
247
252
  * For more details and code examples, see the {@link SessionPool} class.
248
253
  */
249
- static open(options?: SessionPoolOptions, config?: Configuration): Promise<SessionPool>;
254
+ static open(options?: SessionPoolOptions): Promise<SessionPool>;
250
255
  }
251
256
  //# sourceMappingURL=session_pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session_pool.d.ts","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session_pool.d.ts","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
  import { AsyncQueue } from '@sapphire/async-queue';
3
3
  import ow from 'ow';
4
- import { Configuration } from '../configuration.js';
5
4
  import { log as defaultLog } from '../log.js';
5
+ import { serviceLocator } from '../service_locator.js';
6
6
  import { KeyValueStore } from '../storages/key_value_store.js';
7
7
  import { BLOCKED_STATUS_CODES, MAX_POOL_SIZE, PERSIST_STATE_KEY } from './consts.js';
8
8
  import { Session } from './session.js';
@@ -72,7 +72,6 @@ import { Session } from './session.js';
72
72
  * @category Scaling
73
73
  */
74
74
  export class SessionPool extends EventEmitter {
75
- config;
76
75
  log;
77
76
  maxPoolSize;
78
77
  createSessionFunction;
@@ -91,9 +90,8 @@ export class SessionPool extends EventEmitter {
91
90
  /**
92
91
  * @internal
93
92
  */
94
- constructor(options = {}, config = Configuration.getGlobalConfig()) {
93
+ constructor(options = {}) {
95
94
  super();
96
- this.config = config;
97
95
  ow(options, ow.object.exactShape({
98
96
  maxPoolSize: ow.optional.number,
99
97
  persistStateKeyValueStoreId: ow.optional.string,
@@ -107,9 +105,8 @@ export class SessionPool extends EventEmitter {
107
105
  const { maxPoolSize = MAX_POOL_SIZE, persistStateKeyValueStoreId, persistStateKey = PERSIST_STATE_KEY, createSessionFunction, sessionOptions = {}, blockedStatusCodes = BLOCKED_STATUS_CODES, log = defaultLog, persistenceOptions = {
108
106
  enable: true,
109
107
  }, } = options;
110
- this.config = config;
111
108
  this.blockedStatusCodes = blockedStatusCodes;
112
- this.events = config.getEventManager();
109
+ this.events = serviceLocator.getEventManager();
113
110
  this.log = log.child({ prefix: 'SessionPool' });
114
111
  this.persistenceOptions = persistenceOptions;
115
112
  // Pool Configuration
@@ -146,7 +143,9 @@ export class SessionPool extends EventEmitter {
146
143
  if (this.isInitialized) {
147
144
  return;
148
145
  }
149
- this.keyValueStore = await KeyValueStore.open(this.persistStateKeyValueStoreId, { config: this.config });
146
+ this.keyValueStore = await KeyValueStore.open(this.persistStateKeyValueStoreId, {
147
+ config: serviceLocator.getConfiguration(),
148
+ });
150
149
  if (!this.persistenceOptions.enable) {
151
150
  this.isInitialized = true;
152
151
  return;
@@ -182,6 +181,18 @@ export class SessionPool extends EventEmitter {
182
181
  this.log.debug(`Adding new Session - ${newSession.id}`);
183
182
  this._addSession(newSession);
184
183
  }
184
+ /**
185
+ * Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
186
+ * but this allows you to add more sessions once the max pool size is reached.
187
+ * This also allows you to add session with overridden session options (e.g. with specific session id).
188
+ * @param [options] The configuration options for the session being added to the session pool.
189
+ */
190
+ async newSession(sessionOptions) {
191
+ this._throwIfNotInitialized();
192
+ const newSession = await this.createSessionFunction(this, { sessionOptions });
193
+ this._addSession(newSession);
194
+ return newSession;
195
+ }
185
196
  /**
186
197
  * Gets session.
187
198
  * If there is space for new session, it creates and returns new session.
@@ -247,7 +258,7 @@ export class SessionPool extends EventEmitter {
247
258
  persistStateKey: this.persistStateKey,
248
259
  });
249
260
  // use half the interval of `persistState` to avoid race conditions
250
- const persistStateIntervalMillis = this.config.get('persistStateIntervalMillis');
261
+ const persistStateIntervalMillis = serviceLocator.getConfiguration().get('persistStateIntervalMillis');
251
262
  const timeoutSecs = persistStateIntervalMillis / 2_000;
252
263
  await this.keyValueStore
253
264
  .setValue(this.persistStateKey, this.getState(), {
@@ -304,7 +315,7 @@ export class SessionPool extends EventEmitter {
304
315
  * @param [options.sessionOptions] The configuration options for the session being created.
305
316
  * @returns New session.
306
317
  */
307
- _defaultCreateSessionFunction(sessionPool, options = {}) {
318
+ async _defaultCreateSessionFunction(sessionPool, options = {}) {
308
319
  ow(options, ow.object.exactShape({ sessionOptions: ow.optional.object }));
309
320
  const { sessionOptions = {} } = options;
310
321
  return new Session({
@@ -366,8 +377,8 @@ export class SessionPool extends EventEmitter {
366
377
  *
367
378
  * For more details and code examples, see the {@link SessionPool} class.
368
379
  */
369
- static async open(options, config) {
370
- const sessionPool = new SessionPool(options, config);
380
+ static async open(options) {
381
+ const sessionPool = new SessionPool(options);
371
382
  await sessionPool.initialize();
372
383
  return sessionPool;
373
384
  }