From 34dfc63ce2effb2bb385bfa5efcd9a43b197957a Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 19 Feb 2025 13:55:31 +0100 Subject: [PATCH] refactor: Optimize readAllMetadata function to use Promise.all for concurrent metadata reading --- tools/build-helpers/src/readAllMetadata.mjs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/build-helpers/src/readAllMetadata.mjs b/tools/build-helpers/src/readAllMetadata.mjs index 9e5cb7b16..37cfd2abc 100644 --- a/tools/build-helpers/src/readAllMetadata.mjs +++ b/tools/build-helpers/src/readAllMetadata.mjs @@ -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); };