@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
78 lines • 3.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceNestController = CoerceNestController;
const schematics_1 = require("@angular-devkit/schematics");
const utilities_1 = require("@rxap/utilities");
const coerce_class_1 = require("../coerce-class");
const ts_morph_transform_1 = require("../ts-morph-transform");
const coerce_decorator_1 = require("../ts-morph/coerce-decorator");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
const add_nest_module_controller_1 = require("./add-nest-module-controller");
const assert_nest_project_1 = require("./assert-nest-project");
const coerce_nest_module_1 = require("./coerce-nest-module");
function CoerceNestController(options) {
const { project, feature, shared, directory, coerceModule, skipModuleImport, overwrite, backend, } = options;
let { name, tsMorphTransform, nestModule, controllerPrefix, } = options;
// eslint-disable-next-line @typescript-eslint/no-empty-function
tsMorphTransform !== null && tsMorphTransform !== void 0 ? tsMorphTransform : (tsMorphTransform = () => { });
name = (0, utilities_1.dasherize)(name);
nestModule !== null && nestModule !== void 0 ? nestModule : (nestModule = name);
controllerPrefix !== null && controllerPrefix !== void 0 ? controllerPrefix : (controllerPrefix = name);
return (0, schematics_1.chain)([
(0, assert_nest_project_1.AssertNestProject)({ project, feature, shared, backend }),
coerceModule ? (0, coerce_nest_module_1.CoerceNestModule)({
project,
feature,
shared,
name: nestModule,
directory,
backend,
}) : (0, schematics_1.noop)(),
(0, ts_morph_transform_1.TsMorphNestProjectTransformRule)({
project,
feature,
shared,
directory,
backend,
}, (project, [controllerSourceFile, moduleSourceFile]) => {
const controllerDecoratorArguments = controllerPrefix ?
[w => w.quote(controllerPrefix)] :
[];
const classDeclaration = (0, coerce_class_1.CoerceClass)(controllerSourceFile, (0, utilities_1.classify)(name) + 'Controller', {
isExported: true,
decorators: [
{
name: 'Controller',
arguments: controllerDecoratorArguments,
},
],
});
if (overwrite) {
(0, coerce_decorator_1.CoerceDecorator)(classDeclaration, 'Controller').set({
arguments: controllerDecoratorArguments,
});
}
(0, coerce_imports_1.CoerceImports)(controllerSourceFile, [
{
namedImports: ['Controller'],
moduleSpecifier: '@nestjs/common',
},
]);
if (!skipModuleImport) {
if (moduleSourceFile.getClass((0, utilities_1.classify)(nestModule) + 'Module')) {
(0, add_nest_module_controller_1.AddNestModuleController)(moduleSourceFile, (0, utilities_1.classify)(name) + 'Controller', [
{
namedImports: [(0, utilities_1.classify)(name) + 'Controller'],
moduleSpecifier: './' + (0, utilities_1.dasherize)(name) + '.controller',
},
]);
}
}
tsMorphTransform(project, controllerSourceFile, classDeclaration, options);
}, [
`${(0, utilities_1.dasherize)(name)}.controller.ts?`,
`${(0, utilities_1.dasherize)(nestModule)}.module.ts?`,
]),
]);
}
//# sourceMappingURL=coerce-nest-controller.js.map