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

34 lines 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultAddControlValidatorCompare = DefaultAddControlValidatorCompare; exports.AddControlValidator = AddControlValidator; const ts_morph_1 = require("ts-morph"); function DefaultAddControlValidatorCompare(a, b) { return a.trim().replace(/[\r\n\t]/g, '') === b.trim().replace(/[\r\n\t]/g, ''); } function AddControlValidator(validator, controlOptions, compareFn = DefaultAddControlValidatorCompare) { let validatorPropertyAssignment = controlOptions.getProperty('validators'); if (!validatorPropertyAssignment) { validatorPropertyAssignment = controlOptions.addPropertyAssignment({ name: 'validators', initializer: '[]', }); } if (!(validatorPropertyAssignment.isKind(ts_morph_1.SyntaxKind.PropertyAssignment))) { throw new Error('The validator property is not a assignment type!'); } const validatorProperty = validatorPropertyAssignment.getInitializer(); if (validatorProperty === null || validatorProperty === void 0 ? void 0 : validatorProperty.isKind(ts_morph_1.SyntaxKind.ArrayLiteralExpression)) { const index = validatorProperty .getElements() .findIndex(element => compareFn(element.getFullText(), validator)); if (index === -1) { validatorProperty.addElement(validator); } else { validatorProperty.removeElement(index); validatorProperty.insertElement(index, validator); } } } //# sourceMappingURL=add-control-validator.js.map