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

63 lines 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Module = void 0; exports.AddDependencyInjection = AddDependencyInjection; const ts_morph_1 = require("ts-morph"); const coerce_class_constructor_1 = require("../coerce-class-constructor"); const coerce_imports_1 = require("../ts-morph/coerce-imports"); /** * @deprecated import from @rxap/ts-morph */ var Module; (function (Module) { Module["ANGULAR"] = "@angular/core"; Module["NEST"] = "@nestjs/common"; })(Module || (exports.Module = Module = {})); /** * @deprecated import from @rxap/ts-morph */ function AddDependencyInjection(sourceFile, definition, structures = []) { var _a, _b, _c, _d; if (!definition.module) { definition.module = Module.ANGULAR; } const classDeclaration = sourceFile.getClasses()[0]; if (!classDeclaration) { throw new Error('Could not find class declaration'); } const constructorDeclarations = (0, coerce_class_constructor_1.CoerceClassConstructor)(classDeclaration); const constructorDeclaration = constructorDeclarations[0]; if (constructorDeclaration.getParameter(definition.parameterName)) { return; } const constructorParameter = { name: definition.parameterName, type: (_a = definition.type) !== null && _a !== void 0 ? _a : definition.injectionToken, scope: (_b = definition.scope) !== null && _b !== void 0 ? _b : ts_morph_1.Scope.Public, isReadonly: true, decorators: [ { name: 'Inject', arguments: [definition.injectionToken], }, ], }; if (definition.optional) { (_c = constructorParameter.decorators) === null || _c === void 0 ? void 0 : _c.unshift({ name: 'Optional', arguments: [], }); constructorParameter.type = ts_morph_1.Writers.intersectionType((_d = definition.type) !== null && _d !== void 0 ? _d : definition.injectionToken, 'null'); (0, coerce_imports_1.CoerceImports)(sourceFile, { namedImports: ['Optional'], moduleSpecifier: definition.module, }); } constructorDeclaration.addParameter(constructorParameter); (0, coerce_imports_1.CoerceImports)(sourceFile, { namedImports: ['Inject'], moduleSpecifier: definition.module, }); (0, coerce_imports_1.CoerceImports)(sourceFile, structures); } //# sourceMappingURL=add-dependency-injection.js.map