@crawlee/core 4.0.0-beta.2 → 4.0.0-beta.200

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 (259) hide show
  1. package/README.md +17 -13
  2. package/byte_utils.d.ts +17 -0
  3. package/byte_utils.js +42 -0
  4. package/configuration.d.ts +88 -234
  5. package/configuration.js +162 -230
  6. package/debug.d.ts +36 -0
  7. package/debug.js +70 -0
  8. package/errors.d.ts +43 -10
  9. package/errors.js +57 -12
  10. package/events/event_manager.d.ts +35 -9
  11. package/events/event_manager.js +12 -13
  12. package/events/index.d.ts +1 -1
  13. package/events/index.js +0 -1
  14. package/events/local_event_manager.d.ts +15 -5
  15. package/events/local_event_manager.js +39 -42
  16. package/events/system_info.d.ts +38 -0
  17. package/events/system_info.js +1 -0
  18. package/index.d.ts +8 -11
  19. package/index.js +9 -10
  20. package/internal.d.ts +8 -0
  21. package/internal.js +9 -0
  22. package/iterables.d.ts +79 -0
  23. package/iterables.js +134 -0
  24. package/log.d.ts +81 -3
  25. package/log.js +134 -1
  26. package/memory-storage/consts.d.ts +4 -0
  27. package/memory-storage/consts.js +4 -0
  28. package/memory-storage/index.d.ts +1 -0
  29. package/memory-storage/index.js +1 -0
  30. package/memory-storage/memory-storage.d.ts +43 -0
  31. package/memory-storage/memory-storage.js +158 -0
  32. package/memory-storage/resource-clients/common/base-client.d.ts +4 -0
  33. package/memory-storage/resource-clients/common/base-client.js +6 -0
  34. package/memory-storage/resource-clients/dataset.d.ts +40 -0
  35. package/memory-storage/resource-clients/dataset.js +106 -0
  36. package/memory-storage/resource-clients/key-value-store.d.ts +56 -0
  37. package/memory-storage/resource-clients/key-value-store.js +180 -0
  38. package/memory-storage/resource-clients/request-queue.d.ts +77 -0
  39. package/memory-storage/resource-clients/request-queue.js +414 -0
  40. package/memory-storage/utils.d.ts +16 -0
  41. package/memory-storage/utils.js +41 -0
  42. package/owned_or_injected.d.ts +58 -0
  43. package/owned_or_injected.js +98 -0
  44. package/package.json +19 -20
  45. package/proxy_configuration.d.ts +29 -155
  46. package/proxy_configuration.js +38 -183
  47. package/recoverable_state.d.ts +177 -0
  48. package/recoverable_state.js +268 -0
  49. package/request.d.ts +62 -81
  50. package/request.js +125 -220
  51. package/serialization.d.ts +0 -1
  52. package/serialization.js +18 -18
  53. package/service_locator.d.ts +168 -0
  54. package/service_locator.js +255 -0
  55. package/storages/batched_adds.d.ts +37 -0
  56. package/storages/batched_adds.js +73 -0
  57. package/storages/dataset.d.ts +120 -56
  58. package/storages/dataset.js +299 -148
  59. package/storages/index.d.ts +9 -8
  60. package/storages/index.js +5 -8
  61. package/storages/key_value_store.d.ts +192 -65
  62. package/storages/key_value_store.js +453 -193
  63. package/storages/key_value_store_codec.d.ts +32 -0
  64. package/storages/key_value_store_codec.js +113 -0
  65. package/storages/request_dedup_cache.d.ts +22 -0
  66. package/storages/request_dedup_cache.js +48 -0
  67. package/storages/request_list.d.ts +55 -137
  68. package/storages/request_list.js +272 -245
  69. package/storages/request_loader.d.ts +127 -0
  70. package/storages/request_loader.js +36 -0
  71. package/storages/request_manager.d.ts +119 -0
  72. package/storages/request_manager.js +1 -0
  73. package/storages/request_manager_tandem.d.ts +94 -0
  74. package/storages/request_manager_tandem.js +200 -0
  75. package/storages/request_queue.d.ts +293 -48
  76. package/storages/request_queue.js +766 -216
  77. package/storages/storage_instance_manager.d.ts +86 -0
  78. package/storages/storage_instance_manager.js +256 -0
  79. package/storages/storage_stats.d.ts +48 -0
  80. package/storages/storage_stats.js +29 -0
  81. package/storages/transaction.d.ts +271 -0
  82. package/storages/transaction.js +296 -0
  83. package/storages/utils.d.ts +59 -11
  84. package/storages/utils.js +75 -15
  85. package/system-info/cpu-info.d.ts +67 -0
  86. package/system-info/cpu-info.js +216 -0
  87. package/system-info/memory-info.d.ts +31 -0
  88. package/system-info/memory-info.js +115 -0
  89. package/system-info/ps-tree.d.ts +17 -0
  90. package/system-info/ps-tree.js +144 -0
  91. package/system-info/runtime.d.ts +14 -0
  92. package/system-info/runtime.js +80 -0
  93. package/typedefs.d.ts +0 -6
  94. package/typedefs.js +0 -1
  95. package/url.d.ts +9 -0
  96. package/url.js +11 -0
  97. package/validators.d.ts +23 -18
  98. package/validators.js +14 -18
  99. package/autoscaling/autoscaled_pool.d.ts +0 -300
  100. package/autoscaling/autoscaled_pool.d.ts.map +0 -1
  101. package/autoscaling/autoscaled_pool.js +0 -533
  102. package/autoscaling/autoscaled_pool.js.map +0 -1
  103. package/autoscaling/index.d.ts +0 -4
  104. package/autoscaling/index.d.ts.map +0 -1
  105. package/autoscaling/index.js +0 -4
  106. package/autoscaling/index.js.map +0 -1
  107. package/autoscaling/snapshotter.d.ts +0 -189
  108. package/autoscaling/snapshotter.d.ts.map +0 -1
  109. package/autoscaling/snapshotter.js +0 -292
  110. package/autoscaling/snapshotter.js.map +0 -1
  111. package/autoscaling/system_status.d.ts +0 -181
  112. package/autoscaling/system_status.d.ts.map +0 -1
  113. package/autoscaling/system_status.js +0 -169
  114. package/autoscaling/system_status.js.map +0 -1
  115. package/configuration.d.ts.map +0 -1
  116. package/configuration.js.map +0 -1
  117. package/cookie_utils.d.ts +0 -43
  118. package/cookie_utils.d.ts.map +0 -1
  119. package/cookie_utils.js +0 -113
  120. package/cookie_utils.js.map +0 -1
  121. package/crawlers/crawler_commons.d.ts +0 -199
  122. package/crawlers/crawler_commons.d.ts.map +0 -1
  123. package/crawlers/crawler_commons.js +0 -116
  124. package/crawlers/crawler_commons.js.map +0 -1
  125. package/crawlers/crawler_extension.d.ts +0 -12
  126. package/crawlers/crawler_extension.d.ts.map +0 -1
  127. package/crawlers/crawler_extension.js +0 -14
  128. package/crawlers/crawler_extension.js.map +0 -1
  129. package/crawlers/crawler_utils.d.ts +0 -10
  130. package/crawlers/crawler_utils.d.ts.map +0 -1
  131. package/crawlers/crawler_utils.js +0 -12
  132. package/crawlers/crawler_utils.js.map +0 -1
  133. package/crawlers/error_snapshotter.d.ts +0 -59
  134. package/crawlers/error_snapshotter.d.ts.map +0 -1
  135. package/crawlers/error_snapshotter.js +0 -118
  136. package/crawlers/error_snapshotter.js.map +0 -1
  137. package/crawlers/error_tracker.d.ts +0 -54
  138. package/crawlers/error_tracker.d.ts.map +0 -1
  139. package/crawlers/error_tracker.js +0 -309
  140. package/crawlers/error_tracker.js.map +0 -1
  141. package/crawlers/index.d.ts +0 -7
  142. package/crawlers/index.d.ts.map +0 -1
  143. package/crawlers/index.js +0 -7
  144. package/crawlers/index.js.map +0 -1
  145. package/crawlers/statistics.d.ts +0 -204
  146. package/crawlers/statistics.d.ts.map +0 -1
  147. package/crawlers/statistics.js +0 -346
  148. package/crawlers/statistics.js.map +0 -1
  149. package/enqueue_links/enqueue_links.d.ts +0 -242
  150. package/enqueue_links/enqueue_links.d.ts.map +0 -1
  151. package/enqueue_links/enqueue_links.js +0 -250
  152. package/enqueue_links/enqueue_links.js.map +0 -1
  153. package/enqueue_links/index.d.ts +0 -3
  154. package/enqueue_links/index.d.ts.map +0 -1
  155. package/enqueue_links/index.js +0 -3
  156. package/enqueue_links/index.js.map +0 -1
  157. package/enqueue_links/shared.d.ts +0 -67
  158. package/enqueue_links/shared.d.ts.map +0 -1
  159. package/enqueue_links/shared.js +0 -190
  160. package/enqueue_links/shared.js.map +0 -1
  161. package/errors.d.ts.map +0 -1
  162. package/errors.js.map +0 -1
  163. package/events/event_manager.d.ts.map +0 -1
  164. package/events/event_manager.js.map +0 -1
  165. package/events/index.d.ts.map +0 -1
  166. package/events/index.js.map +0 -1
  167. package/events/local_event_manager.d.ts.map +0 -1
  168. package/events/local_event_manager.js.map +0 -1
  169. package/http_clients/base-http-client.d.ts +0 -134
  170. package/http_clients/base-http-client.d.ts.map +0 -1
  171. package/http_clients/base-http-client.js +0 -33
  172. package/http_clients/base-http-client.js.map +0 -1
  173. package/http_clients/form-data-like.d.ts +0 -67
  174. package/http_clients/form-data-like.d.ts.map +0 -1
  175. package/http_clients/form-data-like.js +0 -5
  176. package/http_clients/form-data-like.js.map +0 -1
  177. package/http_clients/got-scraping-http-client.d.ts +0 -15
  178. package/http_clients/got-scraping-http-client.d.ts.map +0 -1
  179. package/http_clients/got-scraping-http-client.js +0 -69
  180. package/http_clients/got-scraping-http-client.js.map +0 -1
  181. package/http_clients/index.d.ts +0 -3
  182. package/http_clients/index.d.ts.map +0 -1
  183. package/http_clients/index.js +0 -3
  184. package/http_clients/index.js.map +0 -1
  185. package/index.d.ts.map +0 -1
  186. package/index.js.map +0 -1
  187. package/log.d.ts.map +0 -1
  188. package/log.js.map +0 -1
  189. package/proxy_configuration.d.ts.map +0 -1
  190. package/proxy_configuration.js.map +0 -1
  191. package/request.d.ts.map +0 -1
  192. package/request.js.map +0 -1
  193. package/router.d.ts +0 -134
  194. package/router.d.ts.map +0 -1
  195. package/router.js +0 -164
  196. package/router.js.map +0 -1
  197. package/serialization.d.ts.map +0 -1
  198. package/serialization.js.map +0 -1
  199. package/session_pool/consts.d.ts +0 -4
  200. package/session_pool/consts.d.ts.map +0 -1
  201. package/session_pool/consts.js +0 -4
  202. package/session_pool/consts.js.map +0 -1
  203. package/session_pool/errors.d.ts +0 -8
  204. package/session_pool/errors.d.ts.map +0 -1
  205. package/session_pool/errors.js +0 -12
  206. package/session_pool/errors.js.map +0 -1
  207. package/session_pool/events.d.ts +0 -3
  208. package/session_pool/events.d.ts.map +0 -1
  209. package/session_pool/events.js +0 -3
  210. package/session_pool/events.js.map +0 -1
  211. package/session_pool/index.d.ts +0 -6
  212. package/session_pool/index.d.ts.map +0 -1
  213. package/session_pool/index.js +0 -6
  214. package/session_pool/index.js.map +0 -1
  215. package/session_pool/session.d.ts +0 -199
  216. package/session_pool/session.d.ts.map +0 -1
  217. package/session_pool/session.js +0 -271
  218. package/session_pool/session.js.map +0 -1
  219. package/session_pool/session_pool.d.ts +0 -251
  220. package/session_pool/session_pool.d.ts.map +0 -1
  221. package/session_pool/session_pool.js +0 -375
  222. package/session_pool/session_pool.js.map +0 -1
  223. package/storages/access_checking.d.ts +0 -13
  224. package/storages/access_checking.d.ts.map +0 -1
  225. package/storages/access_checking.js +0 -14
  226. package/storages/access_checking.js.map +0 -1
  227. package/storages/dataset.d.ts.map +0 -1
  228. package/storages/dataset.js.map +0 -1
  229. package/storages/index.d.ts.map +0 -1
  230. package/storages/index.js.map +0 -1
  231. package/storages/key_value_store.d.ts.map +0 -1
  232. package/storages/key_value_store.js.map +0 -1
  233. package/storages/request_list.d.ts.map +0 -1
  234. package/storages/request_list.js.map +0 -1
  235. package/storages/request_provider.d.ts +0 -307
  236. package/storages/request_provider.d.ts.map +0 -1
  237. package/storages/request_provider.js +0 -555
  238. package/storages/request_provider.js.map +0 -1
  239. package/storages/request_queue.d.ts.map +0 -1
  240. package/storages/request_queue.js.map +0 -1
  241. package/storages/request_queue_v2.d.ts +0 -87
  242. package/storages/request_queue_v2.d.ts.map +0 -1
  243. package/storages/request_queue_v2.js +0 -438
  244. package/storages/request_queue_v2.js.map +0 -1
  245. package/storages/sitemap_request_list.d.ts +0 -245
  246. package/storages/sitemap_request_list.d.ts.map +0 -1
  247. package/storages/sitemap_request_list.js +0 -430
  248. package/storages/sitemap_request_list.js.map +0 -1
  249. package/storages/storage_manager.d.ts +0 -58
  250. package/storages/storage_manager.d.ts.map +0 -1
  251. package/storages/storage_manager.js +0 -105
  252. package/storages/storage_manager.js.map +0 -1
  253. package/storages/utils.d.ts.map +0 -1
  254. package/storages/utils.js.map +0 -1
  255. package/tsconfig.build.tsbuildinfo +0 -1
  256. package/typedefs.d.ts.map +0 -1
  257. package/typedefs.js.map +0 -1
  258. package/validators.d.ts.map +0 -1
  259. package/validators.js.map +0 -1
