@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
36 lines • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoerceFormComponentProvider = CoerceFormComponentProvider;
exports.CoerceFormComponentProviderRule = CoerceFormComponentProviderRule;
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 CoerceFormComponentProvider(sourceFile, providerObject) {
const variableDeclaration = (0, coerce_variable_declaration_1.CoerceVariableDeclaration)(sourceFile, 'FormComponentProviders', {
type: 'Provider[]',
initializer: '[]',
});
(0, coerce_imports_1.CoerceImports)(sourceFile, {
namedImports: ['Provider'],
moduleSpecifier: '@angular/core',
});
const formComponentProviderArray = variableDeclaration.getInitializer();
if (!(formComponentProviderArray === null || formComponentProviderArray === void 0 ? void 0 : formComponentProviderArray.isKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression))) {
throw new Error('FormComponentProviders initializer is not an array literal expression');
}
(0, add_provider_to_array_1.AddProviderToArray)(providerObject, formComponentProviderArray);
}
function CoerceFormComponentProviderRule(options) {
let { providerObject, importStructures, } = options;
importStructures !== null && importStructures !== void 0 ? importStructures : (importStructures = []);
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);
CoerceFormComponentProvider(sourceFile, providerObject);
});
}
//# sourceMappingURL=coerce-form-component-provider.js.map