UNPKG

@bitmovin/api-sdk

Version:

Bitmovin JS/TS API SDK

41 lines (40 loc) 1.15 kB
"use strict"; 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; }