@crawlee/memory-storage 4.0.0-beta.65 → 4.0.0-beta.67
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/consts.d.ts +0 -12
- package/consts.d.ts.map +1 -1
- package/consts.js +0 -13
- package/consts.js.map +1 -1
- package/memory-storage.d.ts +16 -36
- package/memory-storage.d.ts.map +1 -1
- package/memory-storage.js +59 -239
- package/memory-storage.js.map +1 -1
- package/package.json +3 -6
- package/resource-clients/common/base-client.d.ts +0 -3
- package/resource-clients/common/base-client.d.ts.map +1 -1
- package/resource-clients/common/base-client.js +0 -6
- package/resource-clients/common/base-client.js.map +1 -1
- package/resource-clients/dataset.d.ts +9 -11
- package/resource-clients/dataset.d.ts.map +1 -1
- package/resource-clients/dataset.js +8 -42
- package/resource-clients/dataset.js.map +1 -1
- package/resource-clients/key-value-store.d.ts +18 -15
- package/resource-clients/key-value-store.d.ts.map +1 -1
- package/resource-clients/key-value-store.js +31 -47
- package/resource-clients/key-value-store.js.map +1 -1
- package/resource-clients/request-queue.d.ts +50 -20
- package/resource-clients/request-queue.d.ts.map +1 -1
- package/resource-clients/request-queue.js +251 -281
- package/resource-clients/request-queue.js.map +1 -1
- package/utils.d.ts +0 -14
- package/utils.d.ts.map +1 -1
- package/utils.js.map +1 -1
- package/background-handler/fs-utils.d.ts +0 -6
- package/background-handler/fs-utils.d.ts.map +0 -1
- package/background-handler/fs-utils.js +0 -63
- package/background-handler/fs-utils.js.map +0 -1
- package/background-handler/index.d.ts +0 -13
- package/background-handler/index.d.ts.map +0 -1
- package/background-handler/index.js +0 -29
- package/background-handler/index.js.map +0 -1
- package/cache-helpers.d.ts +0 -9
- package/cache-helpers.d.ts.map +0 -1
- package/cache-helpers.js +0 -319
- package/cache-helpers.js.map +0 -1
- package/fs/common.d.ts +0 -6
- package/fs/common.d.ts.map +0 -1
- package/fs/common.js +0 -2
- package/fs/common.js.map +0 -1
- package/fs/dataset/fs.d.ts +0 -11
- package/fs/dataset/fs.d.ts.map +0 -1
- package/fs/dataset/fs.js +0 -37
- package/fs/dataset/fs.js.map +0 -1
- package/fs/dataset/index.d.ts +0 -10
- package/fs/dataset/index.d.ts.map +0 -1
- package/fs/dataset/index.js +0 -9
- package/fs/dataset/index.js.map +0 -1
- package/fs/dataset/memory.d.ts +0 -8
- package/fs/dataset/memory.d.ts.map +0 -1
- package/fs/dataset/memory.js +0 -13
- package/fs/dataset/memory.js.map +0 -1
- package/fs/key-value-store/fs.d.ts +0 -17
- package/fs/key-value-store/fs.d.ts.map +0 -1
- package/fs/key-value-store/fs.js +0 -83
- package/fs/key-value-store/fs.js.map +0 -1
- package/fs/key-value-store/index.d.ts +0 -11
- package/fs/key-value-store/index.d.ts.map +0 -1
- package/fs/key-value-store/index.js +0 -9
- package/fs/key-value-store/index.js.map +0 -1
- package/fs/key-value-store/memory.d.ts +0 -9
- package/fs/key-value-store/memory.d.ts.map +0 -1
- package/fs/key-value-store/memory.js +0 -13
- package/fs/key-value-store/memory.js.map +0 -1
- package/fs/request-queue/fs.d.ts +0 -21
- package/fs/request-queue/fs.d.ts.map +0 -1
- package/fs/request-queue/fs.js +0 -72
- package/fs/request-queue/fs.js.map +0 -1
- package/fs/request-queue/index.d.ts +0 -9
- package/fs/request-queue/index.d.ts.map +0 -1
- package/fs/request-queue/index.js +0 -9
- package/fs/request-queue/index.js.map +0 -1
- package/fs/request-queue/memory.d.ts +0 -10
- package/fs/request-queue/memory.d.ts.map +0 -1
- package/fs/request-queue/memory.js +0 -15
- package/fs/request-queue/memory.js.map +0 -1
package/consts.d.ts
CHANGED
|
@@ -2,16 +2,4 @@
|
|
|
2
2
|
* Length of id property of a Request instance in characters.
|
|
3
3
|
*/
|
|
4
4
|
export declare const REQUEST_ID_LENGTH = 15;
|
|
5
|
-
/**
|
|
6
|
-
* Types of all emulated storages (currently used for warning messages only).
|
|
7
|
-
*/
|
|
8
|
-
export declare enum StorageTypes {
|
|
9
|
-
RequestQueue = "Request queue",
|
|
10
|
-
KeyValueStore = "Key-value store",
|
|
11
|
-
Dataset = "Dataset"
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Except in dataset items, the default limit for API results is 1000.
|
|
15
|
-
*/
|
|
16
|
-
export declare const DEFAULT_API_PARAM_LIMIT = 1000;
|
|
17
5
|
//# sourceMappingURL=consts.d.ts.map
|
package/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
|
package/consts.js
CHANGED
|
@@ -2,17 +2,4 @@
|
|
|
2
2
|
* Length of id property of a Request instance in characters.
|
|
3
3
|
*/
|
|
4
4
|
export const REQUEST_ID_LENGTH = 15;
|
|
5
|
-
/**
|
|
6
|
-
* Types of all emulated storages (currently used for warning messages only).
|
|
7
|
-
*/
|
|
8
|
-
export var StorageTypes;
|
|
9
|
-
(function (StorageTypes) {
|
|
10
|
-
StorageTypes["RequestQueue"] = "Request queue";
|
|
11
|
-
StorageTypes["KeyValueStore"] = "Key-value store";
|
|
12
|
-
StorageTypes["Dataset"] = "Dataset";
|
|
13
|
-
})(StorageTypes || (StorageTypes = {}));
|
|
14
|
-
/**
|
|
15
|
-
* Except in dataset items, the default limit for API results is 1000.
|
|
16
|
-
*/
|
|
17
|
-
export const DEFAULT_API_PARAM_LIMIT = 1000;
|
|
18
5
|
//# sourceMappingURL=consts.js.map
|
package/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC"}
|
package/memory-storage.d.ts
CHANGED
|
@@ -5,44 +5,24 @@ import { KeyValueStoreClient } from './resource-clients/key-value-store.js';
|
|
|
5
5
|
import { RequestQueueClient } from './resource-clients/request-queue.js';
|
|
6
6
|
export interface MemoryStorageOptions {
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* @default process.env.CRAWLEE_STORAGE_DIR ?? './storage'
|
|
10
|
-
*/
|
|
11
|
-
localDataDirectory?: string;
|
|
12
|
-
/**
|
|
13
|
-
* Whether to also write optional metadata files when storing to disk.
|
|
14
|
-
* @default process.env.DEBUG?.includes('*') ?? process.env.DEBUG?.includes('crawlee:memory-storage') ?? false
|
|
15
|
-
*/
|
|
16
|
-
writeMetadata?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Whether the memory storage should also write its stored content to the disk.
|
|
19
|
-
*
|
|
20
|
-
* You can also disable this by setting the `CRAWLEE_PERSIST_STORAGE` environment variable to `false`.
|
|
21
|
-
* @default true
|
|
22
|
-
*/
|
|
23
|
-
persistStorage?: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Optional logger for MemoryStorage warnings.
|
|
8
|
+
* Optional logger for MemoryStorageClient warnings.
|
|
26
9
|
*/
|
|
27
10
|
logger?: CrawleeLogger;
|
|
28
11
|
}
|
|
29
|
-
export declare class
|
|
30
|
-
readonly localDataDirectory: string;
|
|
31
|
-
readonly datasetsDirectory: string;
|
|
32
|
-
readonly keyValueStoresDirectory: string;
|
|
33
|
-
readonly requestQueuesDirectory: string;
|
|
34
|
-
readonly writeMetadata: boolean;
|
|
35
|
-
readonly persistStorage: boolean;
|
|
12
|
+
export declare class MemoryStorageClient implements storage.StorageClient {
|
|
36
13
|
readonly logger?: CrawleeLogger;
|
|
14
|
+
/**
|
|
15
|
+
* Unique per-instance cache partition key. Mirrors the way `FileSystemStorageClient` partitions its
|
|
16
|
+
* cache by storage directory: two distinct `MemoryStorageClient` instances must not share cached clients.
|
|
17
|
+
*/
|
|
18
|
+
private readonly instanceCacheKey;
|
|
37
19
|
readonly keyValueStoreCache: KeyValueStoreClient[];
|
|
38
20
|
readonly datasetClientCache: DatasetClient[];
|
|
39
21
|
readonly requestQueueCache: RequestQueueClient[];
|
|
40
22
|
constructor(options?: MemoryStorageOptions);
|
|
41
23
|
/**
|
|
42
|
-
* Return a cache key that
|
|
43
|
-
*
|
|
44
|
-
* cache partitions. Mirrors crawlee-python's `FileSystemStorageClient` which
|
|
45
|
-
* includes `configuration.storage_dir` in its cache key.
|
|
24
|
+
* Return a per-instance unique cache key so that distinct `MemoryStorageClient` instances get separate
|
|
25
|
+
* cache partitions in the storage-client cache.
|
|
46
26
|
*/
|
|
47
27
|
getStorageClientCacheKey(): string;
|
|
48
28
|
private static resolveStorageKey;
|
|
@@ -52,17 +32,17 @@ export declare class MemoryStorage implements storage.StorageClient {
|
|
|
52
32
|
storageExists(id: string, type: 'Dataset' | 'KeyValueStore' | 'RequestQueue'): Promise<boolean>;
|
|
53
33
|
setStatusMessage(message: string, options?: storage.SetStatusMessageOptions): Promise<void>;
|
|
54
34
|
/**
|
|
55
|
-
* Cleans up the default
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
35
|
+
* Cleans up the default storages before the run starts. For the in-memory storage this simply
|
|
36
|
+
* resets the in-memory state of the cached default dataset, key-value store and request queue.
|
|
37
|
+
*
|
|
38
|
+
* As with `FileSystemStorageClient`, the run's input (the `INPUT` key in the default key-value
|
|
39
|
+
* store) is preserved — only the rest of the default storages is cleared.
|
|
59
40
|
*/
|
|
60
41
|
purge(): Promise<void>;
|
|
61
42
|
/**
|
|
62
|
-
* This method should be called at the end of the process
|
|
43
|
+
* This method should be called at the end of the process. The in-memory storage holds no resources
|
|
44
|
+
* that outlive the process (no file handles, no cross-process locks), so there is nothing to do.
|
|
63
45
|
*/
|
|
64
46
|
teardown(): Promise<void>;
|
|
65
|
-
private handleDefaultKeyValueStore;
|
|
66
|
-
private batchRemoveFiles;
|
|
67
47
|
}
|
|
68
48
|
//# sourceMappingURL=memory-storage.d.ts.map
|
package/memory-storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,qBAAa,mBAAoB,YAAW,OAAO,CAAC,aAAa;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAEhC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;IAE1E,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,CAAM;IACxD,QAAQ,CAAC,kBAAkB,EAAE,aAAa,EAAE,CAAM;IAClD,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,CAAM;gBAE1C,OAAO,GAAE,oBAAyB;IAI9C;;;OAGG;IACH,wBAAwB,IAAI,MAAM;IAIlC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAW1B,mBAAmB,CAAC,OAAO,GAAE,OAAO,CAAC,0BAA+B,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAyBrG,yBAAyB,CAC3B,OAAO,GAAE,OAAO,CAAC,gCAAqC,GACvD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAyBjC,wBAAwB,CAC1B,OAAO,GAAE,OAAO,CAAC,+BAAoC,GACtD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAyBhC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/F,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IASrG;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
package/memory-storage.js
CHANGED
|
@@ -1,196 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
import { access, readdir, rm } from 'node:fs/promises';
|
|
3
|
-
import { resolve } from 'node:path';
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
4
2
|
import { s } from '@sapphire/shapeshift';
|
|
5
|
-
import { ensureDirSync, move, moveSync, pathExistsSync } from 'fs-extra/esm';
|
|
6
|
-
import { promiseMap, scheduleBackgroundTask } from './background-handler/index.js';
|
|
7
|
-
import { findOrCacheDatasetByPossibleId, findOrCacheKeyValueStoreByPossibleId, findRequestQueueByPossibleId, } from './cache-helpers.js';
|
|
8
3
|
import { DatasetClient } from './resource-clients/dataset.js';
|
|
9
4
|
import { KeyValueStoreClient } from './resource-clients/key-value-store.js';
|
|
10
5
|
import { RequestQueueClient } from './resource-clients/request-queue.js';
|
|
11
|
-
export class
|
|
12
|
-
localDataDirectory;
|
|
13
|
-
datasetsDirectory;
|
|
14
|
-
keyValueStoresDirectory;
|
|
15
|
-
requestQueuesDirectory;
|
|
16
|
-
writeMetadata;
|
|
17
|
-
persistStorage;
|
|
6
|
+
export class MemoryStorageClient {
|
|
18
7
|
logger;
|
|
8
|
+
/**
|
|
9
|
+
* Unique per-instance cache partition key. Mirrors the way `FileSystemStorageClient` partitions its
|
|
10
|
+
* cache by storage directory: two distinct `MemoryStorageClient` instances must not share cached clients.
|
|
11
|
+
*/
|
|
12
|
+
instanceCacheKey = `MemoryStorageClient:${randomUUID()}`;
|
|
19
13
|
keyValueStoreCache = [];
|
|
20
14
|
datasetClientCache = [];
|
|
21
15
|
requestQueueCache = [];
|
|
22
16
|
constructor(options = {}) {
|
|
23
|
-
s.object({
|
|
24
|
-
localDataDirectory: s.string().optional(),
|
|
25
|
-
writeMetadata: s.boolean().optional(),
|
|
26
|
-
persistStorage: s.boolean().optional(),
|
|
27
|
-
}).parse(options);
|
|
28
17
|
this.logger = options.logger;
|
|
29
|
-
// v3.0.0 used `crawlee_storage` as the default, we changed this in v3.0.1 to just `storage`,
|
|
30
|
-
// this function handles it without making BC breaks - it respects existing `crawlee_storage`
|
|
31
|
-
// directories, and uses the `storage` only if it's not there.
|
|
32
|
-
const defaultStorageDir = () => {
|
|
33
|
-
if (pathExistsSync(resolve('./crawlee_storage'))) {
|
|
34
|
-
return './crawlee_storage';
|
|
35
|
-
}
|
|
36
|
-
return './storage';
|
|
37
|
-
};
|
|
38
|
-
this.localDataDirectory = options.localDataDirectory ?? process.env.CRAWLEE_STORAGE_DIR ?? defaultStorageDir();
|
|
39
|
-
this.datasetsDirectory = resolve(this.localDataDirectory, 'datasets');
|
|
40
|
-
this.keyValueStoresDirectory = resolve(this.localDataDirectory, 'key_value_stores');
|
|
41
|
-
this.requestQueuesDirectory = resolve(this.localDataDirectory, 'request_queues');
|
|
42
|
-
this.writeMetadata =
|
|
43
|
-
options.writeMetadata ??
|
|
44
|
-
process.env.DEBUG?.includes('*') ??
|
|
45
|
-
process.env.DEBUG?.includes('crawlee:memory-storage') ??
|
|
46
|
-
false;
|
|
47
|
-
this.persistStorage =
|
|
48
|
-
options.persistStorage ??
|
|
49
|
-
(process.env.CRAWLEE_PERSIST_STORAGE
|
|
50
|
-
? !['false', '0', ''].includes(process.env.CRAWLEE_PERSIST_STORAGE)
|
|
51
|
-
: true);
|
|
52
18
|
}
|
|
53
19
|
/**
|
|
54
|
-
* Return a cache key that
|
|
55
|
-
*
|
|
56
|
-
* cache partitions. Mirrors crawlee-python's `FileSystemStorageClient` which
|
|
57
|
-
* includes `configuration.storage_dir` in its cache key.
|
|
20
|
+
* Return a per-instance unique cache key so that distinct `MemoryStorageClient` instances get separate
|
|
21
|
+
* cache partitions in the storage-client cache.
|
|
58
22
|
*/
|
|
59
23
|
getStorageClientCacheKey() {
|
|
60
|
-
return
|
|
24
|
+
return this.instanceCacheKey;
|
|
61
25
|
}
|
|
62
26
|
static resolveStorageKey(options) {
|
|
63
27
|
const isAlias = 'alias' in options && !!options.alias;
|
|
64
28
|
const rawKey = isAlias ? options.alias : (options.name ?? options.id);
|
|
65
29
|
// Normalize the internal __default__ alias to the user-facing 'default' name.
|
|
66
|
-
const
|
|
67
|
-
return { isAlias,
|
|
30
|
+
const cacheKey = rawKey === '__default__' ? 'default' : rawKey;
|
|
31
|
+
return { isAlias, cacheKey };
|
|
68
32
|
}
|
|
69
33
|
async createDatasetClient(options = {}) {
|
|
70
|
-
const { isAlias,
|
|
71
|
-
if (
|
|
72
|
-
const found =
|
|
34
|
+
const { isAlias, cacheKey } = MemoryStorageClient.resolveStorageKey(options);
|
|
35
|
+
if (cacheKey) {
|
|
36
|
+
const found = this.datasetClientCache.find((store) => store.id === cacheKey ||
|
|
37
|
+
store.name?.toLowerCase() === cacheKey.toLowerCase() ||
|
|
38
|
+
store.cacheKey.toLowerCase() === cacheKey.toLowerCase());
|
|
73
39
|
if (found) {
|
|
74
40
|
return found;
|
|
75
41
|
}
|
|
76
42
|
}
|
|
77
43
|
const newStore = new DatasetClient({
|
|
78
|
-
name: isAlias ? undefined :
|
|
79
|
-
|
|
80
|
-
baseStorageDirectory: this.datasetsDirectory,
|
|
44
|
+
name: isAlias ? undefined : cacheKey,
|
|
45
|
+
cacheKey,
|
|
81
46
|
client: this,
|
|
82
47
|
});
|
|
83
48
|
this.datasetClientCache.push(newStore);
|
|
84
|
-
// Schedule the worker to write to the disk
|
|
85
|
-
const datasetInfo = newStore.toDatasetInfo();
|
|
86
|
-
scheduleBackgroundTask({
|
|
87
|
-
action: 'update-metadata',
|
|
88
|
-
entityType: 'datasets',
|
|
89
|
-
entityDirectory: newStore.datasetDirectory,
|
|
90
|
-
id: datasetInfo.name ?? datasetInfo.id,
|
|
91
|
-
data: datasetInfo,
|
|
92
|
-
writeMetadata: this.writeMetadata,
|
|
93
|
-
persistStorage: this.persistStorage,
|
|
94
|
-
}, this.logger);
|
|
95
49
|
return newStore;
|
|
96
50
|
}
|
|
97
51
|
async createKeyValueStoreClient(options = {}) {
|
|
98
|
-
const { isAlias,
|
|
99
|
-
if (
|
|
100
|
-
const found =
|
|
52
|
+
const { isAlias, cacheKey } = MemoryStorageClient.resolveStorageKey(options);
|
|
53
|
+
if (cacheKey) {
|
|
54
|
+
const found = this.keyValueStoreCache.find((store) => store.id === cacheKey ||
|
|
55
|
+
store.name?.toLowerCase() === cacheKey.toLowerCase() ||
|
|
56
|
+
store.cacheKey.toLowerCase() === cacheKey.toLowerCase());
|
|
101
57
|
if (found) {
|
|
102
58
|
return found;
|
|
103
59
|
}
|
|
104
60
|
}
|
|
105
61
|
const newStore = new KeyValueStoreClient({
|
|
106
|
-
name: isAlias ? undefined :
|
|
107
|
-
|
|
108
|
-
baseStorageDirectory: this.keyValueStoresDirectory,
|
|
62
|
+
name: isAlias ? undefined : cacheKey,
|
|
63
|
+
cacheKey,
|
|
109
64
|
client: this,
|
|
110
65
|
});
|
|
111
66
|
this.keyValueStoreCache.push(newStore);
|
|
112
|
-
// Schedule the worker to write to the disk
|
|
113
|
-
const kvStoreInfo = newStore.toKeyValueStoreInfo();
|
|
114
|
-
scheduleBackgroundTask({
|
|
115
|
-
action: 'update-metadata',
|
|
116
|
-
entityType: 'keyValueStores',
|
|
117
|
-
entityDirectory: newStore.keyValueStoreDirectory,
|
|
118
|
-
id: kvStoreInfo.name ?? kvStoreInfo.id,
|
|
119
|
-
data: kvStoreInfo,
|
|
120
|
-
writeMetadata: this.writeMetadata,
|
|
121
|
-
persistStorage: this.persistStorage,
|
|
122
|
-
}, this.logger);
|
|
123
67
|
return newStore;
|
|
124
68
|
}
|
|
125
69
|
async createRequestQueueClient(options = {}) {
|
|
126
|
-
const { isAlias,
|
|
127
|
-
if (
|
|
128
|
-
const found =
|
|
70
|
+
const { isAlias, cacheKey } = MemoryStorageClient.resolveStorageKey(options);
|
|
71
|
+
if (cacheKey) {
|
|
72
|
+
const found = this.requestQueueCache.find((queue) => queue.id === cacheKey ||
|
|
73
|
+
queue.name?.toLowerCase() === cacheKey.toLowerCase() ||
|
|
74
|
+
queue.cacheKey.toLowerCase() === cacheKey.toLowerCase());
|
|
129
75
|
if (found) {
|
|
130
76
|
return found;
|
|
131
77
|
}
|
|
132
78
|
}
|
|
133
79
|
const newStore = new RequestQueueClient({
|
|
134
|
-
name: isAlias ? undefined :
|
|
135
|
-
|
|
136
|
-
baseStorageDirectory: this.requestQueuesDirectory,
|
|
80
|
+
name: isAlias ? undefined : cacheKey,
|
|
81
|
+
cacheKey,
|
|
137
82
|
client: this,
|
|
138
83
|
});
|
|
139
84
|
this.requestQueueCache.push(newStore);
|
|
140
|
-
// Schedule the worker to write to the disk
|
|
141
|
-
const queueInfo = newStore.toRequestQueueInfo();
|
|
142
|
-
scheduleBackgroundTask({
|
|
143
|
-
action: 'update-metadata',
|
|
144
|
-
entityType: 'requestQueues',
|
|
145
|
-
entityDirectory: newStore.requestQueueDirectory,
|
|
146
|
-
id: queueInfo.name ?? queueInfo.id,
|
|
147
|
-
data: queueInfo,
|
|
148
|
-
writeMetadata: this.writeMetadata,
|
|
149
|
-
persistStorage: this.persistStorage,
|
|
150
|
-
}, this.logger);
|
|
151
85
|
return newStore;
|
|
152
86
|
}
|
|
153
87
|
async storageExists(id, type) {
|
|
154
88
|
let clients;
|
|
155
|
-
let baseDir;
|
|
156
89
|
switch (type) {
|
|
157
90
|
case 'Dataset':
|
|
158
91
|
clients = this.datasetClientCache;
|
|
159
|
-
baseDir = this.datasetsDirectory;
|
|
160
92
|
break;
|
|
161
93
|
case 'KeyValueStore':
|
|
162
94
|
clients = this.keyValueStoreCache;
|
|
163
|
-
baseDir = this.keyValueStoresDirectory;
|
|
164
95
|
break;
|
|
165
96
|
case 'RequestQueue':
|
|
166
97
|
clients = this.requestQueueCache;
|
|
167
|
-
baseDir = this.requestQueuesDirectory;
|
|
168
98
|
break;
|
|
169
99
|
default:
|
|
170
100
|
return false;
|
|
171
101
|
}
|
|
172
|
-
//
|
|
173
|
-
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
// Check if a directory with that ID exists on disk.
|
|
177
|
-
// Only consider directories whose name matches the queried ID — this avoids
|
|
178
|
-
// false positives for alias-created directories (e.g. a directory named 'asdf'
|
|
179
|
-
// created via `{ alias: 'asdf' }` should not make `storageExists('asdf')` return true,
|
|
180
|
-
// since the actual storage ID is a UUID, not the alias string).
|
|
181
|
-
try {
|
|
182
|
-
await access(resolve(baseDir, id));
|
|
183
|
-
// If the directory exists but a cached client already owns this directory
|
|
184
|
-
// under a different ID, this is not a match.
|
|
185
|
-
const cachedClients = clients;
|
|
186
|
-
if (cachedClients.some((store) => store.directoryName === id && store.id !== id)) {
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
return true;
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
102
|
+
// In-memory storage only knows about clients in its cache.
|
|
103
|
+
return clients.some((store) => store.id === id);
|
|
194
104
|
}
|
|
195
105
|
async setStatusMessage(message, options = {}) {
|
|
196
106
|
s.string().parse(message);
|
|
@@ -200,126 +110,36 @@ export class MemoryStorage {
|
|
|
200
110
|
return Promise.resolve();
|
|
201
111
|
}
|
|
202
112
|
/**
|
|
203
|
-
* Cleans up the default
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
113
|
+
* Cleans up the default storages before the run starts. For the in-memory storage this simply
|
|
114
|
+
* resets the in-memory state of the cached default dataset, key-value store and request queue.
|
|
115
|
+
*
|
|
116
|
+
* As with `FileSystemStorageClient`, the run's input (the `INPUT` key in the default key-value
|
|
117
|
+
* store) is preserved — only the rest of the default storages is cleared.
|
|
207
118
|
*/
|
|
208
119
|
async purge() {
|
|
209
|
-
//
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (datasetFolder === 'default' ||
|
|
226
|
-
datasetFolder === '__default__' ||
|
|
227
|
-
datasetFolder.startsWith('__CRAWLEE_TEMPORARY')) {
|
|
228
|
-
datasetPromises.push((await this.batchRemoveFiles(resolve(this.datasetsDirectory, datasetFolder)))());
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
void Promise.allSettled(datasetPromises);
|
|
232
|
-
// Request queues
|
|
233
|
-
const requestQueues = await readdir(this.requestQueuesDirectory).catch(() => []);
|
|
234
|
-
const requestQueuePromises = [];
|
|
235
|
-
for (const requestQueueFolder of requestQueues) {
|
|
236
|
-
if (requestQueueFolder === 'default' ||
|
|
237
|
-
requestQueueFolder === '__default__' ||
|
|
238
|
-
requestQueueFolder.startsWith('__CRAWLEE_TEMPORARY')) {
|
|
239
|
-
requestQueuePromises.push((await this.batchRemoveFiles(resolve(this.requestQueuesDirectory, requestQueueFolder)))());
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
void Promise.allSettled(requestQueuePromises);
|
|
120
|
+
// The run default is opened via `{ alias: '__default__' }`, which `resolveStorageKey`
|
|
121
|
+
// normalizes to `cacheKey === 'default'` (with `name === undefined`) — that is the clause
|
|
122
|
+
// that actually matches it. The `name === 'default'` clause additionally covers a store a user
|
|
123
|
+
// explicitly opened via `{ name: 'default' }`. (`'__default__'` never reaches `cacheKey`,
|
|
124
|
+
// as it is always normalized to `'default'` first, so it does not need to be checked here.)
|
|
125
|
+
const isDefault = (store) => store.name === 'default' || store.cacheKey === 'default';
|
|
126
|
+
const purgeDefaults = async (cache, purgeStore) => {
|
|
127
|
+
await Promise.all(cache.filter(isDefault).map(async (store) => purgeStore(store)));
|
|
128
|
+
};
|
|
129
|
+
await Promise.all([
|
|
130
|
+
// Preserve the run input (INPUT) when purging the default key-value store, matching
|
|
131
|
+
// `FileSystemStorageClient`.
|
|
132
|
+
purgeDefaults(this.keyValueStoreCache, async (store) => store.purgeExceptInput()),
|
|
133
|
+
purgeDefaults(this.datasetClientCache, async (store) => store.purge()),
|
|
134
|
+
purgeDefaults(this.requestQueueCache, async (store) => store.purge()),
|
|
135
|
+
]);
|
|
243
136
|
}
|
|
244
137
|
/**
|
|
245
|
-
* This method should be called at the end of the process
|
|
138
|
+
* This method should be called at the end of the process. The in-memory storage holds no resources
|
|
139
|
+
* that outlive the process (no file handles, no cross-process locks), so there is nothing to do.
|
|
246
140
|
*/
|
|
247
141
|
async teardown() {
|
|
248
|
-
|
|
249
|
-
await Promise.all(promises);
|
|
250
|
-
}
|
|
251
|
-
handleDefaultKeyValueStore(folder) {
|
|
252
|
-
const storagePathExists = pathExistsSync(folder);
|
|
253
|
-
const temporaryPath = resolve(folder, '../__CRAWLEE_MIGRATING_KEY_VALUE_STORE__');
|
|
254
|
-
// For optimization, we want to only attempt to copy a few files from the default key-value store
|
|
255
|
-
const possibleInputKeys = ['INPUT', 'INPUT.json', 'INPUT.bin', 'INPUT.txt'];
|
|
256
|
-
if (storagePathExists) {
|
|
257
|
-
// Create temporary folder to save important files in
|
|
258
|
-
ensureDirSync(temporaryPath);
|
|
259
|
-
// Go through each file and save the ones that are important
|
|
260
|
-
for (const entity of possibleInputKeys) {
|
|
261
|
-
const originalFilePath = resolve(folder, entity);
|
|
262
|
-
const tempFilePath = resolve(temporaryPath, entity);
|
|
263
|
-
try {
|
|
264
|
-
moveSync(originalFilePath, tempFilePath);
|
|
265
|
-
}
|
|
266
|
-
catch {
|
|
267
|
-
// Ignore
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
// Remove the original folder and all its content
|
|
271
|
-
let counter = 0;
|
|
272
|
-
let tempPathForOldFolder = resolve(folder, `../__OLD_DEFAULT_${counter}__`);
|
|
273
|
-
let done = false;
|
|
274
|
-
while (!done) {
|
|
275
|
-
try {
|
|
276
|
-
moveSync(folder, tempPathForOldFolder);
|
|
277
|
-
done = true;
|
|
278
|
-
}
|
|
279
|
-
catch {
|
|
280
|
-
tempPathForOldFolder = resolve(folder, `../__OLD_DEFAULT_${++counter}__`);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
// Replace the temporary folder with the original folder
|
|
284
|
-
moveSync(temporaryPath, folder);
|
|
285
|
-
// Remove the old folder
|
|
286
|
-
return async () => (await this.batchRemoveFiles(tempPathForOldFolder))();
|
|
287
|
-
}
|
|
288
|
-
return async () => Promise.resolve();
|
|
289
|
-
}
|
|
290
|
-
async batchRemoveFiles(folder, counter = 0) {
|
|
291
|
-
const folderExists = pathExistsSync(folder);
|
|
292
|
-
if (folderExists) {
|
|
293
|
-
const temporaryFolder = resolve(folder, `../__CRAWLEE_TEMPORARY_${counter}__`);
|
|
294
|
-
try {
|
|
295
|
-
// Rename the old folder to the new one to allow background deletions
|
|
296
|
-
await move(folder, temporaryFolder);
|
|
297
|
-
}
|
|
298
|
-
catch {
|
|
299
|
-
// Folder exists already, try again with an incremented counter
|
|
300
|
-
return this.batchRemoveFiles(folder, ++counter);
|
|
301
|
-
}
|
|
302
|
-
return async () => {
|
|
303
|
-
// Read all files in the folder
|
|
304
|
-
const entries = await readdir(temporaryFolder);
|
|
305
|
-
let processed = 0;
|
|
306
|
-
let promises = [];
|
|
307
|
-
for (const entry of entries) {
|
|
308
|
-
processed++;
|
|
309
|
-
promises.push(rm(resolve(temporaryFolder, entry), { force: true }));
|
|
310
|
-
// Every 2000 files, delete them
|
|
311
|
-
if (processed % 2000 === 0) {
|
|
312
|
-
await Promise.allSettled(promises);
|
|
313
|
-
promises = [];
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
// Ensure last promises are handled
|
|
317
|
-
await Promise.allSettled(promises);
|
|
318
|
-
// Delete the folder itself
|
|
319
|
-
await rm(temporaryFolder, { force: true, recursive: true });
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
|
-
return async () => Promise.resolve();
|
|
142
|
+
// Nothing to tear down for in-memory storage.
|
|
323
143
|
}
|
|
324
144
|
}
|
|
325
145
|
//# sourceMappingURL=memory-storage.js.map
|
package/memory-storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crawlee/memory-storage",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.67",
|
|
4
4
|
"description": "A simple in-memory storage implementation of the Apify API",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22.0.0"
|
|
@@ -42,15 +42,12 @@
|
|
|
42
42
|
"access": "public"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@crawlee/types": "4.0.0-beta.
|
|
45
|
+
"@crawlee/types": "4.0.0-beta.67",
|
|
46
46
|
"@sapphire/async-queue": "^1.5.5",
|
|
47
47
|
"@sapphire/shapeshift": "^4.0.0",
|
|
48
48
|
"content-type": "^1.0.5",
|
|
49
|
-
"fs-extra": "^11.3.0",
|
|
50
49
|
"json5": "^2.2.3",
|
|
51
50
|
"mime-types": "^3.0.1",
|
|
52
|
-
"p-limit": "^6.2.0",
|
|
53
|
-
"proper-lockfile": "^4.1.2",
|
|
54
51
|
"tslib": "^2.8.1"
|
|
55
52
|
},
|
|
56
53
|
"lerna": {
|
|
@@ -60,5 +57,5 @@
|
|
|
60
57
|
}
|
|
61
58
|
}
|
|
62
59
|
},
|
|
63
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "a0f083cdcc46c96d5e76ed2c75addbba4942c05f"
|
|
64
61
|
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import type { StorageTypes } from '../../consts.js';
|
|
2
1
|
export declare class BaseClient {
|
|
3
2
|
id: string;
|
|
4
3
|
constructor(id: string);
|
|
5
|
-
protected throwOnNonExisting(clientType: StorageTypes): never;
|
|
6
|
-
protected throwOnDuplicateEntry(clientType: StorageTypes, keyName: string, value: string): never;
|
|
7
4
|
}
|
|
8
5
|
//# sourceMappingURL=base-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../../src/resource-clients/common/base-client.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../../src/resource-clients/common/base-client.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACnB,EAAE,EAAE,MAAM,CAAC;gBAEC,EAAE,EAAE,MAAM;CAGzB"}
|
|
@@ -3,11 +3,5 @@ export class BaseClient {
|
|
|
3
3
|
constructor(id) {
|
|
4
4
|
this.id = id;
|
|
5
5
|
}
|
|
6
|
-
throwOnNonExisting(clientType) {
|
|
7
|
-
throw new Error(`${clientType} with id: ${this.id} does not exist.`);
|
|
8
|
-
}
|
|
9
|
-
throwOnDuplicateEntry(clientType, keyName, value) {
|
|
10
|
-
throw new Error(`${clientType} with ${keyName}: ${value} already exists.`);
|
|
11
|
-
}
|
|
12
6
|
}
|
|
13
7
|
//# sourceMappingURL=base-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../../src/resource-clients/common/base-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../../src/resource-clients/common/base-client.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACnB,EAAE,CAAS;IAEX,YAAY,EAAU;QAClB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;CACJ"}
|