diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index b46cf3a017..7ba44465c3 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -28,18 +28,11 @@ export function createImportRefsToModelMapper({ solution, types }: ModelGenerato const namespace = parseNamespace(solution, importRefs[0]); const path = relativePathToModel(namespace, namespace); const model = new Model({ namespace, path }); + const imports: Import[] = []; - const reduceImportRefToImport = createImportRefToImportReducer(namespace); - const imports = importRefs.reduce((accumulatedImports, ref) => { - const interfaceDirect = mapImportRefToInterface(ref); - if (interfaceDirect && !types[ref].isEnum) model.interfaces.push(interfaceDirect); - - return reduceImportRefToImport(accumulatedImports, ref); - }, []); - - imports.forEach(_import => { - if (_import.path === model.path) - return _import.refs.forEach(ref => { + const reduceImportRefToImport = createImportRefToImportReducer(namespace, _import => { + if (_import.path === model.path) { + _import.refs.forEach(ref => { if (model.interfaces.some(i => i.ref === ref)) return; const interfaceIndirect = mapImportRefToInterface(ref); @@ -47,9 +40,21 @@ export function createImportRefsToModelMapper({ solution, types }: ModelGenerato reduceImportRefToImport(imports, ref); }); - model.imports.push(_import); + return false; + } + + return true; }); + importRefs + .reduce((accumulatedImports, ref) => { + const interfaceDirect = mapImportRefToInterface(ref); + if (interfaceDirect && !types[ref].isEnum) model.interfaces.push(interfaceDirect); + + return reduceImportRefToImport(accumulatedImports, ref); + }, imports) + .forEach(_import => model.imports.push(_import)); + sortInterfaces(model.interfaces); return model; @@ -92,7 +97,7 @@ export function createImportRefToImportReducerCreator( solution: string, types: Record, ) { - return (namespace: string) => { + return (namespace: string, filterFn: (imports: Import) => boolean) => { const reduceTypesToImport = createTypesToImportsReducer(solution, namespace); return (imports: Import[], importRef: string) => @@ -105,7 +110,7 @@ export function createImportRefToImportReducerCreator( return acc; }, []), - ); + ).filter(filterFn); }; }