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

45 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AddFakeProvider = AddFakeProvider; const get_array_declaration_1 = require("./get-array-declaration"); const is_array_literal_expression_1 = require("./is-array-literal-expression"); const coerce_variable_declaration_1 = require("./coerce-variable-declaration"); const add_provider_to_array_1 = require("./add-provider-to-array"); const coerce_imports_1 = require("./ts-morph/coerce-imports"); function AddFakeProvider(sourceFile, fakeProviderObject, realProviderObject, fakeName, overwrite = false) { var _a, _b, _c, _d, _e, _f, _g, _h; const hasFakeProviderFactory = !!sourceFile.getVariableStatement('FAKE_PROVIDER_FACTORY'); (0, coerce_variable_declaration_1.CoerceVariableDeclaration)(sourceFile, 'FAKE_PROVIDER_FACTORY', { initializer: `IsFaked('${fakeName}') ? FAKE_PROVIDERS : REAL_PROVIDERS`, }); const fakeArrayDeclaration = (0, get_array_declaration_1.GetArrayDeclaration)(sourceFile, 'FAKE_PROVIDERS', 'Provider[]'); const realArrayDeclaration = (0, get_array_declaration_1.GetArrayDeclaration)(sourceFile, 'REAL_PROVIDERS', 'Provider[]'); const fakeArrayInitializer = fakeArrayDeclaration.getInitializer(); (0, is_array_literal_expression_1.AssertArrayLiteralExpression)(fakeArrayInitializer, 'FAKE_PROVIDERS'); if (fakeProviderObject) { (0, add_provider_to_array_1.AddProviderToArray)(fakeProviderObject, fakeArrayInitializer, overwrite); } const realArrayInitializer = realArrayDeclaration.getInitializer(); (0, is_array_literal_expression_1.AssertArrayLiteralExpression)(realArrayInitializer, 'REAL_PROVIDERS'); if (realProviderObject) { (0, add_provider_to_array_1.AddProviderToArray)(realProviderObject, realArrayInitializer, overwrite); } (0, coerce_imports_1.CoerceImports)(sourceFile, { moduleSpecifier: '@angular/core', namedImports: ['Provider'], }); (0, coerce_imports_1.CoerceImports)(sourceFile, { moduleSpecifier: '@rxap/fake', namedImports: ['IsFaked'], }); // region order variable statements // ensures that the variable declaration is before the component decorator if (!hasFakeProviderFactory) { // only re order if the member were added in this method const classOrder = Math.max((_b = (_a = sourceFile.getVariableStatement('FAKE_PROVIDER_FACTORY')) === null || _a === void 0 ? void 0 : _a.getChildIndex()) !== null && _b !== void 0 ? _b : 0, (_d = (_c = sourceFile.getVariableStatement('FAKE_PROVIDERS')) === null || _c === void 0 ? void 0 : _c.getChildIndex()) !== null && _d !== void 0 ? _d : 0, (_f = (_e = sourceFile.getVariableStatement('REAL_PROVIDERS')) === null || _e === void 0 ? void 0 : _e.getChildIndex()) !== null && _f !== void 0 ? _f : 0); (_g = sourceFile.getVariableStatement('FAKE_PROVIDER_FACTORY')) === null || _g === void 0 ? void 0 : _g.setOrder(classOrder); (_h = sourceFile.getClasses()[0]) === null || _h === void 0 ? void 0 : _h.setOrder(classOrder); } // endregion } //# sourceMappingURL=add-fake-provider.js.map