@crawlee/memory-storage 4.0.0-beta.60 → 4.0.0-beta.62
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/cache-helpers.d.ts.map +1 -1
- package/cache-helpers.js +12 -6
- package/cache-helpers.js.map +1 -1
- package/memory-storage.d.ts +1 -1
- package/memory-storage.d.ts.map +1 -1
- package/memory-storage.js +36 -17
- package/memory-storage.js.map +1 -1
- package/package.json +3 -3
- package/resource-clients/dataset.d.ts +16 -16
- package/resource-clients/dataset.d.ts.map +1 -1
- package/resource-clients/dataset.js +30 -85
- package/resource-clients/dataset.js.map +1 -1
- package/resource-clients/key-value-store.d.ts +19 -12
- package/resource-clients/key-value-store.d.ts.map +1 -1
- package/resource-clients/key-value-store.js +39 -184
- package/resource-clients/key-value-store.js.map +1 -1
- package/resource-clients/request-queue.d.ts +13 -5
- package/resource-clients/request-queue.d.ts.map +1 -1
- package/resource-clients/request-queue.js +26 -45
- package/resource-clients/request-queue.js.map +1 -1
- package/utils.d.ts +0 -50
- package/utils.d.ts.map +1 -1
- package/utils.js +0 -141
- package/utils.js.map +1 -1
|
@@ -4,6 +4,12 @@ import { BaseClient } from './common/base-client.js';
|
|
|
4
4
|
export interface KeyValueStoreClientOptions {
|
|
5
5
|
name?: string;
|
|
6
6
|
id?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The directory name to use on disk. When provided, takes precedence over `name` and `id`
|
|
9
|
+
* for the directory path. This allows alias-opened storages to have a directory name
|
|
10
|
+
* that differs from their metadata `name` (which is `undefined` for unnamed storages).
|
|
11
|
+
*/
|
|
12
|
+
directoryName?: string;
|
|
7
13
|
baseStorageDirectory: string;
|
|
8
14
|
client: MemoryStorage;
|
|
9
15
|
}
|
|
@@ -14,8 +20,13 @@ export interface InternalKeyRecord {
|
|
|
14
20
|
extension: string;
|
|
15
21
|
filePath?: string;
|
|
16
22
|
}
|
|
17
|
-
export declare class KeyValueStoreClient extends BaseClient {
|
|
23
|
+
export declare class KeyValueStoreClient extends BaseClient implements storage.KeyValueStoreClient {
|
|
18
24
|
name?: string;
|
|
25
|
+
/**
|
|
26
|
+
* The key used for directory naming and cache lookup. For named storages, this equals
|
|
27
|
+
* the name. For alias (unnamed) storages, this is the alias string. Falls back to id.
|
|
28
|
+
*/
|
|
29
|
+
directoryName: string;
|
|
19
30
|
createdAt: Date;
|
|
20
31
|
accessedAt: Date;
|
|
21
32
|
modifiedAt: Date;
|
|
@@ -24,20 +35,16 @@ export declare class KeyValueStoreClient extends BaseClient {
|
|
|
24
35
|
private readonly client;
|
|
25
36
|
constructor(options: KeyValueStoreClientOptions);
|
|
26
37
|
getMetadata(): Promise<storage.KeyValueStoreInfo>;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
listKeys(options?: storage.
|
|
30
|
-
keys(options?: storage.KeyValueStoreClientListOptions): AsyncIterable<string> & Promise<storage.KeyValueStoreClientListData>;
|
|
31
|
-
values(options?: storage.KeyValueStoreClientListOptions): AsyncIterable<unknown> & Promise<unknown[]>;
|
|
32
|
-
entries(options?: storage.KeyValueStoreClientListOptions): AsyncIterable<[string, unknown]> & Promise<[string, unknown][]>;
|
|
33
|
-
private listKeysPage;
|
|
38
|
+
drop(): Promise<void>;
|
|
39
|
+
purge(): Promise<void>;
|
|
40
|
+
listKeys(options?: storage.KeyValueStoreListKeysOptions): Promise<storage.KeyValueStoreItemData[]>;
|
|
34
41
|
/**
|
|
35
42
|
* Generates a public file:// URL for accessing a specific record in the key-value store.
|
|
36
43
|
*
|
|
37
44
|
* Returns `undefined` if the record does not exist or has no associated file path (i.e., it is not stored as a file).
|
|
38
45
|
* @param key The key of the record to generate the public URL for.
|
|
39
46
|
*/
|
|
40
|
-
|
|
47
|
+
getPublicUrl(key: string): Promise<string | undefined>;
|
|
41
48
|
/**
|
|
42
49
|
* Tests whether a record with the given key exists in the key-value store without retrieving its value.
|
|
43
50
|
*
|
|
@@ -45,9 +52,9 @@ export declare class KeyValueStoreClient extends BaseClient {
|
|
|
45
52
|
* @returns `true` if the record exists, `false` if it does not.
|
|
46
53
|
*/
|
|
47
54
|
recordExists(key: string): Promise<boolean>;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
getValue(key: string): Promise<storage.KeyValueStoreRecord | undefined>;
|
|
56
|
+
setValue(record: storage.KeyValueStoreRecord): Promise<void>;
|
|
57
|
+
deleteValue(key: string): Promise<void>;
|
|
51
58
|
toKeyValueStoreInfo(): storage.KeyValueStoreInfo;
|
|
52
59
|
private updateTimestamps;
|
|
53
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-value-store.d.ts","sourceRoot":"","sources":["../../src/resource-clients/key-value-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key-value-store.d.ts","sourceRoot":"","sources":["../../src/resource-clients/key-value-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAO/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKrD,MAAM,WAAW,0BAA0B;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAoB,SAAQ,UAAW,YAAW,OAAO,CAAC,mBAAmB;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,OAAc;IACvB,UAAU,OAAc;IACxB,UAAU,OAAc;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+D;IAC/F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,0BAA0B;IAQzC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAKjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,QAAQ,CAAC,OAAO,GAAE,OAAO,CAAC,4BAAiC,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA8C5G;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQ5D;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAyBvE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuE5D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,mBAAmB,IAAI,OAAO,CAAC,iBAAiB;IAWhD,OAAO,CAAC,gBAAgB;CAqB3B"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { rm } from 'node:fs/promises';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
-
import { Readable } from 'node:stream';
|
|
5
4
|
import { s } from '@sapphire/shapeshift';
|
|
6
|
-
import { move } from 'fs-extra';
|
|
7
|
-
import mime from 'mime-types';
|
|
8
|
-
import pLimit from 'p-limit';
|
|
9
5
|
import { scheduleBackgroundTask } from '../background-handler/index.js';
|
|
10
6
|
import { maybeParseBody } from '../body-parser.js';
|
|
11
|
-
import { DEFAULT_API_PARAM_LIMIT, StorageTypes } from '../consts.js';
|
|
12
7
|
import { createKeyValueStorageImplementation } from '../fs/key-value-store/index.js';
|
|
13
|
-
import {
|
|
8
|
+
import { isBuffer, isStream } from '../utils.js';
|
|
14
9
|
import { BaseClient } from './common/base-client.js';
|
|
10
|
+
import mime from 'mime-types';
|
|
15
11
|
const DEFAULT_LOCAL_FILE_EXTENSION = 'bin';
|
|
16
|
-
const GET_RECORD_CONCURRENCY = 25;
|
|
17
12
|
export class KeyValueStoreClient extends BaseClient {
|
|
18
13
|
name;
|
|
14
|
+
/**
|
|
15
|
+
* The key used for directory naming and cache lookup. For named storages, this equals
|
|
16
|
+
* the name. For alias (unnamed) storages, this is the alias string. Falls back to id.
|
|
17
|
+
*/
|
|
18
|
+
directoryName;
|
|
19
19
|
createdAt = new Date();
|
|
20
20
|
accessedAt = new Date();
|
|
21
21
|
modifiedAt = new Date();
|
|
@@ -25,37 +25,15 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
25
25
|
constructor(options) {
|
|
26
26
|
super(options.id ?? randomUUID());
|
|
27
27
|
this.name = options.name;
|
|
28
|
-
this.
|
|
28
|
+
this.directoryName = options.directoryName ?? this.name ?? this.id;
|
|
29
|
+
this.keyValueStoreDirectory = resolve(options.baseStorageDirectory, this.directoryName);
|
|
29
30
|
this.client = options.client;
|
|
30
31
|
}
|
|
31
32
|
async getMetadata() {
|
|
32
33
|
this.updateTimestamps(false);
|
|
33
34
|
return this.toKeyValueStoreInfo();
|
|
34
35
|
}
|
|
35
|
-
async
|
|
36
|
-
const parsed = s
|
|
37
|
-
.object({
|
|
38
|
-
name: s.string().lengthGreaterThan(0).optional(),
|
|
39
|
-
})
|
|
40
|
-
.parse(newFields);
|
|
41
|
-
// Skip if no changes
|
|
42
|
-
if (!parsed.name) {
|
|
43
|
-
return this.toKeyValueStoreInfo();
|
|
44
|
-
}
|
|
45
|
-
// Check that name is not in use already
|
|
46
|
-
const existingStoreByName = this.client.keyValueStoreCache.find((store) => store.name?.toLowerCase() === parsed.name.toLowerCase());
|
|
47
|
-
if (existingStoreByName) {
|
|
48
|
-
this.throwOnDuplicateEntry(StorageTypes.KeyValueStore, 'name', parsed.name);
|
|
49
|
-
}
|
|
50
|
-
this.name = parsed.name;
|
|
51
|
-
const previousDir = this.keyValueStoreDirectory;
|
|
52
|
-
this.keyValueStoreDirectory = resolve(this.client.keyValueStoresDirectory, parsed.name ?? this.name ?? this.id);
|
|
53
|
-
await move(previousDir, this.keyValueStoreDirectory, { overwrite: true });
|
|
54
|
-
// Update timestamps
|
|
55
|
-
this.updateTimestamps(true);
|
|
56
|
-
return this.toKeyValueStoreInfo();
|
|
57
|
-
}
|
|
58
|
-
async delete() {
|
|
36
|
+
async drop() {
|
|
59
37
|
const storeIndex = this.client.keyValueStoreCache.findIndex((store) => store.id === this.id);
|
|
60
38
|
if (storeIndex !== -1) {
|
|
61
39
|
const [oldClient] = this.client.keyValueStoreCache.splice(storeIndex, 1);
|
|
@@ -63,122 +41,23 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
63
41
|
await rm(oldClient.keyValueStoreDirectory, { recursive: true, force: true });
|
|
64
42
|
}
|
|
65
43
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
.parse(options);
|
|
75
|
-
return createKeyList((pageExclusiveStartKey) => this.listKeysPage({
|
|
76
|
-
limit: limit ?? DEFAULT_API_PARAM_LIMIT,
|
|
77
|
-
exclusiveStartKey: pageExclusiveStartKey,
|
|
78
|
-
prefix,
|
|
79
|
-
}), { exclusiveStartKey, limit });
|
|
44
|
+
async purge() {
|
|
45
|
+
// Delete all entries
|
|
46
|
+
const entriesToDelete = [...this.keyValueEntries.entries()];
|
|
47
|
+
for (const [key, entry] of entriesToDelete) {
|
|
48
|
+
this.keyValueEntries.delete(key);
|
|
49
|
+
await entry.delete();
|
|
50
|
+
}
|
|
51
|
+
this.updateTimestamps(true);
|
|
80
52
|
}
|
|
81
|
-
|
|
82
|
-
const {
|
|
53
|
+
async listKeys(options = {}) {
|
|
54
|
+
const { prefix, exclusiveStartKey, limit } = s
|
|
83
55
|
.object({
|
|
84
|
-
limit: s.number().greaterThan(0).optional(),
|
|
85
|
-
exclusiveStartKey: s.string().optional(),
|
|
86
|
-
collection: s.string().optional(),
|
|
87
56
|
prefix: s.string().optional(),
|
|
57
|
+
exclusiveStartKey: s.string().optional(),
|
|
58
|
+
limit: s.number().int().greaterThan(0).optional(),
|
|
88
59
|
})
|
|
89
60
|
.parse(options);
|
|
90
|
-
return createKeyStringList((pageExclusiveStartKey) => this.listKeysPage({
|
|
91
|
-
limit: limit ?? DEFAULT_API_PARAM_LIMIT,
|
|
92
|
-
exclusiveStartKey: pageExclusiveStartKey,
|
|
93
|
-
prefix,
|
|
94
|
-
}), { exclusiveStartKey, limit });
|
|
95
|
-
}
|
|
96
|
-
values(options = {}) {
|
|
97
|
-
const keys = this.keys.bind(this);
|
|
98
|
-
const getRecord = this.getRecord.bind(this);
|
|
99
|
-
const limit = options.limit;
|
|
100
|
-
const firstPageKeysPromise = keys(options);
|
|
101
|
-
const getFirstPageValues = async () => {
|
|
102
|
-
const firstPageKeys = await firstPageKeysPromise;
|
|
103
|
-
const keysToFetch = limit !== undefined ? firstPageKeys.items.slice(0, limit) : firstPageKeys.items;
|
|
104
|
-
const limiter = pLimit(GET_RECORD_CONCURRENCY);
|
|
105
|
-
const results = await Promise.all(keysToFetch.map((item) => limiter(() => getRecord(item.key))));
|
|
106
|
-
return results.filter((r) => r !== undefined).map((r) => r.value);
|
|
107
|
-
};
|
|
108
|
-
async function* asyncGenerator() {
|
|
109
|
-
const firstPageKeys = await firstPageKeysPromise;
|
|
110
|
-
let yielded = 0;
|
|
111
|
-
for (const item of firstPageKeys.items) {
|
|
112
|
-
if (limit !== undefined && yielded >= limit)
|
|
113
|
-
return;
|
|
114
|
-
const record = await getRecord(item.key);
|
|
115
|
-
if (record) {
|
|
116
|
-
yield record.value;
|
|
117
|
-
yielded++;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if (firstPageKeys.nextExclusiveStartKey && (limit === undefined || yielded < limit)) {
|
|
121
|
-
for await (const key of keys({
|
|
122
|
-
...options,
|
|
123
|
-
exclusiveStartKey: firstPageKeys.nextExclusiveStartKey,
|
|
124
|
-
})) {
|
|
125
|
-
if (limit !== undefined && yielded >= limit)
|
|
126
|
-
return;
|
|
127
|
-
const record = await getRecord(key);
|
|
128
|
-
if (record) {
|
|
129
|
-
yield record.value;
|
|
130
|
-
yielded++;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return createLazyIterablePromise(getFirstPageValues, asyncGenerator);
|
|
136
|
-
}
|
|
137
|
-
entries(options = {}) {
|
|
138
|
-
const keys = this.keys.bind(this);
|
|
139
|
-
const getRecord = this.getRecord.bind(this);
|
|
140
|
-
const limit = options.limit;
|
|
141
|
-
const firstPageKeysPromise = keys(options);
|
|
142
|
-
const getFirstPageEntries = async () => {
|
|
143
|
-
const firstPageKeys = await firstPageKeysPromise;
|
|
144
|
-
const keysToFetch = limit !== undefined ? firstPageKeys.items.slice(0, limit) : firstPageKeys.items;
|
|
145
|
-
const limiter = pLimit(GET_RECORD_CONCURRENCY);
|
|
146
|
-
const results = await Promise.all(keysToFetch.map((item) => limiter(() => getRecord(item.key).then((record) => ({ key: item.key, record })))));
|
|
147
|
-
return results
|
|
148
|
-
.filter((r) => r.record !== undefined)
|
|
149
|
-
.map((r) => [r.key, r.record.value]);
|
|
150
|
-
};
|
|
151
|
-
async function* asyncGenerator() {
|
|
152
|
-
const firstPageKeys = await firstPageKeysPromise;
|
|
153
|
-
let yielded = 0;
|
|
154
|
-
for (const item of firstPageKeys.items) {
|
|
155
|
-
if (limit !== undefined && yielded >= limit)
|
|
156
|
-
return;
|
|
157
|
-
const record = await getRecord(item.key);
|
|
158
|
-
if (record) {
|
|
159
|
-
yield [item.key, record.value];
|
|
160
|
-
yielded++;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
if (firstPageKeys.nextExclusiveStartKey && (limit === undefined || yielded < limit)) {
|
|
164
|
-
for await (const key of keys({
|
|
165
|
-
...options,
|
|
166
|
-
exclusiveStartKey: firstPageKeys.nextExclusiveStartKey,
|
|
167
|
-
})) {
|
|
168
|
-
if (limit !== undefined && yielded >= limit)
|
|
169
|
-
return;
|
|
170
|
-
const record = await getRecord(key);
|
|
171
|
-
if (record) {
|
|
172
|
-
yield [key, record.value];
|
|
173
|
-
yielded++;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return createLazyIterablePromise(getFirstPageEntries, asyncGenerator);
|
|
179
|
-
}
|
|
180
|
-
async listKeysPage(options = {}) {
|
|
181
|
-
const { limit = DEFAULT_API_PARAM_LIMIT, exclusiveStartKey, prefix } = options;
|
|
182
61
|
const items = [];
|
|
183
62
|
for (const storageEntry of this.keyValueEntries.values()) {
|
|
184
63
|
const record = await storageEntry.get();
|
|
@@ -189,31 +68,21 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
189
68
|
});
|
|
190
69
|
}
|
|
191
70
|
// Lexically sort to emulate API.
|
|
192
|
-
|
|
193
|
-
items.
|
|
194
|
-
return a.key.localeCompare(b.key);
|
|
195
|
-
});
|
|
196
|
-
const filteredItems = items.filter((item) => !prefix || item.key.startsWith(prefix));
|
|
197
|
-
let truncatedItems = filteredItems;
|
|
71
|
+
items.sort((a, b) => a.key.localeCompare(b.key));
|
|
72
|
+
let filteredItems = items.filter((item) => !prefix || item.key.startsWith(prefix));
|
|
198
73
|
if (exclusiveStartKey) {
|
|
199
74
|
const keyPos = filteredItems.findIndex((item) => item.key === exclusiveStartKey);
|
|
200
|
-
if (keyPos
|
|
201
|
-
|
|
75
|
+
if (keyPos === -1) {
|
|
76
|
+
throw new Error(`exclusiveStartKey "${exclusiveStartKey}" was not found in the key-value store. ` +
|
|
77
|
+
`This is likely a bug — the key may have been deleted between paginated listKeys calls.`);
|
|
78
|
+
}
|
|
79
|
+
filteredItems = filteredItems.slice(keyPos + 1);
|
|
80
|
+
}
|
|
81
|
+
if (limit !== undefined) {
|
|
82
|
+
filteredItems = filteredItems.slice(0, limit);
|
|
202
83
|
}
|
|
203
|
-
const limitedItems = truncatedItems.slice(0, limit);
|
|
204
|
-
const lastItemInStore = filteredItems.at(-1);
|
|
205
|
-
const lastSelectedItem = limitedItems.at(-1);
|
|
206
|
-
const isLastSelectedItemAbsolutelyLast = lastItemInStore === lastSelectedItem;
|
|
207
|
-
const nextExclusiveStartKey = isLastSelectedItemAbsolutelyLast ? undefined : lastSelectedItem?.key;
|
|
208
84
|
this.updateTimestamps(false);
|
|
209
|
-
return
|
|
210
|
-
count: limitedItems.length,
|
|
211
|
-
limit,
|
|
212
|
-
exclusiveStartKey,
|
|
213
|
-
isTruncated: !isLastSelectedItemAbsolutelyLast,
|
|
214
|
-
nextExclusiveStartKey,
|
|
215
|
-
items: limitedItems,
|
|
216
|
-
};
|
|
85
|
+
return filteredItems;
|
|
217
86
|
}
|
|
218
87
|
/**
|
|
219
88
|
* Generates a public file:// URL for accessing a specific record in the key-value store.
|
|
@@ -221,7 +90,7 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
221
90
|
* Returns `undefined` if the record does not exist or has no associated file path (i.e., it is not stored as a file).
|
|
222
91
|
* @param key The key of the record to generate the public URL for.
|
|
223
92
|
*/
|
|
224
|
-
async
|
|
93
|
+
async getPublicUrl(key) {
|
|
225
94
|
s.string().parse(key);
|
|
226
95
|
const storageEntry = await this.keyValueEntries.get(key)?.get();
|
|
227
96
|
return storageEntry?.filePath;
|
|
@@ -236,15 +105,8 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
236
105
|
s.string().parse(key);
|
|
237
106
|
return this.keyValueEntries.has(key);
|
|
238
107
|
}
|
|
239
|
-
async
|
|
108
|
+
async getValue(key) {
|
|
240
109
|
s.string().parse(key);
|
|
241
|
-
s.object({
|
|
242
|
-
buffer: s.boolean().optional(),
|
|
243
|
-
// These options are ignored, but kept here
|
|
244
|
-
// for validation consistency with API client.
|
|
245
|
-
stream: s.boolean().optional(),
|
|
246
|
-
disableRedirect: s.boolean().optional(),
|
|
247
|
-
}).parse(options);
|
|
248
110
|
const storageEntry = this.keyValueEntries.get(key);
|
|
249
111
|
if (!storageEntry) {
|
|
250
112
|
return undefined;
|
|
@@ -255,19 +117,12 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
255
117
|
value: entry.value,
|
|
256
118
|
contentType: entry.contentType ?? mime.contentType(entry.extension),
|
|
257
119
|
};
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
else if (options.buffer) {
|
|
262
|
-
record.value = Buffer.from(record.value);
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
record.value = maybeParseBody(record.value, record.contentType);
|
|
266
|
-
}
|
|
120
|
+
// Auto-parse the body (JSON → object, text → string, etc.)
|
|
121
|
+
record.value = maybeParseBody(record.value, record.contentType);
|
|
267
122
|
this.updateTimestamps(false);
|
|
268
123
|
return record;
|
|
269
124
|
}
|
|
270
|
-
async
|
|
125
|
+
async setValue(record) {
|
|
271
126
|
s.object({
|
|
272
127
|
key: s.string().lengthGreaterThan(0),
|
|
273
128
|
value: s.union([
|
|
@@ -329,7 +184,7 @@ export class KeyValueStoreClient extends BaseClient {
|
|
|
329
184
|
this.keyValueEntries.set(key, entry);
|
|
330
185
|
this.updateTimestamps(true);
|
|
331
186
|
}
|
|
332
|
-
async
|
|
187
|
+
async deleteValue(key) {
|
|
333
188
|
s.string().parse(key);
|
|
334
189
|
const entry = this.keyValueEntries.get(key);
|
|
335
190
|
if (entry) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-value-store.js","sourceRoot":"","sources":["../../src/resource-clients/key-value-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"key-value-store.js","sourceRoot":"","sources":["../../src/resource-clients/key-value-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,12 @@ import { BaseClient } from './common/base-client.js';
|
|
|
4
4
|
export interface RequestQueueClientOptions {
|
|
5
5
|
name?: string;
|
|
6
6
|
id?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The directory name to use on disk. When provided, takes precedence over `name` and `id`
|
|
9
|
+
* for the directory path. This allows alias-opened storages to have a directory name
|
|
10
|
+
* that differs from their metadata `name` (which is `undefined` for unnamed storages).
|
|
11
|
+
*/
|
|
12
|
+
directoryName?: string;
|
|
7
13
|
baseStorageDirectory: string;
|
|
8
14
|
client: MemoryStorage;
|
|
9
15
|
}
|
|
@@ -18,6 +24,11 @@ export interface InternalRequest {
|
|
|
18
24
|
}
|
|
19
25
|
export declare class RequestQueueClient extends BaseClient implements storage.RequestQueueClient {
|
|
20
26
|
name?: string;
|
|
27
|
+
/**
|
|
28
|
+
* The key used for directory naming and cache lookup. For named storages, this equals
|
|
29
|
+
* the name. For alias (unnamed) storages, this is the alias string. Falls back to id.
|
|
30
|
+
*/
|
|
31
|
+
directoryName: string;
|
|
21
32
|
createdAt: Date;
|
|
22
33
|
accessedAt: Date;
|
|
23
34
|
modifiedAt: Date;
|
|
@@ -30,10 +41,8 @@ export declare class RequestQueueClient extends BaseClient implements storage.Re
|
|
|
30
41
|
private readonly client;
|
|
31
42
|
constructor(options: RequestQueueClientOptions);
|
|
32
43
|
getMetadata(): Promise<storage.RequestQueueInfo>;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}): Promise<storage.RequestQueueInfo | undefined>;
|
|
36
|
-
delete(): Promise<void>;
|
|
44
|
+
drop(): Promise<void>;
|
|
45
|
+
purge(): Promise<void>;
|
|
37
46
|
private requestKeyIterator;
|
|
38
47
|
listHead(options?: storage.ListOptions): Promise<storage.QueueHead>;
|
|
39
48
|
listAndLockHead(options: storage.ListAndLockOptions): Promise<storage.ListAndLockHeadResult>;
|
|
@@ -43,7 +52,6 @@ export declare class RequestQueueClient extends BaseClient implements storage.Re
|
|
|
43
52
|
batchAddRequests(requests: storage.RequestSchema[], options?: storage.RequestOptions): Promise<storage.BatchAddRequestsResult>;
|
|
44
53
|
getRequest(id: string): Promise<storage.RequestOptions | undefined>;
|
|
45
54
|
updateRequest(request: storage.UpdateRequestSchema, options?: storage.RequestOptions): Promise<storage.QueueOperationInfo>;
|
|
46
|
-
deleteRequest(id: string): Promise<void>;
|
|
47
55
|
toRequestQueueInfo(): storage.RequestQueueInfo;
|
|
48
56
|
private updateTimestamps;
|
|
49
57
|
private _jsonToRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../src/resource-clients/request-queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../src/resource-clients/request-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,7 @@ import { rm } from 'node:fs/promises';
|
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
4
|
import { AsyncQueue } from '@sapphire/async-queue';
|
|
5
5
|
import { s } from '@sapphire/shapeshift';
|
|
6
|
-
import { move } from 'fs-extra/esm';
|
|
7
6
|
import { scheduleBackgroundTask } from '../background-handler/index.js';
|
|
8
|
-
import { StorageTypes } from '../consts.js';
|
|
9
7
|
import { createRequestQueueStorageImplementation } from '../fs/request-queue/index.js';
|
|
10
8
|
import { purgeNullsFromObject, uniqueKeyToRequestId } from '../utils.js';
|
|
11
9
|
import { BaseClient } from './common/base-client.js';
|
|
@@ -26,6 +24,11 @@ const requestOptionsShape = s.object({
|
|
|
26
24
|
});
|
|
27
25
|
export class RequestQueueClient extends BaseClient {
|
|
28
26
|
name;
|
|
27
|
+
/**
|
|
28
|
+
* The key used for directory naming and cache lookup. For named storages, this equals
|
|
29
|
+
* the name. For alias (unnamed) storages, this is the alias string. Falls back to id.
|
|
30
|
+
*/
|
|
31
|
+
directoryName;
|
|
29
32
|
createdAt = new Date();
|
|
30
33
|
accessedAt = new Date();
|
|
31
34
|
modifiedAt = new Date();
|
|
@@ -39,40 +42,15 @@ export class RequestQueueClient extends BaseClient {
|
|
|
39
42
|
constructor(options) {
|
|
40
43
|
super(options.id ?? randomUUID());
|
|
41
44
|
this.name = options.name;
|
|
42
|
-
this.
|
|
45
|
+
this.directoryName = options.directoryName ?? this.name ?? this.id;
|
|
46
|
+
this.requestQueueDirectory = resolve(options.baseStorageDirectory, this.directoryName);
|
|
43
47
|
this.client = options.client;
|
|
44
48
|
}
|
|
45
49
|
async getMetadata() {
|
|
46
50
|
this.updateTimestamps(false);
|
|
47
51
|
return this.toRequestQueueInfo();
|
|
48
52
|
}
|
|
49
|
-
async
|
|
50
|
-
// The validation is intentionally loose to prevent issues
|
|
51
|
-
// when swapping to a remote queue in production.
|
|
52
|
-
const parsed = s
|
|
53
|
-
.object({
|
|
54
|
-
name: s.string().lengthGreaterThan(0).optional(),
|
|
55
|
-
})
|
|
56
|
-
.passthrough()
|
|
57
|
-
.parse(newFields);
|
|
58
|
-
// Skip if no changes
|
|
59
|
-
if (!parsed.name) {
|
|
60
|
-
return this.toRequestQueueInfo();
|
|
61
|
-
}
|
|
62
|
-
// Check that name is not in use already
|
|
63
|
-
const existingQueueByName = this.client.requestQueueCache.find((queue) => queue.name?.toLowerCase() === parsed.name.toLowerCase());
|
|
64
|
-
if (existingQueueByName) {
|
|
65
|
-
this.throwOnDuplicateEntry(StorageTypes.RequestQueue, 'name', parsed.name);
|
|
66
|
-
}
|
|
67
|
-
this.name = parsed.name;
|
|
68
|
-
const previousDir = this.requestQueueDirectory;
|
|
69
|
-
this.requestQueueDirectory = resolve(this.client.requestQueuesDirectory, parsed.name ?? this.name ?? this.id);
|
|
70
|
-
await move(previousDir, this.requestQueueDirectory, { overwrite: true });
|
|
71
|
-
// Update timestamps
|
|
72
|
-
this.updateTimestamps(true);
|
|
73
|
-
return this.toRequestQueueInfo();
|
|
74
|
-
}
|
|
75
|
-
async delete() {
|
|
53
|
+
async drop() {
|
|
76
54
|
const storeIndex = this.client.requestQueueCache.findIndex((queue) => queue.id === this.id);
|
|
77
55
|
if (storeIndex !== -1) {
|
|
78
56
|
const [oldClient] = this.client.requestQueueCache.splice(storeIndex, 1);
|
|
@@ -81,6 +59,24 @@ export class RequestQueueClient extends BaseClient {
|
|
|
81
59
|
await rm(oldClient.requestQueueDirectory, { recursive: true, force: true });
|
|
82
60
|
}
|
|
83
61
|
}
|
|
62
|
+
async purge() {
|
|
63
|
+
// Clear all in-memory state
|
|
64
|
+
this.requests.clear();
|
|
65
|
+
this.forefrontRequestIds = [];
|
|
66
|
+
this.handledRequestCount = 0;
|
|
67
|
+
this.pendingRequestCount = 0;
|
|
68
|
+
// Remove request files from disk but keep the directory
|
|
69
|
+
if (this.client.persistStorage) {
|
|
70
|
+
const { readdir } = await import('node:fs/promises');
|
|
71
|
+
const entries = await readdir(this.requestQueueDirectory).catch(() => []);
|
|
72
|
+
for (const entry of entries) {
|
|
73
|
+
if (entry !== '__metadata__.json') {
|
|
74
|
+
await rm(resolve(this.requestQueueDirectory, entry), { force: true });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
this.updateTimestamps(true);
|
|
79
|
+
}
|
|
84
80
|
*requestKeyIterator(rqClient) {
|
|
85
81
|
for (let i = this.forefrontRequestIds.length - 1; i >= 0; i--) {
|
|
86
82
|
yield this.forefrontRequestIds[i];
|
|
@@ -374,21 +370,6 @@ export class RequestQueueClient extends BaseClient {
|
|
|
374
370
|
wasAlreadyPresent: true,
|
|
375
371
|
};
|
|
376
372
|
}
|
|
377
|
-
async deleteRequest(id) {
|
|
378
|
-
const entry = this.requests.get(id);
|
|
379
|
-
if (entry) {
|
|
380
|
-
const request = await entry.get();
|
|
381
|
-
this.requests.delete(id);
|
|
382
|
-
this.updateTimestamps(true);
|
|
383
|
-
if (request.orderNo) {
|
|
384
|
-
this.pendingRequestCount -= 1;
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
this.handledRequestCount -= 1;
|
|
388
|
-
}
|
|
389
|
-
await entry.delete();
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
373
|
toRequestQueueInfo() {
|
|
393
374
|
return {
|
|
394
375
|
accessedAt: this.accessedAt,
|