@@ -1,15 +1,9 @@
1
- import type { Dictionary, StorageClient } from '@crawlee/types';
1
+ import type { Awaitable, Dictionary, KeyValueStoreBackend, KeyValueStoreInfo } from '@crawlee/types';
2
2
  import { Configuration } from '../configuration.js';
3
- import type { Awaitable } from '../typedefs.js';
4
- import type { StorageManagerOptions } from './storage_manager.js';
5
- /**
6
- * Helper function to possibly stringify value if options.contentType is not set.
7
- *
8
- * @ignore
9
- */
10
- export declare const maybeStringify: <T>(value: T, options: {
11
- contentType?: string;
12
- }) => T;
3
+ import type { JournalEntry } from './transaction.js';
4
+ import type { KeyValueStoreStats } from './storage_stats.js';
5
+ import type { StorageOpenOptions } from './utils.js';
6
+ import type { StorageIdentifier } from './storage_instance_manager.js';
13
7
  /**
14
8
  * The `KeyValueStore` class represents a key-value store, a simple data storage that is used
15
9
  * for saving and reading data records or files. Each data record is
@@ -26,8 +20,6 @@ export declare const maybeStringify: <T>(value: T, options: {
26
20
  * To access the default key-value store directly, you can use the
27
21
  * {@link KeyValueStore.getValue} and {@link KeyValueStore.setValue} convenience functions.
28
22
  *
29
- * To access the input, you can also use the {@link KeyValueStore.getInput} convenience function.
30
- *
31
23
  * `KeyValueStore` stores its data on a local disk.
32
24
  *
33
25
  * If the `CRAWLEE_STORAGE_DIR` environment variable is set, the data is stored in
@@ -35,15 +27,14 @@ export declare const maybeStringify: <T>(value: T, options: {
35
27
  * ```
36
28
  * {CRAWLEE_STORAGE_DIR}/key_value_stores/{STORE_ID}/{INDEX}.{EXT}
37
29
  * ```
38
- * Note that `{STORE_ID}` is the name or ID of the key-value store. The default key-value store has ID: `default`,
39
- * unless you override it by setting the `CRAWLEE_DEFAULT_KEY_VALUE_STORE_ID` environment variable.
30
+ * Note that `{STORE_ID}` is the name or ID of the key-value store. The default key-value store has ID: `default`.
40
31
  * The `{KEY}` is the key of the record and `{EXT}` corresponds to the MIME content type of the data value.
41
32
  *
42
33
  * **Example usage:**
43
34
  *
44
35
  * ```javascript
45
36
  * // Get crawler input from the default key-value store.
46
- * const input = await KeyValueStore.getInput();
37
+ * const input = await KeyValueStore.getValue('INPUT');
47
38
  * // Get some value from the default key-value store.
48
39
  * const otherValue = await KeyValueStore.getValue('my-key');
49
40
  *
@@ -67,18 +58,20 @@ export declare const maybeStringify: <T>(value: T, options: {
67
58
  * @category Result Stores
68
59
  */
