@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
42 lines • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceNestProviderToArray = CoerceNestProviderToArray;
const utilities_1 = require("@rxap/utilities");
const ts_morph_1 = require("ts-morph");
function CoerceNestProviderToArray(providerObject, providerArray, overwrite = false) {
if (typeof providerObject === 'string') {
if (!providerArray.getElements().some(element => element.getText().trim() === providerObject)) {
providerArray.addElement(providerObject);
}
}
else {
let index = providerArray.getElements().findIndex(element => {
var _a;
if (element.isKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression)) {
const provideProperty = element.getProperty('provide');
if (provideProperty === null || provideProperty === void 0 ? void 0 : provideProperty.isKind(ts_morph_1.SyntaxKind.PropertyAssignment)) {
return ((_a = provideProperty.getInitializer()) === null || _a === void 0 ? void 0 : _a.getText().trim()) === providerObject.provide;
}
}
return false;
});
if ((overwrite === true || (Array.isArray(overwrite) && overwrite.includes('provider'))) && index !== -1) {
providerArray.removeElement(index);
index = -1;
}
if (index === -1) {
providerArray.addElement(ts_morph_1.Writers.object((0, utilities_1.DeleteUndefinedProperties)({
provide: providerObject.provide,
useClass: providerObject.useClass,
useFactory: providerObject.useFactory,
useExisting: providerObject.useExisting,
useValue: providerObject.useValue,
scope: providerObject.scope,
inject: providerObject.inject ?
Array.isArray(providerObject.inject) ? `[ ${providerObject.inject.join(',')} ]` : providerObject.inject :
undefined,
})));
}
}
}
//# sourceMappingURL=coerce-nest-provider-to-array.js.map