UNPKG

@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
"use strict"; 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