@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
JavaScript
;
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