@rxap/schematics-ts-morph
Version:
This package provides utilities for manipulating TypeScript code using ts-morph, particularly for Angular and NestJS projects. It offers functions to add, coerce, and modify code elements like classes, methods, decorators, and imports. The package also in
63 lines • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceNestModule = CoerceNestModule;
const schematics_1 = require("@angular-devkit/schematics");
const utilities_1 = require("@rxap/utilities");
const workspace_utilities_1 = require("@rxap/workspace-utilities");
const coerce_class_1 = require("../coerce-class");
const ts_morph_transform_1 = require("../ts-morph-transform");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
const add_nest_module_to_app_module_1 = require("./add-nest-module-to-app-module");
const assert_nest_project_1 = require("./assert-nest-project");
function CoerceNestModule(options) {
const { name, project, feature, shared, directory, backend, } = options;
let { tsMorphTransform } = options;
// eslint-disable-next-line @typescript-eslint/no-empty-function
tsMorphTransform !== null && tsMorphTransform !== void 0 ? tsMorphTransform : (tsMorphTransform = () => { });
return (0, schematics_1.chain)([
(0, assert_nest_project_1.AssertNestProject)({
project,
feature,
shared,
backend,
}),
(0, ts_morph_transform_1.TsMorphNestProjectTransformRule)({
project,
feature,
shared,
directory,
backend,
}, (project, [sourceFile]) => {
const classDeclaration = (0, coerce_class_1.CoerceClass)(sourceFile, (0, utilities_1.classify)(name) + 'Module', {
isExported: true,
decorators: [
{
name: 'Module',
arguments: ['{}'],
},
],
});
(0, coerce_imports_1.CoerceImports)(sourceFile, [
{
namedImports: ['Module'],
moduleSpecifier: '@nestjs/common',
},
]);
tsMorphTransform(project, sourceFile, classDeclaration);
}, [`${(0, utilities_1.dasherize)(name)}.module.ts?`]),
tree => {
if ((0, workspace_utilities_1.IsApplicationProject)((0, workspace_utilities_1.GetProject)(tree, project)) && name !== 'app') {
return (0, add_nest_module_to_app_module_1.AddNestModuleToAppModule)({
project,
feature,
shared,
name,
directory,
backend,
});
}
return (0, schematics_1.noop)();
},
]);
}
//# sourceMappingURL=coerce-nest-module.js.map