@adyen/api-library
Version:
The Adyen API Library for NodeJS enables you to work with Adyen APIs.
585 lines • 30.3 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 aULocalAccountIdentification_1 = require("./aULocalAccountIdentification");
const acceptTermsOfServiceRequest_1 = require("./acceptTermsOfServiceRequest");
const acceptTermsOfServiceResponse_1 = require("./acceptTermsOfServiceResponse");
const additionalBankIdentification_1 = require("./additionalBankIdentification");
const address_1 = require("./address");
const amount_1 = require("./amount");
const attachment_1 = require("./attachment");
const bankAccountInfo_1 = require("./bankAccountInfo");
const bankAccountInfoAccountIdentification_1 = require("./bankAccountInfoAccountIdentification");
const birthData_1 = require("./birthData");
const businessLine_1 = require("./businessLine");
const businessLineInfo_1 = require("./businessLineInfo");
const businessLineInfoUpdate_1 = require("./businessLineInfoUpdate");
const businessLines_1 = require("./businessLines");
const cALocalAccountIdentification_1 = require("./cALocalAccountIdentification");
const cZLocalAccountIdentification_1 = require("./cZLocalAccountIdentification");
const calculatePciStatusRequest_1 = require("./calculatePciStatusRequest");
const calculatePciStatusResponse_1 = require("./calculatePciStatusResponse");
const calculateTermsOfServiceStatusResponse_1 = require("./calculateTermsOfServiceStatusResponse");
const capabilityProblem_1 = require("./capabilityProblem");
const capabilityProblemEntity_1 = require("./capabilityProblemEntity");
const capabilityProblemEntityRecursive_1 = require("./capabilityProblemEntityRecursive");
const capabilitySettings_1 = require("./capabilitySettings");
const checkTaxElectronicDeliveryConsentResponse_1 = require("./checkTaxElectronicDeliveryConsentResponse");
const dKLocalAccountIdentification_1 = require("./dKLocalAccountIdentification");
const dataReviewConfirmationResponse_1 = require("./dataReviewConfirmationResponse");
const document_1 = require("./document");
const documentPage_1 = require("./documentPage");
const documentReference_1 = require("./documentReference");
const entityReference_1 = require("./entityReference");
const financialReport_1 = require("./financialReport");
const financier_1 = require("./financier");
const generatePciDescriptionRequest_1 = require("./generatePciDescriptionRequest");
const generatePciDescriptionResponse_1 = require("./generatePciDescriptionResponse");
const getAcceptedTermsOfServiceDocumentResponse_1 = require("./getAcceptedTermsOfServiceDocumentResponse");
const getPciQuestionnaireInfosResponse_1 = require("./getPciQuestionnaireInfosResponse");
const getPciQuestionnaireResponse_1 = require("./getPciQuestionnaireResponse");
const getTermsOfServiceAcceptanceInfosResponse_1 = require("./getTermsOfServiceAcceptanceInfosResponse");
const getTermsOfServiceDocumentRequest_1 = require("./getTermsOfServiceDocumentRequest");
const getTermsOfServiceDocumentResponse_1 = require("./getTermsOfServiceDocumentResponse");
const hKLocalAccountIdentification_1 = require("./hKLocalAccountIdentification");
const hULocalAccountIdentification_1 = require("./hULocalAccountIdentification");
const ibanAccountIdentification_1 = require("./ibanAccountIdentification");
const identificationData_1 = require("./identificationData");
const individual_1 = require("./individual");
const legalEntity_1 = require("./legalEntity");
const legalEntityAssociation_1 = require("./legalEntityAssociation");
const legalEntityCapability_1 = require("./legalEntityCapability");
const legalEntityInfo_1 = require("./legalEntityInfo");
const legalEntityInfoRequiredType_1 = require("./legalEntityInfoRequiredType");
const nOLocalAccountIdentification_1 = require("./nOLocalAccountIdentification");
const nZLocalAccountIdentification_1 = require("./nZLocalAccountIdentification");
const name_1 = require("./name");
const numberAndBicAccountIdentification_1 = require("./numberAndBicAccountIdentification");
const onboardingLink_1 = require("./onboardingLink");
const onboardingLinkInfo_1 = require("./onboardingLinkInfo");
const onboardingLinkSettings_1 = require("./onboardingLinkSettings");
const onboardingTheme_1 = require("./onboardingTheme");
const onboardingThemes_1 = require("./onboardingThemes");
const organization_1 = require("./organization");
const ownerEntity_1 = require("./ownerEntity");
const pLLocalAccountIdentification_1 = require("./pLLocalAccountIdentification");
const pciDocumentInfo_1 = require("./pciDocumentInfo");
const pciSigningRequest_1 = require("./pciSigningRequest");
const pciSigningResponse_1 = require("./pciSigningResponse");
const phoneNumber_1 = require("./phoneNumber");
const remediatingAction_1 = require("./remediatingAction");
const sELocalAccountIdentification_1 = require("./sELocalAccountIdentification");
const sGLocalAccountIdentification_1 = require("./sGLocalAccountIdentification");
const serviceError_1 = require("./serviceError");
const setTaxElectronicDeliveryConsentRequest_1 = require("./setTaxElectronicDeliveryConsentRequest");
const soleProprietorship_1 = require("./soleProprietorship");
const sourceOfFunds_1 = require("./sourceOfFunds");
const stockData_1 = require("./stockData");
const support_1 = require("./support");
const supportingEntityCapability_1 = require("./supportingEntityCapability");
const taxInformation_1 = require("./taxInformation");
const taxReportingClassification_1 = require("./taxReportingClassification");
const termsOfServiceAcceptanceInfo_1 = require("./termsOfServiceAcceptanceInfo");
const transferInstrument_1 = require("./transferInstrument");
const transferInstrumentInfo_1 = require("./transferInstrumentInfo");
const transferInstrumentReference_1 = require("./transferInstrumentReference");
const trust_1 = require("./trust");
const uKLocalAccountIdentification_1 = require("./uKLocalAccountIdentification");
const uSLocalAccountIdentification_1 = require("./uSLocalAccountIdentification");
const undefinedBeneficiary_1 = require("./undefinedBeneficiary");
const unincorporatedPartnership_1 = require("./unincorporatedPartnership");
const verificationDeadline_1 = require("./verificationDeadline");
const verificationError_1 = require("./verificationError");
const verificationErrorRecursive_1 = require("./verificationErrorRecursive");
const verificationErrors_1 = require("./verificationErrors");
const webData_1 = require("./webData");
const webDataExemption_1 = require("./webDataExemption");
/* tslint:disable:no-unused-variable */
let primitives = [
"string",
"boolean",
"double",
"integer",
"long",
"float",
"number",
"any"
];
let enumsMap = new Set([
"AULocalAccountIdentification.TypeEnum",
"AcceptTermsOfServiceResponse.TypeEnum",
"AdditionalBankIdentification.TypeEnum",
"BankAccountInfoAccountIdentification.TypeEnum",
"BankAccountInfoAccountIdentification.AccountTypeEnum",
"BusinessLine.ServiceEnum",
"BusinessLineInfo.ServiceEnum",
"CALocalAccountIdentification.AccountTypeEnum",
"CALocalAccountIdentification.TypeEnum",
"CZLocalAccountIdentification.TypeEnum",
"CalculatePciStatusRequest.AdditionalSalesChannelsEnum",
"CalculateTermsOfServiceStatusResponse.TermsOfServiceTypesEnum",
"CapabilityProblemEntity.TypeEnum",
"CapabilityProblemEntityRecursive.TypeEnum",
"CapabilitySettings.FundingSourceEnum",
"CapabilitySettings.IntervalEnum",
"DKLocalAccountIdentification.TypeEnum",
"Document.TypeEnum",
"DocumentPage.TypeEnum",
"GeneratePciDescriptionRequest.AdditionalSalesChannelsEnum",
"GetAcceptedTermsOfServiceDocumentResponse.TermsOfServiceDocumentFormatEnum",
"GetTermsOfServiceDocumentRequest.TypeEnum",
"GetTermsOfServiceDocumentResponse.TypeEnum",
"HKLocalAccountIdentification.TypeEnum",
"HULocalAccountIdentification.TypeEnum",
"IbanAccountIdentification.TypeEnum",
"IdentificationData.TypeEnum",
"LegalEntity.TypeEnum",
"LegalEntityAssociation.TypeEnum",
"LegalEntityCapability.AllowedLevelEnum",
"LegalEntityCapability.RequestedLevelEnum",
"LegalEntityInfo.TypeEnum",
"LegalEntityInfoRequiredType.TypeEnum",
"NOLocalAccountIdentification.TypeEnum",
"NZLocalAccountIdentification.TypeEnum",
"NumberAndBicAccountIdentification.TypeEnum",
"Organization.InstitutionalSectorEnum",
"Organization.StatusOfLegalProceedingEnum",
"Organization.TypeEnum",
"Organization.VatAbsenceReasonEnum",
"PLLocalAccountIdentification.TypeEnum",
"SELocalAccountIdentification.TypeEnum",
"SGLocalAccountIdentification.TypeEnum",
"SoleProprietorship.VatAbsenceReasonEnum",
"SourceOfFunds.TypeEnum",
"TaxReportingClassification.BusinessTypeEnum",
"TaxReportingClassification.MainSourceOfIncomeEnum",
"TaxReportingClassification.TypeEnum",
"TermsOfServiceAcceptanceInfo.TypeEnum",
"TransferInstrument.TypeEnum",
"TransferInstrumentInfo.TypeEnum",
"Trust.TypeEnum",
"Trust.VatAbsenceReasonEnum",
"UKLocalAccountIdentification.TypeEnum",
"USLocalAccountIdentification.AccountTypeEnum",
"USLocalAccountIdentification.TypeEnum",
"UnincorporatedPartnership.TypeEnum",
"UnincorporatedPartnership.VatAbsenceReasonEnum",
"VerificationDeadline.CapabilitiesEnum",
"VerificationError.CapabilitiesEnum",
"VerificationError.TypeEnum",
"VerificationErrorRecursive.CapabilitiesEnum",
"VerificationErrorRecursive.TypeEnum",
"WebDataExemption.ReasonEnum",
]);
let typeMap = {
"AULocalAccountIdentification": aULocalAccountIdentification_1.AULocalAccountIdentification,
"AcceptTermsOfServiceRequest": acceptTermsOfServiceRequest_1.AcceptTermsOfServiceRequest,
"AcceptTermsOfServiceResponse": acceptTermsOfServiceResponse_1.AcceptTermsOfServiceResponse,
"AdditionalBankIdentification": additionalBankIdentification_1.AdditionalBankIdentification,
"Address": address_1.Address,
"Amount": amount_1.Amount,
"Attachment": attachment_1.Attachment,
"BankAccountInfo": bankAccountInfo_1.BankAccountInfo,
"BankAccountInfoAccountIdentification": bankAccountInfoAccountIdentification_1.BankAccountInfoAccountIdentificationClass,
"BirthData": birthData_1.BirthData,
"BusinessLine": businessLine_1.BusinessLine,
"BusinessLineInfo": businessLineInfo_1.BusinessLineInfo,
"BusinessLineInfoUpdate": businessLineInfoUpdate_1.BusinessLineInfoUpdate,
"BusinessLines": businessLines_1.BusinessLines,
"CALocalAccountIdentification": cALocalAccountIdentification_1.CALocalAccountIdentification,
"CZLocalAccountIdentification": cZLocalAccountIdentification_1.CZLocalAccountIdentification,
"CalculatePciStatusRequest": calculatePciStatusRequest_1.CalculatePciStatusRequest,
"CalculatePciStatusResponse": calculatePciStatusResponse_1.CalculatePciStatusResponse,
"CalculateTermsOfServiceStatusResponse": calculateTermsOfServiceStatusResponse_1.CalculateTermsOfServiceStatusResponse,
"CapabilityProblem": capabilityProblem_1.CapabilityProblem,
"CapabilityProblemEntity": capabilityProblemEntity_1.CapabilityProblemEntity,
"CapabilityProblemEntityRecursive": capabilityProblemEntityRecursive_1.CapabilityProblemEntityRecursive,
"CapabilitySettings": capabilitySettings_1.CapabilitySettings,
"CheckTaxElectronicDeliveryConsentResponse": checkTaxElectronicDeliveryConsentResponse_1.CheckTaxElectronicDeliveryConsentResponse,
"DKLocalAccountIdentification": dKLocalAccountIdentification_1.DKLocalAccountIdentification,
"DataReviewConfirmationResponse": dataReviewConfirmationResponse_1.DataReviewConfirmationResponse,
"Document": document_1.Document,
"DocumentPage": documentPage_1.DocumentPage,
"DocumentReference": documentReference_1.DocumentReference,
"EntityReference": entityReference_1.EntityReference,
"FinancialReport": financialReport_1.FinancialReport,
"Financier": financier_1.Financier,
"GeneratePciDescriptionRequest": generatePciDescriptionRequest_1.GeneratePciDescriptionRequest,
"GeneratePciDescriptionResponse": generatePciDescriptionResponse_1.GeneratePciDescriptionResponse,
"GetAcceptedTermsOfServiceDocumentResponse": getAcceptedTermsOfServiceDocumentResponse_1.GetAcceptedTermsOfServiceDocumentResponse,
"GetPciQuestionnaireInfosResponse": getPciQuestionnaireInfosResponse_1.GetPciQuestionnaireInfosResponse,
"GetPciQuestionnaireResponse": getPciQuestionnaireResponse_1.GetPciQuestionnaireResponse,
"GetTermsOfServiceAcceptanceInfosResponse": getTermsOfServiceAcceptanceInfosResponse_1.GetTermsOfServiceAcceptanceInfosResponse,
"GetTermsOfServiceDocumentRequest": getTermsOfServiceDocumentRequest_1.GetTermsOfServiceDocumentRequest,
"GetTermsOfServiceDocumentResponse": getTermsOfServiceDocumentResponse_1.GetTermsOfServiceDocumentResponse,
"HKLocalAccountIdentification": hKLocalAccountIdentification_1.HKLocalAccountIdentification,
"HULocalAccountIdentification": hULocalAccountIdentification_1.HULocalAccountIdentification,
"IbanAccountIdentification": ibanAccountIdentification_1.IbanAccountIdentification,
"IdentificationData": identificationData_1.IdentificationData,
"Individual": individual_1.Individual,
"LegalEntity": legalEntity_1.LegalEntity,
"LegalEntityAssociation": legalEntityAssociation_1.LegalEntityAssociation,
"LegalEntityCapability": legalEntityCapability_1.LegalEntityCapability,
"LegalEntityInfo": legalEntityInfo_1.LegalEntityInfo,
"LegalEntityInfoRequiredType": legalEntityInfoRequiredType_1.LegalEntityInfoRequiredType,
"NOLocalAccountIdentification": nOLocalAccountIdentification_1.NOLocalAccountIdentification,
"NZLocalAccountIdentification": nZLocalAccountIdentification_1.NZLocalAccountIdentification,
"Name": name_1.Name,
"NumberAndBicAccountIdentification": numberAndBicAccountIdentification_1.NumberAndBicAccountIdentification,
"OnboardingLink": onboardingLink_1.OnboardingLink,
"OnboardingLinkInfo": onboardingLinkInfo_1.OnboardingLinkInfo,
"OnboardingLinkSettings": onboardingLinkSettings_1.OnboardingLinkSettings,
"OnboardingTheme": onboardingTheme_1.OnboardingTheme,
"OnboardingThemes": onboardingThemes_1.OnboardingThemes,
"Organization": organization_1.Organization,
"OwnerEntity": ownerEntity_1.OwnerEntity,
"PLLocalAccountIdentification": pLLocalAccountIdentification_1.PLLocalAccountIdentification,
"PciDocumentInfo": pciDocumentInfo_1.PciDocumentInfo,
"PciSigningRequest": pciSigningRequest_1.PciSigningRequest,
"PciSigningResponse": pciSigningResponse_1.PciSigningResponse,
"PhoneNumber": phoneNumber_1.PhoneNumber,
"RemediatingAction": remediatingAction_1.RemediatingAction,
"SELocalAccountIdentification": sELocalAccountIdentification_1.SELocalAccountIdentification,
"SGLocalAccountIdentification": sGLocalAccountIdentification_1.SGLocalAccountIdentification,
"ServiceError": serviceError_1.ServiceError,
"SetTaxElectronicDeliveryConsentRequest": setTaxElectronicDeliveryConsentRequest_1.SetTaxElectronicDeliveryConsentRequest,
"SoleProprietorship": soleProprietorship_1.SoleProprietorship,
"SourceOfFunds": sourceOfFunds_1.SourceOfFunds,
"StockData": stockData_1.StockData,
"Support": support_1.Support,
"SupportingEntityCapability": supportingEntityCapability_1.SupportingEntityCapability,
"TaxInformation": taxInformation_1.TaxInformation,
"TaxReportingClassification": taxReportingClassification_1.TaxReportingClassification,
"TermsOfServiceAcceptanceInfo": termsOfServiceAcceptanceInfo_1.TermsOfServiceAcceptanceInfo,
"TransferInstrument": transferInstrument_1.TransferInstrument,
"TransferInstrumentInfo": transferInstrumentInfo_1.TransferInstrumentInfo,
"TransferInstrumentReference": transferInstrumentReference_1.TransferInstrumentReference,
"Trust": trust_1.Trust,
"UKLocalAccountIdentification": uKLocalAccountIdentification_1.UKLocalAccountIdentification,
"USLocalAccountIdentification": uSLocalAccountIdentification_1.USLocalAccountIdentification,
"UndefinedBeneficiary": undefinedBeneficiary_1.UndefinedBeneficiary,
"UnincorporatedPartnership": unincorporatedPartnership_1.UnincorporatedPartnership,
"VerificationDeadline": verificationDeadline_1.VerificationDeadline,
"VerificationError": verificationError_1.VerificationError,
"VerificationErrorRecursive": verificationErrorRecursive_1.VerificationErrorRecursive,
"VerificationErrors": verificationErrors_1.VerificationErrors,
"WebData": webData_1.WebData,
"WebDataExemption": webDataExemption_1.WebDataExemption,
};
/**
* 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