@adyen/api-library
Version:
The Adyen API Library for NodeJS enables you to work with Adyen APIs.
461 lines • 21.8 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 action_1 = require("./action");
const additionalBankIdentification_1 = require("./additionalBankIdentification");
const amount_1 = require("./amount");
const bRLocalAccountIdentification_1 = require("./bRLocalAccountIdentification");
const balance_1 = require("./balance");
const bankAccountIdentification_1 = require("./bankAccountIdentification");
const cALocalAccountIdentification_1 = require("./cALocalAccountIdentification");
const cZLocalAccountIdentification_1 = require("./cZLocalAccountIdentification");
const calculateGrantOfferRequest_1 = require("./calculateGrantOfferRequest");
const calculatedGrantOffer_1 = require("./calculatedGrantOffer");
const createGrantOfferRequest_1 = require("./createGrantOfferRequest");
const dKLocalAccountIdentification_1 = require("./dKLocalAccountIdentification");
const defaultErrorResponseEntity_1 = require("./defaultErrorResponseEntity");
const disbursement_1 = require("./disbursement");
const disbursementInfoUpdate_1 = require("./disbursementInfoUpdate");
const disbursementRepayment_1 = require("./disbursementRepayment");
const disbursementRepaymentInfoUpdate_1 = require("./disbursementRepaymentInfoUpdate");
const disbursements_1 = require("./disbursements");
const dynamicOffer_1 = require("./dynamicOffer");
const dynamicOfferRepayment_1 = require("./dynamicOfferRepayment");
const fee_1 = require("./fee");
const fundsCollection_1 = require("./fundsCollection");
const getDynamicOffersResponse_1 = require("./getDynamicOffersResponse");
const grant_1 = require("./grant");
const grantAccount_1 = require("./grantAccount");
const grantCounterparty_1 = require("./grantCounterparty");
const grantInfo_1 = require("./grantInfo");
const grantInfoCounterparty_1 = require("./grantInfoCounterparty");
const grantLimit_1 = require("./grantLimit");
const grantOffer_1 = require("./grantOffer");
const grantOfferFee_1 = require("./grantOfferFee");
const grantOffers_1 = require("./grantOffers");
const grants_1 = require("./grants");
const hKLocalAccountIdentification_1 = require("./hKLocalAccountIdentification");
const hULocalAccountIdentification_1 = require("./hULocalAccountIdentification");
const ibanAccountIdentification_1 = require("./ibanAccountIdentification");
const invalidField_1 = require("./invalidField");
const nOLocalAccountIdentification_1 = require("./nOLocalAccountIdentification");
const nZLocalAccountIdentification_1 = require("./nZLocalAccountIdentification");
const numberAndBicAccountIdentification_1 = require("./numberAndBicAccountIdentification");
const pLLocalAccountIdentification_1 = require("./pLLocalAccountIdentification");
const repayment_1 = require("./repayment");
const repaymentTerm_1 = require("./repaymentTerm");
const sELocalAccountIdentification_1 = require("./sELocalAccountIdentification");
const sGLocalAccountIdentification_1 = require("./sGLocalAccountIdentification");
const status_1 = require("./status");
const thresholdRepayment_1 = require("./thresholdRepayment");
const uKLocalAccountIdentification_1 = require("./uKLocalAccountIdentification");
const uSLocalAccountIdentification_1 = require("./uSLocalAccountIdentification");
/* tslint:disable:no-unused-variable */
let primitives = [
"string",
"boolean",
"double",
"integer",
"long",
"float",
"number",
"any"
];
let enumsMap = new Set([
"AdditionalBankIdentification.TypeEnum",
"CALocalBankAccountType",
"CalculatedGrantOffer.ContractTypeEnum",
"DynamicOffer.ContractTypeEnum",
"FinancingType",
"FundsCollectionType",
"GrantOffer.ContractTypeEnum",
"Status.CodeEnum",
"USLocalBankAccountType",
]);
let typeMap = {
"AULocalAccountIdentification": aULocalAccountIdentification_1.AULocalAccountIdentification,
"Action": action_1.Action,
"AdditionalBankIdentification": additionalBankIdentification_1.AdditionalBankIdentification,
"Amount": amount_1.Amount,
"BRLocalAccountIdentification": bRLocalAccountIdentification_1.BRLocalAccountIdentification,
"Balance": balance_1.Balance,
"BankAccountIdentification": bankAccountIdentification_1.BankAccountIdentification,
"CALocalAccountIdentification": cALocalAccountIdentification_1.CALocalAccountIdentification,
"CZLocalAccountIdentification": cZLocalAccountIdentification_1.CZLocalAccountIdentification,
"CalculateGrantOfferRequest": calculateGrantOfferRequest_1.CalculateGrantOfferRequest,
"CalculatedGrantOffer": calculatedGrantOffer_1.CalculatedGrantOffer,
"CreateGrantOfferRequest": createGrantOfferRequest_1.CreateGrantOfferRequest,
"DKLocalAccountIdentification": dKLocalAccountIdentification_1.DKLocalAccountIdentification,
"DefaultErrorResponseEntity": defaultErrorResponseEntity_1.DefaultErrorResponseEntity,
"Disbursement": disbursement_1.Disbursement,
"DisbursementInfoUpdate": disbursementInfoUpdate_1.DisbursementInfoUpdate,
"DisbursementRepayment": disbursementRepayment_1.DisbursementRepayment,
"DisbursementRepaymentInfoUpdate": disbursementRepaymentInfoUpdate_1.DisbursementRepaymentInfoUpdate,
"Disbursements": disbursements_1.Disbursements,
"DynamicOffer": dynamicOffer_1.DynamicOffer,
"DynamicOfferRepayment": dynamicOfferRepayment_1.DynamicOfferRepayment,
"Fee": fee_1.Fee,
"FundsCollection": fundsCollection_1.FundsCollection,
"GetDynamicOffersResponse": getDynamicOffersResponse_1.GetDynamicOffersResponse,
"Grant": grant_1.Grant,
"GrantAccount": grantAccount_1.GrantAccount,
"GrantCounterparty": grantCounterparty_1.GrantCounterparty,
"GrantInfo": grantInfo_1.GrantInfo,
"GrantInfoCounterparty": grantInfoCounterparty_1.GrantInfoCounterparty,
"GrantLimit": grantLimit_1.GrantLimit,
"GrantOffer": grantOffer_1.GrantOffer,
"GrantOfferFee": grantOfferFee_1.GrantOfferFee,
"GrantOffers": grantOffers_1.GrantOffers,
"Grants": grants_1.Grants,
"HKLocalAccountIdentification": hKLocalAccountIdentification_1.HKLocalAccountIdentification,
"HULocalAccountIdentification": hULocalAccountIdentification_1.HULocalAccountIdentification,
"IbanAccountIdentification": ibanAccountIdentification_1.IbanAccountIdentification,
"InvalidField": invalidField_1.InvalidField,
"NOLocalAccountIdentification": nOLocalAccountIdentification_1.NOLocalAccountIdentification,
"NZLocalAccountIdentification": nZLocalAccountIdentification_1.NZLocalAccountIdentification,
"NumberAndBicAccountIdentification": numberAndBicAccountIdentification_1.NumberAndBicAccountIdentification,
"PLLocalAccountIdentification": pLLocalAccountIdentification_1.PLLocalAccountIdentification,
"Repayment": repayment_1.Repayment,
"RepaymentTerm": repaymentTerm_1.RepaymentTerm,
"SELocalAccountIdentification": sELocalAccountIdentification_1.SELocalAccountIdentification,
"SGLocalAccountIdentification": sGLocalAccountIdentification_1.SGLocalAccountIdentification,
"Status": status_1.Status,
"ThresholdRepayment": thresholdRepayment_1.ThresholdRepayment,
"UKLocalAccountIdentification": uKLocalAccountIdentification_1.UKLocalAccountIdentification,
"USLocalAccountIdentification": uSLocalAccountIdentification_1.USLocalAccountIdentification,
};
/**
* 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