@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
79 lines • 3.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceTableHeaderButtonMethodRule = CoerceTableHeaderButtonMethodRule;
const schematics_1 = require("@angular-devkit/schematics");
const path_1 = require("path");
const ts_morph_1 = require("ts-morph");
const coerce_decorator_1 = require("../ts-morph/coerce-decorator");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
const add_component_provider_1 = require("./add-component-provider");
const coerce_component_1 = require("./coerce-component");
const coerce_method_class_1 = require("./coerce-method-class");
function CoerceTableHeaderButtonMethodRule(options) {
let { refresh, confirm, tooltip, errorMessage, successMessage, tsMorphTransformComponent, tableName, project, feature, shared, overwrite, directory, tsMorphTransform, } = options;
tsMorphTransform !== null && tsMorphTransform !== void 0 ? tsMorphTransform : (tsMorphTransform = () => ({}));
tsMorphTransformComponent !== null && tsMorphTransformComponent !== void 0 ? tsMorphTransformComponent : (tsMorphTransformComponent = () => ({}));
return (0, schematics_1.chain)([
(0, coerce_method_class_1.CoerceMethodClass)({
project,
feature,
shared,
overwrite,
directory: (0, path_1.join)(directory !== null && directory !== void 0 ? directory : '', 'methods'),
name: 'header-button',
tsMorphTransform: (project, sourceFile, classDeclaration) => {
(0, coerce_imports_1.CoerceImports)(sourceFile, [
{
moduleSpecifier: '@rxap/material-table-system',
namedImports: ['TableHeaderButtonMethod'],
},
]);
const buttonOptions = {};
if (refresh) {
buttonOptions['refresh'] = 'true';
}
if (confirm) {
buttonOptions['confirm'] = 'true';
}
if (tooltip) {
buttonOptions['tooltip'] = `$localize\`${tooltip}\``;
}
if (errorMessage) {
buttonOptions['errorMessage'] = `$localize\`${errorMessage}\``;
}
if (successMessage) {
buttonOptions['successMessage'] = `$localize\`${successMessage}\``;
}
(0, coerce_decorator_1.CoerceDecorator)(classDeclaration, 'TableHeaderButtonMethod', {
arguments: [ts_morph_1.Writers.object(buttonOptions)],
});
return Object.assign({}, tsMorphTransform(project, sourceFile, classDeclaration));
},
}),
(0, coerce_component_1.CoerceComponentRule)({
project,
feature,
shared,
name: tableName,
directory,
overwrite,
tsMorphTransform: (project, [sourceFile], [componentClass], options) => {
(0, add_component_provider_1.AddComponentProvider)(sourceFile, {
provide: 'TABLE_HEADER_BUTTON_METHOD',
useClass: 'HeaderButtonMethod',
}, [
{
moduleSpecifier: '@rxap/material-table-system',
namedImports: ['TABLE_HEADER_BUTTON_METHOD'],
},
{
moduleSpecifier: './methods/header-button.method',
namedImports: ['HeaderButtonMethod'],
},
]);
tsMorphTransformComponent(project, [sourceFile], [componentClass], options);
},
}),
]);
}
//# sourceMappingURL=coerce-table-header-button-method.js.map