@baseplate-dev/core-generators
Version:
Core generators for Baseplate
29 lines • 1.13 kB
JavaScript
/**
* Deduplicate source files for the template file extractor
*
* @param files Array of soruce files
* @returns Array of deduplicated source files
*/
export function deduplicateTemplateFileExtractorSourceFiles(files) {
const addedTemplates = new Set();
const deduplicatedList = [];
// Sort by modified time to ensure the latest version is used
for (const file of files.toSorted((a, b) => b.modifiedTime.getTime() - a.modifiedTime.getTime())) {
const fileKey = `${file.generatorName}__${file.templateName}`;
if (addedTemplates.has(fileKey)) {
if ('fileOptions' in file.existingMetadata &&
file.existingMetadata.fileOptions.kind ===
'singleton') {
throw new Error(`Duplicate singleton template found: ${fileKey}`);
}
else {
// instance templates are allowed to be duplicated
continue;
}
}
addedTemplates.add(fileKey);
deduplicatedList.push(file);
}
return deduplicatedList;
}
//# sourceMappingURL=deduplicate-templates.js.map