@adyen/api-library
Version:
The Adyen API Library for NodeJS enables you to work with Adyen APIs.
491 lines • 23.9 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 accountHolder_1 = require("./accountHolder");
const accountHolderCapability_1 = require("./accountHolderCapability");
const accountHolderNotificationData_1 = require("./accountHolderNotificationData");
const accountHolderNotificationRequest_1 = require("./accountHolderNotificationRequest");
const accountSupportingEntityCapability_1 = require("./accountSupportingEntityCapability");
const address_1 = require("./address");
const amount_1 = require("./amount");
const authentication_1 = require("./authentication");
const balance_1 = require("./balance");
const balanceAccount_1 = require("./balanceAccount");
const balanceAccountNotificationData_1 = require("./balanceAccountNotificationData");
const balanceAccountNotificationRequest_1 = require("./balanceAccountNotificationRequest");
const balancePlatformNotificationResponse_1 = require("./balancePlatformNotificationResponse");
const bankAccountDetails_1 = require("./bankAccountDetails");
const bulkAddress_1 = require("./bulkAddress");
const capabilityProblem_1 = require("./capabilityProblem");
const capabilityProblemEntity_1 = require("./capabilityProblemEntity");
const capabilityProblemEntityRecursive_1 = require("./capabilityProblemEntityRecursive");
const capabilitySettings_1 = require("./capabilitySettings");
const card_1 = require("./card");
const cardConfiguration_1 = require("./cardConfiguration");
const cardOrderItem_1 = require("./cardOrderItem");
const cardOrderItemDeliveryStatus_1 = require("./cardOrderItemDeliveryStatus");
const cardOrderNotificationRequest_1 = require("./cardOrderNotificationRequest");
const contactDetails_1 = require("./contactDetails");
const deliveryAddress_1 = require("./deliveryAddress");
const deliveryContact_1 = require("./deliveryContact");
const device_1 = require("./device");
const expiry_1 = require("./expiry");
const ibanAccountIdentification_1 = require("./ibanAccountIdentification");
const name_1 = require("./name");
const networkTokenNotificationDataV2_1 = require("./networkTokenNotificationDataV2");
const networkTokenNotificationRequest_1 = require("./networkTokenNotificationRequest");
const networkTokenRequestor_1 = require("./networkTokenRequestor");
const networkTokenRiskRuleData_1 = require("./networkTokenRiskRuleData");
const networkTokenRiskRuleSource_1 = require("./networkTokenRiskRuleSource");
const networkTokenTransactionRulesResult_1 = require("./networkTokenTransactionRulesResult");
const networkTokenTriggeredRiskRule_1 = require("./networkTokenTriggeredRiskRule");
const paymentInstrument_1 = require("./paymentInstrument");
const paymentInstrumentAdditionalBankAccountIdentificationsInner_1 = require("./paymentInstrumentAdditionalBankAccountIdentificationsInner");
const paymentInstrumentNotificationData_1 = require("./paymentInstrumentNotificationData");
const paymentNotificationRequest_1 = require("./paymentNotificationRequest");
const phone_1 = require("./phone");
const phoneNumber_1 = require("./phoneNumber");
const platformPaymentConfiguration_1 = require("./platformPaymentConfiguration");
const remediatingAction_1 = require("./remediatingAction");
const resource_1 = require("./resource");
const sweepConfigurationNotificationData_1 = require("./sweepConfigurationNotificationData");
const sweepConfigurationNotificationRequest_1 = require("./sweepConfigurationNotificationRequest");
const sweepConfigurationV2_1 = require("./sweepConfigurationV2");
const sweepCounterparty_1 = require("./sweepCounterparty");
const sweepSchedule_1 = require("./sweepSchedule");
const tokenAuthentication_1 = require("./tokenAuthentication");
const validationFacts_1 = require("./validationFacts");
const verificationDeadline_1 = require("./verificationDeadline");
const verificationError_1 = require("./verificationError");
const verificationErrorRecursive_1 = require("./verificationErrorRecursive");
const wallet_1 = require("./wallet");
/* tslint:disable:no-unused-variable */
let primitives = [
"string",
"boolean",
"double",
"integer",
"long",
"float",
"number",
"any"
];
let enumsMap = new Set([
"AccountHolder.StatusEnum",
"AccountHolderCapability.AllowedLevelEnum",
"AccountHolderCapability.RequestedLevelEnum",
"AccountHolderCapability.VerificationStatusEnum",
"AccountHolderNotificationRequest.TypeEnum",
"AccountSupportingEntityCapability.AllowedLevelEnum",
"AccountSupportingEntityCapability.RequestedLevelEnum",
"AccountSupportingEntityCapability.VerificationStatusEnum",
"BalanceAccount.StatusEnum",
"BalanceAccountNotificationRequest.TypeEnum",
"CapabilityProblemEntity.TypeEnum",
"CapabilityProblemEntityRecursive.TypeEnum",
"CapabilitySettings.FundingSourceEnum",
"CapabilitySettings.IntervalEnum",
"Card.FormFactorEnum",
"CardOrderItemDeliveryStatus.StatusEnum",
"CardOrderNotificationRequest.TypeEnum",
"IbanAccountIdentification.TypeEnum",
"NetworkTokenNotificationRequest.TypeEnum",
"PaymentInstrument.StatusEnum",
"PaymentInstrument.StatusReasonEnum",
"PaymentInstrument.TypeEnum",
"PaymentInstrumentAdditionalBankAccountIdentificationsInner.TypeEnum",
"PaymentNotificationRequest.TypeEnum",
"Phone.TypeEnum",
"PhoneNumber.PhoneTypeEnum",
"SweepConfigurationNotificationRequest.TypeEnum",
"SweepConfigurationV2.CategoryEnum",
"SweepConfigurationV2.PrioritiesEnum",
"SweepConfigurationV2.ReasonEnum",
"SweepConfigurationV2.StatusEnum",
"SweepConfigurationV2.TypeEnum",
"SweepSchedule.TypeEnum",
"ValidationFacts.ResultEnum",
"VerificationDeadline.CapabilitiesEnum",
"VerificationError.CapabilitiesEnum",
"VerificationError.TypeEnum",
"VerificationErrorRecursive.CapabilitiesEnum",
"VerificationErrorRecursive.TypeEnum",
"Wallet.RecommendationReasonsEnum",
]);
let typeMap = {
"AccountHolder": accountHolder_1.AccountHolder,
"AccountHolderCapability": accountHolderCapability_1.AccountHolderCapability,
"AccountHolderNotificationData": accountHolderNotificationData_1.AccountHolderNotificationData,
"AccountHolderNotificationRequest": accountHolderNotificationRequest_1.AccountHolderNotificationRequest,
"AccountSupportingEntityCapability": accountSupportingEntityCapability_1.AccountSupportingEntityCapability,
"Address": address_1.Address,
"Amount": amount_1.Amount,
"Authentication": authentication_1.Authentication,
"Balance": balance_1.Balance,
"BalanceAccount": balanceAccount_1.BalanceAccount,
"BalanceAccountNotificationData": balanceAccountNotificationData_1.BalanceAccountNotificationData,
"BalanceAccountNotificationRequest": balanceAccountNotificationRequest_1.BalanceAccountNotificationRequest,
"BalancePlatformNotificationResponse": balancePlatformNotificationResponse_1.BalancePlatformNotificationResponse,
"BankAccountDetails": bankAccountDetails_1.BankAccountDetails,
"BulkAddress": bulkAddress_1.BulkAddress,
"CapabilityProblem": capabilityProblem_1.CapabilityProblem,
"CapabilityProblemEntity": capabilityProblemEntity_1.CapabilityProblemEntity,
"CapabilityProblemEntityRecursive": capabilityProblemEntityRecursive_1.CapabilityProblemEntityRecursive,
"CapabilitySettings": capabilitySettings_1.CapabilitySettings,
"Card": card_1.Card,
"CardConfiguration": cardConfiguration_1.CardConfiguration,
"CardOrderItem": cardOrderItem_1.CardOrderItem,
"CardOrderItemDeliveryStatus": cardOrderItemDeliveryStatus_1.CardOrderItemDeliveryStatus,
"CardOrderNotificationRequest": cardOrderNotificationRequest_1.CardOrderNotificationRequest,
"ContactDetails": contactDetails_1.ContactDetails,
"DeliveryAddress": deliveryAddress_1.DeliveryAddress,
"DeliveryContact": deliveryContact_1.DeliveryContact,
"Device": device_1.Device,
"Expiry": expiry_1.Expiry,
"IbanAccountIdentification": ibanAccountIdentification_1.IbanAccountIdentification,
"Name": name_1.Name,
"NetworkTokenNotificationDataV2": networkTokenNotificationDataV2_1.NetworkTokenNotificationDataV2,
"NetworkTokenNotificationRequest": networkTokenNotificationRequest_1.NetworkTokenNotificationRequest,
"NetworkTokenRequestor": networkTokenRequestor_1.NetworkTokenRequestor,
"NetworkTokenRiskRuleData": networkTokenRiskRuleData_1.NetworkTokenRiskRuleData,
"NetworkTokenRiskRuleSource": networkTokenRiskRuleSource_1.NetworkTokenRiskRuleSource,
"NetworkTokenTransactionRulesResult": networkTokenTransactionRulesResult_1.NetworkTokenTransactionRulesResult,
"NetworkTokenTriggeredRiskRule": networkTokenTriggeredRiskRule_1.NetworkTokenTriggeredRiskRule,
"PaymentInstrument": paymentInstrument_1.PaymentInstrument,
"PaymentInstrumentAdditionalBankAccountIdentificationsInner": paymentInstrumentAdditionalBankAccountIdentificationsInner_1.PaymentInstrumentAdditionalBankAccountIdentificationsInnerClass,
"PaymentInstrumentNotificationData": paymentInstrumentNotificationData_1.PaymentInstrumentNotificationData,
"PaymentNotificationRequest": paymentNotificationRequest_1.PaymentNotificationRequest,
"Phone": phone_1.Phone,
"PhoneNumber": phoneNumber_1.PhoneNumber,
"PlatformPaymentConfiguration": platformPaymentConfiguration_1.PlatformPaymentConfiguration,
"RemediatingAction": remediatingAction_1.RemediatingAction,
"Resource": resource_1.Resource,
"SweepConfigurationNotificationData": sweepConfigurationNotificationData_1.SweepConfigurationNotificationData,
"SweepConfigurationNotificationRequest": sweepConfigurationNotificationRequest_1.SweepConfigurationNotificationRequest,
"SweepConfigurationV2": sweepConfigurationV2_1.SweepConfigurationV2,
"SweepCounterparty": sweepCounterparty_1.SweepCounterparty,
"SweepSchedule": sweepSchedule_1.SweepSchedule,
"TokenAuthentication": tokenAuthentication_1.TokenAuthentication,
"ValidationFacts": validationFacts_1.ValidationFacts,
"VerificationDeadline": verificationDeadline_1.VerificationDeadline,
"VerificationError": verificationError_1.VerificationError,
"VerificationErrorRecursive": verificationErrorRecursive_1.VerificationErrorRecursive,
"Wallet": wallet_1.Wallet,
};
/**
* 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