@siren-js/core
Version:
Cross-platform library of classes for generating and parsing Siren entities
29 lines (28 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformSubEntities = exports.transformAndValidate = void 0;
const class_transformer_1 = require("class-transformer");
const class_validator_1 = require("class-validator");
const EmbeddedEntity_1 = require("../EmbeddedEntity");
const EmbeddedLink_1 = require("../EmbeddedLink");
const ValidationError_1 = require("./ValidationError");
function transformAndValidate(constructor, value) {
const instance = (0, class_transformer_1.plainToInstance)(constructor, value);
validate(instance);
return instance;
}
exports.transformAndValidate = transformAndValidate;
function validate(obj) {
const errors = (0, class_validator_1.validateSync)(obj);
if (errors.length > 0) {
throw new ValidationError_1.ValidationError(errors);
}
}
function transformSubEntities(subEntities) {
return subEntities.map(transformSubEntity);
}
exports.transformSubEntities = transformSubEntities;
function transformSubEntity(subEntity) {
const constructor = subEntity.href ? EmbeddedLink_1.EmbeddedLink : EmbeddedEntity_1.EmbeddedEntity;
return (0, class_transformer_1.plainToInstance)(constructor, subEntity);
}