linkpay-api
Version:
LinkPay JS/TS API SDK
38 lines (37 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapArray = exports.map = void 0;
var models = require("../models/index");
function map(value, clazz) {
return mapInternal(value, clazz);
}
exports.map = map;
function mapArray(value, clazz) {
if (!value)
return [];
return value.map(function (item) { return mapInternal(item, clazz); });
}
exports.mapArray = mapArray;
function mapInternal(value, clazz) {
if (!value)
return value;
if (!clazz || typeof clazz !== 'function')
return value;
var actualClazz = calculateType(value, clazz);
// eslint-disable-next-line new-cap
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;
}