@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
52 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceMethodClass = CoerceMethodClass;
const schematics_utilities_1 = require("@rxap/schematics-utilities");
const utilities_1 = require("@rxap/utilities");
const ts_morph_1 = require("ts-morph");
const coerce_class_1 = require("../coerce-class");
const coerce_class_method_1 = require("../coerce-class-method");
const coerce_source_file_1 = require("../coerce-source-file");
const ts_morph_transform_1 = require("../ts-morph-transform");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
function CoerceMethodClass(options) {
const { overwrite, name, tsMorphTransform = utilities_1.noop, providedIn, } = options;
const className = (0, schematics_utilities_1.classify)((0, schematics_utilities_1.CoerceSuffix)(name, 'Method'));
const fileName = (0, schematics_utilities_1.CoerceSuffix)(name, '.method.ts');
return (0, ts_morph_transform_1.TsMorphAngularProjectTransformRule)(options, (project) => {
var _a, _b, _c;
const sourceFile = (0, coerce_source_file_1.CoerceSourceFile)(project, fileName);
const classDeclaration = (0, coerce_class_1.CoerceClass)(sourceFile, className, {
isExported: true,
decorators: [
{
name: 'Injectable',
arguments: providedIn ? [ts_morph_1.Writers.object({ providedIn })] : [],
},
],
implements: ['Method'],
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
moduleSpecifier: '@rxap/pattern',
namedImports: ['Method'],
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
moduleSpecifier: '@angular/core',
namedImports: ['Injectable'],
});
const methodStructure = (_a = tsMorphTransform(project, sourceFile, classDeclaration)) !== null && _a !== void 0 ? _a : {};
(_b = methodStructure.parameters) !== null && _b !== void 0 ? _b : (methodStructure.parameters = [
{
name: 'parameters',
hasQuestionToken: true,
type: 'any',
},
]);
(_c = methodStructure.returnType) !== null && _c !== void 0 ? _c : (methodStructure.returnType = 'any');
const methodDeclaration = (0, coerce_class_method_1.CoerceClassMethod)(classDeclaration, 'call', methodStructure);
if (overwrite === true || (Array.isArray(overwrite) && overwrite.includes('method-declaration'))) {
methodDeclaration.set(methodStructure);
}
});
}
//# sourceMappingURL=coerce-method-class.js.map