@worldcoin/idkit 4.0.9 → 4.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { IDKitErrorCodes, IDKit } from '@worldcoin/idkit-core';
1
+ import { IDKitErrorCodes, isInWorldApp, IDKit } from '@worldcoin/idkit-core';
2
2
  export { IDKit, IDKitErrorCodes, deviceLegacy, documentLegacy, orbLegacy, secureDocumentLegacy, selfieCheckLegacy, signRequest } from '@worldcoin/idkit-core';
3
- import { memo, useMemo, useState, useRef, useEffect, useCallback } from 'react';
3
+ import { memo, useMemo, useState, useRef, useCallback, useEffect } from 'react';
4
4
  import { createPortal } from 'react-dom';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import QRCodeUtil from 'qrcode/lib/core/qrcode.js';
@@ -62,6 +62,7 @@ function toErrorCode(error) {
62
62
  // src/hooks/useIDKitFlow.ts
63
63
  var isDebug = () => typeof window !== "undefined" && window.IDKIT_DEBUG;
64
64
  function useIDKitFlow(createFlowHandle, config) {
65
+ const isInWorldApp$1 = useMemo(() => isInWorldApp(), []);
65
66
  const [state, setState] = useState(
66
67
  createInitialHookState
67
68
  );
@@ -119,14 +120,15 @@ function useIDKitFlow(createFlowHandle, config) {
119
120
  connectorURI: request.connectorURI,
120
121
  requestId: request.requestId
121
122
  });
123
+ const connectorURI = isInWorldApp$1 ? null : request.connectorURI;
122
124
  setState((prev) => {
123
- if (prev.connectorURI === request.connectorURI) {
125
+ if (prev.connectorURI === connectorURI) {
124
126
  return prev;
125
127
  }
126
- return { ...prev, connectorURI: request.connectorURI };
128
+ return { ...prev, connectorURI };
127
129
  });
128
130
  const pollInterval = configRef.current.polling?.interval ?? 1e3;
129
- const timeout = configRef.current.polling?.timeout ?? 3e5;
131
+ const timeout = configRef.current.polling?.timeout ?? 9e5;
130
132
  const startedAt = Date.now();
131
133
  while (true) {
132
134
  ensureNotAborted(controller.signal);
@@ -179,7 +181,7 @@ function useIDKitFlow(createFlowHandle, config) {
179
181
  abortRef.current = null;
180
182
  }
181
183
  };
182
- }, [state.isOpen, runId]);
184
+ }, [state.isOpen, runId, isInWorldApp$1]);
183
185
  return {
184
186
  open,
185
187
  reset,
@@ -190,7 +192,8 @@ function useIDKitFlow(createFlowHandle, config) {
190
192
  connectorURI: state.connectorURI,
191
193
  result: state.result,
192
194
  errorCode: state.errorCode,
193
- isOpen: state.isOpen
195
+ isOpen: state.isOpen,
196
+ isInWorldApp: isInWorldApp$1
194
197
  };
195
198
  }
196
199
 
@@ -203,6 +206,7 @@ function useIDKitRequest(config) {
203
206
  rp_context: config.rp_context,
204
207
  action_description: config.action_description,
205
208
  bridge_url: config.bridge_url,
209
+ return_to: config.return_to,
206
210
  allow_legacy_proofs: config.allow_legacy_proofs,
207
211
  override_connect_base_url: config.override_connect_base_url,
208
212
  environment: config.environment
@@ -1635,7 +1639,8 @@ function getVisualStage(isSuccess, isError, isHostVerifying) {
1635
1639
  if (isSuccess) return "success";
1636
1640
  return "worldid";
1637
1641
  }
1638
- function IDKitRequestWidget({
1642
+ function IDKitWidgetBase({
1643
+ flow,
1639
1644
  open,
1640
1645
  onOpenChange,
1641
1646
  handleVerify,
@@ -1643,12 +1648,8 @@ function IDKitRequestWidget({
1643
1648
  onError,
1644
1649
  autoClose = true,
1645
1650
  language,
1646
- ...config
1651
+ showSimulatorCallout
1647
1652
  }) {
1648
- if (typeof onSuccess !== "function") {
1649
- throw new Error("IDKitRequestWidget requires an onSuccess callback.");
1650
- }
1651
- const flow = useIDKitRequest(config);
1652
1653
  const { open: openFlow, reset: resetFlow } = flow;
1653
1654
  const [hostVerifyResult, setHostVerifyResult] = useState(null);
1654
1655
  const lastResultRef = useRef(null);
@@ -1690,13 +1691,31 @@ function IDKitRequestWidget({
1690
1691
  });
1691
1692
  }, [effectiveErrorCode, onError]);
1692
1693
  useEffect(() => {
1693
- if (isSuccess && autoClose) {
1694
+ if (!flow.isInWorldApp || !isHostVerifying || !flow.result || !handleVerify) {
1695
+ return;
1696
+ }
1697
+ let cancelled = false;
1698
+ void Promise.resolve(handleVerify(flow.result)).then(() => {
1699
+ if (!cancelled) setHostVerifyResult("passed");
1700
+ }).catch(() => {
1701
+ if (!cancelled) setHostVerifyResult("failed");
1702
+ });
1703
+ return () => {
1704
+ cancelled = true;
1705
+ };
1706
+ }, [flow.isInWorldApp, isHostVerifying, flow.result, handleVerify]);
1707
+ useEffect(() => {
1708
+ if (flow.isInWorldApp && (isSuccess || isError)) {
1709
+ onOpenChange(false);
1710
+ } else if (isSuccess && autoClose) {
1694
1711
  const timer = setTimeout(() => onOpenChange(false), 2500);
1695
1712
  return () => clearTimeout(timer);
1696
1713
  }
1697
- }, [isSuccess, autoClose, onOpenChange]);
1714
+ }, [isSuccess, isError, autoClose, onOpenChange, flow.isInWorldApp]);
1715
+ if (flow.isInWorldApp) {
1716
+ return null;
1717
+ }
1698
1718
  const stage = getVisualStage(isSuccess, isError, isHostVerifying);
1699
- const showSimulatorCallout = config.environment === "staging";
1700
1719
  return /* @__PURE__ */ jsxs(IDKitModal, { open, onOpenChange, children: [
1701
1720
  stage === "worldid" && /* @__PURE__ */ jsx(
1702
1721
  WorldIDState,
@@ -1730,6 +1749,35 @@ function IDKitRequestWidget({
1730
1749
  )
1731
1750
  ] });
1732
1751
  }
1752
+ function IDKitRequestWidget({
1753
+ open,
1754
+ onOpenChange,
1755
+ handleVerify,
1756
+ onSuccess,
1757
+ onError,
1758
+ autoClose,
1759
+ language,
1760
+ ...config
1761
+ }) {
1762
+ if (typeof onSuccess !== "function") {
1763
+ throw new Error("IDKitRequestWidget requires an onSuccess callback.");
1764
+ }
1765
+ const flow = useIDKitRequest(config);
1766
+ return /* @__PURE__ */ jsx(
1767
+ IDKitWidgetBase,
1768
+ {
1769
+ flow,
1770
+ open,
1771
+ onOpenChange,
1772
+ handleVerify,
1773
+ onSuccess,
1774
+ onError,
1775
+ autoClose,
1776
+ language,
1777
+ showSimulatorCallout: config.environment === "staging"
1778
+ }
1779
+ );
1780
+ }
1733
1781
 
1734
1782
  export { IDKitRequestWidget, useIDKitRequest };
1735
1783
  //# sourceMappingURL=index.js.map