@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
47 lines • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceTableDataSourceRule = CoerceTableDataSourceRule;
const schematics_utilities_1 = require("@rxap/schematics-utilities");
const ts_morph_1 = require("@rxap/ts-morph");
const coerce_decorator_1 = require("../ts-morph/coerce-decorator");
const coerce_parameter_declaration_1 = require("../ts-morph/coerce-parameter-declaration");
const coerce_data_source_class_1 = require("./coerce-data-source-class");
function CoerceTableDataSourceRule(options) {
let { name, operationId, scope, } = options;
name = (0, schematics_utilities_1.CoerceSuffix)(name, '-table');
return (0, coerce_data_source_class_1.CoerceDataSourceClass)(Object.assign(Object.assign({}, options), { coerceExtends: (sourceFile, classDeclaration) => {
classDeclaration.setExtends('DynamicTableDataSource');
(0, ts_morph_1.CoerceImports)(sourceFile, {
moduleSpecifier: '@rxap/data-source/table',
namedImports: ['DynamicTableDataSource'],
});
}, tsMorphTransform: (project, sourceFile, classDeclaration) => {
const [constructorDeclaration] = (0, ts_morph_1.CoerceClassConstructor)(classDeclaration);
constructorDeclaration.set({
statements: [
'super(new GetPageAdapterRemoteMethod(getByFilter as any));',
],
});
const propertyDeclaration = (0, coerce_parameter_declaration_1.CoerceParameterDeclaration)(constructorDeclaration, 'getByFilter').set({
type: (0, ts_morph_1.OperationIdToRemoteMethodClassName)(operationId),
});
(0, coerce_decorator_1.CoerceDecorator)(propertyDeclaration, 'Inject').set({
arguments: [(0, ts_morph_1.OperationIdToRemoteMethodClassName)(operationId)],
});
(0, ts_morph_1.CoerceImports)(sourceFile, [
{
moduleSpecifier: '@angular/core',
namedImports: ['Inject'],
},
{
moduleSpecifier: (0, ts_morph_1.OperationIdToClassRemoteMethodImportPath)(operationId, scope),
namedImports: [(0, ts_morph_1.OperationIdToRemoteMethodClassName)(operationId)],
},
{
moduleSpecifier: '@rxap/open-api/remote-method',
namedImports: ['GetPageAdapterRemoteMethod'],
},
]);
}, name }));
}
//# sourceMappingURL=coerce-table-data-source.js.map