UNPKG

@worldcoin/idkit-standalone

Version:

The identity SDK. Privacy-preserving identity and proof of personhood with World ID.

117 lines (114 loc) 3.69 kB
"use strict"; // src/session.ts var import_idkit_core = require("@worldcoin/idkit-core"); var sessionStore = null; var isSessionActive = false; var createSession = async (config) => { if (sessionStore) { console.warn("Session already exists. Destroying previous session."); destroySession(); } sessionStore = (0, import_idkit_core.createWorldBridgeStore)(); await sessionStore.getState().createClient(config); isSessionActive = true; }; var getSessionURI = () => { if (!sessionStore) return null; return sessionStore.getState().connectorURI; }; var pollSessionStatus = async () => { if (!sessionStore) { throw new Error("No active session. Call createSession() first."); } await sessionStore.getState().pollForUpdates(); const state = sessionStore.getState(); return { state: state.verificationState, result: state.result, errorCode: state.errorCode, sessionURI: state.connectorURI }; }; var destroySession = () => { if (sessionStore) { sessionStore.getState().reset(); sessionStore = null; isSessionActive = false; } }; var hasActiveSession = () => { return isSessionActive && sessionStore !== null; }; var IDKitSession = { create: createSession, pollStatus: pollSessionStatus, getURI: getSessionURI, destroy: destroySession, get isActive() { return hasActiveSession(); } }; // src/index.tsx var import_client = require("react-dom/client"); var import_idkit = require("@worldcoin/idkit"); var import_internal = require("@worldcoin/idkit/internal"); var import_jsx_runtime = require("react/jsx-runtime"); var root; var isInitialized = false; var init = (config) => { if (isInitialized) throw new Error((0, import_internal.__)("IDKit is already initialized")); const startApp = () => { try { if (!isInitialized) { const node = document.createElement("div"); document.body.appendChild(node); root = (0, import_client.createRoot)(node); root.render(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_idkit.IDKitWidget, { ...config })); isInitialized = true; } } catch (error) { console.error((0, import_internal.__)("Error while rendering IDKit"), error); } }; if (/complete|interactive|loaded/.test(document.readyState)) { startApp(); } else { document.addEventListener("DOMContentLoaded", startApp, false); } }; var update = (config) => { if (!isInitialized) throw new Error((0, import_internal.__)("IDKit is not initialized")); import_internal.useIDKitStore.getState().setOptions(config, import_internal.ConfigSource.PROPS); }; var open = () => { return new Promise((resolve, reject) => { if (!isInitialized) return reject((0, import_internal.__)("IDKitWidget is not initialized")); import_internal.useIDKitStore.getState().addErrorCallback(reject, import_internal.ConfigSource.MANUAL); import_internal.useIDKitStore.getState().addSuccessCallback(resolve, import_internal.ConfigSource.MANUAL); import_internal.useIDKitStore.setState({ open: true }); }); }; var close = () => { return new Promise((_, reject) => { if (!isInitialized) return reject((0, import_internal.__)("IDKitWidget is not initialized")); import_internal.useIDKitStore.setState({ open: false }); }); }; var reset = () => { console.warn((0, import_internal.__)("Advanced method intended for internal use! Avoid calling this method directly.")); root.unmount(); isInitialized = false; import_internal.useIDKitStore.destroy(); }; var IDKit = { init, update, open, close, reset, get isInitialized() { return isInitialized; } }; window.IDKit = IDKit; window.IDKitSession = IDKitSession;