@adyen/api-library
Version:
The Adyen API Library for NodeJS enables you to work with Adyen APIs.
632 lines • 29.2 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectSerializer = void 0;
__exportStar(require("./models"), exports);
const abortRequest_1 = require("./abortRequest");
const adminRequest_1 = require("./adminRequest");
const adminResponse_1 = require("./adminResponse");
const amountsReq_1 = require("./amountsReq");
const amountsResp_1 = require("./amountsResp");
const areaSize_1 = require("./areaSize");
const balanceInquiryRequest_1 = require("./balanceInquiryRequest");
const balanceInquiryResponse_1 = require("./balanceInquiryResponse");
const capturedSignature_1 = require("./capturedSignature");
const cardAcquisitionRequest_1 = require("./cardAcquisitionRequest");
const cardAcquisitionResponse_1 = require("./cardAcquisitionResponse");
const cardAcquisitionTransaction_1 = require("./cardAcquisitionTransaction");
const cardData_1 = require("./cardData");
const cardHolderPIN_1 = require("./cardHolderPIN");
const cardReaderAPDURequest_1 = require("./cardReaderAPDURequest");
const cardReaderAPDUResponse_1 = require("./cardReaderAPDUResponse");
const checkData_1 = require("./checkData");
const convertedAmount_1 = require("./convertedAmount");
const currencyConversion_1 = require("./currencyConversion");
const diagnosisRequest_1 = require("./diagnosisRequest");
const diagnosisResponse_1 = require("./diagnosisResponse");
const displayOutput_1 = require("./displayOutput");
const displayRequest_1 = require("./displayRequest");
const displayResponse_1 = require("./displayResponse");
const enableServiceRequest_1 = require("./enableServiceRequest");
const enableServiceResponse_1 = require("./enableServiceResponse");
const eventNotification_1 = require("./eventNotification");
const geographicCoordinates_1 = require("./geographicCoordinates");
const geolocation_1 = require("./geolocation");
const getTotalsRequest_1 = require("./getTotalsRequest");
const getTotalsResponse_1 = require("./getTotalsResponse");
const hostStatus_1 = require("./hostStatus");
const iCCResetData_1 = require("./iCCResetData");
const input_1 = require("./input");
const inputData_1 = require("./inputData");
const inputRequest_1 = require("./inputRequest");
const inputResponse_1 = require("./inputResponse");
const inputResult_1 = require("./inputResult");
const inputUpdate_1 = require("./inputUpdate");
const instalment_1 = require("./instalment");
const loginRequest_1 = require("./loginRequest");
const loginResponse_1 = require("./loginResponse");
const logoutRequest_1 = require("./logoutRequest");
const logoutResponse_1 = require("./logoutResponse");
const loyaltyAccount_1 = require("./loyaltyAccount");
const loyaltyAccountID_1 = require("./loyaltyAccountID");
const loyaltyAccountReq_1 = require("./loyaltyAccountReq");
const loyaltyAcquirerData_1 = require("./loyaltyAcquirerData");
const loyaltyData_1 = require("./loyaltyData");
const loyaltyResponse_1 = require("./loyaltyResponse");
const loyaltyResult_1 = require("./loyaltyResult");
const menuEntry_1 = require("./menuEntry");
const messageHeader_1 = require("./messageHeader");
const messageReference_1 = require("./messageReference");
const mobileData_1 = require("./mobileData");
const originalPOITransaction_1 = require("./originalPOITransaction");
const outputBarcode_1 = require("./outputBarcode");
const outputContent_1 = require("./outputContent");
const outputResult_1 = require("./outputResult");
const outputText_1 = require("./outputText");
const pOIData_1 = require("./pOIData");
const pOISoftware_1 = require("./pOISoftware");
const pOIStatus_1 = require("./pOIStatus");
const pOISystemData_1 = require("./pOISystemData");
const paymentAccountReq_1 = require("./paymentAccountReq");
const paymentAccountStatus_1 = require("./paymentAccountStatus");
const paymentAcquirerData_1 = require("./paymentAcquirerData");
const paymentData_1 = require("./paymentData");
const paymentInstrumentData_1 = require("./paymentInstrumentData");
const paymentReceipt_1 = require("./paymentReceipt");
const paymentRequest_1 = require("./paymentRequest");
const paymentResponse_1 = require("./paymentResponse");
const paymentResult_1 = require("./paymentResult");
const paymentToken_1 = require("./paymentToken");
const paymentTotals_1 = require("./paymentTotals");
const paymentTransaction_1 = require("./paymentTransaction");
const performedTransaction_1 = require("./performedTransaction");
const point_1 = require("./point");
const predefinedContent_1 = require("./predefinedContent");
const printOutput_1 = require("./printOutput");
const printRequest_1 = require("./printRequest");
const printResponse_1 = require("./printResponse");
const reconciliationRequest_1 = require("./reconciliationRequest");
const reconciliationResponse_1 = require("./reconciliationResponse");
const repeatedMessageResponse_1 = require("./repeatedMessageResponse");
const repeatedResponseMessageBody_1 = require("./repeatedResponseMessageBody");
const response_1 = require("./response");
const reversalRequest_1 = require("./reversalRequest");
const reversalResponse_1 = require("./reversalResponse");
const saleData_1 = require("./saleData");
const saleSoftware_1 = require("./saleSoftware");
const saleTerminalData_1 = require("./saleTerminalData");
const saleToIssuerData_1 = require("./saleToIssuerData");
const saleToPOIRequest_1 = require("./saleToPOIRequest");
const saleToPOIResponse_1 = require("./saleToPOIResponse");
const securityTrailer_1 = require("./securityTrailer");
const sensitiveCardData_1 = require("./sensitiveCardData");
const sensitiveMobileData_1 = require("./sensitiveMobileData");
const soundContent_1 = require("./soundContent");
const storedValueAccountID_1 = require("./storedValueAccountID");
const storedValueAccountStatus_1 = require("./storedValueAccountStatus");
const storedValueData_1 = require("./storedValueData");
const storedValueRequest_1 = require("./storedValueRequest");
const storedValueResponse_1 = require("./storedValueResponse");
const storedValueResult_1 = require("./storedValueResult");
const terminalAPIRequest_1 = require("./terminalAPIRequest");
const terminalAPIResponse_1 = require("./terminalAPIResponse");
const totalFilter_1 = require("./totalFilter");
const trackData_1 = require("./trackData");
const transactionConditions_1 = require("./transactionConditions");
const transactionIDType_1 = require("./transactionIDType");
const transactionStatusRequest_1 = require("./transactionStatusRequest");
const transactionStatusResponse_1 = require("./transactionStatusResponse");
const transactionTotals_1 = require("./transactionTotals");
const uTMCoordinates_1 = require("./uTMCoordinates");
/* tslint:disable:no-unused-variable */
let primitives = [
"string",
"boolean",
"double",
"integer",
"long",
"float",
"number",
"any"
];
let enumsMap = new Set([
"AccountType",
"Alignment",
"CardAcquisitionTransaction.ForceEntryModeEnum",
"CardData.EntryModeEnum",
"CharacterHeight",
"CharacterStyle",
"CharacterWidth",
"Device",
"DocumentQualifier",
"EnableServiceRequest.ServicesEnabledEnum",
"ErrorCondition",
"EventToNotify",
"GetTotalsRequest.TotalDetailsEnum",
"GlobalStatus",
"IdentificationSupport",
"IdentificationType",
"InfoQualify",
"InputCommand",
"InstalmentType",
"LoginRequest.CustomerOrderReqEnum",
"LoyaltyAccountID.EntryModeEnum",
"LoyaltyHandling",
"MenuEntryTag",
"MessageCategory",
"MessageClass",
"MessageType",
"OutputFormat",
"PINFormat",
"PINRequestType",
"PaymentInstrumentType",
"PaymentResult.AuthenticationMethodEnum",
"PaymentType",
"PeriodUnit",
"PrinterStatus",
"ReconciliationType",
"ResponseMode",
"Result",
"ReversalReason",
"SaleData.CustomerOrderReqEnum",
"SoundAction",
"SoundFormat",
"StoredValueAccountID.EntryModeEnum",
"StoredValueAccountType",
"StoredValueTransactionType",
"TokenRequestedType",
"TrackFormat",
"TransactionAction",
"TransactionConditions.ForceEntryModeEnum",
"TransactionType",
"TypeCode",
]);
let typeMap = {
"AbortRequest": abortRequest_1.AbortRequest,
"AdminRequest": adminRequest_1.AdminRequest,
"AdminResponse": adminResponse_1.AdminResponse,
"AmountsReq": amountsReq_1.AmountsReq,
"AmountsResp": amountsResp_1.AmountsResp,
"AreaSize": areaSize_1.AreaSize,
"BalanceInquiryRequest": balanceInquiryRequest_1.BalanceInquiryRequest,
"BalanceInquiryResponse": balanceInquiryResponse_1.BalanceInquiryResponse,
"CapturedSignature": capturedSignature_1.CapturedSignature,
"CardAcquisitionRequest": cardAcquisitionRequest_1.CardAcquisitionRequest,
"CardAcquisitionResponse": cardAcquisitionResponse_1.CardAcquisitionResponse,
"CardAcquisitionTransaction": cardAcquisitionTransaction_1.CardAcquisitionTransaction,
"CardData": cardData_1.CardData,
"CardHolderPIN": cardHolderPIN_1.CardHolderPIN,
"CardReaderAPDURequest": cardReaderAPDURequest_1.CardReaderAPDURequest,
"CardReaderAPDUResponse": cardReaderAPDUResponse_1.CardReaderAPDUResponse,
"CheckData": checkData_1.CheckData,
"ConvertedAmount": convertedAmount_1.ConvertedAmount,
"CurrencyConversion": currencyConversion_1.CurrencyConversion,
"DiagnosisRequest": diagnosisRequest_1.DiagnosisRequest,
"DiagnosisResponse": diagnosisResponse_1.DiagnosisResponse,
"DisplayOutput": displayOutput_1.DisplayOutput,
"DisplayRequest": displayRequest_1.DisplayRequest,
"DisplayResponse": displayResponse_1.DisplayResponse,
"EnableServiceRequest": enableServiceRequest_1.EnableServiceRequest,
"EnableServiceResponse": enableServiceResponse_1.EnableServiceResponse,
"EventNotification": eventNotification_1.EventNotification,
"GeographicCoordinates": geographicCoordinates_1.GeographicCoordinates,
"Geolocation": geolocation_1.Geolocation,
"GetTotalsRequest": getTotalsRequest_1.GetTotalsRequest,
"GetTotalsResponse": getTotalsResponse_1.GetTotalsResponse,
"HostStatus": hostStatus_1.HostStatus,
"ICCResetData": iCCResetData_1.ICCResetData,
"Input": input_1.Input,
"InputData": inputData_1.InputData,
"InputRequest": inputRequest_1.InputRequest,
"InputResponse": inputResponse_1.InputResponse,
"InputResult": inputResult_1.InputResult,
"InputUpdate": inputUpdate_1.InputUpdate,
"Instalment": instalment_1.Instalment,
"LoginRequest": loginRequest_1.LoginRequest,
"LoginResponse": loginResponse_1.LoginResponse,
"LogoutRequest": logoutRequest_1.LogoutRequest,
"LogoutResponse": logoutResponse_1.LogoutResponse,
"LoyaltyAccount": loyaltyAccount_1.LoyaltyAccount,
"LoyaltyAccountID": loyaltyAccountID_1.LoyaltyAccountID,
"LoyaltyAccountReq": loyaltyAccountReq_1.LoyaltyAccountReq,
"LoyaltyAcquirerData": loyaltyAcquirerData_1.LoyaltyAcquirerData,
"LoyaltyData": loyaltyData_1.LoyaltyData,
"LoyaltyResponse": loyaltyResponse_1.LoyaltyResponse,
"LoyaltyResult": loyaltyResult_1.LoyaltyResult,
"MenuEntry": menuEntry_1.MenuEntry,
"MessageHeader": messageHeader_1.MessageHeader,
"MessageReference": messageReference_1.MessageReference,
"MobileData": mobileData_1.MobileData,
"OriginalPOITransaction": originalPOITransaction_1.OriginalPOITransaction,
"OutputBarcode": outputBarcode_1.OutputBarcode,
"OutputContent": outputContent_1.OutputContent,
"OutputResult": outputResult_1.OutputResult,
"OutputText": outputText_1.OutputText,
"POIData": pOIData_1.POIData,
"POISoftware": pOISoftware_1.POISoftware,
"POIStatus": pOIStatus_1.POIStatus,
"POISystemData": pOISystemData_1.POISystemData,
"PaymentAccountReq": paymentAccountReq_1.PaymentAccountReq,
"PaymentAccountStatus": paymentAccountStatus_1.PaymentAccountStatus,
"PaymentAcquirerData": paymentAcquirerData_1.PaymentAcquirerData,
"PaymentData": paymentData_1.PaymentData,
"PaymentInstrumentData": paymentInstrumentData_1.PaymentInstrumentData,
"PaymentReceipt": paymentReceipt_1.PaymentReceipt,
"PaymentRequest": paymentRequest_1.PaymentRequest,
"PaymentResponse": paymentResponse_1.PaymentResponse,
"PaymentResult": paymentResult_1.PaymentResult,
"PaymentToken": paymentToken_1.PaymentToken,
"PaymentTotals": paymentTotals_1.PaymentTotals,
"PaymentTransaction": paymentTransaction_1.PaymentTransaction,
"PerformedTransaction": performedTransaction_1.PerformedTransaction,
"Point": point_1.Point,
"PredefinedContent": predefinedContent_1.PredefinedContent,
"PrintOutput": printOutput_1.PrintOutput,
"PrintRequest": printRequest_1.PrintRequest,
"PrintResponse": printResponse_1.PrintResponse,
"ReconciliationRequest": reconciliationRequest_1.ReconciliationRequest,
"ReconciliationResponse": reconciliationResponse_1.ReconciliationResponse,
"RepeatedMessageResponse": repeatedMessageResponse_1.RepeatedMessageResponse,
"RepeatedResponseMessageBody": repeatedResponseMessageBody_1.RepeatedResponseMessageBody,
"Response": response_1.Response,
"ReversalRequest": reversalRequest_1.ReversalRequest,
"ReversalResponse": reversalResponse_1.ReversalResponse,
"SaleData": saleData_1.SaleData,
"SaleSoftware": saleSoftware_1.SaleSoftware,
"SaleTerminalData": saleTerminalData_1.SaleTerminalData,
"SaleToIssuerData": saleToIssuerData_1.SaleToIssuerData,
"SaleToPOIRequest": saleToPOIRequest_1.SaleToPOIRequest,
"SaleToPOIResponse": saleToPOIResponse_1.SaleToPOIResponse,
"SecurityTrailer": securityTrailer_1.SecurityTrailer,
"SensitiveCardData": sensitiveCardData_1.SensitiveCardData,
"SensitiveMobileData": sensitiveMobileData_1.SensitiveMobileData,
"SoundContent": soundContent_1.SoundContent,
"StoredValueAccountID": storedValueAccountID_1.StoredValueAccountID,
"StoredValueAccountStatus": storedValueAccountStatus_1.StoredValueAccountStatus,
"StoredValueData": storedValueData_1.StoredValueData,
"StoredValueRequest": storedValueRequest_1.StoredValueRequest,
"StoredValueResponse": storedValueResponse_1.StoredValueResponse,
"StoredValueResult": storedValueResult_1.StoredValueResult,
"TerminalAPIRequest": terminalAPIRequest_1.TerminalAPIRequest,
"TerminalAPIResponse": terminalAPIResponse_1.TerminalAPIResponse,
"TotalFilter": totalFilter_1.TotalFilter,
"TrackData": trackData_1.TrackData,
"TransactionConditions": transactionConditions_1.TransactionConditions,
"TransactionIDType": transactionIDType_1.TransactionIDType,
"TransactionStatusRequest": transactionStatusRequest_1.TransactionStatusRequest,
"TransactionStatusResponse": transactionStatusResponse_1.TransactionStatusResponse,
"TransactionTotals": transactionTotals_1.TransactionTotals,
"UTMCoordinates": uTMCoordinates_1.UTMCoordinates,
};
/**
* Every mime-type consists of a type, subtype, and optional parameters.
* The subtype can be composite, including information about the content format.
* For example: `application/json-patch+json`, `application/merge-patch+json`.
*
* This helper transforms a string mime-type into an internal representation.
* This simplifies the implementation of predicates that in turn define common rules for parsing or stringifying
* the payload.
*/
const parseMimeType = (mimeType) => {
const [type = '', subtype = ''] = mimeType.split('/');
return {
type,
subtype,
subtypeTokens: subtype.split('+'),
};
};
// This factory creates a predicate function that checks a string mime-type against defined rules.
const mimeTypePredicateFactory = (predicate) => (mimeType) => predicate(parseMimeType(mimeType));
// Use this factory when you need to define a simple predicate based only on type and, if applicable, subtype.
const mimeTypeSimplePredicateFactory = (type, subtype) => mimeTypePredicateFactory((descriptor) => {
if (descriptor.type !== type)
return false;
if (subtype != null && descriptor.subtype !== subtype)
return false;
return true;
});
// Creating a set of named predicates that will help us determine how to handle different mime-types
const isTextLikeMimeType = mimeTypeSimplePredicateFactory('text');
const isJsonMimeType = mimeTypeSimplePredicateFactory('application', 'json');
const isJsonLikeMimeType = mimeTypePredicateFactory((descriptor) => descriptor.type === 'application' && descriptor.subtypeTokens.some((item) => item === 'json'));
const isOctetStreamMimeType = mimeTypeSimplePredicateFactory('application', 'octet-stream');
const isFormUrlencodedMimeType = mimeTypeSimplePredicateFactory('application', 'x-www-form-urlencoded');
// Defining a list of mime-types in the order of prioritization for handling.
const supportedMimeTypePredicatesWithPriority = [
isJsonMimeType,
isJsonLikeMimeType,
isTextLikeMimeType,
isOctetStreamMimeType,
isFormUrlencodedMimeType,
];
const nullableSuffix = " | null";
const optionalSuffix = " | undefined";
const arrayPrefix = "Array<";
const arraySuffix = ">";
const setPrefix = "Set<";
const mapPrefix = "{ [key: string]: ";
const mapSuffix = "; }";
class ObjectSerializer {
static findCorrectType(data, expectedType) {
if (data == undefined) {
return expectedType;
}
else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) {
return expectedType;
}
else if (expectedType === "Date") {
return expectedType;
}
else {
if (enumsMap.has(expectedType)) {
return expectedType;
}
if (!typeMap[expectedType]) {
return expectedType; // w/e we don't know the type
}
// Check the discriminator
let discriminatorProperty = typeMap[expectedType].discriminator;
if (discriminatorProperty == null) {
return expectedType; // the type does not have a discriminator. use it.
}
else {
if (data[discriminatorProperty]) {
var discriminatorType = data[discriminatorProperty];
let mapping = typeMap[expectedType].mapping;
if (mapping != undefined && mapping[discriminatorType]) {
return mapping[discriminatorType]; // use the type given in the discriminator
}
else if (typeMap[discriminatorType]) {
return discriminatorType;
}
else {
return expectedType; // discriminator did not map to a type
}
}
else {
return expectedType; // discriminator was not present (or an empty string)
}
}
}
}
/**
* Serializes a value into a plain JSON-compatible object based on its type.
*
* Supports primitives, arrays, maps, dates, enums, and classes defined in `typeMap`.
* Falls back to raw data if type is unknown or lacks `getAttributeTypeMap()`.
*
* @param data - The value to serialize.
* @param type - The expected type name as a string.
* @param format - Format hint (e.g. "date" or "date-time"). Default is an empty string.
* @returns A JSON-compatible representation of `data`.
*/
static serialize(data, type, format = "") {
if (data == undefined) {
return data;
}
else if (primitives.indexOf(type.toLowerCase()) !== -1) {
return data;
}
else if (type.endsWith(nullableSuffix)) {
let subType = type.slice(0, -nullableSuffix.length); // Type | null => Type
return ObjectSerializer.serialize(data, subType, format);
}
else if (type.endsWith(optionalSuffix)) {
let subType = type.slice(0, -optionalSuffix.length); // Type | undefined => Type
return ObjectSerializer.serialize(data, subType, format);
}
else if (type.startsWith(arrayPrefix)) {
let subType = type.slice(arrayPrefix.length, -arraySuffix.length); // Array<Type> => Type
let transformedData = [];
for (let date of data) {
transformedData.push(ObjectSerializer.serialize(date, subType, format));
}
return transformedData;
}
else if (type.startsWith(setPrefix)) {
let subType = type.slice(setPrefix.length, -arraySuffix.length); // Set<Type> => Type
let transformedData = [];
for (let item of data) {
transformedData.push(ObjectSerializer.serialize(item, subType, format));
}
return transformedData;
}
else if (type.startsWith(mapPrefix)) {
let subType = type.slice(mapPrefix.length, -mapSuffix.length); // { [key: string]: Type; } => Type
let transformedData = {};
for (let key in data) {
transformedData[key] = ObjectSerializer.serialize(data[key], subType, format);
}
return transformedData;
}
else if (type === "Date") {
if (format == "date") {
let month = data.getMonth() + 1;
month = month < 10 ? "0" + month.toString() : month.toString();
let day = data.getDate();
day = day < 10 ? "0" + day.toString() : day.toString();
return data.getFullYear() + "-" + month + "-" + day;
}
else {
return data.toISOString();
}
}
else {
if (enumsMap.has(type)) {
return data;
}
if (!typeMap[type]) { // in case we dont know the type
return data;
}
// Get the actual type of this object
type = this.findCorrectType(data, type);
const clazz = typeMap[type];
// Safe check for getAttributeTypeMap
if (typeof clazz.getAttributeTypeMap !== "function") {
return { ...data }; // fallback: shallow copy
}
// get the map for the correct type.
let attributeTypes = typeMap[type].getAttributeTypeMap();
let instance = {};
for (let attributeType of attributeTypes) {
instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type, attributeType.format);
}
return instance;
}
}
/**
* Deserializes a plain JSON-compatible object into a typed instance.
*
* Handles primitives, arrays, maps, dates, enums, and known classes from `typeMap`.
* Uses discriminators when available to resolve polymorphic types.
* Falls back to raw data if the type is unknown or lacks `getAttributeTypeMap()`.
*
* @param data - The raw input to deserialize.
* @param type - The expected type name as a string.
* @param format - Format hint (e.g. "date" or "date-time"). Default is an empty string.
* @returns A deserialized instance or value of `data`.
*/
static deserialize(data, type, format = "") {
// polymorphism may change the actual type.
type = ObjectSerializer.findCorrectType(data, type);
if (data == undefined) {
return data;
}
else if (primitives.indexOf(type.toLowerCase()) !== -1) {
return data;
}
else if (type.endsWith(nullableSuffix)) {
let subType = type.slice(0, -nullableSuffix.length); // Type | null => Type
return ObjectSerializer.deserialize(data, subType, format);
}
else if (type.endsWith(optionalSuffix)) {
let subType = type.slice(0, -optionalSuffix.length); // Type | undefined => Type
return ObjectSerializer.deserialize(data, subType, format);
}
else if (type.startsWith(arrayPrefix)) {
let subType = type.slice(arrayPrefix.length, -arraySuffix.length); // Array<Type> => Type
let transformedData = [];
for (let date of data) {
transformedData.push(ObjectSerializer.deserialize(date, subType, format));
}
return transformedData;
}
else if (type.startsWith(setPrefix)) {
let subType = type.slice(setPrefix.length, -arraySuffix.length); // Set<Type> => Type
let transformedData = new Set();
for (let item of data) {
transformedData.add(ObjectSerializer.deserialize(item, subType, format));
}
return transformedData;
}
else if (type.startsWith(mapPrefix)) {
let subType = type.slice(mapPrefix.length, -mapSuffix.length); // { [key: string]: Type; } => Type
let transformedData = {};
for (let key in data) {
transformedData[key] = ObjectSerializer.deserialize(data[key], subType, format);
}
return transformedData;
}
else if (type === "Date") {
return new Date(data);
}
else {
if (enumsMap.has(type)) { // is Enum
return data;
}
if (!typeMap[type]) { // dont know the type
return data;
}
let instance = new typeMap[type]();
// Safe check for getAttributeTypeMap
if (typeof typeMap[type].getAttributeTypeMap !== "function") {
Object.assign(instance, data); // fallback: shallow copy
return instance;
}
let attributeTypes = typeMap[type].getAttributeTypeMap();
for (let attributeType of attributeTypes) {
let value = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type, attributeType.format);
if (value !== undefined) {
instance[attributeType.name] = value;
}
}
return instance;
}
}
/**
* Normalize media type
*
* We currently do not handle any media types attributes, i.e. anything
* after a semicolon. All content is assumed to be UTF-8 compatible.
*/
static normalizeMediaType(mediaType) {
var _a;
if (mediaType === undefined) {
return undefined;
}
return ((_a = mediaType.split(";")[0]) !== null && _a !== void 0 ? _a : '').trim().toLowerCase();
}
/**
* From a list of possible media types, choose the one we can handle best.
*
* The order of the given media types does not have any impact on the choice
* made.
*/
static getPreferredMediaType(mediaTypes) {
/** According to OAS 3 we should default to json */
if (mediaTypes.length === 0) {
return "application/json";
}
const normalMediaTypes = mediaTypes.map(ObjectSerializer.normalizeMediaType);
for (const predicate of supportedMimeTypePredicatesWithPriority) {
for (const mediaType of normalMediaTypes) {
if (mediaType != null && predicate(mediaType)) {
return mediaType;
}
}
}
throw new Error("None of the given media types are supported: " + mediaTypes.join(", "));
}
/**
* Convert data to a string according the given media type
*/
static stringify(data, mediaType) {
if (isTextLikeMimeType(mediaType)) {
return String(data);
}
if (isJsonLikeMimeType(mediaType)) {
return JSON.stringify(data);
}
throw new Error("The mediaType " + mediaType + " is not supported by ObjectSerializer.stringify.");
}
/**
* Parse data from a string according to the given media type
*/
static parse(rawData, mediaType) {
if (mediaType === undefined) {
throw new Error("Cannot parse content. No Content-Type defined.");
}
if (isTextLikeMimeType(mediaType)) {
return rawData;
}
if (isJsonLikeMimeType(mediaType)) {
return JSON.parse(rawData);
}
throw new Error("The mediaType " + mediaType + " is not supported by ObjectSerializer.parse.");
}
}
exports.ObjectSerializer = ObjectSerializer;
//# sourceMappingURL=objectSerializer.js.map