69
60
  export declare class KeyValueStore {
70
- readonly config: Configuration;
61
+ #private;
62
+ readonly configuration: Configuration;
71
63
  readonly id: string;
72
64
  readonly name?: string;
73
- readonly storageObject?: Record<string, unknown>;
74
- private readonly client;
75
- private persistStateEventStarted;
76
- /** Cache for persistent (auto-saved) values. When we try to set such value, the cache will be updated automatically. */
77
- private readonly cache;
65
+ readonly backend: KeyValueStoreBackend;
78
66
  /**
79
67
  * @internal
80
68
  */
81
- constructor(options: KeyValueStoreOptions, config?: Configuration);
69
+ constructor(options: KeyValueStoreOptions, configuration?: Configuration);
70
+ /**
71
+ * Backend-independent usage counters tracked for this key-value store (read / write / delete /
72
+ * list operations issued to the underlying storage backend). Counted per backend call.
73
+ */
74
+ get stats(): KeyValueStoreStats;
82
75
  /**
83
76
  * Gets a value from the key-value store.
84
77
  *
@@ -143,6 +136,48 @@ export declare class KeyValueStore {
143
136
  * on the MIME content type of the record, or the default value if the key is missing from the store.
144
137
  */
145
138
  getValue<T = unknown>(key: string, defaultValue: T): Promise<T>;
139
+ /**
140
+ * The active transaction's last buffered write per key for this store, derived from its journal.
141
+ * An entry with a `null` value is a tombstone (an in-transaction deletion).
142
+ */
143
+ private bufferedJournalEntries;
144
+ /**
145
+ * The single transaction-aware record read shared by `getValue`, `getRecord`, `recordExists` and the
146
+ * listing paths: buffered key → serialized through the standard codec (same fidelity as a real
147
+ * round-trip); tombstoned key → `null`; otherwise the backend.
148
+ *
149
+ * The per-key buffered lookup requires the whole journal to be reduced to a last-write-per-key map,
150
+ * which is O(journal). Single-record callers let it default (rebuilt per call); the listing paths,
151
+ * which read many keys, pass a map built once so the read stays O(1) per key instead of O(journal).
152
+ */
153
+ private readRecord;
154
+ /**
155
+ * Reads a record from the key-value store without parsing the value.
156
+ *
157
+ * Use this when you need the raw bytes and the content type — for example, to run your own
158
+ * parser (`simdjson`, a custom XML library, etc.) or to forward the bytes verbatim.
159
+ *
160
+ * There is no symmetric `setRecord` method, because {@link KeyValueStore.setValue} already
161
+ * passes a `Buffer` (or `string` / `Stream`) through unchanged when an explicit `contentType`
162
+ * is provided. To write pre-serialized bytes, call
163
+ * `setValue(key, buffer, { contentType: 'application/json; charset=utf-8' })`.
164
+ *
165
+ * Returns `null` if the record does not exist.
166
+ *
167
+ * **Example usage:**
168
+ * ```javascript
169
+ * const store = await KeyValueStore.open();
170
+ * const record = await store.getRecord('huge.json');
171
+ * if (record) {
172
+ * const data = simdjson.parse(record.value);
173
+ * }
174
+ * ```
175
+ *
176
+ * @param key
177
+ * Unique key of the record. It can be at most 256 characters long and only consist
178
+ * of the following characters: `a`-`z`, `A`-`Z`, `0`-`9` and `!-_.'()`
179
+ */
180
+ getRecord(key: string): Promise<KeyValueStoreRawRecord | null>;
146
181
  /**
147
182
  * Tests whether a record with the given key exists in the key-value store without retrieving its value.
148
183
  *
@@ -152,6 +187,8 @@ export declare class KeyValueStore {
152
187
  recordExists(key: string): Promise<boolean>;
153
188
  getAutoSavedValue<T extends Dictionary = Dictionary>(key: string, defaultValue?: T): Promise<T>;
154
189
  private ensurePersistStateEvent;
190
+ private fetchKeyValuePages;
191
+ private fetchKeyPages;
155
192
  /**
156
193
  * Saves or deletes a record in the key-value store.
157
194
  * The function returns a promise that resolves once the record has been saved or deleted.
@@ -196,18 +233,25 @@ export declare class KeyValueStore {
196
233
  * @param [options] Record options.
197
234
  */
198
235
  setValue<T>(key: string, value: T | null, options?: RecordOptions): Promise<void>;
236
+ /** @internal */
237
+ commitJournalEntries(entries: JournalEntry[]): Promise<void>;
199
238
  /**
200
239
  * Removes the key-value store either from the Apify cloud storage or from the local directory,
201
240
  * depending on the mode of operation.
202
241
  */
203
242
  drop(): Promise<void>;
243
+ /**
244
+ * Removes all records from the store but keeps the store itself, along with its
245
+ * {@link KeyValueStore.id|`id`} and {@link KeyValueStore.name|`name`}.
246
+ */
247
+ purge(): Promise<void>;
204
248
  /** @internal */
205
249
  clearCache(): void;
206
250
  /**
207
251
  * Iterates over key-value store keys, yielding each in turn to an `iteratee` function.
208
252
  * Each invocation of `iteratee` is called with three arguments: `(key, index, info)`, where `key`
209
253
  * is the record key, `index` is a zero-based index of the key in the current iteration
210
- * (regardless of `options.exclusiveStartKey`) and `info` is an object that contains a single property `size`
254
+ * and `info` is an object that contains a single property `size`
211
255
  * indicating size of the record in bytes.
212
256
  *
213
257
  * If the `iteratee` function returns a Promise then it is awaited before the next call.
@@ -225,11 +269,101 @@ export declare class KeyValueStore {
225
269
  * @param [options] All `forEachKey()` parameters.
226
270
  */
227
271
  forEachKey(iteratee: KeyConsumer, options?: KeyValueStoreIteratorOptions): Promise<void>;
228
- private _forEachKey;
272
+ /**
273
+ * Returns key-value store keys.
274
+ *
275
+ * When awaited (`await store.keys()`), returns all keys as a flat `string[]` array.
276
+ * When used as an async iterable (`for await...of`), iterates over all keys across pages
277
+ * without loading everything into memory at once.
278
+ *
279
+ * **Example usage:**
280
+ * ```javascript
281
+ * const keyValueStore = await KeyValueStore.open();
282
+ *
283
+ * // Iterate over all keys (memory-efficient for large stores)
284
+ * for await (const key of keyValueStore.keys()) {
285
+ * console.log(key);
286
+ * }
287
+ *
288
+ * // Or fetch all keys at once
289
+ * const allKeys = await keyValueStore.keys();
290
+ * console.log(allKeys);
291
+ * ```
292
+ *
293
+ * @param options Options for the iteration.
294
+ */
295
+ keys(options?: KeyValueStoreIteratorOptions): AsyncIterable<string> & Promise<string[]>;
296
+ /**
297
+ * Returns key-value store values.
298
+ *
299
+ * When awaited (`await store.values()`), returns all values as a flat `T[]` array.
300
+ * When used as an async iterable (`for await...of`), iterates over all values across pages
301
+ * without loading everything into memory at once.
302
+ *
303
+ * **Example usage:**
304
+ * ```javascript
305
+ * const keyValueStore = await KeyValueStore.open();
306
+ *
307
+ * // Iterate over all values (memory-efficient for large stores)
308
+ * for await (const value of keyValueStore.values()) {
309
+ * console.log(value);
310
+ * }
311
+ *
312
+ * // Or fetch all values at once
313
+ * const allValues = await keyValueStore.values();
314
+ * console.log(allValues);
315
+ * ```
316
+ *
317
+ * @param options Options for the iteration.
318
+ */
319
+ values<T = unknown>(options?: KeyValueStoreIteratorOptions): AsyncIterable<T> & Promise<T[]>;
320
+ /**
321
+ * Returns key-value store entries (key-value pairs).
322
+ *
323
+ * When awaited (`await store.entries()`), returns all entries as a flat `[key, value][]` array.
324
+ * When used as an async iterable (`for await...of`), iterates over all entries across pages
325
+ * without loading everything into memory at once.
326
+ *
327
+ * **Example usage:**
328
+ * ```javascript
329
+ * const keyValueStore = await KeyValueStore.open();
330
+ *
331
+ * // Iterate over all entries (memory-efficient for large stores)
332
+ * for await (const [key, value] of keyValueStore.entries()) {
333
+ * console.log(`${key}: ${value}`);
334
+ * }
335
+ *
336
+ * // Or fetch all entries at once
337
+ * const allEntries = await keyValueStore.entries();
338
+ * console.log(allEntries);
339
+ * ```
340
+ *
341
+ * @param options Options for the iteration.
342
+ */
343
+ entries<T = unknown>(options?: KeyValueStoreIteratorOptions): AsyncIterable<[string, T]> & Promise<[string, T][]>;
344
+ /**
345
+ * Default async iterator for the key-value store, iterating over entries (key-value pairs).
346
+ * Allows using the store directly in a `for await...of` loop.
347
+ *
348
+ * **Example usage:**
349
+ * ```javascript
350
+ * const keyValueStore = await KeyValueStore.open();
351
+ * for await (const [key, value] of keyValueStore) {
352
+ * console.log(`${key}: ${value}`);
353
+ * }
354
+ * ```
355
+ */
356
+ [Symbol.asyncIterator]<T = unknown>(): AsyncGenerator<[string, T], void, undefined>;
229
357
  /**
230
358
  * Returns a file URL for the given key.
359
+ *
360
+ * The URL is derived from the key, so it is also returned for a record that does not exist (yet) —
361
+ * including one written earlier in an uncommitted storage transaction. Returns `undefined` only when
362
+ * the storage has no file URLs at all (e.g. the in-memory storage).
363
+ *
364
+ * @param key The key of the record to generate the public URL for.
231
365
  */
232
- getPublicUrl(key: string): string;
366
+ getPublicUrl(key: string): Promise<string | undefined>;
233
367
  /**
234
368
  * Opens a key-value store and returns a promise resolving to an instance of the {@link KeyValueStore} class.
235
369
  *
@@ -239,12 +373,13 @@ export declare class KeyValueStore {
239
373
  *
240
374
  * For more details and code examples, see the {@link KeyValueStore} class.
241
375
  *
242
- * @param [storeIdOrName]
243
- * ID or name of the key-value store to be opened. If `null` or `undefined`,
244
- * the function returns the default key-value store associated with the crawler run.
376
+ * @param [identifier]
377
+ * ID or name of the key-value store to be opened. If a string is provided, it will first be
378
+ * looked up as an ID; if no such storage exists, it will be treated as a name.
379
+ * If `null` or `undefined`, the function returns the default key-value store associated with the crawler run.
245
380
  * @param [options] Storage manager options.
246
381
  */
247
- static open(storeIdOrName?: string | null, options?: StorageManagerOptions): Promise<KeyValueStore>;
382
+ static open(identifier?: string | StorageIdentifier | null, options?: StorageOpenOptions): Promise<KeyValueStore>;
248
383
  /**
249
384
  * Gets a value from the default {@link KeyValueStore} associated with the current crawler run.
250
385
  *
@@ -303,6 +438,19 @@ export declare class KeyValueStore {
303
438
  * @ignore
304
439
  */
305
440
  static getValue<T = unknown>(key: string, defaultValue: T): Promise<T>;
441
+ /**
442
+ * Reads a record from the default {@link KeyValueStore} associated with the current crawler run
443
+ * without parsing the value.
444
+ *
445
+ * This is just a convenient shortcut for {@link KeyValueStore.getRecord}. Returns `null` if the
446
+ * record does not exist.
447
+ *
448
+ * @param key
449
+ * Unique key of the record. It can be at most 256 characters long and only consist
450
+ * of the following characters: `a`-`z`, `A`-`Z`, `0`-`9` and `!-_.'()`
451
+ * @ignore
452
+ */
453
+ static getRecord(key: string): Promise<KeyValueStoreRawRecord | null>;
306
454
  /**
307
455
  * Tests whether a record with the given key exists in the default {@link KeyValueStore} associated with the current crawler run.
308
456
  * @param key The queried record key.
@@ -342,26 +490,6 @@ export declare class KeyValueStore {
342
490
  * @ignore
343
491
  */
344
492
  static setValue<T>(key: string, value: T | null, options?: RecordOptions): Promise<void>;
345
- /**
346
- * Gets the crawler input value from the default {@link KeyValueStore} associated with the current crawler run.
347
- * By default, it will try to find root input files (either extension-less, `.json` or `.txt`),
348
- * or alternatively read the input from the default {@link KeyValueStore}.
349
- *
350
- * Note that the `getInput()` function does not cache the value read from the key-value store.
351
- * If you need to use the input multiple times in your crawler,
352
- * it is far more efficient to read it once and store it locally.
353
- *
354
- * For more information, see {@link KeyValueStore.open}
355
- * and {@link KeyValueStore.getValue}.
356
- *
357
- * @returns
358
- * Returns a promise that resolves to an object, string
359
- * or [`Buffer`](https://nodejs.org/api/buffer.html), depending
360
- * on the MIME content type of the record, or `null`
361
- * if the record is missing.
362
- * @ignore
363
- */
364
- static getInput<T = Dictionary | string | Buffer>(): Promise<T | null>;
365
493
  }
