@worldcoin/idkit-standalone
Version:
The identity SDK. Privacy-preserving identity and proof of personhood with World ID.
117 lines (114 loc) • 3.69 kB
JavaScript
;
// 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;