UNPKG

@baseplate-dev/sync

Version:

Library for syncing Baseplate descriptions

38 lines 1.67 kB
import pLimit from 'p-limit'; import { getGenerationConcurrencyLimit } from '#src/utils/concurrency.js'; import { WriteGeneratorFilesError } from './errors.js'; import { writeGeneratorFile } from './write-generator-file.js'; /** * Write multiple generator files in parallel */ export async function writeGeneratorFiles({ fileOperations, outputDirectory, generatedContentsDirectory, }) { const writeLimit = pLimit(getGenerationConcurrencyLimit()); const writeErrors = []; // Sort operations that require rename before other operations // to ensure that we write new files after renames occur const fileOperationsWithRenames = fileOperations.filter((f) => f.previousRelativePath !== f.relativePath); const fileOperationsWithoutRenames = fileOperations.filter((f) => f.previousRelativePath === f.relativePath); async function writeFileOperations(fileOperations) { await Promise.all(fileOperations.map((fileOperation) => writeLimit(async () => { try { await writeGeneratorFile({ fileOperation, outputDirectory, generatedContentsDirectory, }); } catch (error) { writeErrors.push({ relativePath: fileOperation.relativePath, error, }); } }))); } await writeFileOperations(fileOperationsWithRenames); await writeFileOperations(fileOperationsWithoutRenames); if (writeErrors.length > 0) { throw new WriteGeneratorFilesError(writeErrors); } } //# sourceMappingURL=write-generator-files.js.map