@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
43 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createHttpClient = void 0;
const viem_1 = require("viem");
const parseErrorMessage_1 = require("../account/utils/parseErrorMessage.js");
const createHttpClient = (url, apiKey, isDebugMode = false) => {
const request = async (requesParams) => {
const { path, method = "POST", body, params, headers } = requesParams;
const urlParams = params ? `?${new URLSearchParams(params)}` : "";
const fullPath = `${url}/${path}${urlParams}`;
const result = await fetch(fullPath, {
method,
headers: {
"Content-Type": "application/json",
...(apiKey ? { "x-api-key": apiKey } : {}),
...(headers ? { ...headers } : {})
},
...(body ? { body: (0, viem_1.stringify)(body) } : {})
});
const json = (await result.json());
if (!result.ok) {
const error = json?.error ?? json ?? result?.statusText ?? result;
if (isDebugMode)
console.error({ error });
throw new Error((0, parseErrorMessage_1.parseErrorMessage)(error));
}
return json;
};
const client = { request };
function extend(base) {
return (extendFn) => {
const extended = extendFn(base);
for (const key in client)
delete extended[key];
const combined = { ...base, ...extended };
return Object.assign(combined, { extend: extend(combined) });
};
}
return Object.assign(client, { extend: extend(client) });
};
exports.createHttpClient = createHttpClient;
exports.default = exports.createHttpClient;
//# sourceMappingURL=createHttpClient.js.map