@edge-markets/connect-link 1.5.1 → 1.6.0

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.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { EdgeLinkConfigBase, EdgeScope, EdgeLinkSuccess, EdgeLinkExit, SdkGeolocation, PKCEPair } from '@edge-markets/connect';
1
+ import { EdgeLinkConfigBase, EdgeScope, SdkGeolocation, EdgeLinkSuccess, EdgeLinkExit, PKCEPair } from '@edge-markets/connect';
2
2
  export { ALL_EDGE_SCOPES, EDGE_SCOPES, EdgeEnvironment, EdgeError, EdgeLinkEvent, EdgeLinkEventName, EdgeLinkExit, EdgeLinkSuccess, EdgePopupBlockedError, EdgeScope, EdgeStateMismatchError, PKCEPair, SdkGeolocation, isEdgeError } from '@edge-markets/connect';
3
3
 
4
4
  /**
@@ -200,18 +200,6 @@ declare class EdgeLink {
200
200
  private cleanup;
201
201
  }
202
202
 
203
- interface UseEdgeLinkConfig extends Omit<EdgeLinkConfig, 'onSuccess' | 'onExit'> {
204
- onSuccess?: (result: EdgeLinkSuccess) => void | Promise<void>;
205
- onExit?: (metadata: EdgeLinkExit) => void;
206
- }
207
- interface UseEdgeLinkReturn {
208
- open: (options?: EdgeLinkOpenOptions) => void;
209
- ready: boolean;
210
- error: Error | null;
211
- isOpen: boolean;
212
- }
213
- declare function useEdgeLink(config: UseEdgeLinkConfig): UseEdgeLinkReturn;
214
-
215
203
  /**
216
204
  * EdgeTransferVerify - Transfer Verification Launcher for EDGE Connect
217
205
  *
@@ -634,6 +622,37 @@ declare class EdgeTransferVerify {
634
622
  private handleUserClose;
635
623
  }
636
624
 
625
+ interface UseEdgeLinkConfig extends Omit<EdgeLinkConfig, 'onSuccess' | 'onExit'> {
626
+ onSuccess?: (result: EdgeLinkSuccess) => void | Promise<void>;
627
+ onExit?: (metadata: EdgeLinkExit) => void;
628
+ }
629
+ interface UseEdgeLinkReturn {
630
+ open: (options?: EdgeLinkOpenOptions) => void;
631
+ ready: boolean;
632
+ error: Error | null;
633
+ isOpen: boolean;
634
+ }
635
+ declare function useEdgeLink(config: UseEdgeLinkConfig): UseEdgeLinkReturn;
636
+ interface UseEdgeTransferVerifyConfig extends Omit<EdgeTransferVerifyConfig, 'onSuccess' | 'onError' | 'onCancel' | 'onExpired' | 'onLoaded' | 'onEvent'> {
637
+ onSuccess?: (event: TransferVerifyEvent) => void | Promise<void>;
638
+ onError?: (event: TransferVerifyEvent) => void | Promise<void>;
639
+ onCancel?: (event: TransferVerifyEvent) => void | Promise<void>;
640
+ onExpired?: (event: TransferVerifyEvent) => void | Promise<void>;
641
+ onLoaded?: (event: TransferVerifyEvent) => void | Promise<void>;
642
+ onEvent?: (event: TransferVerifyEvent) => void | Promise<void>;
643
+ }
644
+ interface UseEdgeTransferVerifyReturn {
645
+ open: () => void;
646
+ close: () => void;
647
+ destroy: () => void;
648
+ ready: boolean;
649
+ isOpen: boolean;
650
+ isLoaded: boolean;
651
+ lastEvent: TransferVerifyEvent | null;
652
+ error: Error | null;
653
+ }
654
+ declare function useEdgeTransferVerify(config: UseEdgeTransferVerifyConfig): UseEdgeTransferVerifyReturn;
655
+
637
656
  /**
638
657
  * Iframe Manager
639
658
  *
@@ -879,4 +898,4 @@ declare function generateState(): string;
879
898
  */
880
899
  declare function assertCryptoAvailable(): void;
881
900
 
