@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.
@@ -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
- update(newFields?: storage.KeyValueStoreClientUpdateOptions): Promise<storage.KeyValueStoreInfo>;
28
- delete(): Promise<void>;
29
- listKeys(options?: storage.KeyValueStoreClientListOptions): AsyncIterable<storage.KeyValueStoreItemData> & Promise<storage.KeyValueStoreClientListData>;
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
- getRecordPublicUrl(key: string): Promise<string | undefined>;
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
- getRecord(key: string, options?: storage.KeyValueStoreClientGetRecordOptions): Promise<storage.KeyValueStoreRecord | undefined>;
49
- setRecord(record: storage.KeyValueStoreRecord): Promise<void>;
50
- deleteRecord(key: string): Promise<void>;
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":"AAKA,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAW/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,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,UAAU;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,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;IAOzC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAKjD,MAAM,CAAC,SAAS,GAAE,OAAO,CAAC,gCAAqC,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAmCpG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,QAAQ,CACJ,OAAO,GAAE,OAAO,CAAC,8BAAmC,GACrD,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAqB9F,IAAI,CACA,OAAO,GAAE,OAAO,CAAC,8BAAmC,GACrD,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAqBvE,MAAM,CAAC,OAAO,GAAE,OAAO,CAAC,8BAAmC,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8CzG,OAAO,CACH,OAAO,GAAE,OAAO,CAAC,8BAAmC,GACrD,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAoDpD,YAAY;IAkD1B;;;;;OAKG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQlE;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3C,SAAS,CACX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,mCAAwC,GAC1D,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAqC7C,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuE7D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C,mBAAmB,IAAI,OAAO,CAAC,iBAAiB;IAWhD,OAAO,CAAC,gBAAgB;CAqB3B"}
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 { createKeyList, createKeyStringList, createLazyIterablePromise, isBuffer, isStream } from '../utils.js';
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.keyValueStoreDirectory = resolve(options.baseStorageDirectory, this.name ?? this.id);
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 update(newFields = {}) {
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
- listKeys(options = {}) {
67
- const { limit, exclusiveStartKey, prefix } = s
68
- .object({
69
- limit: s.number().greaterThan(0).optional(),
70
- exclusiveStartKey: s.string().optional(),
71
- collection: s.string().optional(), // This is ignored, but kept for validation consistency with API client.
72
- prefix: s.string().optional(),
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
- keys(options = {}) {
82
- const { limit, exclusiveStartKey, prefix } = s
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
- // TODO(vladfrangu): ensure the sorting works the same way as before (if it matters)
193
- items.sort((a, b) => {
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 !== -1)
201
- truncatedItems = filteredItems.slice(keyPos + 1);
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 getRecordPublicUrl(key) {
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 getRecord(key, options = {}) {
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
- if (options.stream) {
259
- record.value = Readable.from(record.value);
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 setRecord(record) {
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 deleteRecord(key) {
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
- update(newFields: {
34
- name?: string | undefined;
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":"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"}
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;AAQ/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAqBrD,MAAM,WAAW,yBAAyB;IACtC,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,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAmB,SAAQ,UAAW,YAAW,OAAO,CAAC,kBAAkB;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,OAAc;IACvB,UAAU,OAAc;IACxB,UAAU,OAAc;IACxB,mBAAmB,SAAK;IACxB,mBAAmB,SAAK;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,mBAAmB,CAAgB;IAE3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4E;IACrG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,OAAO,EAAE,yBAAyB;IAQxC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAKhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,OAAO,CAAE,kBAAkB;IAUrB,QAAQ,CAAC,OAAO,GAAE,OAAO,CAAC,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IAyDvE,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC;IAwE5F,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,yBAAyB,GAC3C,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC;IAmCtC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B5F,UAAU,CACZ,OAAO,EAAE,OAAO,CAAC,aAAa,EAC9B,OAAO,GAAE,OAAO,CAAC,cAAmB,GACrC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAkDhC,gBAAgB,CAClB,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,EACjC,OAAO,GAAE,OAAO,CAAC,cAAmB,GACrC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;IA8DpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAOnE,aAAa,CACf,OAAO,EAAE,OAAO,CAAC,mBAAmB,EACpC,OAAO,GAAE,OAAO,CAAC,cAAmB,GACrC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAwDtC,kBAAkB,IAAI,OAAO,CAAC,gBAAgB;IAgB9C,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,iBAAiB;CAO5B"}
@@ -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.requestQueueDirectory = resolve(options.baseStorageDirectory, this.name ?? this.id);
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 update(newFields) {
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,