|
1 | 1 | import { dirname, join, resolve } from 'node:path'; |
2 | 2 | import { fileURLToPath } from 'node:url'; |
3 | 3 | import { existsSync } from 'node:fs'; |
4 | | -import { readdir } from 'node:fs/promises'; |
| 4 | +import { readdir, readFile } from 'node:fs/promises'; |
5 | 5 | import { homedir } from 'node:os'; |
6 | 6 | import { setTimeout } from 'node:timers/promises'; |
7 | 7 | import { execSync } from 'node:child_process'; |
8 | 8 | import fs from 'fs-extra'; |
9 | 9 | import { Actor } from 'apify'; |
| 10 | +// eslint-disable-next-line import/no-relative-packages |
10 | 11 | import { URL_NO_COMMAS_REGEX } from '../../packages/utils/dist/index.mjs'; |
11 | 12 |
|
12 | 13 | export const SKIPPED_TEST_CLOSE_CODE = 404; |
@@ -207,6 +208,35 @@ export async function getDatasetItems(dirName) { |
207 | 208 | return datasetItems; |
208 | 209 | } |
209 | 210 |
|
| 211 | +/** |
| 212 | + * Gets all items in the key-value store, as a Buffer |
| 213 | + * @param {string} dirName |
| 214 | + * @param {string} storeName |
| 215 | + */ |
| 216 | +export async function getKeyValueStoreItems(dirName, storeName) { |
| 217 | + const dir = getStorage(dirName); |
| 218 | + const storePath = join(dir, `key_value_stores/${storeName}`); |
| 219 | + |
| 220 | + if (!existsSync(storePath)) { |
| 221 | + return []; |
| 222 | + } |
| 223 | + |
| 224 | + const dirents = await readdir(storePath, { withFileTypes: true }); |
| 225 | + const fileNames = dirents.filter((dirent) => dirent.isFile()); |
| 226 | + const keyValueStoreRecords = []; |
| 227 | + |
| 228 | + for (const fileName of fileNames) { |
| 229 | + if (fileName.name.includes('__metadata__')) continue; |
| 230 | + |
| 231 | + const filePath = join(storePath, fileName.name); |
| 232 | + const buffer = await readFile(filePath); |
| 233 | + |
| 234 | + keyValueStoreRecords.push({ name: fileName.name.split('.').slice(0, -1).join('.'), raw: buffer }); |
| 235 | + } |
| 236 | + |
| 237 | + return keyValueStoreRecords; |
| 238 | +} |
| 239 | + |
210 | 240 | /** |
211 | 241 | * @param {string} dirName |
212 | 242 | */ |
|
0 commit comments