UNPKG

@keplr-ewallet/ewallet-sdk-core

Version:
87 lines 3.08 kB
import { registerMsgListener } from "@keplr-ewallet-sdk-core/window_msg/listener"; import { KeplrEWallet } from "@keplr-ewallet-sdk-core/keplr_ewallet"; import {} from "@keplr-ewallet/stdlib-js"; import { setupIframeElement } from "./iframe"; const SDK_ENDPOINT = `https://attached.embed.keplr.app`; const KEPLR_EWALLET_ELEM_ID = "keplr-ewallet"; export async function initKeplrEwalletCore(args) { console.debug("[keplr] init"); console.debug("[keplr] sdk endpoint: %s", args.sdk_endpoint); if (window === undefined) { console.error("[keplr] EWallet can only be initialized in the browser"); return { success: false, err: "Not in the browser context", }; } if (window.__keplr_ewallet) { const el = document.getElementById(KEPLR_EWALLET_ELEM_ID); if (el !== null) { return { success: false, err: "Some problem occurred during Keplr eWallet initialization", }; } console.debug("[keplr] already initialized"); return { success: true, data: window.__keplr_ewallet }; } const checkURLRes = await checkURL(args.sdk_endpoint); if (!checkURLRes.success) { return checkURLRes; } const registering = registerMsgListener(); const sdkEndpoint = checkURLRes.data; console.log("[keplr] resolved sdk endpoint: %s", sdkEndpoint); const iframeRes = setupIframeElement(sdkEndpoint); if (!iframeRes.success) { return iframeRes; } const iframe = iframeRes.data; await registering; const ewalletCore = new KeplrEWallet(args.api_key, iframe, sdkEndpoint); window.__keplr_ewallet = ewalletCore; const hostOriginRes = await getHostOrigin(); if (!hostOriginRes.success) { return hostOriginRes; } const hostOrigin = hostOriginRes.data; const initStateRes = await ewalletCore.initState(hostOrigin); if (!initStateRes.success) { return initStateRes; } return { success: true, data: ewalletCore }; } async function checkURL(url) { const _url = url ?? SDK_ENDPOINT; try { const response = await fetch(_url, { mode: "no-cors" }); if (!response.ok) { return { success: true, data: _url }; } else { return { success: false, err: `SDK endpoint, resp contains err, url: ${_url}`, }; } } catch (err) { console.error("[keplr] check url fail, url: %s", _url); return { success: false, err: `check url fail, ${err.toString()}` }; } } async function getHostOrigin() { try { const myUrl = window.location.toString(); const normalizedIframeOrigin = new URL(myUrl).origin; return { success: true, data: normalizedIframeOrigin }; } catch (err) { console.error("[keplr] get host origin fail"); return { success: false, err: `get host origin fail, ${err.toString()}`, }; } } //# sourceMappingURL=index.js.map