@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/README.md +2 -0
- package/dist/index.cjs +62 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +64 -16
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -31,6 +31,7 @@ function Example() {
|
|
|
31
31
|
action: "my-action",
|
|
32
32
|
rp_context,
|
|
33
33
|
allow_legacy_proofs: false,
|
|
34
|
+
return_to: "myapp://idkit/callback",
|
|
34
35
|
preset: orbLegacy({ signal: "user-123" }),
|
|
35
36
|
});
|
|
36
37
|
const isBusy =
|
|
@@ -72,6 +73,7 @@ function WidgetExample() {
|
|
|
72
73
|
action="my-action"
|
|
73
74
|
rp_context={rpContext}
|
|
74
75
|
allow_legacy_proofs={false}
|
|
76
|
+
return_to="myapp://idkit/callback"
|
|
75
77
|
preset={orbLegacy({ signal: "user-123" })}
|
|
76
78
|
onSuccess={(result) => {
|
|
77
79
|
// required: runs after verification succeeds
|
package/dist/index.cjs
CHANGED
|
@@ -67,6 +67,7 @@ function toErrorCode(error) {
|
|
|
67
67
|
// src/hooks/useIDKitFlow.ts
|
|
68
68
|
var isDebug = () => typeof window !== "undefined" && window.IDKIT_DEBUG;
|
|
69
69
|
function useIDKitFlow(createFlowHandle, config) {
|
|
70
|
+
const isInWorldApp = react.useMemo(() => idkitCore.isInWorldApp(), []);
|
|
70
71
|
const [state, setState] = react.useState(
|
|
71
72
|
createInitialHookState
|
|
72
73
|
);
|
|
@@ -124,14 +125,15 @@ function useIDKitFlow(createFlowHandle, config) {
|
|
|
124
125
|
connectorURI: request.connectorURI,
|
|
125
126
|
requestId: request.requestId
|
|
126
127
|
});
|
|
128
|
+
const connectorURI = isInWorldApp ? null : request.connectorURI;
|
|
127
129
|
setState((prev) => {
|
|
128
|
-
if (prev.connectorURI ===
|
|
130
|
+
if (prev.connectorURI === connectorURI) {
|
|
129
131
|
return prev;
|
|
130
132
|
}
|
|
131
|
-
return { ...prev, connectorURI
|
|
133
|
+
return { ...prev, connectorURI };
|
|
132
134
|
});
|
|
133
135
|
const pollInterval = configRef.current.polling?.interval ?? 1e3;
|
|
134
|
-
const timeout = configRef.current.polling?.timeout ??
|
|
136
|
+
const timeout = configRef.current.polling?.timeout ?? 9e5;
|
|
135
137
|
const startedAt = Date.now();
|
|
136
138
|
while (true) {
|
|
137
139
|
ensureNotAborted(controller.signal);
|
|
@@ -184,7 +186,7 @@ function useIDKitFlow(createFlowHandle, config) {
|
|
|
184
186
|
abortRef.current = null;
|
|
185
187
|
}
|
|
186
188
|
};
|
|
187
|
-
}, [state.isOpen, runId]);
|
|
189
|
+
}, [state.isOpen, runId, isInWorldApp]);
|
|
188
190
|
return {
|
|
189
191
|
open,
|
|
190
192
|
reset,
|
|
@@ -195,7 +197,8 @@ function useIDKitFlow(createFlowHandle, config) {
|
|
|
195
197
|
connectorURI: state.connectorURI,
|
|
196
198
|
result: state.result,
|
|
197
199
|
errorCode: state.errorCode,
|
|
198
|
-
isOpen: state.isOpen
|
|
200
|
+
isOpen: state.isOpen,
|
|
201
|
+
isInWorldApp
|
|
199
202
|
};
|
|
200
203
|
}
|
|
201
204
|
|
|
@@ -208,6 +211,7 @@ function useIDKitRequest(config) {
|
|
|
208
211
|
rp_context: config.rp_context,
|
|
209
212
|
action_description: config.action_description,
|
|
210
213
|
bridge_url: config.bridge_url,
|
|
214
|
+
return_to: config.return_to,
|
|
211
215
|
allow_legacy_proofs: config.allow_legacy_proofs,
|
|
212
216
|
override_connect_base_url: config.override_connect_base_url,
|
|
213
217
|
environment: config.environment
|
|
@@ -1640,7 +1644,8 @@ function getVisualStage(isSuccess, isError, isHostVerifying) {
|
|
|
1640
1644
|
if (isSuccess) return "success";
|
|
1641
1645
|
return "worldid";
|
|
1642
1646
|
}
|
|
1643
|
-
function
|
|
1647
|
+
function IDKitWidgetBase({
|
|
1648
|
+
flow,
|
|
1644
1649
|
open,
|
|
1645
1650
|
onOpenChange,
|
|
1646
1651
|
handleVerify,
|
|
@@ -1648,12 +1653,8 @@ function IDKitRequestWidget({
|
|
|
1648
1653
|
onError,
|
|
1649
1654
|
autoClose = true,
|
|
1650
1655
|
language,
|
|
1651
|
-
|
|
1656
|
+
showSimulatorCallout
|
|
1652
1657
|
}) {
|
|
1653
|
-
if (typeof onSuccess !== "function") {
|
|
1654
|
-
throw new Error("IDKitRequestWidget requires an onSuccess callback.");
|
|
1655
|
-
}
|
|
1656
|
-
const flow = useIDKitRequest(config);
|
|
1657
1658
|
const { open: openFlow, reset: resetFlow } = flow;
|
|
1658
1659
|
const [hostVerifyResult, setHostVerifyResult] = react.useState(null);
|
|
1659
1660
|
const lastResultRef = react.useRef(null);
|
|
@@ -1695,13 +1696,31 @@ function IDKitRequestWidget({
|
|
|
1695
1696
|
});
|
|
1696
1697
|
}, [effectiveErrorCode, onError]);
|
|
1697
1698
|
react.useEffect(() => {
|
|
1698
|
-
if (
|
|
1699
|
+
if (!flow.isInWorldApp || !isHostVerifying || !flow.result || !handleVerify) {
|
|
1700
|
+
return;
|
|
1701
|
+
}
|
|
1702
|
+
let cancelled = false;
|
|
1703
|
+
void Promise.resolve(handleVerify(flow.result)).then(() => {
|
|
1704
|
+
if (!cancelled) setHostVerifyResult("passed");
|
|
1705
|
+
}).catch(() => {
|
|
1706
|
+
if (!cancelled) setHostVerifyResult("failed");
|
|
1707
|
+
});
|
|
1708
|
+
return () => {
|
|
1709
|
+
cancelled = true;
|
|
1710
|
+
};
|
|
1711
|
+
}, [flow.isInWorldApp, isHostVerifying, flow.result, handleVerify]);
|
|
1712
|
+
react.useEffect(() => {
|
|
1713
|
+
if (flow.isInWorldApp && (isSuccess || isError)) {
|
|
1714
|
+
onOpenChange(false);
|
|
1715
|
+
} else if (isSuccess && autoClose) {
|
|
1699
1716
|
const timer = setTimeout(() => onOpenChange(false), 2500);
|
|
1700
1717
|
return () => clearTimeout(timer);
|
|
1701
1718
|
}
|
|
1702
|
-
}, [isSuccess, autoClose, onOpenChange]);
|
|
1719
|
+
}, [isSuccess, isError, autoClose, onOpenChange, flow.isInWorldApp]);
|
|
1720
|
+
if (flow.isInWorldApp) {
|
|
1721
|
+
return null;
|
|
1722
|
+
}
|
|
1703
1723
|
const stage = getVisualStage(isSuccess, isError, isHostVerifying);
|
|
1704
|
-
const showSimulatorCallout = config.environment === "staging";
|
|
1705
1724
|
return /* @__PURE__ */ jsxRuntime.jsxs(IDKitModal, { open, onOpenChange, children: [
|
|
1706
1725
|
stage === "worldid" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1707
1726
|
WorldIDState,
|
|
@@ -1735,6 +1754,35 @@ function IDKitRequestWidget({
|
|
|
1735
1754
|
)
|
|
1736
1755
|
] });
|
|
1737
1756
|
}
|
|
1757
|
+
function IDKitRequestWidget({
|
|
1758
|
+
open,
|
|
1759
|
+
onOpenChange,
|
|
1760
|
+
handleVerify,
|
|
1761
|
+
onSuccess,
|
|
1762
|
+
onError,
|
|
1763
|
+
autoClose,
|
|
1764
|
+
language,
|
|
1765
|
+
...config
|
|
1766
|
+
}) {
|
|
1767
|
+
if (typeof onSuccess !== "function") {
|
|
1768
|
+
throw new Error("IDKitRequestWidget requires an onSuccess callback.");
|
|
1769
|
+
}
|
|
1770
|
+
const flow = useIDKitRequest(config);
|
|
1771
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1772
|
+
IDKitWidgetBase,
|
|
1773
|
+
{
|
|
1774
|
+
flow,
|
|
1775
|
+
open,
|
|
1776
|
+
onOpenChange,
|
|
1777
|
+
handleVerify,
|
|
1778
|
+
onSuccess,
|
|
1779
|
+
onError,
|
|
1780
|
+
autoClose,
|
|
1781
|
+
language,
|
|
1782
|
+
showSimulatorCallout: config.environment === "staging"
|
|
1783
|
+
}
|
|
1784
|
+
);
|
|
1785
|
+
}
|
|
1738
1786
|
|
|
1739
1787
|
Object.defineProperty(exports, "IDKit", {
|
|
1740
1788
|
enumerable: true,
|