@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
64 lines • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BuildAutocompleteOptionsDtoDataMapperImplementation = BuildAutocompleteOptionsDtoDataMapperImplementation;
exports.BuildAutocompleteOptionsUpstreamGetParametersImplementation = BuildAutocompleteOptionsUpstreamGetParametersImplementation;
exports.CoerceAutocompleteOptionsOperationRule = CoerceAutocompleteOptionsOperationRule;
const ts_morph_1 = require("@rxap/ts-morph");
const utilities_1 = require("@rxap/utilities");
const ts_morph_2 = require("ts-morph");
const coerce_operation_1 = require("./coerce-operation");
function BuildAutocompleteOptionsDtoDataMapperImplementation(classDeclaration, moduleSourceFile, dto, options) {
const { isArray, } = options;
return () => {
const { upstream, toValueProperty, toDisplayProperty } = options;
if (upstream && (0, ts_morph_1.IsNormalizedOpenApiUpstreamOptions)(upstream)) {
return w => {
w.write('(data.entities ?? []).map(item => ({');
w.indent(() => {
w.writeLine(`value: item.${toValueProperty.name},`);
w.writeLine(`display: item.${toDisplayProperty.name},`);
w.writeLine(`${toDisplayProperty.name}: item.${toDisplayProperty.name},`);
w.writeLine(`${toValueProperty.name}: item.${toValueProperty.name}`);
});
w.write('}))');
};
}
// TODO : implement the data mapper
return isArray ? '[]' : '{}';
};
}
function BuildAutocompleteOptionsUpstreamGetParametersImplementation(classDeclaration, moduleSourceFile, dto, options) {
return () => {
const { upstream, toDisplayProperty } = options;
if (upstream && (0, ts_morph_1.IsNormalizedOpenApiUpstreamOptions)(upstream)) {
return ts_morph_2.Writers.object({
parameters: ts_morph_2.Writers.object({
filter: w => {
w.write('search ? ');
w.write(`\`${toDisplayProperty.name}:\${ search }\``);
w.write(` : ''`);
},
sort: w => w.quote('__updatedAt'),
order: w => w.quote('desc'),
page: '0',
size: '10'
}),
});
}
return '';
};
}
function CoerceAutocompleteOptionsOperationRule(options) {
const { builtDtoDataMapperImplementation = BuildAutocompleteOptionsDtoDataMapperImplementation, buildUpstreamGetParametersImplementation = BuildAutocompleteOptionsUpstreamGetParametersImplementation, isArray = true, propertyList = [], queryList = [], } = options;
(0, utilities_1.CoerceArrayItems)(queryList, [{ name: 'search', type: 'string', hasQuestionToken: true }], (a, b) => a.name === b.name);
(0, utilities_1.CoerceArrayItems)(propertyList, [
Object.assign(Object.assign({}, options.toValueProperty), { name: 'value', source: options.toValueProperty.name }),
Object.assign(Object.assign({}, options.toDisplayProperty), { name: 'display', source: options.toDisplayProperty.name }),
], (a, b) => a.name === b.name);
return (0, coerce_operation_1.CoerceOperation)(Object.assign(Object.assign({}, options), { propertyList,
isArray,
queryList,
buildUpstreamGetParametersImplementation,
builtDtoDataMapperImplementation }));
}
//# sourceMappingURL=coerce-autocomplete-options-operation.js.map