UNPKG

linkpay-api

Version:

LinkPay JS/TS API SDK

38 lines (37 loc) 1.24 kB
"use strict"; 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; }