882
- export { EdgeLink, type EdgeLinkConfig, type EdgeLinkOpenOptions, EdgeTransferVerify, type EdgeTransferVerifyConfig, type GeolocationOptions, type IframeCallbacks, type IframeConfig, IframeManager, type TransferVerifyEvent, type TransferVerifyEventType, type TransferVerifyMode, type UseEdgeLinkConfig, type UseEdgeLinkReturn, assertCryptoAvailable, collectGeolocation, generatePKCE, generateState, useEdgeLink };
901
+ export { EdgeLink, type EdgeLinkConfig, type EdgeLinkOpenOptions, EdgeTransferVerify, type EdgeTransferVerifyConfig, type GeolocationOptions, type IframeCallbacks, type IframeConfig, IframeManager, type TransferVerifyEvent, type TransferVerifyEventType, type TransferVerifyMode, type UseEdgeLinkConfig, type UseEdgeLinkReturn, type UseEdgeTransferVerifyConfig, type UseEdgeTransferVerifyReturn, assertCryptoAvailable, collectGeolocation, generatePKCE, generateState, useEdgeLink, useEdgeTransferVerify };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { EdgeLinkConfigBase, EdgeScope, EdgeLinkSuccess, EdgeLinkExit, SdkGeolocation, PKCEPair } from '@edge-markets/connect';
1
+ import { EdgeLinkConfigBase, EdgeScope, SdkGeolocation, EdgeLinkSuccess, EdgeLinkExit, PKCEPair } from '@edge-markets/connect';
2
2
  export { ALL_EDGE_SCOPES, EDGE_SCOPES, EdgeEnvironment, EdgeError, EdgeLinkEvent, EdgeLinkEventName, EdgeLinkExit, EdgeLinkSuccess, EdgePopupBlockedError, EdgeScope, EdgeStateMismatchError, PKCEPair, SdkGeolocation, isEdgeError } from '@edge-markets/connect';
3
3
 
4
4
  /**
@@ -200,18 +200,6 @@ declare class EdgeLink {
200
200
  private cleanup;
201
201
  }
202
202
 
203
- interface UseEdgeLinkConfig extends Omit<EdgeLinkConfig, 'onSuccess' | 'onExit'> {
204
- onSuccess?: (result: EdgeLinkSuccess) => void | Promise<void>;
205
- onExit?: (metadata: EdgeLinkExit) => void;
206
- }
207
- interface UseEdgeLinkReturn {
208
- open: (options?: EdgeLinkOpenOptions) => void;
209
- ready: boolean;
210
- error: Error | null;
211
- isOpen: boolean;
212
- }
213
- declare function useEdgeLink(config: UseEdgeLinkConfig): UseEdgeLinkReturn;
214
-
215
203
  /**
216
204
  * EdgeTransferVerify - Transfer Verification Launcher for EDGE Connect
217
205
  *
@@ -634,6 +622,37 @@ declare class EdgeTransferVerify {
634
622
  private handleUserClose;
635
623
  }
636
624
 
625
+ interface UseEdgeLinkConfig extends Omit<EdgeLinkConfig, 'onSuccess' | 'onExit'> {
626
+ onSuccess?: (result: EdgeLinkSuccess) => void | Promise<void>;
627
+ onExit?: (metadata: EdgeLinkExit) => void;
628
+ }
629
+ interface UseEdgeLinkReturn {
630
+ open: (options?: EdgeLinkOpenOptions) => void;
631
+ ready: boolean;
632
+ error: Error | null;
633
+ isOpen: boolean;
634
+ }
635
+ declare function useEdgeLink(config: UseEdgeLinkConfig): UseEdgeLinkReturn;
636
+ interface UseEdgeTransferVerifyConfig extends Omit<EdgeTransferVerifyConfig, 'onSuccess' | 'onError' | 'onCancel' | 'onExpired' | 'onLoaded' | 'onEvent'> {
637
+ onSuccess?: (event: TransferVerifyEvent) => void | Promise<void>;
638
+ onError?: (event: TransferVerifyEvent) => void | Promise<void>;
639
+ onCancel?: (event: TransferVerifyEvent) => void | Promise<void>;
640
+ onExpired?: (event: TransferVerifyEvent) => void | Promise<void>;
641
+ onLoaded?: (event: TransferVerifyEvent) => void | Promise<void>;
642
+ onEvent?: (event: TransferVerifyEvent) => void | Promise<void>;
643
+ }
644
+ interface UseEdgeTransferVerifyReturn {
645
+ open: () => void;
646
+ close: () => void;
647
+ destroy: () => void;
648
+ ready: boolean;
649
+ isOpen: boolean;
650
+ isLoaded: boolean;
651
+ lastEvent: TransferVerifyEvent | null;
652
+ error: Error | null;
653
+ }
654
+ declare function useEdgeTransferVerify(config: UseEdgeTransferVerifyConfig): UseEdgeTransferVerifyReturn;
655
+
637
656
  /**
638
657
  * Iframe Manager
639
658
  *
@@ -879,4 +898,4 @@ declare function generateState(): string;
879
898
  */
