import axios from "axios" import { checkTokenExpired } from "../handler" import * as config from "../config" export class Credify { private static _instance: { [apiKey: string]: Credify } = {} accessToken: string /** * Instantiates Credify object * @param accessToken * */ constructor(accessToken: string) { this.accessToken = accessToken } static async getInstance(apiKey: string) { if ( Object.prototype.hasOwnProperty.call(this._instance, apiKey) && !checkTokenExpired(this._instance[apiKey].accessToken) ) { return this._instance[apiKey] } const res = await axios(`${config.getBaseUrl()}/v1/token`, { method: "POST", headers: { "X-API-KEY": apiKey, }, }) const accessToken = res?.data?.data?.access_token || "" this._instance[apiKey] = new Credify(accessToken) return this._instance[apiKey] } }