366
494
  /**
367
495
  * User-function used in the {@link KeyValueStore.forEachKey} method.
@@ -377,30 +505,29 @@ export interface KeyConsumer {
377
505
  size: number;
378
506
  }): Awaitable<void>;
379
507
  }
508
+ /** @internal */
380
509
  export interface KeyValueStoreOptions {
381
- id: string;
382
- name?: string;
383
- client: StorageClient;
384
- storageObject?: Record<string, unknown>;
510
+ /** Resolved metadata for the key-value store, as returned by the backend's `getMetadata()`. */
511
+ metadata: KeyValueStoreInfo;
512
+ backend: KeyValueStoreBackend;
513
+ }
514
+ /**
515
+ * A raw, unparsed key-value store record as returned by {@link KeyValueStore.getRecord}: the
516
+ * verbatim bytes plus the content type, with parsing left to the caller.
517
+ */
518
+ export interface KeyValueStoreRawRecord {
519
+ value: Buffer | ArrayBuffer;
520
+ contentType: string | null;
385
521
  }
386
522
  export interface RecordOptions {
387
523
  /**
388
524
  * Specifies a custom MIME content type of the record.
389
525
  */
390
526
  contentType?: string;
391
- /**
392
- * Specifies a custom timeout for the `set-record` API call, in seconds.
393
- */
394
- timeoutSecs?: number;
395
- /**
396
- * If set to `true`, the `set-record` API call will not be retried if it times out.
397
- */
398
- doNotRetryTimeouts?: boolean;
399
527
  }
400
528
  export interface KeyValueStoreIteratorOptions {
401
529
  /**
402
- * All keys up to this one (including) are skipped from the result.
530
+ * If set, only keys that start with this prefix are returned.
403
531
  */
404
- exclusiveStartKey?: string;
532
+ prefix?: string;
405
533
  }
406
- //# sourceMappingURL=key_value_store.d.ts.map