UNPKG

@adyen/api-library

Version:

The Adyen API Library for NodeJS enables you to work with Adyen APIs.

585 lines 30.3 kB
"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