880
899
  declare function assertCryptoAvailable(): void;
881
900
 
882
- export { EdgeLink, type EdgeLinkConfig, type EdgeLinkOpenOptions, EdgeTransferVerify, type EdgeTransferVerifyConfig, type GeolocationOptions, type IframeCallbacks, type IframeConfig, IframeManager, type TransferVerifyEvent, type TransferVerifyEventType, type TransferVerifyMode, type UseEdgeLinkConfig, type UseEdgeLinkReturn, assertCryptoAvailable, collectGeolocation, generatePKCE, generateState, useEdgeLink };
901
+ export { EdgeLink, type EdgeLinkConfig, type EdgeLinkOpenOptions, EdgeTransferVerify, type EdgeTransferVerifyConfig, type GeolocationOptions, type IframeCallbacks, type IframeConfig, IframeManager, type TransferVerifyEvent, type TransferVerifyEventType, type TransferVerifyMode, type UseEdgeLinkConfig, type UseEdgeLinkReturn, type UseEdgeTransferVerifyConfig, type UseEdgeTransferVerifyReturn, assertCryptoAvailable, collectGeolocation, generatePKCE, generateState, useEdgeLink, useEdgeTransferVerify };
package/dist/index.js CHANGED
@@ -33,7 +33,8 @@ __export(index_exports, {
33
33
  generatePKCE: () => generatePKCE,
34
34
  generateState: () => generateState,
35
35
  isEdgeError: () => import_connect3.isEdgeError,
36
- useEdgeLink: () => useEdgeLink
36
+ useEdgeLink: () => useEdgeLink,
37
+ useEdgeTransferVerify: () => useEdgeTransferVerify
37
38
  });
38
39
  module.exports = __toCommonJS(index_exports);
39
40
 
@@ -612,56 +613,6 @@ var EdgeLink = class {
612
613
 
613
614
  // src/hooks.ts
614
615
  var import_react = require("react");
615
- function useEdgeLink(config) {
616
- const linkRef = (0, import_react.useRef)(null);
617
- const [ready, setReady] = (0, import_react.useState)(false);
618
- const [error, setError] = (0, import_react.useState)(null);
619
- const [isOpen, setIsOpen] = (0, import_react.useState)(false);
620
- const configRef = (0, import_react.useRef)(config);
621
- configRef.current = config;
622
- (0, import_react.useEffect)(() => {
623
- try {
624
- linkRef.current = new EdgeLink({
625
- ...configRef.current,
626
- onSuccess: (result) => {
627
- setIsOpen(false);
628
- configRef.current.onSuccess?.(result);
629
- },
630
- onExit: (metadata) => {
631
- setIsOpen(false);
632
- configRef.current.onExit?.(metadata);
633
- },
634
- onEvent: (event) => {
635
- if (event.eventName === "OPEN") setIsOpen(true);
636
- if (event.eventName === "CLOSE") setIsOpen(false);
637
- configRef.current.onEvent?.(event);
638
- }
639
- });
640
- setReady(true);
641
- setError(null);
642
- } catch (err) {
643
- setError(err instanceof Error ? err : new Error("Failed to initialize EdgeLink"));
644
- setReady(false);
645
- }
646
- return () => {
647
- linkRef.current?.destroy();
648
- linkRef.current = null;
649
- setReady(false);
650
- };
651
- }, [config.clientId, config.environment]);
652
- const open = (0, import_react.useCallback)((options) => {
653
- if (!linkRef.current) {
654
- setError(new Error("EdgeLink not initialized"));
655
- return;
656
- }
657
- try {
658
- linkRef.current.open(options);
659
- } catch (err) {
660
- setError(err instanceof Error ? err : new Error("Failed to open EdgeLink"));
661
- }
662
- }, []);
663
- return { open, ready, error, isOpen };
664
- }
665
616
 
666
617
  // src/edge-transfer-verify.ts
667
618
  var import_connect2 = require("@edge-markets/connect");
@@ -1218,6 +1169,153 @@ var EdgeTransferVerify = class {
1218
1169
  }
1219
1170
  };
