UNPKG

@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
"use strict"; 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