@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
46 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceTableActionProviderRule = CoerceTableActionProviderRule;
const schematics_utilities_1 = require("@rxap/schematics-utilities");
const ts_morph_1 = require("ts-morph");
const add_provider_to_array_1 = require("../add-provider-to-array");
const coerce_source_file_1 = require("../coerce-source-file");
const coerce_variable_declaration_1 = require("../coerce-variable-declaration");
const ts_morph_transform_1 = require("../ts-morph-transform");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
function CoerceTableActionProviderRule(options) {
const { type, tableName, } = options;
return (0, ts_morph_transform_1.TsMorphAngularProjectTransformRule)(options, project => {
const sourceFile = (0, coerce_source_file_1.CoerceSourceFile)(project, 'index.ts');
const variableDeclaration = (0, coerce_variable_declaration_1.CoerceVariableDeclaration)(sourceFile, 'TABLE_ROW_ACTION_METHODS', {
initializer: `[]`,
});
const formProviderArray = variableDeclaration.getInitializer();
if (!(formProviderArray === null || formProviderArray === void 0 ? void 0 : formProviderArray.isKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression))) {
throw new Error('FormProviders initializer is not an array literal expression');
}
const className = (0, schematics_utilities_1.CoerceSuffix)((0, schematics_utilities_1.classify)(type), 'TableRowActionMethod');
(0, add_provider_to_array_1.AddProviderToArray)({
provide: 'RXAP_TABLE_ROW_ACTION_METHOD',
useClass: className,
multi: true,
}, formProviderArray, false, (ole, po) => {
var _a;
const provideProperty = ole.getProperty('useClass');
if (provideProperty === null || provideProperty === void 0 ? void 0 : provideProperty.isKind(ts_morph_1.SyntaxKind.PropertyAssignment)) {
return ((_a = provideProperty.getInitializer()) === null || _a === void 0 ? void 0 : _a.getText().trim()) ===
po.useClass;
}
return false;
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
moduleSpecifier: `./${(0, schematics_utilities_1.CoerceSuffix)(type, '-table-row-action')}.method`,
namedImports: [className],
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
moduleSpecifier: '@rxap/material-table-system',
namedImports: ['RXAP_TABLE_ROW_ACTION_METHOD'],
});
});
}
//# sourceMappingURL=coerce-table-action-provider.js.map