@crawlee/core 4.0.0-beta.54 → 4.0.0-beta.56

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 (38) hide show
  1. package/configuration.d.ts +12 -0
  2. package/configuration.d.ts.map +1 -1
  3. package/configuration.js +14 -0
  4. package/configuration.js.map +1 -1
  5. package/crawlers/crawler_commons.d.ts +1 -1
  6. package/crawlers/crawler_commons.d.ts.map +1 -1
  7. package/package.json +5 -5
  8. package/service_locator.d.ts +8 -13
  9. package/service_locator.d.ts.map +1 -1
  10. package/service_locator.js +11 -24
  11. package/service_locator.js.map +1 -1
  12. package/storages/dataset.d.ts +3 -2
  13. package/storages/dataset.d.ts.map +1 -1
  14. package/storages/dataset.js +10 -7
  15. package/storages/dataset.js.map +1 -1
  16. package/storages/index.d.ts +1 -1
  17. package/storages/index.d.ts.map +1 -1
  18. package/storages/index.js +1 -1
  19. package/storages/index.js.map +1 -1
  20. package/storages/key_value_store.d.ts +3 -2
  21. package/storages/key_value_store.d.ts.map +1 -1
  22. package/storages/key_value_store.js +10 -7
  23. package/storages/key_value_store.js.map +1 -1
  24. package/storages/request_provider.d.ts +5 -3
  25. package/storages/request_provider.d.ts.map +1 -1
  26. package/storages/request_provider.js +31 -21
  27. package/storages/request_provider.js.map +1 -1
  28. package/storages/storage_instance_manager.d.ts +91 -0
  29. package/storages/storage_instance_manager.d.ts.map +1 -0
  30. package/storages/storage_instance_manager.js +236 -0
  31. package/storages/storage_instance_manager.js.map +1 -0
  32. package/storages/utils.d.ts +25 -1
  33. package/storages/utils.d.ts.map +1 -1
  34. package/storages/utils.js.map +1 -1
  35. package/storages/storage_manager.d.ts +0 -63
  36. package/storages/storage_manager.d.ts.map +0 -1
  37. package/storages/storage_manager.js +0 -111
  38. package/storages/storage_manager.js.map +0 -1
