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

83 lines 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultDialogSubmitMethod = DefaultDialogSubmitMethod; exports.CoerceDialogComponentRule = CoerceDialogComponentRule; const schematics_1 = require("@angular-devkit/schematics"); const coerce_class_constructor_1 = require("../coerce-class-constructor"); const coerce_class_method_1 = require("../coerce-class-method"); const coerce_class_property_1 = require("../ts-morph/coerce-class-property"); const coerce_imports_1 = require("../ts-morph/coerce-imports"); const coerce_parameter_declaration_1 = require("../ts-morph/coerce-parameter-declaration"); const add_component_import_1 = require("./add-component-import"); const coerce_component_1 = require("./coerce-component"); function DefaultDialogSubmitMethod(classDeclaration, options) { (0, coerce_class_method_1.CoerceClassMethod)(classDeclaration, 'submit', { isAsync: true, statements: ['this.matDialogRef.close(true);'], }); } function CoerceDialogComponentRule(options) { let { template, coerceSubmitMethod, tsMorphTransform, directory, overwrite, title, dialogName, project, feature, flat, } = options; // eslint-disable-next-line @typescript-eslint/no-empty-function tsMorphTransform !== null && tsMorphTransform !== void 0 ? tsMorphTransform : (tsMorphTransform = () => { }); coerceSubmitMethod !== null && coerceSubmitMethod !== void 0 ? coerceSubmitMethod : (coerceSubmitMethod = DefaultDialogSubmitMethod); return (0, schematics_1.chain)([ () => console.log('Coerce dialog component ...'), (0, coerce_component_1.CoerceComponentRule)({ project, name: dialogName, feature, directory, overwrite, template, flat, tsMorphTransform: (_, [componentSourceFile], [componentClass]) => { (0, add_component_import_1.AddComponentImport)(componentSourceFile, 'MatDialogModule', '@angular/material/dialog'); (0, add_component_import_1.AddComponentImport)(componentSourceFile, 'MatButtonModule', '@angular/material/button'); (0, add_component_import_1.AddComponentImport)(componentSourceFile, 'MatProgressBarModule', '@angular/material/progress-bar'); (0, add_component_import_1.AddComponentImport)(componentSourceFile, 'CommonModule', '@angular/common'); (0, coerce_class_property_1.CoerceClassProperty)(componentClass, 'loading$', { initializer: `new ToggleSubject(true)`, isReadonly: true, }); (0, coerce_class_property_1.CoerceClassProperty)(componentClass, 'invalid$', { initializer: `new ToggleSubject(true)`, isReadonly: true, }); (0, coerce_imports_1.CoerceImports)(componentSourceFile, [ { namedImports: ['ToggleSubject'], moduleSpecifier: '@rxap/rxjs', }, { namedImports: ['MatDialogRef', 'MAT_DIALOG_DATA'], moduleSpecifier: '@angular/material/dialog', }, { namedImports: ['Inject'], moduleSpecifier: '@angular/core', }, ]); const [constructorDeclaration] = (0, coerce_class_constructor_1.CoerceClassConstructor)(componentClass); (0, coerce_parameter_declaration_1.CoerceParameterDeclaration)(constructorDeclaration, 'matDialogRef', { isReadonly: true, type: 'MatDialogRef<any>', }); (0, coerce_parameter_declaration_1.CoerceParameterDeclaration)(constructorDeclaration, 'data', { isReadonly: true, type: 'any', decorators: [ { name: 'Inject', arguments: ['MAT_DIALOG_DATA'], }, ], }); tsMorphTransform(_, [componentSourceFile], [componentClass], options); coerceSubmitMethod(componentClass, options); }, }), ]); } //# sourceMappingURL=coerce-dialog-component.js.map