Browse Source

refactor: simplify merging of baseType w/ properties

pull/5137/head
Arman Ozak 6 years ago
parent
commit
82967a8195
  1. 19
      npm/ng-packs/packages/schematics/src/utils/model.ts

19
npm/ng-packs/packages/schematics/src/utils/model.ts

@ -68,7 +68,7 @@ export function createImportRefToImportReducerCreator(
return (imports: Import[], importRef: string) => return (imports: Import[], importRef: string) =>
reduceTypesToImport( reduceTypesToImport(
imports, imports,
mergeBaseTypeWithProperties(types[importRef]).reduce((typeNames: string[], { type }) => { mergeBaseTypeWithProperties(types[importRef]).reduce((typeNames: string[], type) => {
parseGenerics(type) parseGenerics(type)
.toGenerics() .toGenerics()
.forEach(t => typeNames.push(t)); .forEach(t => typeNames.push(t));
@ -81,27 +81,22 @@ export function createImportRefToImportReducerCreator(
export function mergeBaseTypeWithProperties({ baseType, genericArguments, properties }: Type) { export function mergeBaseTypeWithProperties({ baseType, genericArguments, properties }: Type) {
const removeGenerics = createGenericRemover(genericArguments); const removeGenerics = createGenericRemover(genericArguments);
const baseTypes = baseType ? [{ type: baseType }] : []; const baseTypes = baseType ? [baseType] : [];
const propTypes = (properties ?? []).map(({ type }) => ({ type })); const propTypes = (properties ?? []).map(({ type }) => type);
return [...baseTypes, ...propTypes].map(removeGenerics); return [...baseTypes, ...propTypes].map(removeGenerics);
} }
export function createGenericRemover(genericArguments: string[] | null) { export function createGenericRemover(genericArguments: string[] | null) {
if (!genericArguments) return (def: SimpleTypeDef) => def; if (!genericArguments) return (type: string) => type;
return ({ type }: SimpleTypeDef) => ({ return (type: string) =>
type: genericArguments.includes(type) genericArguments.includes(type)
? '' ? ''
: type.replace(/<([^<>]+)>/, (_, match) => { : type.replace(/<([^<>]+)>/, (_, match) => {
return match return match
.split(/,\s*/) .split(/,\s*/)
.filter((t: string) => !genericArguments.includes(t)) .filter((t: string) => !genericArguments.includes(t))
.join(','); .join(',');
}), });
});
}
interface SimpleTypeDef {
type: string;
} }

Loading…
Cancel
Save