@rxap/ts-morph
Version:
Provides utilities for manipulating TypeScript code using the ts-morph library. It offers a fluent API to add, modify, and remove code elements such as classes, decorators, imports, and properties in both Angular and NestJS projects. This package simplifi
55 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceHealthEndpoint = CoerceHealthEndpoint;
const utilities_1 = require("@rxap/utilities");
const ts_morph_1 = require("ts-morph");
const coerce_class_method_1 = require("../coerce-class-method");
const coerce_dependency_injection_1 = require("../coerce-dependency-injection");
const coerce_imports_1 = require("../coerce-imports");
function CoerceHealthEndpoint(sourceFile, name) {
const classDeclaration = sourceFile.getClassOrThrow('HealthController');
const healthIndicatorClass = `${(0, utilities_1.classify)(name)}HealthIndicator`;
(0, coerce_class_method_1.CoerceClassMethod)(classDeclaration, (0, utilities_1.camelize)(name), {
returnType: 'Promise<HealthCheckResult>',
statements: [
w => {
w.writeLine('return this.health.check([');
w.writeLine(`() => this.${(0, utilities_1.camelize)(healthIndicatorClass)}.isHealthy(),`);
w.write(']);');
},
],
scope: ts_morph_1.Scope.Public,
decorators: [
{
name: 'Get',
arguments: [w => w.quote((0, utilities_1.dasherize)(name))],
},
{
name: 'HealthCheck',
arguments: [],
},
],
});
(0, coerce_imports_1.CoerceImports)(sourceFile, [
{
moduleSpecifier: '@nestjs/terminus',
namedImports: ['HealthCheck', 'HealthCheckResult'],
},
{
moduleSpecifier: '@nestjs/common',
namedImports: ['Get'],
},
]);
(0, coerce_dependency_injection_1.CoerceDependencyInjection)(sourceFile, {
parameterName: (0, utilities_1.camelize)(healthIndicatorClass),
injectionToken: healthIndicatorClass,
scope: ts_morph_1.Scope.Private,
module: coerce_dependency_injection_1.Module.NEST,
}, [
{
moduleSpecifier: `./${(0, utilities_1.dasherize)(name)}.health-indicator`,
namedImports: [healthIndicatorClass],
},
]);
}
//# sourceMappingURL=coerce-health-endpoint.js.map