@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
49 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceTableParametersFromRouteRule = CoerceTableParametersFromRouteRule;
const schematics_utilities_1 = require("@rxap/schematics-utilities");
const ts_morph_1 = require("@rxap/ts-morph");
const ts_morph_2 = require("ts-morph");
const ts_morph_transform_1 = require("../ts-morph-transform");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
function CoerceTableParametersFromRouteRule(options) {
const { parameterList, tableName, } = options;
return (0, ts_morph_transform_1.TsMorphAngularProjectTransformRule)(options, (project) => {
const sourceFile = project.getSourceFileOrThrow(`${tableName}.component.ts`);
const classDeclaration = sourceFile.getClassOrThrow(`${(0, schematics_utilities_1.classify)(tableName)}Component`);
(0, ts_morph_1.CoerceDependencyInjection)(sourceFile, {
injectionToken: 'ActivatedRoute',
parameterName: 'route',
scope: ts_morph_2.Scope.Private,
module: ts_morph_1.Module.ANGULAR,
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
namedImports: ['ActivatedRoute'],
moduleSpecifier: '@angular/router',
});
(0, ts_morph_1.CoercePropertyDeclaration)(classDeclaration, 'parameters').set({
type: 'Observable<Record<string, string>>',
initializer: `this.route.params.map(params => ({${parameterList.map(parameter => `${parameter}: params.${parameter}`)
.join(', ')}}))`,
decorators: [
{
name: 'Input',
arguments: [],
},
],
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
namedImports: ['Observable'],
moduleSpecifier: 'rxjs',
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
namedImports: ['map'],
moduleSpecifier: 'rxjs/operators',
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
namedImports: ['Input'],
moduleSpecifier: '@angular/core',
});
});
}
//# sourceMappingURL=coerce-table-parameters-from-route.js.map