@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
JavaScript
;
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