@nx/angular
Version:
42 lines (41 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertDirectiveToScam = convertDirectiveToScam;
const js_1 = require("@nx/js");
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
let tsModule;
function convertDirectiveToScam(tree, options) {
if (!tree.exists(options.filePath)) {
throw new Error(`Couldn't find directive at path ${options.filePath} to add SCAM setup.`);
}
if (!tsModule) {
tsModule = (0, ensure_typescript_1.ensureTypescript)();
}
if (options.inlineScam) {
const currentDirectiveContents = tree.read(options.filePath, 'utf-8');
let source = tsModule.createSourceFile(options.filePath, currentDirectiveContents, tsModule.ScriptTarget.Latest, true);
source = (0, js_1.insertImport)(tree, source, options.filePath, 'NgModule', '@angular/core');
source = (0, js_1.insertImport)(tree, source, options.filePath, 'CommonModule', '@angular/common');
let updatedDirectiveSource = source.getText();
updatedDirectiveSource = `${updatedDirectiveSource}${getNgModuleDeclaration(options.symbolName)}`;
tree.write(options.filePath, updatedDirectiveSource);
return;
}
tree.write(options.modulePath, getModuleFileContent(options.symbolName, options.fileName));
}
function getModuleFileContent(directiveClassName, directiveFileName) {
return `import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ${directiveClassName} } from './${directiveFileName}';
${getNgModuleDeclaration(directiveClassName)}`;
}
function getNgModuleDeclaration(directiveClassName) {
return `
@NgModule({
imports: [CommonModule],
declarations: [${directiveClassName}],
exports: [${directiveClassName}],
})
export class ${directiveClassName}Module {}
`;
}