1220
1171
 
1172
+ // src/hooks.ts
1173
+ function useEdgeLink(config) {
1174
+ const linkRef = (0, import_react.useRef)(null);
1175
+ const [ready, setReady] = (0, import_react.useState)(false);
1176
+ const [error, setError] = (0, import_react.useState)(null);
1177
+ const [isOpen, setIsOpen] = (0, import_react.useState)(false);
1178
+ const configRef = (0, import_react.useRef)(config);
1179
+ configRef.current = config;
1180
+ (0, import_react.useEffect)(() => {
1181
+ try {
1182
+ linkRef.current = new EdgeLink({
1183
+ ...configRef.current,
1184
+ onSuccess: (result) => {
1185
+ setIsOpen(false);
1186
+ configRef.current.onSuccess?.(result);
1187
+ },
1188
+ onExit: (metadata) => {
1189
+ setIsOpen(false);
1190
+ configRef.current.onExit?.(metadata);
1191
+ },
1192
+ onEvent: (event) => {
1193
+ if (event.eventName === "OPEN") setIsOpen(true);
1194
+ if (event.eventName === "CLOSE") setIsOpen(false);
1195
+ configRef.current.onEvent?.(event);
1196
+ }
1197
+ });
1198
+ setReady(true);
1199
+ setError(null);
1200
+ } catch (err) {
1201
+ setError(err instanceof Error ? err : new Error("Failed to initialize EdgeLink"));
1202
+ setReady(false);
1203
+ }
1204
+ return () => {
1205
+ linkRef.current?.destroy();
1206
+ linkRef.current = null;
1207
+ setReady(false);
1208
+ };
1209
+ }, [config.clientId, config.environment]);
1210
+ const open = (0, import_react.useCallback)((options) => {
1211
+ if (!linkRef.current) {
1212
+ setError(new Error("EdgeLink not initialized"));
1213
+ return;
1214
+ }
1215
+ try {
1216
+ linkRef.current.open(options);
1217
+ } catch (err) {
1218
+ setError(err instanceof Error ? err : new Error("Failed to open EdgeLink"));
1219
+ }
1220
+ }, []);
1221
+ return { open, ready, error, isOpen };
1222
+ }
1223
+ function useEdgeTransferVerify(config) {
1224
+ const verifyRef = (0, import_react.useRef)(null);
1225
+ const [ready, setReady] = (0, import_react.useState)(false);
1226
+ const [isOpen, setIsOpen] = (0, import_react.useState)(false);
1227
+ const [isLoaded, setIsLoaded] = (0, import_react.useState)(false);
1228
+ const [lastEvent, setLastEvent] = (0, import_react.useState)(null);
1229
+ const [error, setError] = (0, import_react.useState)(null);
1230
+ const configRef = (0, import_react.useRef)(config);
1231
+ configRef.current = config;
1232
+ (0, import_react.useEffect)(() => {
1233
+ if ((configRef.current.mode || "iframe") === "iframe" && !configRef.current.container) {
1234
+ verifyRef.current = null;
1235
+ setReady(false);
1236
+ setError(null);
1237
+ setIsLoaded(false);
1238
+ setLastEvent(null);
1239
+ return;
1240
+ }
1241
+ try {
1242
+ verifyRef.current = new EdgeTransferVerify({
1243
+ ...configRef.current,
1244
+ onSuccess: (event) => {
1245
+ setIsOpen(false);
1246
+ setLastEvent(event);
1247
+ void configRef.current.onSuccess?.(event);
1248
+ },
1249
+ onError: (event) => {
1250
+ setIsOpen(false);
1251
+ setLastEvent(event);
1252
+ setError(new Error(event.error || "EDGE transfer verification failed"));
1253
+ void configRef.current.onError?.(event);
1254
+ },
1255
+ onCancel: (event) => {
1256
+ setIsOpen(false);
1257
+ setLastEvent(event);
1258
+ void configRef.current.onCancel?.(event);
1259
+ },
1260
+ onExpired: (event) => {
1261
+ setIsOpen(false);
1262
+ setLastEvent(event);
1263
+ void configRef.current.onExpired?.(event);
1264
+ },
1265
+ onLoaded: (event) => {
1266
+ setIsLoaded(true);
1267
+ setLastEvent(event);
1268
+ void configRef.current.onLoaded?.(event);
1269
+ },
1270
+ onEvent: (event) => {
1271
+ setLastEvent(event);
1272
+ void configRef.current.onEvent?.(event);
1273
+ }
1274
+ });
1275
+ setReady(true);
1276
+ setError(null);
1277
+ setIsLoaded(false);
1278
+ setLastEvent(null);
1279
+ } catch (err) {
1280
+ setError(err instanceof Error ? err : new Error("Failed to initialize EdgeTransferVerify"));
1281
+ setReady(false);
1282
+ }
1283
+ return () => {
1284
+ verifyRef.current?.destroy();
1285
+ verifyRef.current = null;
1286
+ setReady(false);
1287
+ setIsOpen(false);
1288
+ setIsLoaded(false);
1289
+ };
1290
+ }, [config.verificationUrl, config.sessionId, config.nonce, config.mode, config.container]);
1291
+ const open = (0, import_react.useCallback)(() => {
1292
+ if (!verifyRef.current) {
1293
+ setError(new Error("EdgeTransferVerify not initialized"));
1294
+ return;
1295
+ }
1296
+ try {
1297
+ verifyRef.current.open();
1298
+ setIsOpen(true);
1299
+ setError(null);
1300
+ } catch (err) {
1301
+ setError(err instanceof Error ? err : new Error("Failed to open EdgeTransferVerify"));
1302
+ setIsOpen(false);
1303
+ }
1304
+ }, []);
1305
+ const close = (0, import_react.useCallback)(() => {
1306
+ verifyRef.current?.close();
1307
+ setIsOpen(false);
1308
+ }, []);
1309
+ const destroy = (0, import_react.useCallback)(() => {
1310
+ verifyRef.current?.destroy();
1311
+ verifyRef.current = null;
1312
+ setReady(false);
1313
+ setIsOpen(false);
1314
+ setIsLoaded(false);
1315
+ }, []);
1316
+ return { open, close, destroy, ready, isOpen, isLoaded, lastEvent, error };
1317
+ }
1318
+
1221
1319
  // src/geolocation.ts
