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

75 lines 3.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CoerceOptionsDataSourceRule = CoerceOptionsDataSourceRule; const schematics_utilities_1 = require("@rxap/schematics-utilities"); 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 coerce_data_source_class_1 = require("./coerce-data-source-class"); function CoerceOptionsDataSourceRule(options) { const { name, project, feature, directory, shared, optionList, } = options; return (0, coerce_data_source_class_1.CoerceDataSourceClass)({ project, feature, directory, shared, name, coerceExtends: (sourceFile, classDeclaration, options) => { classDeclaration.setExtends(`StaticDataSource<ControlOptions>`); (0, coerce_imports_1.CoerceImports)(sourceFile, [ { moduleSpecifier: '@rxap/data-source', namedImports: ['StaticDataSource'], }, { moduleSpecifier: '@rxap/utilities', namedImports: ['ControlOptions'], }, ]); }, coerceDecorator: (sourceFile, classDeclaration, options) => { (0, coerce_decorator_1.CoerceDecorator)(classDeclaration, 'RxapStaticDataSource', { arguments: [ ts_morph_1.Writers.object({ id: w => w.quote((0, schematics_utilities_1.dasherize)(name)), data: w => { w.write('['); for (const option of optionList) { const obj = {}; obj['value'] = option.value; obj['display'] = w => w.quote(option.display); if (typeof option.disabled === 'boolean') { obj['disabled'] = option.disabled ? 'true' : 'false'; } if (option.color) { obj['color'] = w => w.quote(option.color); } if (typeof option.default === 'boolean') { obj['default'] = option.default ? 'true' : 'false'; } if (option.i18n) { obj['i18n'] = w => w.quote(option.i18n); } ts_morph_1.Writers.object(obj)(w); w.write(','); } w.write(']'); if (!optionList.length) { w.write(' as ControlOptions'); (0, coerce_imports_1.CoerceImports)(sourceFile, { namedImports: ['ControlOptions'], moduleSpecifier: '@rxap/utilities', }); } }, }), ], }); (0, coerce_imports_1.CoerceImports)(sourceFile, { moduleSpecifier: '@rxap/data-source', namedImports: ['RxapStaticDataSource'], }); }, }); } //# sourceMappingURL=coerce-options-data-source.js.map