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

48 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AddNestController = AddNestController; const coerce_class_1 = require("../coerce-class"); const schematics_utilities_1 = require("@rxap/schematics-utilities"); const coerce_source_file_1 = require("../coerce-source-file"); const find_nest_module_source_file_1 = require("./find-nest-module-source-file"); const add_nest_module_controller_1 = require("./add-nest-module-controller"); const coerce_imports_1 = require("../ts-morph/coerce-imports"); function AddNestController(project, name, options = {}) { var _a, _b; const sourceFile = (_a = options.sourceFile) !== null && _a !== void 0 ? _a : (0, coerce_source_file_1.CoerceSourceFile)(project, `${(0, schematics_utilities_1.dasherize)(name)}.controller.ts`); const controllerClass = (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.classify)(name), 'Controller'); (0, coerce_class_1.CoerceClass)(sourceFile, controllerClass, { isExported: true, decorators: [ { name: 'Controller', arguments: [w => { var _a; return w.quote((_a = options.prefix) !== null && _a !== void 0 ? _a : (0, schematics_utilities_1.dasherize)(name)); }], }, ], }); (0, coerce_imports_1.CoerceImports)(sourceFile, { namedImports: ['Controller'], moduleSpecifier: '@nestjs/common', }); if (options.addToModule !== false) { const modulePath = (_b = options.modulePath) !== null && _b !== void 0 ? _b : sourceFile.getDirectoryPath(); let moduleSourceFile; if (modulePath.match(/\.ts$/)) { moduleSourceFile = project.getSourceFile(modulePath); } else { moduleSourceFile = (0, find_nest_module_source_file_1.FindNestModuleSourceFile)(project, modulePath); } if (!moduleSourceFile) { throw new Error(`Could not find a file at path '${modulePath}'`); } (0, add_nest_module_controller_1.AddNestModuleController)(moduleSourceFile, controllerClass, [ { namedImports: [controllerClass], moduleSpecifier: './' + moduleSourceFile.getRelativePathTo(sourceFile).replace(/\.ts$/, ''), }, ]); } return sourceFile; } //# sourceMappingURL=add-nest-controller.js.map