@codingwithmanny/iyzipay-js
Version:
A Typesafe Iyzico JS SDK
46 lines • 1.65 kB
JavaScript
// Imports
// =================================
import { apiTest, cardStorage, payment, submerchant } from "../requests";
import * as constants from "../utils/constants";
// Client Setup
// =================================
/**
* Base setup for client
* @param config
* @returns
*/
export const baseClient = (config) => {
// Check if sandbox
const isSandbox = config.apiKey.includes('sandbox') || config.secretKey.includes('sandbox');
// Handle if config uri is not set
const parsedConfig = Object.assign({}, config);
if (!parsedConfig.uri) {
parsedConfig.uri = isSandbox
? `${constants.apiUrl.SANDBOX}`
: `${constants.apiUrl.PRODUCTION}`;
}
// Create client
const client = Object.assign(Object.assign(Object.assign({}, constants), parsedConfig), { isSandbox });
// Allow extending the client
function extend(base) {
return (extendFn) => {
const extended = extendFn(base);
for (const key in client)
delete extended[key];
const combined = Object.assign(Object.assign({}, base), extended);
return Object.assign(combined, { extend: extend(combined) });
};
}
// Return extending
return Object.assign(client, { extend: extend(client) });
};
/**
* Main createClient
* @param config
* @returns
*/
export default function createClient(config) {
const base = baseClient(config);
return Object.assign(Object.assign({}, base), { apiTest: apiTest(base), payment: payment(base), submerchant: submerchant(base), cardStorage: cardStorage(base) });
}
//# sourceMappingURL=index.js.map