@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
76 lines • 4.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceTableActionRule = CoerceTableActionRule;
const ts_morph_1 = require("ts-morph");
const coerce_method_class_1 = require("./coerce-method-class");
const schematics_utilities_1 = require("@rxap/schematics-utilities");
const coerce_class_implementation_1 = require("../ts-morph/coerce-class-implementation");
const schematics_1 = require("@angular-devkit/schematics");
const coerce_table_action_index_1 = require("./coerce-table-action-index");
const coerce_table_action_index_provider_1 = require("./coerce-table-action-index-provider");
const coerce_table_action_provider_1 = require("./coerce-table-action-provider");
const coerce_decorator_1 = require("../ts-morph/coerce-decorator");
const ts_morph_2 = require("@rxap/ts-morph");
function CoerceTableActionRule(options) {
let { tableName, type, refresh, confirm, tooltip, errorMessage, successMessage, priority, checkFunction, tsMorphTransform, } = options;
tsMorphTransform !== null && tsMorphTransform !== void 0 ? tsMorphTransform : (tsMorphTransform = () => ({}));
refresh !== null && refresh !== void 0 ? refresh : (refresh = false);
confirm !== null && confirm !== void 0 ? confirm : (confirm = false);
priority !== null && priority !== void 0 ? priority : (priority = 0);
return (0, schematics_1.chain)([
(0, coerce_table_action_index_provider_1.CoerceTableActionIndexProviderRule)(options),
(0, coerce_table_action_index_1.CoerceTableActionIndexRule)(options),
(0, coerce_table_action_provider_1.CoerceTableActionProviderRule)(options),
(0, coerce_method_class_1.CoerceMethodClass)(Object.assign(Object.assign({}, options), { name: (0, schematics_utilities_1.CoerceSuffix)(type, '-table-row-action'), tsMorphTransform: (project, sourceFile, classDeclaration) => {
var _a;
const tableInterfaceName = `I${(0, schematics_utilities_1.classify)(tableName)}`;
const optionsObj = {
type: w => w.quote(type),
refresh: refresh ? 'true' : 'false',
confirm: confirm ? 'true' : 'false',
priority: (_a = priority === null || priority === void 0 ? void 0 : priority.toFixed(0)) !== null && _a !== void 0 ? _a : '0',
};
if (tooltip) {
optionsObj['tooltip'] = `$localize\`${tooltip}\``;
}
if (errorMessage) {
optionsObj['errorMessage'] = w => w.quote(errorMessage);
}
if (successMessage) {
optionsObj['successMessage'] = w => w.quote(successMessage);
}
if (checkFunction) {
if (checkFunction.match(/^\([^)]+\)\s*=>/)) {
optionsObj['checkFunction'] = checkFunction;
}
else {
optionsObj['checkFunction'] =
`(element: ${tableInterfaceName}, index: number, array: ${tableInterfaceName}[]) => ${checkFunction}`;
}
}
(0, coerce_decorator_1.CoerceDecorator)(classDeclaration, 'TableActionMethod').set({
arguments: [ts_morph_1.Writers.object(optionsObj)],
});
(0, ts_morph_2.CoerceImports)(sourceFile, {
moduleSpecifier: '@rxap/material-table-system',
namedImports: ['TableActionMethod', 'TableRowActionTypeMethod'],
});
(0, ts_morph_2.CoerceImports)(sourceFile, {
moduleSpecifier: `../../${tableName}`,
namedImports: [tableInterfaceName],
});
(0, coerce_class_implementation_1.CoerceClassImplementation)(classDeclaration, `TableRowActionTypeMethod<${tableInterfaceName}>`);
return Object.assign({ statements: [
`console.log(\`action row type: ${type}\`, parameters);`,
`return parameters;`,
], isAsync: true, parameters: [
{
name: 'parameters',
type: tableInterfaceName,
hasQuestionToken: false,
},
], returnType: `Promise<unknown>` }, tsMorphTransform(project, sourceFile, classDeclaration));
} })),
]);
}
//# sourceMappingURL=coerce-table-action.js.map