@adyen/api-library
Version:
The Adyen API Library for NodeJS enables you to work with Adyen APIs.
552 lines • 27.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 accountInfo_1 = require("./accountInfo");
const acctInfo_1 = require("./acctInfo");
const additionalData3DSecure_1 = require("./additionalData3DSecure");
const additionalDataAirline_1 = require("./additionalDataAirline");
const additionalDataCarRental_1 = require("./additionalDataCarRental");
const additionalDataCommon_1 = require("./additionalDataCommon");
const additionalDataLevel23_1 = require("./additionalDataLevel23");
const additionalDataLodging_1 = require("./additionalDataLodging");
const additionalDataModifications_1 = require("./additionalDataModifications");
const additionalDataOpenInvoice_1 = require("./additionalDataOpenInvoice");
const additionalDataOpi_1 = require("./additionalDataOpi");
const additionalDataRatepay_1 = require("./additionalDataRatepay");
const additionalDataRetry_1 = require("./additionalDataRetry");
const additionalDataRisk_1 = require("./additionalDataRisk");
const additionalDataRiskStandalone_1 = require("./additionalDataRiskStandalone");
const additionalDataSubMerchant_1 = require("./additionalDataSubMerchant");
const additionalDataTemporaryServices_1 = require("./additionalDataTemporaryServices");
const additionalDataWallets_1 = require("./additionalDataWallets");
const address_1 = require("./address");
const adjustAuthorisationRequest_1 = require("./adjustAuthorisationRequest");
const amount_1 = require("./amount");
const applicationInfo_1 = require("./applicationInfo");
const authenticationResultRequest_1 = require("./authenticationResultRequest");
const authenticationResultResponse_1 = require("./authenticationResultResponse");
const bankAccount_1 = require("./bankAccount");
const browserInfo_1 = require("./browserInfo");
const cancelOrRefundRequest_1 = require("./cancelOrRefundRequest");
const cancelRequest_1 = require("./cancelRequest");
const captureRequest_1 = require("./captureRequest");
const card_1 = require("./card");
const commonField_1 = require("./commonField");
const deviceRenderOptions_1 = require("./deviceRenderOptions");
const donationRequest_1 = require("./donationRequest");
const externalPlatform_1 = require("./externalPlatform");
const forexQuote_1 = require("./forexQuote");
const fraudCheckResult_1 = require("./fraudCheckResult");
const fraudCheckResultWrapper_1 = require("./fraudCheckResultWrapper");
const fraudResult_1 = require("./fraudResult");
const fundDestination_1 = require("./fundDestination");
const fundSource_1 = require("./fundSource");
const installments_1 = require("./installments");
const mandate_1 = require("./mandate");
const merchantDevice_1 = require("./merchantDevice");
const merchantRiskIndicator_1 = require("./merchantRiskIndicator");
const modificationResult_1 = require("./modificationResult");
const name_1 = require("./name");
const paymentRequest_1 = require("./paymentRequest");
const paymentRequest3d_1 = require("./paymentRequest3d");
const paymentRequest3ds2_1 = require("./paymentRequest3ds2");
const paymentResult_1 = require("./paymentResult");
const phone_1 = require("./phone");
const platformChargebackLogic_1 = require("./platformChargebackLogic");
const recurring_1 = require("./recurring");
const refundRequest_1 = require("./refundRequest");
const responseAdditionalData3DSecure_1 = require("./responseAdditionalData3DSecure");
const responseAdditionalDataBillingAddress_1 = require("./responseAdditionalDataBillingAddress");
const responseAdditionalDataCard_1 = require("./responseAdditionalDataCard");
const responseAdditionalDataCommon_1 = require("./responseAdditionalDataCommon");
const responseAdditionalDataDomesticError_1 = require("./responseAdditionalDataDomesticError");
const responseAdditionalDataInstallments_1 = require("./responseAdditionalDataInstallments");
const responseAdditionalDataNetworkTokens_1 = require("./responseAdditionalDataNetworkTokens");
const responseAdditionalDataOpi_1 = require("./responseAdditionalDataOpi");
const responseAdditionalDataSepa_1 = require("./responseAdditionalDataSepa");
const sDKEphemPubKey_1 = require("./sDKEphemPubKey");
const secureRemoteCommerceCheckoutData_1 = require("./secureRemoteCommerceCheckoutData");
const serviceError_1 = require("./serviceError");
const shopperInteractionDevice_1 = require("./shopperInteractionDevice");
const split_1 = require("./split");
const splitAmount_1 = require("./splitAmount");
const subMerchant_1 = require("./subMerchant");
const technicalCancelRequest_1 = require("./technicalCancelRequest");
const threeDS1Result_1 = require("./threeDS1Result");
const threeDS2RequestData_1 = require("./threeDS2RequestData");
const threeDS2Result_1 = require("./threeDS2Result");
const threeDS2ResultRequest_1 = require("./threeDS2ResultRequest");
const threeDS2ResultResponse_1 = require("./threeDS2ResultResponse");
const threeDSRequestorAuthenticationInfo_1 = require("./threeDSRequestorAuthenticationInfo");
const threeDSRequestorPriorAuthenticationInfo_1 = require("./threeDSRequestorPriorAuthenticationInfo");
const threeDSecureData_1 = require("./threeDSecureData");
const voidPendingRefundRequest_1 = require("./voidPendingRefundRequest");
/* tslint:disable:no-unused-variable */
let primitives = [
"string",
"boolean",
"double",
"integer",
"long",
"float",
"number",
"any"
];
let enumsMap = new Set([
"AccountInfo.AccountAgeIndicatorEnum",
"AccountInfo.AccountChangeIndicatorEnum",
"AccountInfo.AccountTypeEnum",
"AccountInfo.DeliveryAddressUsageIndicatorEnum",
"AccountInfo.PasswordChangeIndicatorEnum",
"AccountInfo.PaymentAccountIndicatorEnum",
"AcctInfo.ChAccAgeIndEnum",
"AcctInfo.ChAccChangeIndEnum",
"AcctInfo.ChAccPwChangeIndEnum",
"AcctInfo.PaymentAccIndEnum",
"AcctInfo.ShipAddressUsageIndEnum",
"AcctInfo.ShipNameIndicatorEnum",
"AcctInfo.SuspiciousAccActivityEnum",
"AdditionalData3DSecure.ChallengeWindowSizeEnum",
"AdditionalDataCommon.IndustryUsageEnum",
"DeviceRenderOptions.SdkInterfaceEnum",
"DeviceRenderOptions.SdkUiTypeEnum",
"Installments.PlanEnum",
"Mandate.AmountRuleEnum",
"Mandate.BillingAttemptsRuleEnum",
"Mandate.FrequencyEnum",
"MerchantRiskIndicator.DeliveryAddressIndicatorEnum",
"MerchantRiskIndicator.DeliveryTimeframeEnum",
"ModificationResult.ResponseEnum",
"PaymentRequest.EntityTypeEnum",
"PaymentRequest.FundingSourceEnum",
"PaymentRequest.RecurringProcessingModelEnum",
"PaymentRequest.ShopperInteractionEnum",
"PaymentRequest3d.RecurringProcessingModelEnum",
"PaymentRequest3d.ShopperInteractionEnum",
"PaymentRequest3ds2.RecurringProcessingModelEnum",
"PaymentRequest3ds2.ShopperInteractionEnum",
"PaymentResult.ResultCodeEnum",
"PlatformChargebackLogic.BehaviorEnum",
"Recurring.ContractEnum",
"Recurring.TokenServiceEnum",
"ResponseAdditionalDataCard.CardProductIdEnum",
"ResponseAdditionalDataCommon.FraudResultTypeEnum",
"ResponseAdditionalDataCommon.FraudRiskLevelEnum",
"ResponseAdditionalDataCommon.RecurringProcessingModelEnum",
"ResponseAdditionalDataCommon.TokenizationStoreOperationTypeEnum",
"SecureRemoteCommerceCheckoutData.SchemeEnum",
"Split.TypeEnum",
"ThreeDS2RequestData.AcctTypeEnum",
"ThreeDS2RequestData.AddrMatchEnum",
"ThreeDS2RequestData.ChallengeIndicatorEnum",
"ThreeDS2RequestData.ThreeDSRequestorChallengeIndEnum",
"ThreeDS2RequestData.TransTypeEnum",
"ThreeDS2RequestData.TransactionTypeEnum",
"ThreeDS2Result.ChallengeCancelEnum",
"ThreeDS2Result.ExemptionIndicatorEnum",
"ThreeDS2Result.ThreeDSRequestorChallengeIndEnum",
"ThreeDSRequestorAuthenticationInfo.ThreeDSReqAuthMethodEnum",
"ThreeDSRequestorPriorAuthenticationInfo.ThreeDSReqPriorAuthMethodEnum",
"ThreeDSecureData.AuthenticationResponseEnum",
"ThreeDSecureData.ChallengeCancelEnum",
"ThreeDSecureData.DirectoryResponseEnum",
]);
let typeMap = {
"AccountInfo": accountInfo_1.AccountInfo,
"AcctInfo": acctInfo_1.AcctInfo,
"AdditionalData3DSecure": additionalData3DSecure_1.AdditionalData3DSecure,
"AdditionalDataAirline": additionalDataAirline_1.AdditionalDataAirline,
"AdditionalDataCarRental": additionalDataCarRental_1.AdditionalDataCarRental,
"AdditionalDataCommon": additionalDataCommon_1.AdditionalDataCommon,
"AdditionalDataLevel23": additionalDataLevel23_1.AdditionalDataLevel23,
"AdditionalDataLodging": additionalDataLodging_1.AdditionalDataLodging,
"AdditionalDataModifications": additionalDataModifications_1.AdditionalDataModifications,
"AdditionalDataOpenInvoice": additionalDataOpenInvoice_1.AdditionalDataOpenInvoice,
"AdditionalDataOpi": additionalDataOpi_1.AdditionalDataOpi,
"AdditionalDataRatepay": additionalDataRatepay_1.AdditionalDataRatepay,
"AdditionalDataRetry": additionalDataRetry_1.AdditionalDataRetry,
"AdditionalDataRisk": additionalDataRisk_1.AdditionalDataRisk,
"AdditionalDataRiskStandalone": additionalDataRiskStandalone_1.AdditionalDataRiskStandalone,
"AdditionalDataSubMerchant": additionalDataSubMerchant_1.AdditionalDataSubMerchant,
"AdditionalDataTemporaryServices": additionalDataTemporaryServices_1.AdditionalDataTemporaryServices,
"AdditionalDataWallets": additionalDataWallets_1.AdditionalDataWallets,
"Address": address_1.Address,
"AdjustAuthorisationRequest": adjustAuthorisationRequest_1.AdjustAuthorisationRequest,
"Amount": amount_1.Amount,
"ApplicationInfo": applicationInfo_1.ApplicationInfo,
"AuthenticationResultRequest": authenticationResultRequest_1.AuthenticationResultRequest,
"AuthenticationResultResponse": authenticationResultResponse_1.AuthenticationResultResponse,
"BankAccount": bankAccount_1.BankAccount,
"BrowserInfo": browserInfo_1.BrowserInfo,
"CancelOrRefundRequest": cancelOrRefundRequest_1.CancelOrRefundRequest,
"CancelRequest": cancelRequest_1.CancelRequest,
"CaptureRequest": captureRequest_1.CaptureRequest,
"Card": card_1.Card,
"CommonField": commonField_1.CommonField,
"DeviceRenderOptions": deviceRenderOptions_1.DeviceRenderOptions,
"DonationRequest": donationRequest_1.DonationRequest,
"ExternalPlatform": externalPlatform_1.ExternalPlatform,
"ForexQuote": forexQuote_1.ForexQuote,
"FraudCheckResult": fraudCheckResult_1.FraudCheckResult,
"FraudCheckResultWrapper": fraudCheckResultWrapper_1.FraudCheckResultWrapper,
"FraudResult": fraudResult_1.FraudResult,
"FundDestination": fundDestination_1.FundDestination,
"FundSource": fundSource_1.FundSource,
"Installments": installments_1.Installments,
"Mandate": mandate_1.Mandate,
"MerchantDevice": merchantDevice_1.MerchantDevice,
"MerchantRiskIndicator": merchantRiskIndicator_1.MerchantRiskIndicator,
"ModificationResult": modificationResult_1.ModificationResult,
"Name": name_1.Name,
"PaymentRequest": paymentRequest_1.PaymentRequest,
"PaymentRequest3d": paymentRequest3d_1.PaymentRequest3d,
"PaymentRequest3ds2": paymentRequest3ds2_1.PaymentRequest3ds2,
"PaymentResult": paymentResult_1.PaymentResult,
"Phone": phone_1.Phone,
"PlatformChargebackLogic": platformChargebackLogic_1.PlatformChargebackLogic,
"Recurring": recurring_1.Recurring,
"RefundRequest": refundRequest_1.RefundRequest,
"ResponseAdditionalData3DSecure": responseAdditionalData3DSecure_1.ResponseAdditionalData3DSecure,
"ResponseAdditionalDataBillingAddress": responseAdditionalDataBillingAddress_1.ResponseAdditionalDataBillingAddress,
"ResponseAdditionalDataCard": responseAdditionalDataCard_1.ResponseAdditionalDataCard,
"ResponseAdditionalDataCommon": responseAdditionalDataCommon_1.ResponseAdditionalDataCommon,
"ResponseAdditionalDataDomesticError": responseAdditionalDataDomesticError_1.ResponseAdditionalDataDomesticError,
"ResponseAdditionalDataInstallments": responseAdditionalDataInstallments_1.ResponseAdditionalDataInstallments,
"ResponseAdditionalDataNetworkTokens": responseAdditionalDataNetworkTokens_1.ResponseAdditionalDataNetworkTokens,
"ResponseAdditionalDataOpi": responseAdditionalDataOpi_1.ResponseAdditionalDataOpi,
"ResponseAdditionalDataSepa": responseAdditionalDataSepa_1.ResponseAdditionalDataSepa,
"SDKEphemPubKey": sDKEphemPubKey_1.SDKEphemPubKey,
"SecureRemoteCommerceCheckoutData": secureRemoteCommerceCheckoutData_1.SecureRemoteCommerceCheckoutData,
"ServiceError": serviceError_1.ServiceError,
"ShopperInteractionDevice": shopperInteractionDevice_1.ShopperInteractionDevice,
"Split": split_1.Split,
"SplitAmount": splitAmount_1.SplitAmount,
"SubMerchant": subMerchant_1.SubMerchant,
"TechnicalCancelRequest": technicalCancelRequest_1.TechnicalCancelRequest,
"ThreeDS1Result": threeDS1Result_1.ThreeDS1Result,
"ThreeDS2RequestData": threeDS2RequestData_1.ThreeDS2RequestData,
"ThreeDS2Result": threeDS2Result_1.ThreeDS2Result,
"ThreeDS2ResultRequest": threeDS2ResultRequest_1.ThreeDS2ResultRequest,
"ThreeDS2ResultResponse": threeDS2ResultResponse_1.ThreeDS2ResultResponse,
"ThreeDSRequestorAuthenticationInfo": threeDSRequestorAuthenticationInfo_1.ThreeDSRequestorAuthenticationInfo,
"ThreeDSRequestorPriorAuthenticationInfo": threeDSRequestorPriorAuthenticationInfo_1.ThreeDSRequestorPriorAuthenticationInfo,
"ThreeDSecureData": threeDSecureData_1.ThreeDSecureData,
"VoidPendingRefundRequest": voidPendingRefundRequest_1.VoidPendingRefundRequest,
};
/**
* 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 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(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(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