|
|
|
@ -77,10 +77,10 @@ function updateAppModule(selectedProject: string, targetThemeName: ThemeOptionsE
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function removeImportPath(appModulePath: string, selectedTheme: ThemeOptionsEnum): Rule {
|
|
|
|
|
export function removeImportPath(appModulePath: string, selectedTheme: ThemeOptionsEnum): Rule {
|
|
|
|
|
return (host: Tree) => {
|
|
|
|
|
const recorder = host.beginUpdate(appModulePath);
|
|
|
|
|
const source = getSource(host, appModulePath);
|
|
|
|
|
const source = createSourceFile(host, appModulePath);
|
|
|
|
|
const impMap = getImportPaths(selectedTheme);
|
|
|
|
|
|
|
|
|
|
const nodes = findNodes(source, ts.isImportDeclaration);
|
|
|
|
@ -99,13 +99,13 @@ function removeImportPath(appModulePath: string, selectedTheme: ThemeOptionsEnum
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function removeImportFromNgModuleMetadata(
|
|
|
|
|
export function removeImportFromNgModuleMetadata(
|
|
|
|
|
appModulePath: string,
|
|
|
|
|
selectedTheme: ThemeOptionsEnum,
|
|
|
|
|
): Rule {
|
|
|
|
|
return (host: Tree) => {
|
|
|
|
|
const recorder = host.beginUpdate(appModulePath);
|
|
|
|
|
const source = getSource(host, appModulePath);
|
|
|
|
|
const source = createSourceFile(host, appModulePath);
|
|
|
|
|
const impMap = getImportPaths(selectedTheme);
|
|
|
|
|
|
|
|
|
|
const node = getDecoratorMetadata(source, 'NgModule', '@angular/core')[0] || {};
|
|
|
|
@ -119,12 +119,13 @@ function removeImportFromNgModuleMetadata(
|
|
|
|
|
|
|
|
|
|
const elements = assignmentInit.elements;
|
|
|
|
|
if (!elements || elements.length < 1) {
|
|
|
|
|
return;
|
|
|
|
|
throw new SchematicsException(`Elements could not found: ${elements}`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const filteredElements = elements.filter(f =>
|
|
|
|
|
impMap.some(s => f.getText().match(s.importName)),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (!filteredElements || filteredElements.length < 1) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -137,10 +138,10 @@ function removeImportFromNgModuleMetadata(
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function insertImports(appModulePath: string, selectedTheme: ThemeOptionsEnum): Rule {
|
|
|
|
|
export function insertImports(appModulePath: string, selectedTheme: ThemeOptionsEnum): Rule {
|
|
|
|
|
return (host: Tree) => {
|
|
|
|
|
const recorder = host.beginUpdate(appModulePath);
|
|
|
|
|
const source = getSource(host, appModulePath);
|
|
|
|
|
const source = createSourceFile(host, appModulePath);
|
|
|
|
|
const selected = importMap.get(selectedTheme);
|
|
|
|
|
|
|
|
|
|
const changes: Change[] = [];
|
|
|
|
@ -160,11 +161,16 @@ function insertImports(appModulePath: string, selectedTheme: ThemeOptionsEnum):
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getSource(host: Tree, appModulePath: string): ts.SourceFile {
|
|
|
|
|
const sourceText = host.read(appModulePath)?.toString('utf-8');
|
|
|
|
|
export function createSourceFile(host: Tree, appModulePath: string): ts.SourceFile {
|
|
|
|
|
const buffer = host.read(appModulePath);
|
|
|
|
|
if (!buffer || buffer.length === 0) {
|
|
|
|
|
throw new SchematicsException(`${appModulePath} file could not be read.`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const sourceText = buffer.toString('utf-8');
|
|
|
|
|
const source = ts.createSourceFile(
|
|
|
|
|
appModulePath,
|
|
|
|
|
sourceText!,
|
|
|
|
|
sourceText,
|
|
|
|
|
ts.ScriptTarget.Latest,
|
|
|
|
|
true,
|
|
|
|
|
ts.ScriptKind.TS,
|
|
|
|
@ -173,7 +179,7 @@ function getSource(host: Tree, appModulePath: string): ts.SourceFile {
|
|
|
|
|
return source;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getImportPaths(selectedTheme: ThemeOptionsEnum) {
|
|
|
|
|
export function getImportPaths(selectedTheme: ThemeOptionsEnum) {
|
|
|
|
|
return Array.from(importMap.values())
|
|
|
|
|
.filter(f => f !== importMap.get(selectedTheme))
|
|
|
|
|
.reduce((acc, val) => [...acc, ...val], []);
|
|
|
|
|