1222
1320
  async function collectGeolocation(options) {
1223
1321
  if (typeof navigator === "undefined" || !navigator.geolocation) {
@@ -1260,5 +1358,6 @@ var import_connect4 = require("@edge-markets/connect");
1260
1358
  generatePKCE,
1261
1359
  generateState,
1262
1360
  isEdgeError,
1263
- useEdgeLink
1361
+ useEdgeLink,
1362
+ useEdgeTransferVerify
1264
1363
  });
package/dist/index.mjs CHANGED
@@ -577,57 +577,7 @@ var EdgeLink = class {
577
577
  };
578
578
 
579
579
  // src/hooks.ts
580
- import { useEffect, useRef, useCallback, useState } from "react";
581
- function useEdgeLink(config) {
582
- const linkRef = useRef(null);
583
- const [ready, setReady] = useState(false);
584
- const [error, setError] = useState(null);
585
- const [isOpen, setIsOpen] = useState(false);
586
- const configRef = useRef(config);
587
- configRef.current = config;
588
- useEffect(() => {
589
- try {
590
- linkRef.current = new EdgeLink({
591
- ...configRef.current,
592
- onSuccess: (result) => {
593
- setIsOpen(false);
594
- configRef.current.onSuccess?.(result);
595
- },
596
- onExit: (metadata) => {
597
- setIsOpen(false);
598
- configRef.current.onExit?.(metadata);
599
- },
600
- onEvent: (event) => {
601
- if (event.eventName === "OPEN") setIsOpen(true);
602
- if (event.eventName === "CLOSE") setIsOpen(false);
603
- configRef.current.onEvent?.(event);
604
- }
605
- });
606
- setReady(true);
607
- setError(null);
608
- } catch (err) {
609
- setError(err instanceof Error ? err : new Error("Failed to initialize EdgeLink"));
610
- setReady(false);
611
- }
612
- return () => {
613
- linkRef.current?.destroy();
614
- linkRef.current = null;
615
- setReady(false);
616
- };
617
- }, [config.clientId, config.environment]);
618
- const open = useCallback((options) => {
619
- if (!linkRef.current) {
620
- setError(new Error("EdgeLink not initialized"));
621
- return;
622
- }
623
- try {
624
- linkRef.current.open(options);
625
- } catch (err) {
626
- setError(err instanceof Error ? err : new Error("Failed to open EdgeLink"));
627
- }
628
- }, []);
629
- return { open, ready, error, isOpen };
630
- }
580
+ import { useCallback, useEffect, useRef, useState } from "react";
631
581
 