@@ -1,63 +0,0 @@
1
- import type { BaseHttpClient, DatasetClient, KeyValueStoreClient, RequestQueueClient, StorageClient, StorageIdentifier } from '@crawlee/types';
2
- import type { Configuration } from '../configuration.js';
3
- import type { ProxyConfiguration } from '../proxy_configuration.js';
4
- import type { Constructor } from '../typedefs.js';
5
- export type { StorageIdentifier } from '@crawlee/types';
6
- export interface IStorage {
7
- id: string;
8
- name?: string;
9
- }
10
- /**
11
- * StorageManager takes care of opening remote or local storages.
12
- * @ignore
13
- */
14
- export declare class StorageManager<T extends IStorage = IStorage> {
15
- private readonly config;
16
- private readonly name;
17
- private readonly StorageConstructor;
18
- private readonly cache;
19
- private readonly storageOpenQueue;
20
- constructor(StorageConstructor: Constructor<T>, config: Configuration);
21
- static openStorage<T extends IStorage>(storageClass: Constructor<T>, identifier?: string | StorageIdentifier, client?: StorageClient): Promise<T>;
22
- static getManager<T extends IStorage>(storageClass: Constructor<T>): StorageManager<T>;
23
- openStorage(identifier?: string | StorageIdentifier | null, client?: StorageClient): Promise<T>;
24
- /**
25
- * Resolves the user-provided identifier to an unambiguous `StorageIdentifier`.
26
- *
27
- * - `null`/`undefined` → uses the default storage ID from config
28
- * - `StorageIdentifier` object → passed through (with default ID fallback if empty)
29
- * - `string` → tries to find an existing storage with that ID first;
30
- * if none exists, treats the string as a name
31
- */
32
- private _resolveIdentifier;
33
- closeStorage(storage: {
34
- id: string;
35
- name?: string;
36
- }): void;
37
- /**
38
- * Creates a sub-client for the given storage type using the new factory-based StorageClient interface.
39
- */
40
- protected _createSubClient(identifier: StorageIdentifier, storageConstructorName: string, apiClient: StorageClient): Promise<DatasetClient | KeyValueStoreClient | RequestQueueClient>;
41
- protected _addStorageToCache(storage: T): void;
42
- }
43
- export interface StorageManagerOptions {
44
- /**
45
- * SDK configuration instance, defaults to the static register.
46
- */
47
- config?: Configuration;
48
- /**
49
- * Optional storage client that should be used to open storages.
50
- */
51
- storageClient?: StorageClient;
52
- /**
53
- * Used to pass the proxy configuration for the `requestsFromUrl` objects.
54
- * Takes advantage of the internal address rotation and authentication process.
55
- * If undefined, the `requestsFromUrl` requests will be made without proxy.
56
- */
57
- proxyConfiguration?: ProxyConfiguration;
58
- /**
59
- * HTTP client to be used to download the list of URLs in `RequestQueue`.
60
- */
61
- httpClient?: BaseHttpClient;
62
- }
63
- //# sourceMappingURL=storage_manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage_manager.d.ts","sourceRoot":"","sources":["../../src/storages/storage_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAQxD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAQjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAP3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoC;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;gBAGjD,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,EACjB,MAAM,EAAE,aAAa;WAM7B,WAAW,CAAC,CAAC,SAAS,QAAQ,EACvC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,EACvC,MAAM,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,CAAC,CAAC;IAIb,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAUhF,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BrG;;;;;;;OAOG;YACW,kBAAkB;IA4BhC,YAAY,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAU1D;;OAEG;cACa,gBAAgB,CAC5B,UAAU,EAAE,iBAAiB,EAC7B,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE,aAAa,GACzB,OAAO,CAAC,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;IAapE,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;CASjD;AAED,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC/B"}
@@ -1,111 +0,0 @@
1
- import { AsyncQueue } from '@sapphire/async-queue';
2
- import { serviceLocator } from '../service_locator.js';
3
- const DEFAULT_ID_CONFIG_KEYS = {
4
- Dataset: 'defaultDatasetId',
5
- KeyValueStore: 'defaultKeyValueStoreId',
6
- RequestQueue: 'defaultRequestQueueId',
7
- };
8
- /**
9
- * StorageManager takes care of opening remote or local storages.
10
- * @ignore
11
- */
12
- export class StorageManager {
13
- config;
14
- name;
15
- StorageConstructor;
16
- cache = new Map();
17
- storageOpenQueue = new AsyncQueue();
18
- constructor(StorageConstructor, config) {
19
- this.config = config;
20
- this.StorageConstructor = StorageConstructor;
21
- this.name = this.StorageConstructor.name;
22
- }
23
- static async openStorage(storageClass, identifier, client) {
24
- return this.getManager(storageClass).openStorage(identifier, client);
25
- }
26
- static getManager(storageClass) {
27
- let storageManager = serviceLocator.getStorageManager(storageClass);
28
- if (storageManager === undefined) {
29
- storageManager = new StorageManager(storageClass, serviceLocator.getConfiguration());
30
- serviceLocator.setStorageManager(storageClass, storageManager);
31
- }
32
- return serviceLocator.getStorageManager(storageClass);
33
- }
34
- async openStorage(identifier, client) {
35
- await this.storageOpenQueue.wait();
36
- const resolvedIdentifier = await this._resolveIdentifier(identifier, client);
37
- const cacheKey = resolvedIdentifier.id ?? resolvedIdentifier.name;
38
- let storage = this.cache.get(cacheKey);
39
- if (!storage) {
40
- client ??= serviceLocator.getStorageClient();
41
- const subClient = await this._createSubClient(resolvedIdentifier, this.name, client);
42
- const storageInfo = await subClient.getMetadata();
43
- storage = new this.StorageConstructor({
44
- id: storageInfo.id,
45
- name: storageInfo.name,
46
- client: subClient,
47
- }, this.config);
48
- this._addStorageToCache(storage);
49
- }
50
- this.storageOpenQueue.shift();
51
- return storage;
52
- }
53
- /**
54
- * Resolves the user-provided identifier to an unambiguous `StorageIdentifier`.
55
- *
56
- * - `null`/`undefined` → uses the default storage ID from config
57
- * - `StorageIdentifier` object → passed through (with default ID fallback if empty)
58
- * - `string` → tries to find an existing storage with that ID first;
59
- * if none exists, treats the string as a name
60
- */
61
- async _resolveIdentifier(identifier, client) {
62
- if (typeof identifier === 'string') {
63
- client ??= serviceLocator.getStorageClient();
64
- if (client.storageExists && (await client.storageExists(identifier, this.name))) {
65
- return { id: identifier };
66
- }
67
- return { name: identifier };
68
- }
69
- if (identifier?.id) {
70
- return { id: identifier.id };
71
- }
72
- if (identifier?.name) {
73
- return { name: identifier.name };
74
- }
75
- const defaultIdConfigKey = DEFAULT_ID_CONFIG_KEYS[this.name];
76
- const defaultId = this.config[defaultIdConfigKey];
77
- return { id: defaultId };
78
- }
79
- closeStorage(storage) {
80
- const idKey = storage.id;
81
- this.cache.delete(idKey);
82
- if (storage.name) {
83
- const nameKey = storage.name;
84
- this.cache.delete(nameKey);
85
- }
86
- }
87
- /**
88
- * Creates a sub-client for the given storage type using the new factory-based StorageClient interface.
89
- */
90
- async _createSubClient(identifier, storageConstructorName, apiClient) {
91
- switch (storageConstructorName) {
92
- case 'Dataset':
93
- return apiClient.createDatasetClient(identifier);
94
- case 'KeyValueStore':
95
- return apiClient.createKeyValueStoreClient(identifier);
96
- case 'RequestQueue':
97
- return apiClient.createRequestQueueClient(identifier);
98
- default:
99
- throw new Error(`Unknown storage type: ${storageConstructorName}`);
100
- }
101
- }
102
- _addStorageToCache(storage) {
103
- const idKey = storage.id;
104
- this.cache.set(idKey, storage);
105
- if (storage.name) {
106
- const nameKey = storage.name;
107
- this.cache.set(nameKey, storage);
108
- }
109
- }
110
- }
111
- //# sourceMappingURL=storage_manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage_manager.js","sourceRoot":"","sources":["../../src/storages/storage_manager.ts"],"names":[],"mappings":"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"}