@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
35 lines • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceFormProvider = CoerceFormProvider;
exports.CoerceFormProviderRule = CoerceFormProviderRule;
const ts_morph_1 = require("ts-morph");
const add_provider_to_array_1 = require("../add-provider-to-array");
const coerce_source_file_1 = require("../coerce-source-file");
const coerce_variable_declaration_1 = require("../coerce-variable-declaration");
const ts_morph_transform_1 = require("../ts-morph-transform");
const coerce_imports_1 = require("../ts-morph/coerce-imports");
function CoerceFormProvider(sourceFile, providerObject) {
const formProviders = (0, coerce_variable_declaration_1.CoerceVariableDeclaration)(sourceFile, 'FormProviders', {
type: 'Provider[]',
initializer: '[]',
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
namedImports: ['Provider'],
moduleSpecifier: '@angular/core',
});
const formProviderArray = formProviders.getInitializer();
if (!(formProviderArray === null || formProviderArray === void 0 ? void 0 : formProviderArray.isKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression))) {
throw new Error('FormProviders initializer is not an array literal expression');
}
(0, add_provider_to_array_1.AddProviderToArray)(providerObject, formProviderArray);
}
function CoerceFormProviderRule(options) {
const { importStructures = [], providerObject, } = options;
const fileName = 'form.providers.ts';
return (0, ts_morph_transform_1.TsMorphAngularProjectTransformRule)(options, project => {
const sourceFile = (0, coerce_source_file_1.CoerceSourceFile)(project, fileName);
(0, coerce_imports_1.CoerceImports)(sourceFile, importStructures);
CoerceFormProvider(sourceFile, providerObject);
});
}
//# sourceMappingURL=coerce-form-provider.js.map