@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
72 lines • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AddProviderToArray = AddProviderToArray;
const utilities_1 = require("@rxap/utilities");
const ts_morph_1 = require("ts-morph");
/**
* @deprecated import from @rxap/ts-morph
*/
function AddProviderToArray(providerObject, providerArray, overwrite = false, compare = (ole, po) => {
var _a;
const provideProperty = ole.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()) === po.provide;
}
return false;
}) {
let expression;
if (typeof providerObject === 'string') {
const index = providerArray.getElements().findIndex(element => {
if (element.getText().trim() === providerObject) {
return true;
}
const match = providerObject.match(/^[a-zA-Z0-9]+?\(/);
if (match) {
return element.getText().trim().startsWith(match[0]);
}
return false;
});
if (index === -1) {
expression = providerArray.addElement(providerObject);
}
else if (overwrite) {
providerArray.removeElement(index);
expression = providerArray.insertElement(index, providerObject);
}
else {
expression = providerArray.getElements()[index];
}
}
else {
let index = providerArray.getElements().findIndex(element => {
if (element.isKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression)) {
return compare(element, providerObject);
}
return false;
});
if ((overwrite === true || (Array.isArray(overwrite) && overwrite.includes('provider'))) && index !== -1) {
providerArray.removeElement(index);
index = -1;
}
if (index === -1) {
expression = 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,
deps: providerObject.deps ?
Array.isArray(providerObject.deps) ? `[ ${providerObject.deps.join(',')} ]` : providerObject.deps :
undefined,
multi: providerObject.multi === true ?
w => w.write('true') :
providerObject.multi === false ? w => w.write('false') : undefined,
})));
}
else {
expression = providerArray.getElements()[index];
}
}
return expression;
}
//# sourceMappingURL=add-provider-to-array.js.map