632
582
  // src/edge-transfer-verify.ts
633
583
  import { EdgePopupBlockedError as EdgePopupBlockedError2 } from "@edge-markets/connect";
@@ -1184,6 +1134,153 @@ var EdgeTransferVerify = class {
1184
1134
  }
1185
1135
  };
1186
1136
 
1137
+ // src/hooks.ts
1138
+ function useEdgeLink(config) {
1139
+ const linkRef = useRef(null);
1140
+ const [ready, setReady] = useState(false);
1141
+ const [error, setError] = useState(null);
1142
+ const [isOpen, setIsOpen] = useState(false);
1143
+ const configRef = useRef(config);
1144
+ configRef.current = config;
1145
+ useEffect(() => {
1146
+ try {
1147
+ linkRef.current = new EdgeLink({
1148
+ ...configRef.current,
1149
+ onSuccess: (result) => {
1150
+ setIsOpen(false);
1151
+ configRef.current.onSuccess?.(result);
1152
+ },
1153
+ onExit: (metadata) => {
1154
+ setIsOpen(false);
1155
+ configRef.current.onExit?.(metadata);
1156
+ },
1157
+ onEvent: (event) => {
1158
+ if (event.eventName === "OPEN") setIsOpen(true);
1159
+ if (event.eventName === "CLOSE") setIsOpen(false);
1160
+ configRef.current.onEvent?.(event);
1161
+ }
1162
+ });
1163
+ setReady(true);
1164
+ setError(null);
1165
+ } catch (err) {
1166
+ setError(err instanceof Error ? err : new Error("Failed to initialize EdgeLink"));
1167
+ setReady(false);
1168
+ }
1169
+ return () => {
1170
+ linkRef.current?.destroy();
1171
+ linkRef.current = null;
1172
+ setReady(false);
1173
+ };
1174
+ }, [config.clientId, config.environment]);
1175
+ const open = useCallback((options) => {
1176
+ if (!linkRef.current) {
1177
+ setError(new Error("EdgeLink not initialized"));
1178
+ return;
1179
+ }
1180
+ try {
1181
+ linkRef.current.open(options);
1182
+ } catch (err) {
1183
+ setError(err instanceof Error ? err : new Error("Failed to open EdgeLink"));
1184
+ }
1185
+ }, []);
1186
+ return { open, ready, error, isOpen };
1187
+ }
1188
+ function useEdgeTransferVerify(config) {
1189
+ const verifyRef = useRef(null);
1190
+ const [ready, setReady] = useState(false);
1191
+ const [isOpen, setIsOpen] = useState(false);
1192
+ const [isLoaded, setIsLoaded] = useState(false);
1193
+ const [lastEvent, setLastEvent] = useState(null);
1194
+ const [error, setError] = useState(null);
1195
+ const configRef = useRef(config);
1196
+ configRef.current = config;
1197
+ useEffect(() => {
1198
+ if ((configRef.current.mode || "iframe") === "iframe" && !configRef.current.container) {
1199
+ verifyRef.current = null;
1200
+ setReady(false);
1201
+ setError(null);
1202
+ setIsLoaded(false);
1203
+ setLastEvent(null);
1204
+ return;
1205
+ }
1206
+ try {
1207
+ verifyRef.current = new EdgeTransferVerify({
1208
+ ...configRef.current,
1209
+ onSuccess: (event) => {
1210
+ setIsOpen(false);
1211
+ setLastEvent(event);
1212
+ void configRef.current.onSuccess?.(event);
1213
+ },
1214
+ onError: (event) => {
1215
+ setIsOpen(false);
1216
+ setLastEvent(event);
1217
+ setError(new Error(event.error || "EDGE transfer verification failed"));
1218
+ void configRef.current.onError?.(event);
1219
+ },
1220
+ onCancel: (event) => {
1221
+ setIsOpen(false);
1222
+ setLastEvent(event);
1223
+ void configRef.current.onCancel?.(event);
1224
+ },
1225
+ onExpired: (event) => {
1226
+ setIsOpen(false);
1227
+ setLastEvent(event);
1228
+ void configRef.current.onExpired?.(event);
1229
+ },
1230
+ onLoaded: (event) => {
1231
+ setIsLoaded(true);
1232
+ setLastEvent(event);
1233
+ void configRef.current.onLoaded?.(event);
1234
+ },
1235
+ onEvent: (event) => {
1236
+ setLastEvent(event);
1237
+ void configRef.current.onEvent?.(event);
1238
+ }
1239
+ });
1240
+ setReady(true);
1241
+ setError(null);
1242
+ setIsLoaded(false);
1243
+ setLastEvent(null);
1244
+ } catch (err) {
1245
+ setError(err instanceof Error ? err : new Error("Failed to initialize EdgeTransferVerify"));
1246
+ setReady(false);
1247
+ }
1248
+ return () => {
1249
+ verifyRef.current?.destroy();
1250
+ verifyRef.current = null;
1251
+ setReady(false);
1252
+ setIsOpen(false);
1253
+ setIsLoaded(false);
1254
+ };
1255
+ }, [config.verificationUrl, config.sessionId, config.nonce, config.mode, config.container]);
1256
+ const open = useCallback(() => {
1257
+ if (!verifyRef.current) {
1258
+ setError(new Error("EdgeTransferVerify not initialized"));
1259
+ return;
1260
+ }
1261
+ try {
1262
+ verifyRef.current.open();
1263
+ setIsOpen(true);
1264
+ setError(null);
1265
+ } catch (err) {
1266
+ setError(err instanceof Error ? err : new Error("Failed to open EdgeTransferVerify"));
1267
+ setIsOpen(false);
1268
+ }
1269
+ }, []);
1270
+ const close = useCallback(() => {
1271
+ verifyRef.current?.close();
1272
+ setIsOpen(false);
1273
+ }, []);
1274
+ const destroy = useCallback(() => {
1275
+ verifyRef.current?.destroy();
1276
+ verifyRef.current = null;
1277
+ setReady(false);
1278
+ setIsOpen(false);
1279
+ setIsLoaded(false);
1280
+ }, []);
1281
+ return { open, close, destroy, ready, isOpen, isLoaded, lastEvent, error };
1282
+ }
1283
+
1187
1284
  // src/geolocation.ts
1188
1285
  async function collectGeolocation(options) {
1189
1286
  if (typeof navigator === "undefined" || !navigator.geolocation) {
@@ -1225,5 +1322,6 @@ export {
1225
1322
  generatePKCE,
1226
1323
  generateState,
1227
1324
  isEdgeError,
1228
- useEdgeLink
1325
+ useEdgeLink,
1326
+ useEdgeTransferVerify
1229
1327
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edge-markets/connect-link",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Browser SDK for EDGE Connect popup authentication",
5
5
  "author": "EdgeBoost",
6
6
  "license": "MIT",
@@ -21,7 +21,7 @@
21
21
  }
22
22
  },
23
23
  "dependencies": {
24
- "@edge-markets/connect": "^1.6.1"
24
+ "@edge-markets/connect": "^1.7.0"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "react": ">=17.0.0"