UNPKG

@bitmovin/api-sdk

Version:

Bitmovin JS/TS API SDK

41 lines (40 loc) 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.map = map; exports.mapArray = mapArray; const models = require("../models"); function map(value, clazz) { return mapInternal(value, clazz); } function mapArray(value, clazz) { if (!value) { return []; } return value.map(item => mapInternal(item, clazz)); } function mapInternal(value, clazz) { if (!value) { return value; } if (!clazz || typeof clazz !== 'function') { return value; } const actualClazz = calculateType(value, clazz); return new actualClazz(value); } function calculateType(value, clazz) { const discriminatorName = clazz._discriminatorName; const discriminatorMapping = clazz._discriminatorMapping; if (!discriminatorName || !discriminatorMapping) { return clazz; } const discriminatorValue = value[discriminatorName]; if (!discriminatorValue) { return clazz; } if (discriminatorValue in discriminatorMapping) { const type = discriminatorMapping[discriminatorValue]; return models[type]; } return clazz; }