refactor: Optimize readAllMetadata function to use Promise.all for concurrent metadata reading

This commit is contained in:
Eric Fennis
2025-02-19 13:55:31 +01:00
parent b46927e510
commit 34dfc63ce2

View File

@@ -12,10 +12,12 @@ import { readMetadata } from './readMetadata.mjs';
export const readAllMetadata = async (directory) => {
const directoryContent = await fs.readdir(directory);
return directoryContent
.filter((file) => path.extname(file) === '.json')
.reduce((acc, fileName) => {
acc[path.basename(fileName, '.json')] = readMetadata(fileName, directory);
return acc;
}, {});
const metaDataPromises =
directoryContent
.filter((file) => path.extname(file) === '.json')
.map(async(file) => [path.basename(file, '.json'), await readMetadata(file, directory)]);
const metadata = await Promise.all(metaDataPromises)
return Object.fromEntries(metadata);
};