@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
JavaScript
;
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