UNPKG

@weverson_na/prisma-generator-nestjs-dto

Version:

Advanced Prisma Generator with Smart Merge v2: Creates DTO and Entity classes with AST-based preservation, intelligent import management, and modular architecture for NestJS

50 lines (49 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImportStatementMerger = void 0; class ImportStatementMerger { static mergeImportStatements(first, second) { if (first.from !== second.from) { throw new Error(`Cannot merge import statements; 'from' differs`); } if (first.default && second.default) { throw new Error(`Cannot merge import statements; both have default`); } const firstDestruct = first.destruct || []; const secondDestruct = second.destruct || []; const destructStrings = this.getUniqueStrings([ ...firstDestruct, ...secondDestruct, ]); const destructObject = this.mergeDestructObjects([ ...firstDestruct, ...secondDestruct, ]); return { ...first, ...second, destruct: [...destructStrings, destructObject], }; } static zipImportStatementParams(items) { const map = items.reduce((acc, item) => { const existing = acc[item.from]; acc[item.from] = existing ? ImportStatementMerger.mergeImportStatements(existing, item) : item; return acc; }, {}); return Object.values(map); } static getUniqueStrings(destructItems) { return Array.from(new Set(destructItems.filter((x) => typeof x === 'string'))); } static mergeDestructObjects(destructItems) { return destructItems.reduce((result, destructItem) => { if (typeof destructItem === 'string') return result; return { ...result, ...destructItem }; }, {}); } } exports.ImportStatementMerger = ImportStatementMerger;