@bitmovin/api-sdk
Version:
Bitmovin JS/TS API SDK
41 lines (40 loc) • 1.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.map = map;
exports.mapArray = mapArray;
var models = require("../models");
function map(value, clazz) {
return mapInternal(value, clazz);
}
function mapArray(value, clazz) {
if (!value) {
return [];
}
return value.map(function (item) { return mapInternal(item, clazz); });
}
function mapInternal(value, clazz) {
if (!value) {
return value;
}
if (!clazz || typeof clazz !== 'function') {
return value;
}
var actualClazz = calculateType(value, clazz);
return new actualClazz(value);
}
function calculateType(value, clazz) {
var discriminatorName = clazz._discriminatorName;
var discriminatorMapping = clazz._discriminatorMapping;
if (!discriminatorName || !discriminatorMapping) {
return clazz;
}
var discriminatorValue = value[discriminatorName];
if (!discriminatorValue) {
return clazz;
}
if (discriminatorValue in discriminatorMapping) {
var type = discriminatorMapping[discriminatorValue];
return models[type];
}
return clazz;
}