UNPKG

@rxap/ts-morph

Version:

Provides utilities for manipulating TypeScript code using the ts-morph library. It offers a fluent API to add, modify, and remove code elements such as classes, decorators, imports, and properties in both Angular and NestJS projects. This package simplifi

67 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CoerceRxapDataSourceDecorator = CoerceRxapDataSourceDecorator; exports.CoerceExtendsBaseDataSource = CoerceExtendsBaseDataSource; exports.CoerceDataSourceClass = CoerceDataSourceClass; const coerce_class_1 = require("../coerce-class"); const coerce_decorator_1 = require("../coerce-decorator"); const coerce_imports_1 = require("../coerce-imports"); const utilities_1 = require("@rxap/utilities"); function CoerceRxapDataSourceDecorator(sourceFile, classDeclaration, options) { (0, coerce_decorator_1.CoerceDecorator)(classDeclaration, options.decorator.name, { arguments: [options.decorator.argument] }); (0, coerce_imports_1.CoerceImports)(sourceFile, { moduleSpecifier: options.decorator.moduleSpecifier, namedImports: [options.decorator.name], }); } function CoerceExtendsBaseDataSource(sourceFile, classDeclaration, options) { if (!classDeclaration.getExtends()) { classDeclaration.setExtends(options.extends.name); (0, coerce_imports_1.CoerceImports)(sourceFile, [ { moduleSpecifier: options.extends.moduleSpecifier, namedImports: [options.extends.name], }, ]); } } function CoerceDataSourceClass(sourceFile, options) { var _a, _b, _c; var _d; const { providedInRoot, name, coerceDecorator = CoerceRxapDataSourceDecorator, coerceExtends = CoerceExtendsBaseDataSource, } = options; // the option object will be used in hooks. so it is required to modify the object directly to keep the reference // intact instead of using the object destruction (_a = options.extends) !== null && _a !== void 0 ? _a : (options.extends = { name: 'BaseDataSource', moduleSpecifier: '@rxap/data-source', }); (_b = options.decorator) !== null && _b !== void 0 ? _b : (options.decorator = { name: 'RxapDataSource', moduleSpecifier: '@rxap/data-source', }); (_c = (_d = options.decorator).argument) !== null && _c !== void 0 ? _c : (_d.argument = w => w.quote(options.name)); const className = (0, utilities_1.classify)((0, utilities_1.CoerceSuffix)(name, 'DataSource')); const classDeclaration = (0, coerce_class_1.CoerceClass)(sourceFile, className, { isExported: true, decorators: [ { name: 'Injectable', arguments: [ w => { if (providedInRoot) { w.write(`{ providedIn: 'root' }`); } }, ], }, ], }); coerceDecorator(sourceFile, classDeclaration, options); coerceExtends(sourceFile, classDeclaration, options); (0, coerce_imports_1.CoerceImports)(sourceFile, { moduleSpecifier: '@angular/core', namedImports: ['Injectable'], }); return classDeclaration; } //# sourceMappingURL=coerce-data-source-class.js.map