UNPKG

@siren-js/core

Version:

Cross-platform library of classes for generating and parsing Siren entities

29 lines (28 loc) 1.21 kB
"use strict"; 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); }