@crawlee/core 4.0.0-beta.27 → 4.0.0-beta.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autoscaling/autoscaled_pool.d.ts +1 -3
- package/autoscaling/autoscaled_pool.d.ts.map +1 -1
- package/autoscaling/autoscaled_pool.js +1 -7
- package/autoscaling/autoscaled_pool.js.map +1 -1
- package/autoscaling/snapshotter.d.ts +0 -10
- package/autoscaling/snapshotter.d.ts.map +1 -1
- package/autoscaling/snapshotter.js +12 -18
- package/autoscaling/snapshotter.js.map +1 -1
- package/autoscaling/system_status.d.ts +0 -3
- package/autoscaling/system_status.d.ts.map +1 -1
- package/autoscaling/system_status.js +2 -3
- package/autoscaling/system_status.js.map +1 -1
- package/configuration.d.ts +4 -70
- package/configuration.d.ts.map +1 -1
- package/configuration.js +5 -97
- package/configuration.js.map +1 -1
- package/crawlers/statistics.d.ts +2 -11
- package/crawlers/statistics.d.ts.map +1 -1
- package/crawlers/statistics.js +14 -13
- package/crawlers/statistics.js.map +1 -1
- package/errors.d.ts +6 -0
- package/errors.d.ts.map +1 -1
- package/errors.js +9 -0
- package/errors.js.map +1 -1
- package/events/event_manager.d.ts +7 -4
- package/events/event_manager.d.ts.map +1 -1
- package/events/event_manager.js +5 -7
- package/events/event_manager.js.map +1 -1
- package/events/local_event_manager.d.ts +14 -2
- package/events/local_event_manager.d.ts.map +1 -1
- package/events/local_event_manager.js +24 -6
- package/events/local_event_manager.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +5 -5
- package/recoverable_state.d.ts +1 -2
- package/recoverable_state.d.ts.map +1 -1
- package/recoverable_state.js +4 -6
- package/recoverable_state.js.map +1 -1
- package/service_locator.d.ts +139 -0
- package/service_locator.d.ts.map +1 -0
- package/service_locator.js +252 -0
- package/service_locator.js.map +1 -0
- package/session_pool/session_pool.d.ts +2 -4
- package/session_pool/session_pool.d.ts.map +1 -1
- package/session_pool/session_pool.js +9 -10
- package/session_pool/session_pool.js.map +1 -1
- package/storages/dataset.d.ts.map +1 -1
- package/storages/dataset.js +4 -3
- package/storages/dataset.js.map +1 -1
- package/storages/key_value_store.d.ts.map +1 -1
- package/storages/key_value_store.js +5 -4
- package/storages/key_value_store.js.map +1 -1
- package/storages/request_list.d.ts +1 -2
- package/storages/request_list.d.ts.map +1 -1
- package/storages/request_list.js +3 -5
- package/storages/request_list.js.map +1 -1
- package/storages/request_provider.d.ts +4 -2
- package/storages/request_provider.d.ts.map +1 -1
- package/storages/request_provider.js +8 -7
- package/storages/request_provider.js.map +1 -1
- package/storages/request_queue.d.ts +1 -1
- package/storages/request_queue.d.ts.map +1 -1
- package/storages/request_queue.js +2 -2
- package/storages/request_queue.js.map +1 -1
- package/storages/request_queue_v2.d.ts +1 -1
- package/storages/request_queue_v2.d.ts.map +1 -1
- package/storages/request_queue_v2.js +4 -5
- package/storages/request_queue_v2.js.map +1 -1
- package/storages/sitemap_request_list.d.ts +0 -5
- package/storages/sitemap_request_list.d.ts.map +1 -1
- package/storages/sitemap_request_list.js +3 -3
- package/storages/sitemap_request_list.js.map +1 -1
- package/storages/storage_manager.d.ts +5 -7
- package/storages/storage_manager.d.ts.map +1 -1
- package/storages/storage_manager.js +11 -21
- package/storages/storage_manager.js.map +1 -1
- package/storages/utils.d.ts.map +1 -1
- package/storages/utils.js +4 -3
- package/storages/utils.js.map +1 -1
package/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './errors.js';
|
|
2
2
|
export * from './autoscaling/index.js';
|
|
3
3
|
export * from './configuration.js';
|
|
4
|
+
export * from './service_locator.js';
|
|
4
5
|
export * from './crawlers/index.js';
|
|
5
6
|
export * from './enqueue_links/index.js';
|
|
6
7
|
export * from './events/index.js';
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crawlee/core",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.28",
|
|
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": ">=22.0.0"
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"@apify/pseudo_url": "^2.0.59",
|
|
54
54
|
"@apify/timeout": "^0.3.2",
|
|
55
55
|
"@apify/utilities": "^2.15.5",
|
|
56
|
-
"@crawlee/memory-storage": "4.0.0-beta.
|
|
57
|
-
"@crawlee/types": "4.0.0-beta.
|
|
58
|
-
"@crawlee/utils": "4.0.0-beta.
|
|
56
|
+
"@crawlee/memory-storage": "4.0.0-beta.28",
|
|
57
|
+
"@crawlee/types": "4.0.0-beta.28",
|
|
58
|
+
"@crawlee/utils": "4.0.0-beta.28",
|
|
59
59
|
"@sapphire/async-queue": "^1.5.5",
|
|
60
60
|
"@vladfrangu/async_event_emitter": "^2.4.6",
|
|
61
61
|
"csv-stringify": "^6.5.2",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "34fe46a70d4d6a6ddb49b0814469dbde1e7f0a9c"
|
|
80
80
|
}
|
package/recoverable_state.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Configuration } from '@crawlee/core';
|
|
1
|
+
import type { Configuration } from '@crawlee/core';
|
|
2
2
|
import type { Log } from '@apify/log';
|
|
3
3
|
export interface RecoverableStatePersistenceOptions {
|
|
4
4
|
/**
|
|
@@ -68,7 +68,6 @@ export declare class RecoverableState<TStateModel = Record<string, unknown>> {
|
|
|
68
68
|
private readonly persistStateKvsId?;
|
|
69
69
|
private keyValueStore;
|
|
70
70
|
private readonly log;
|
|
71
|
-
private readonly config;
|
|
72
71
|
private readonly serialize;
|
|
73
72
|
private readonly deserialize;
|
|
74
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverable_state.d.ts","sourceRoot":"","sources":["../src/recoverable_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"recoverable_state.d.ts","sourceRoot":"","sources":["../src/recoverable_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,kCAAkC;IAC/C;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC1E,SAAQ,kCAAkC;IAC1C;;;OAGG;IACH,YAAY,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC;IAE3C;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,WAAW,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,qBAAa,gBAAgB,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAS;IAC5C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IAEvE;;;;OAIG;gBACS,OAAO,EAAE,uBAAuB,CAAC,WAAW,CAAC;IAazD;;;;;;;OAOG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAuBxC;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B;;OAEG;IACH,IAAI,YAAY,IAAI,WAAW,CAM9B;IAED;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;;;;;;OAOG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE;;OAEG;YACW,cAAc;CAY/B"}
|
package/recoverable_state.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KeyValueStore, serviceLocator } from '@crawlee/core';
|
|
2
2
|
import log from '@apify/log';
|
|
3
3
|
/**
|
|
4
4
|
* A class for managing persistent recoverable state using a plain JavaScript object.
|
|
@@ -19,7 +19,6 @@ export class RecoverableState {
|
|
|
19
19
|
persistStateKvsId;
|
|
20
20
|
keyValueStore = null;
|
|
21
21
|
log;
|
|
22
|
-
config;
|
|
23
22
|
serialize;
|
|
24
23
|
deserialize;
|
|
25
24
|
/**
|
|
@@ -34,7 +33,6 @@ export class RecoverableState {
|
|
|
34
33
|
this.persistStateKvsName = options.persistStateKvsName;
|
|
35
34
|
this.persistStateKvsId = options.persistStateKvsId;
|
|
36
35
|
this.log = options.logger ?? log.child({ prefix: 'RecoverableState' });
|
|
37
|
-
this.config = options.config ?? Configuration.getGlobalConfig();
|
|
38
36
|
this.serialize = options.serialize ?? JSON.stringify;
|
|
39
37
|
this.deserialize = options.deserialize ?? JSON.parse;
|
|
40
38
|
this.persistState = this.persistState.bind(this);
|
|
@@ -56,11 +54,11 @@ export class RecoverableState {
|
|
|
56
54
|
return this.currentValue;
|
|
57
55
|
}
|
|
58
56
|
this.keyValueStore = await KeyValueStore.open(this.persistStateKvsName ?? this.persistStateKvsId, {
|
|
59
|
-
config:
|
|
57
|
+
config: serviceLocator.getConfiguration(),
|
|
60
58
|
});
|
|
61
59
|
await this.loadSavedState();
|
|
62
60
|
// Register for persist state events
|
|
63
|
-
const eventManager =
|
|
61
|
+
const eventManager = serviceLocator.getEventManager();
|
|
64
62
|
eventManager.on("persistState" /* EventType.PERSIST_STATE */, this.persistState);
|
|
65
63
|
return this.currentValue;
|
|
66
64
|
}
|
|
@@ -74,7 +72,7 @@ export class RecoverableState {
|
|
|
74
72
|
if (!this.persistenceEnabled || !this.persistState) {
|
|
75
73
|
return;
|
|
76
74
|
}
|
|
77
|
-
const eventManager =
|
|
75
|
+
const eventManager = serviceLocator.getEventManager();
|
|
78
76
|
eventManager.off("persistState" /* EventType.PERSIST_STATE */, this.persistState);
|
|
79
77
|
await this.persistState();
|
|
80
78
|
}
|
package/recoverable_state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverable_state.js","sourceRoot":"","sources":["../src/recoverable_state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recoverable_state.js","sourceRoot":"","sources":["../src/recoverable_state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { StorageClient } from '@crawlee/types';
|
|
2
|
+
import { Configuration } from './configuration.js';
|
|
3
|
+
import type { EventManager } from './events/event_manager.js';
|
|
4
|
+
import type { IStorage, StorageManager } from './storages/storage_manager.js';
|
|
5
|
+
import type { Constructor } from './typedefs.js';
|
|
6
|
+
interface ServiceLocatorInterface {
|
|
7
|
+
/**
|
|
8
|
+
* Get the configuration.
|
|
9
|
+
* Creates a default Configuration instance if none has been set.
|
|
10
|
+
*/
|
|
11
|
+
getConfiguration(): Configuration;
|
|
12
|
+
/**
|
|
13
|
+
* Set the configuration.
|
|
14
|
+
*
|
|
15
|
+
* @param configuration The configuration to set
|
|
16
|
+
* @throws {ServiceConflictError} If a different configuration has already been retrieved
|
|
17
|
+
*/
|
|
18
|
+
setConfiguration(configuration: Configuration): void;
|
|
19
|
+
/**
|
|
20
|
+
* Get the event manager.
|
|
21
|
+
* Creates a default LocalEventManager instance if none has been set.
|
|
22
|
+
*/
|
|
23
|
+
getEventManager(): EventManager;
|
|
24
|
+
/**
|
|
25
|
+
* Set the event manager.
|
|
26
|
+
*
|
|
27
|
+
* @param eventManager The event manager to set
|
|
28
|
+
* @throws {ServiceConflictError} If a different event manager has already been retrieved
|
|
29
|
+
*/
|
|
30
|
+
setEventManager(eventManager: EventManager): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get the storage client.
|
|
33
|
+
* Creates a default MemoryStorage instance if none has been set.
|
|
34
|
+
*/
|
|
35
|
+
getStorageClient(): StorageClient;
|
|
36
|
+
/**
|
|
37
|
+
* Set the storage client.
|
|
38
|
+
*
|
|
39
|
+
* @param storageClient The storage client to set
|
|
40
|
+
* @throws {ServiceConflictError} If a different storage client has already been retrieved
|
|
41
|
+
*/
|
|
42
|
+
setStorageClient(storageClient: StorageClient): void;
|
|
43
|
+
getStorageManager(constructor: Constructor<IStorage>): StorageManager | undefined;
|
|
44
|
+
setStorageManager(constructor: Constructor<IStorage>, storageManager: StorageManager): void;
|
|
45
|
+
/**
|
|
46
|
+
* Clears all storage manager caches.
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
clearStorageManagerCache(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Resets the service locator to its initial state.
|
|
52
|
+
* Used mainly for testing purposes.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
reset(): void;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Service locator for managing the services used by Crawlee.
|
|
59
|
+
*
|
|
60
|
+
* All services are initialized to their default value lazily.
|
|
61
|
+
*
|
|
62
|
+
* There are two primary usage patterns:
|
|
63
|
+
*
|
|
64
|
+
* **1. Global service locator (for default services):**
|
|
65
|
+
* ```typescript
|
|
66
|
+
* import { serviceLocator, BasicCrawler } from 'crawlee';
|
|
67
|
+
*
|
|
68
|
+
* // Optionally configure global services before creating crawlers
|
|
69
|
+
* serviceLocator.setStorageClient(myCustomClient);
|
|
70
|
+
*
|
|
71
|
+
* // Crawler uses global services
|
|
72
|
+
* const crawler = new BasicCrawler({ ... });
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* **2. Per-crawler services (recommended for isolation):**
|
|
76
|
+
* ```typescript
|
|
77
|
+
* import { BasicCrawler, Configuration, LocalEventManager } from 'crawlee';
|
|
78
|
+
* import { MemoryStorage } from '@crawlee/memory-storage';
|
|
79
|
+
*
|
|
80
|
+
* const crawler = new BasicCrawler({
|
|
81
|
+
* requestHandler: async ({ request }) => { ... },
|
|
82
|
+
* configuration: new Configuration({ ... }), // custom config
|
|
83
|
+
* storageClient: new MemoryStorage(), // custom storage
|
|
84
|
+
* eventManager: LocalEventManager.fromConfig(), // custom events
|
|
85
|
+
* });
|
|
86
|
+
* // Crawler has its own isolated ServiceLocator instance
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare class ServiceLocator implements ServiceLocatorInterface {
|
|
90
|
+
private configuration?;
|
|
91
|
+
private eventManager?;
|
|
92
|
+
private storageClient?;
|
|
93
|
+
/**
|
|
94
|
+
* Storage managers for Dataset, KeyValueStore, and RequestQueue.
|
|
95
|
+
* Manages caching and lifecycle of storage instances.
|
|
96
|
+
*/
|
|
97
|
+
private storageManagers;
|
|
98
|
+
/**
|
|
99
|
+
* Creates a new ServiceLocator instance.
|
|
100
|
+
*
|
|
101
|
+
* @param configuration Optional configuration instance to use
|
|
102
|
+
* @param eventManager Optional event manager instance to use
|
|
103
|
+
* @param storageClient Optional storage client instance to use
|
|
104
|
+
*/
|
|
105
|
+
constructor(configuration?: Configuration, eventManager?: EventManager, storageClient?: StorageClient);
|
|
106
|
+
getConfiguration(): Configuration;
|
|
107
|
+
setConfiguration(configuration: Configuration): void;
|
|
108
|
+
getEventManager(): EventManager;
|
|
109
|
+
setEventManager(eventManager: EventManager): void;
|
|
110
|
+
getStorageClient(): StorageClient;
|
|
111
|
+
setStorageClient(storageClient: StorageClient): void;
|
|
112
|
+
getStorageManager(constructor: Constructor<IStorage>): StorageManager | undefined;
|
|
113
|
+
setStorageManager(constructor: Constructor<IStorage>, storageManager: StorageManager): void;
|
|
114
|
+
clearStorageManagerCache(): void;
|
|
115
|
+
reset(): void;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Wraps all methods on `target` so that any code they invoke will see the given
|
|
119
|
+
* `serviceLocator` via `AsyncLocalStorage`, rather than the global one.
|
|
120
|
+
*
|
|
121
|
+
* Walks the prototype chain and replaces each method on the *instance* (not the prototype)
|
|
122
|
+
* with a wrapper that calls `serviceLocatorStorage.run(serviceLocator, originalMethod)`.
|
|
123
|
+
*
|
|
124
|
+
* The `AsyncLocalStorage` context propagates through the entire sync/async call tree of each
|
|
125
|
+
* wrapped method — including `super` calls, since the prototype methods execute within the
|
|
126
|
+
* context established by the instance-level wrapper.
|
|
127
|
+
*
|
|
128
|
+
* @internal
|
|
129
|
+
* @returns Scope control functions: `run` executes a callback within the scoped context,
|
|
130
|
+
* `enterScope`/`exitScope` allow entering/leaving the scope imperatively (e.g., for constructor bodies).
|
|
131
|
+
*/
|
|
132
|
+
export declare function bindMethodsToServiceLocator(serviceLocator: ServiceLocator, target: {}): {
|
|
133
|
+
run: <T>(fn: () => T) => T;
|
|
134
|
+
enterScope: () => void;
|
|
135
|
+
exitScope: () => void;
|
|
136
|
+
};
|
|
137
|
+
export declare const serviceLocator: ServiceLocatorInterface;
|
|
138
|
+
export {};
|
|
139
|
+
//# sourceMappingURL=service_locator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service_locator.d.ts","sourceRoot":"","sources":["../src/service_locator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,UAAU,uBAAuB;IAC7B;;;OAGG;IACH,gBAAgB,IAAI,aAAa,CAAC;IAElC;;;;;OAKG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAErD;;;OAGG;IACH,eAAe,IAAI,YAAY,CAAC;IAEhC;;;;;OAKG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAElD;;;OAGG;IACH,gBAAgB,IAAI,aAAa,CAAC;IAElC;;;;;OAKG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAErD,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,SAAS,CAAC;IAElF,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IAE5F;;;OAGG;IACH,wBAAwB,IAAI,IAAI,CAAC;IAEjC;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,cAAe,YAAW,uBAAuB;IAC1D,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAoD;IAE3E;;;;;;OAMG;gBACS,aAAa,CAAC,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,aAAa;IAMrG,gBAAgB,IAAI,aAAa;IAQjC,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAcpD,eAAe,IAAI,YAAY;IAc/B,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAcjD,gBAAgB,IAAI,aAAa;IAiBjC,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAcpD,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,SAAS;IAIjF,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI;IAY3F,wBAAwB,IAAI,IAAI;IAchC,KAAK,IAAI,IAAI;CAMhB;AASD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACvC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,EAAE,GACX;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,IAAI,CAAA;CAAE,CA4C/E;AAED,eAAO,MAAM,cAAc,EAAE,uBAyC5B,CAAC"}
|
|
@@ -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,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';
|
|
@@ -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
|
|
138
|
+
constructor(options?: SessionPoolOptions);
|
|
141
139
|
/**
|
|
142
140
|
* Gets count of usable sessions in the pool.
|
|
143
141
|
*/
|
|
@@ -253,6 +251,6 @@ export declare class SessionPool extends EventEmitter {
|
|
|
253
251
|
*
|
|
254
252
|
* For more details and code examples, see the {@link SessionPool} class.
|
|
255
253
|
*/
|
|
256
|
-
static open(options?: SessionPoolOptions
|
|
254
|
+
static open(options?: SessionPoolOptions): Promise<SessionPool>;
|
|
257
255
|
}
|
|
258
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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,
|
|
1
|
+
{"version":3,"file":"session_pool.d.ts","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"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"}
|