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

72 lines 3.02 kB
"use strict"; 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