@keplr-ewallet/ewallet-sdk-core
Version:
87 lines • 3.08 kB
JavaScript
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