diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index 8a41776955..294b84e63e 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -1,7 +1,7 @@ import { SchematicsException, Tree } from '@angular-devkit/schematics'; import got from 'got'; import { Exception } from '../enums'; -import { ApiDefinition, Project } from '../models'; +import { ApiDefinition, Project, ProxyConfig } from '../models'; import { getAssignedPropertyFromObjectliteral } from './ast'; import { interpolate } from './common'; import { readEnvironment } from './workspace'; @@ -71,23 +71,28 @@ export function getSourceUrl(tree: Tree, project: Project, moduleName: string) { return assignment.replace(/[`'"]/g, ''); } -export function createApiDefinitionReader(targetPath: string) { +export function createProxyConfigReader(targetPath: string) { return (tree: Tree) => { try { const buffer = tree.read(targetPath); - const apiDefinition: ApiDefinition = JSON.parse(buffer!.toString()); - return apiDefinition; + return JSON.parse(buffer!.toString()) as ProxyConfig; } catch (_) {} throw new SchematicsException(interpolate(Exception.NoApiDefinition, targetPath)); }; } -export function createApiDefinitionSaver(apiDefinition: ApiDefinition, targetPath: string) { +export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: string) { + const readPreviousConfig = createProxyConfigReader(targetPath); + return (tree: Tree) => { - tree[tree.exists(targetPath) ? 'overwrite' : 'create']( - targetPath, - JSON.stringify(apiDefinition, null, 2), - ); + if (tree.exists(targetPath)) { + const generated: string[] = []; + try { + readPreviousConfig(tree).generated.forEach(m => generated.push(m)); + } catch (_) {} + + tree.overwrite(targetPath, JSON.stringify({ generated, ...apiDefinition }, null, 2)); + } else tree.create(targetPath, JSON.stringify(apiDefinition, null, 2)); }; }