@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
66 lines • 2.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BuildPageDtoClassName = BuildPageDtoClassName;
exports.CoercePageDtoClass = CoercePageDtoClass;
const schematics_utilities_1 = require("@rxap/schematics-utilities");
const ts_morph_1 = require("@rxap/ts-morph");
const utilities_1 = require("@rxap/utilities");
const path_1 = require("path");
const ts_morph_2 = require("@rxap/ts-morph");
function BuildPageDtoClassName(name) {
return (0, schematics_utilities_1.CoerceSuffix)(name, '-page');
}
function CoercePageDtoClass(options) {
const { project, name, propertyList = [], rowClassName, rowFilePath, tsMorphTransform = utilities_1.noop, } = options;
(0, utilities_1.CoerceArrayItems)(propertyList, [
{
name: 'rows',
type: rowClassName,
isArray: true,
isType: true,
},
{
name: 'pageSize',
type: 'number',
},
{
name: 'pageIndex',
type: 'number',
},
{
name: 'total',
type: 'number',
},
{
name: 'sortDirection',
type: 'string',
isOptional: true,
},
{
name: 'sortBy',
type: 'string',
isOptional: true,
},
{
name: 'filter',
type: 'FilterQueryDto',
isArray: true,
isType: true,
isOptional: true,
}
], (a, b) => a.name === b.name);
return (0, ts_morph_2.CoerceDtoClass)(Object.assign(Object.assign({}, options), { project, name: BuildPageDtoClassName(name), propertyList, tsMorphTransform: (p, sourceFile, classDeclaration) => {
(0, ts_morph_1.CoerceImports)(sourceFile, [
{
namedImports: [rowClassName],
moduleSpecifier: `./${(0, path_1.basename)(rowFilePath)}`,
},
{
namedImports: ['FilterQueryDto'],
moduleSpecifier: '@rxap/nest-dto',
}
]);
tsMorphTransform(p, sourceFile, classDeclaration);
} }));
}
//# sourceMappingURL=coerce-page-dto-class.js.map