@oobit/react-native-sdk 2.0.2 → 3.0.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/WidgetSDK.d.ts +0 -2
- package/dist/WidgetSDK.d.ts.map +1 -1
- package/dist/WidgetSDK.js +25 -127
- package/dist/WidgetSDK.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +41 -148
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -33
- package/dist/types.js.map +1 -1
- package/dist/walletUtils.d.ts.map +1 -1
- package/dist/walletUtils.js +16 -64
- package/dist/walletUtils.js.map +1 -1
- package/package.json +1 -10
- package/src/WidgetSDK.tsx +26 -153
- package/src/index.ts +7 -9
- package/src/types.ts +42 -207
- package/src/walletUtils.ts +27 -42
package/dist/WidgetSDK.d.ts
CHANGED
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
import React from "react";
|
|
6
6
|
import { WidgetSDKConfig } from "./types";
|
|
7
7
|
export interface WidgetSDKRef {
|
|
8
|
-
/** Navigate back within the widget */
|
|
9
8
|
navigateBack: () => void;
|
|
10
|
-
/** Reload the widget */
|
|
11
9
|
reload: () => void;
|
|
12
10
|
}
|
|
13
11
|
export declare const WidgetSDK: React.ForwardRefExoticComponent<WidgetSDKConfig & React.RefAttributes<WidgetSDKRef>>;
|
package/dist/WidgetSDK.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSDK.d.ts","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AAWf,OAAO,
|
|
1
|
+
{"version":3,"file":"WidgetSDK.d.ts","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AAWf,OAAO,EAAiB,eAAe,EAAE,MAAM,SAAS,CAAC;AAGzD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,sFA6HrB,CAAC"}
|
package/dist/WidgetSDK.js
CHANGED
|
@@ -43,153 +43,68 @@ const react_native_1 = require("react-native");
|
|
|
43
43
|
const react_native_webview_1 = require("react-native-webview");
|
|
44
44
|
const config_1 = require("./config");
|
|
45
45
|
const walletUtils_1 = require("./walletUtils");
|
|
46
|
-
|
|
47
|
-
exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, onError, onClose, onTransactionRequested, }, ref) => {
|
|
46
|
+
exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, onClose, onTransactionRequested }, ref) => {
|
|
48
47
|
const webViewRef = (0, react_1.useRef)(null);
|
|
49
48
|
const [walletAvailable, setWalletAvailable] = (0, react_1.useState)(false);
|
|
50
49
|
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
51
50
|
const hasLoadedOnce = (0, react_1.useRef)(false);
|
|
52
|
-
// Check wallet availability on mount
|
|
53
51
|
(0, react_1.useEffect)(() => {
|
|
54
|
-
|
|
52
|
+
(0, walletUtils_1.isWalletAvailable)().then(setWalletAvailable);
|
|
55
53
|
}, []);
|
|
56
|
-
// Handle Android hardware back button
|
|
57
54
|
(0, react_1.useEffect)(() => {
|
|
58
55
|
const backHandler = react_native_1.BackHandler.addEventListener("hardwareBackPress", () => {
|
|
59
|
-
|
|
60
|
-
sendMessageToWidget({
|
|
61
|
-
type: "native:back-pressed",
|
|
62
|
-
timestamp: Date.now(),
|
|
63
|
-
});
|
|
64
|
-
// Return true to prevent default back behavior
|
|
56
|
+
sendMessageToWidget({ type: "native:back-pressed" });
|
|
65
57
|
return true;
|
|
66
58
|
});
|
|
67
59
|
return () => backHandler.remove();
|
|
68
60
|
}, []);
|
|
69
|
-
// Expose methods via ref
|
|
70
61
|
(0, react_1.useImperativeHandle)(ref, () => ({
|
|
71
|
-
navigateBack: () => {
|
|
72
|
-
sendMessageToWidget({
|
|
73
|
-
type: "native:navigate-back",
|
|
74
|
-
timestamp: Date.now(),
|
|
75
|
-
});
|
|
76
|
-
},
|
|
62
|
+
navigateBack: () => sendMessageToWidget({ type: "native:navigate-back" }),
|
|
77
63
|
reload: () => {
|
|
78
64
|
setIsLoading(true);
|
|
79
65
|
hasLoadedOnce.current = false;
|
|
80
66
|
webViewRef.current?.reload();
|
|
81
67
|
},
|
|
82
68
|
}));
|
|
83
|
-
const checkWalletAvailability = async () => {
|
|
84
|
-
const available = await (0, walletUtils_1.isWalletAvailable)();
|
|
85
|
-
setWalletAvailable(available);
|
|
86
|
-
};
|
|
87
|
-
/**
|
|
88
|
-
* Handle messages from the web widget
|
|
89
|
-
*/
|
|
90
69
|
const handleMessage = (event) => {
|
|
91
70
|
try {
|
|
92
71
|
const message = JSON.parse(event.nativeEvent.data);
|
|
93
72
|
switch (message.type) {
|
|
94
73
|
case "widget:ready":
|
|
95
|
-
|
|
74
|
+
sendMessageToWidget({
|
|
75
|
+
type: "native:platform-info",
|
|
76
|
+
payload: { platform: react_native_1.Platform.OS, walletAvailable },
|
|
77
|
+
});
|
|
96
78
|
break;
|
|
97
79
|
case "widget:open-wallet":
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
80
|
+
(0, walletUtils_1.openNativeWallet)().then((success) => {
|
|
81
|
+
sendMessageToWidget({
|
|
82
|
+
type: "native:wallet-opened",
|
|
83
|
+
payload: { success },
|
|
84
|
+
});
|
|
85
|
+
});
|
|
102
86
|
break;
|
|
103
87
|
case "widget:close":
|
|
104
88
|
onClose?.();
|
|
105
89
|
break;
|
|
106
90
|
case "widget:transaction-requested":
|
|
107
|
-
|
|
108
|
-
break;
|
|
109
|
-
case "widget:token-expired":
|
|
110
|
-
onError?.("TOKEN_EXPIRED", "Access token has expired");
|
|
111
|
-
break;
|
|
112
|
-
case "widget:copy-to-clipboard":
|
|
113
|
-
handleCopyToClipboard(message);
|
|
91
|
+
onTransactionRequested(message.payload);
|
|
114
92
|
break;
|
|
115
93
|
}
|
|
116
94
|
}
|
|
117
95
|
catch {
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
const handleReady = () => {
|
|
122
|
-
// Send platform info to widget
|
|
123
|
-
sendMessageToWidget({
|
|
124
|
-
type: "native:platform-info",
|
|
125
|
-
payload: {
|
|
126
|
-
platform: react_native_1.Platform.OS,
|
|
127
|
-
walletAvailable,
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
};
|
|
131
|
-
const handleOpenWallet = async () => {
|
|
132
|
-
const success = await (0, walletUtils_1.openNativeWallet)();
|
|
133
|
-
// Notify widget of result
|
|
134
|
-
sendMessageToWidget({
|
|
135
|
-
type: "native:wallet-opened",
|
|
136
|
-
payload: { success },
|
|
137
|
-
});
|
|
138
|
-
};
|
|
139
|
-
const handleError = (message) => {
|
|
140
|
-
if (message.type !== "widget:error")
|
|
141
|
-
return;
|
|
142
|
-
const { code, message: errorMessage } = message.payload;
|
|
143
|
-
onError?.(code, errorMessage);
|
|
144
|
-
};
|
|
145
|
-
const handleTransactionRequested = (message) => {
|
|
146
|
-
if (message.type !== "widget:transaction-requested")
|
|
147
|
-
return;
|
|
148
|
-
const { token, cryptoAmount, depositAddress, depositAddressTag } = message.payload;
|
|
149
|
-
onTransactionRequested(token, cryptoAmount, depositAddress, depositAddressTag);
|
|
150
|
-
};
|
|
151
|
-
/**
|
|
152
|
-
* Handle clipboard copy request from widget
|
|
153
|
-
*/
|
|
154
|
-
const handleCopyToClipboard = async (message) => {
|
|
155
|
-
const { text, label } = message.payload;
|
|
156
|
-
try {
|
|
157
|
-
await Clipboard.setStringAsync(text);
|
|
158
|
-
sendMessageToWidget({
|
|
159
|
-
type: "native:clipboard-result",
|
|
160
|
-
payload: { success: true, label },
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
sendMessageToWidget({
|
|
165
|
-
type: "native:clipboard-result",
|
|
166
|
-
payload: {
|
|
167
|
-
success: false,
|
|
168
|
-
label,
|
|
169
|
-
error: "Clipboard operation failed",
|
|
170
|
-
},
|
|
171
|
-
});
|
|
96
|
+
// Ignore parse errors
|
|
172
97
|
}
|
|
173
98
|
};
|
|
174
|
-
/**
|
|
175
|
-
* Send message to the web widget
|
|
176
|
-
*/
|
|
177
99
|
const sendMessageToWidget = (message) => {
|
|
178
|
-
|
|
179
|
-
window.postMessage(${JSON.stringify(message)}, '*');
|
|
180
|
-
true;
|
|
181
|
-
`;
|
|
182
|
-
webViewRef.current?.injectJavaScript(js);
|
|
100
|
+
webViewRef.current?.injectJavaScript(`window.postMessage(${JSON.stringify(message)}, '*'); true;`);
|
|
183
101
|
};
|
|
184
|
-
/**
|
|
185
|
-
* Build the widget URL with query parameters
|
|
186
|
-
*/
|
|
187
102
|
const finalWidgetUrl = (0, react_1.useMemo)(() => {
|
|
188
103
|
const baseUrl = (0, config_1.getWidgetUrl)(accessToken);
|
|
189
104
|
const params = new URLSearchParams({
|
|
190
105
|
token: (0, config_1.stripTokenPrefix)(accessToken),
|
|
191
106
|
platform: react_native_1.Platform.OS,
|
|
192
|
-
userWalletAddress
|
|
107
|
+
userWalletAddress,
|
|
193
108
|
});
|
|
194
109
|
return `${baseUrl}?${params.toString()}`;
|
|
195
110
|
}, [accessToken, userWalletAddress]);
|
|
@@ -199,42 +114,25 @@ exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, o
|
|
|
199
114
|
hasLoadedOnce.current = true;
|
|
200
115
|
setIsLoading(false);
|
|
201
116
|
}
|
|
202
|
-
}}
|
|
203
|
-
setIsLoading(false);
|
|
204
|
-
onError?.("WEBVIEW_ERROR", "Failed to load widget");
|
|
205
|
-
}}
|
|
206
|
-
// Allow external URLs to open in native apps
|
|
207
|
-
onShouldStartLoadWithRequest={(request) => {
|
|
117
|
+
}} onShouldStartLoadWithRequest={(request) => {
|
|
208
118
|
const { url } = request;
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
url.includes("pay.google.com") || // Google Wallet
|
|
119
|
+
if (url.startsWith("shoebox://") ||
|
|
120
|
+
url.includes("pay.google.com") ||
|
|
212
121
|
url.includes("wallet.google.com") ||
|
|
213
122
|
url.includes("wallet.apple.com")) {
|
|
214
123
|
react_native_1.Linking.openURL(url).catch(() => { });
|
|
215
|
-
return false;
|
|
124
|
+
return false;
|
|
216
125
|
}
|
|
217
|
-
// Allow normal widget navigation
|
|
218
126
|
return true;
|
|
219
|
-
}}
|
|
220
|
-
// Security settings
|
|
221
|
-
javaScriptEnabled={true} domStorageEnabled={true} allowsInlineMediaPlayback={true}
|
|
222
|
-
// iOS specific
|
|
223
|
-
bounces={false} allowsBackForwardNavigationGestures={true}
|
|
224
|
-
// Android specific
|
|
225
|
-
mixedContentMode="always"/>
|
|
127
|
+
}} javaScriptEnabled={true} domStorageEnabled={true} allowsInlineMediaPlayback={true} bounces={false} allowsBackForwardNavigationGestures={true} mixedContentMode="always"/>
|
|
226
128
|
{isLoading && (<react_native_1.View style={styles.loadingOverlay}>
|
|
227
129
|
<react_native_1.ActivityIndicator size="large" color="#007AFF"/>
|
|
228
130
|
</react_native_1.View>)}
|
|
229
131
|
</react_native_1.View>);
|
|
230
132
|
});
|
|
231
133
|
const styles = react_native_1.StyleSheet.create({
|
|
232
|
-
container: {
|
|
233
|
-
|
|
234
|
-
},
|
|
235
|
-
webview: {
|
|
236
|
-
flex: 1,
|
|
237
|
-
},
|
|
134
|
+
container: { flex: 1 },
|
|
135
|
+
webview: { flex: 1 },
|
|
238
136
|
loadingOverlay: {
|
|
239
137
|
...react_native_1.StyleSheet.absoluteFillObject,
|
|
240
138
|
backgroundColor: "rgba(255, 255, 255, 0.9)",
|
package/dist/WidgetSDK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetSDK.js","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAOe;AACf,+CAOsB;AACtB,+DAAoE;AACpE,qCAA0D;AAE1D,+CAAoE;
|
|
1
|
+
{"version":3,"file":"WidgetSDK.js","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAOe;AACf,+CAOsB;AACtB,+DAAoE;AACpE,qCAA0D;AAE1D,+CAAoE;AAOvD,QAAA,SAAS,GAAG,IAAA,kBAAU,EACjC,CACE,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,sBAAsB,EAAE,EACnE,GAAG,EACH,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,cAAM,EAAU,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAEpC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAA,+BAAiB,GAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,0BAAW,CAAC,gBAAgB,CAC9C,mBAAmB,EACnB,GAAG,EAAE;YACH,mBAAmB,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,2BAAmB,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;QACzE,MAAM,EAAE,GAAG,EAAE;YACX,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,MAAM,aAAa,GAAG,CAAC,KAA0B,EAAE,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAElE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,cAAc;oBACjB,mBAAmB,CAAC;wBAClB,IAAI,EAAE,sBAAsB;wBAC5B,OAAO,EAAE,EAAE,QAAQ,EAAE,uBAAQ,CAAC,EAAE,EAAE,eAAe,EAAE;qBACpD,CAAC,CAAC;oBACH,MAAM;gBAER,KAAK,oBAAoB;oBACvB,IAAA,8BAAgB,GAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;wBAClC,mBAAmB,CAAC;4BAClB,IAAI,EAAE,sBAAsB;4BAC5B,OAAO,EAAE,EAAE,OAAO,EAAE;yBACrB,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBACH,MAAM;gBAER,KAAK,cAAc;oBACjB,OAAO,EAAE,EAAE,CAAC;oBACZ,MAAM;gBAER,KAAK,8BAA8B;oBACjC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;YACV,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;QAC/C,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAClC,sBAAsB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAC7D,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAClC,MAAM,OAAO,GAAG,IAAA,qBAAY,EAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,KAAK,EAAE,IAAA,yBAAgB,EAAC,WAAW,CAAC;YACpC,QAAQ,EAAE,uBAAQ,CAAC,EAAE;YACrB,iBAAiB;SAClB,CAAC,CAAC;QACH,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC3C,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAErC,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;QAAA,CAAC,8BAAO,CACN,GAAG,CAAC,CAAC,UAAU,CAAC,CAChB,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CACtB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAChC,SAAS,CAAC,CAAC,aAAa,CAAC,CACzB,SAAS,CAAC,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CACF,4BAA4B,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;YACxC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;YACxB,IACE,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC5B,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAC9B,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACjC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAChC,CAAC;gBACD,sBAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CACF,iBAAiB,CAAC,CAAC,IAAI,CAAC,CACxB,iBAAiB,CAAC,CAAC,IAAI,CAAC,CACxB,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAChC,OAAO,CAAC,CAAC,KAAK,CAAC,CACf,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAC1C,gBAAgB,CAAC,QAAQ,EAE3B;QAAA,CAAC,SAAS,IAAI,CACZ,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CACjC;YAAA,CAAC,gCAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EACjD;UAAA,EAAE,mBAAI,CAAC,CACR,CACH;MAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;IACtB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;IACpB,cAAc,EAAE;QACd,GAAG,yBAAU,CAAC,kBAAkB;QAChC,eAAe,EAAE,0BAA0B;QAC3C,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Widget SDK - Public API
|
|
3
|
-
*/
|
|
1
|
+
export type { EvmTransactionData, EvmTransactionRequest, SolanaTransactionRequest, TransactionRequest, TransactionTokenMetadata, WidgetSDKConfig, } from "./types";
|
|
4
2
|
export { WidgetSDK } from "./WidgetSDK";
|
|
5
3
|
export type { WidgetSDKRef } from "./WidgetSDK";
|
|
6
|
-
export type { DepositToken, SDKErrorCode, WidgetSDKConfig, } from "./types";
|
|
7
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAQA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,147 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Messages that can be sent between the web widget and React Native
|
|
2
|
+
* Token metadata included with transaction requests
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
* Token information for transaction confirmation
|
|
7
|
-
* Minimal fields needed to display a send transaction confirmation page
|
|
8
|
-
*/
|
|
9
|
-
export interface DepositToken {
|
|
4
|
+
export interface TransactionTokenMetadata {
|
|
10
5
|
symbol: string;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
chainId: number;
|
|
6
|
+
amount: string;
|
|
7
|
+
decimals: number;
|
|
14
8
|
}
|
|
15
|
-
export type WidgetMessageType = "widget:ready" | "widget:open-wallet" | "widget:error" | "widget:close" | "widget:transaction-requested" | "widget:token-expired" | "widget:request-card-details-session" | "widget:copy-to-clipboard";
|
|
16
9
|
/**
|
|
17
|
-
*
|
|
18
|
-
* Messages sent from the native app to the web widget
|
|
10
|
+
* EVM transaction data
|
|
19
11
|
*/
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
export interface NativeNavigateBackMessage {
|
|
26
|
-
type: "native:navigate-back";
|
|
27
|
-
timestamp: number;
|
|
28
|
-
}
|
|
29
|
-
export interface NativePlatformInfoMessage {
|
|
30
|
-
type: "native:platform-info";
|
|
31
|
-
payload: {
|
|
32
|
-
platform: "ios" | "android";
|
|
33
|
-
walletAvailable: boolean;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export interface NativeWalletOpenedMessage {
|
|
37
|
-
type: "native:wallet-opened";
|
|
38
|
-
payload: {
|
|
39
|
-
success: boolean;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export interface NativeCardDetailsSessionMessage {
|
|
43
|
-
type: "native:card-details-session";
|
|
44
|
-
payload: {
|
|
45
|
-
sessionId: string;
|
|
46
|
-
secretKey: string;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export interface NativeBiometricFailedMessage {
|
|
50
|
-
type: "native:biometric-failed";
|
|
51
|
-
payload: {
|
|
52
|
-
reason: "cancelled" | "failed" | "not_available" | "not_enrolled";
|
|
53
|
-
message?: string;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
export interface NativeClipboardResultMessage {
|
|
57
|
-
type: "native:clipboard-result";
|
|
58
|
-
payload: {
|
|
59
|
-
success: boolean;
|
|
60
|
-
label?: string;
|
|
61
|
-
error?: string;
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
export type NativeMessage = NativeBackPressedMessage | NativeNavigateBackMessage | NativePlatformInfoMessage | NativeWalletOpenedMessage | NativeCardDetailsSessionMessage | NativeBiometricFailedMessage | NativeClipboardResultMessage;
|
|
65
|
-
export interface BaseWidgetMessage {
|
|
66
|
-
type: WidgetMessageType;
|
|
67
|
-
timestamp: number;
|
|
68
|
-
}
|
|
69
|
-
export interface WidgetReadyMessage extends BaseWidgetMessage {
|
|
70
|
-
type: "widget:ready";
|
|
71
|
-
}
|
|
72
|
-
export interface OpenWalletMessage extends BaseWidgetMessage {
|
|
73
|
-
type: "widget:open-wallet";
|
|
74
|
-
payload: {
|
|
75
|
-
platform: "ios" | "android";
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
export interface WidgetErrorMessage extends BaseWidgetMessage {
|
|
79
|
-
type: "widget:error";
|
|
80
|
-
payload: {
|
|
81
|
-
code: string;
|
|
82
|
-
message: string;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
export interface WidgetCloseMessage extends BaseWidgetMessage {
|
|
86
|
-
type: "widget:close";
|
|
87
|
-
}
|
|
88
|
-
export interface TransactionRequestedMessage extends BaseWidgetMessage {
|
|
89
|
-
type: "widget:transaction-requested";
|
|
90
|
-
payload: {
|
|
91
|
-
token: DepositToken;
|
|
92
|
-
cryptoAmount: string;
|
|
93
|
-
depositAddress: string;
|
|
94
|
-
depositAddressTag: string | null;
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
export interface TokenExpiredMessage extends BaseWidgetMessage {
|
|
98
|
-
type: "widget:token-expired";
|
|
99
|
-
payload?: {
|
|
100
|
-
reason?: string;
|
|
101
|
-
};
|
|
12
|
+
export interface EvmTransactionData {
|
|
13
|
+
to: string;
|
|
14
|
+
data: string;
|
|
15
|
+
value: string;
|
|
102
16
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
17
|
+
/**
|
|
18
|
+
* EVM transaction request payload
|
|
19
|
+
*/
|
|
20
|
+
export interface EvmTransactionRequest {
|
|
21
|
+
type: "evm";
|
|
22
|
+
chainId: number;
|
|
23
|
+
transaction: EvmTransactionData;
|
|
24
|
+
tokenMetadata: TransactionTokenMetadata;
|
|
108
25
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Solana transaction request payload
|
|
28
|
+
*/
|
|
29
|
+
export interface SolanaTransactionRequest {
|
|
30
|
+
type: "solana";
|
|
31
|
+
transaction: string;
|
|
32
|
+
tokenMetadata: TransactionTokenMetadata;
|
|
115
33
|
}
|
|
116
|
-
export type WidgetMessage = WidgetReadyMessage | OpenWalletMessage | WidgetErrorMessage | WidgetCloseMessage | TransactionRequestedMessage | TokenExpiredMessage | RequestCardDetailsSessionMessage | CopyToClipboardMessage;
|
|
117
34
|
/**
|
|
118
|
-
*
|
|
119
|
-
* - TOKEN_EXPIRED: The access token has expired
|
|
120
|
-
* - PARSE_ERROR: Failed to parse a message from the widget
|
|
121
|
-
* - WEBVIEW_ERROR: The WebView failed to load
|
|
35
|
+
* Transaction request payload
|
|
122
36
|
*/
|
|
123
|
-
export type
|
|
37
|
+
export type TransactionRequest = EvmTransactionRequest | SolanaTransactionRequest;
|
|
124
38
|
/**
|
|
125
39
|
* SDK Configuration
|
|
126
40
|
*/
|
|
127
41
|
export interface WidgetSDKConfig {
|
|
128
42
|
accessToken: string;
|
|
129
43
|
userWalletAddress: string;
|
|
130
|
-
/**
|
|
131
|
-
* Called when an error occurs
|
|
132
|
-
*/
|
|
133
|
-
onError?: (code: SDKErrorCode | string, message: string) => void;
|
|
134
|
-
/**
|
|
135
|
-
* Called when the widget requests to close
|
|
136
|
-
*/
|
|
137
44
|
onClose?: () => void;
|
|
138
|
-
|
|
139
|
-
* Called when a crypto transaction is requested
|
|
140
|
-
*/
|
|
141
|
-
onTransactionRequested: (token: DepositToken, cryptoAmount: string, depositAddress: string, depositAddressTag: string | null) => void;
|
|
45
|
+
onTransactionRequested: (transaction: TransactionRequest) => void;
|
|
142
46
|
}
|
|
143
47
|
/**
|
|
144
|
-
*
|
|
48
|
+
* Internal: Messages from widget
|
|
49
|
+
*/
|
|
50
|
+
export type WidgetMessage = {
|
|
51
|
+
type: "widget:ready";
|
|
52
|
+
} | {
|
|
53
|
+
type: "widget:open-wallet";
|
|
54
|
+
} | {
|
|
55
|
+
type: "widget:close";
|
|
56
|
+
} | {
|
|
57
|
+
type: "widget:transaction-requested";
|
|
58
|
+
payload: TransactionRequest;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Internal: Wallet URLs
|
|
145
62
|
*/
|
|
146
63
|
export declare const WALLET_URLS: {
|
|
147
64
|
readonly ios: {
|
|
@@ -153,28 +70,4 @@ export declare const WALLET_URLS: {
|
|
|
153
70
|
readonly fallback: "https://wallet.google.com";
|
|
154
71
|
};
|
|
155
72
|
};
|
|
156
|
-
/**
|
|
157
|
-
* Message type constants that clients can use
|
|
158
|
-
* @example
|
|
159
|
-
* if (message.type === MessageTypes.READY) {
|
|
160
|
-
* // Handle ready
|
|
161
|
-
* }
|
|
162
|
-
*/
|
|
163
|
-
export declare const MessageTypes: {
|
|
164
|
-
readonly READY: "widget:ready";
|
|
165
|
-
readonly OPEN_WALLET: "widget:open-wallet";
|
|
166
|
-
readonly ERROR: "widget:error";
|
|
167
|
-
readonly CLOSE: "widget:close";
|
|
168
|
-
readonly TRANSACTION_REQUESTED: "widget:transaction-requested";
|
|
169
|
-
readonly TOKEN_EXPIRED: "widget:token-expired";
|
|
170
|
-
readonly REQUEST_CARD_DETAILS_SESSION: "widget:request-card-details-session";
|
|
171
|
-
readonly COPY_TO_CLIPBOARD: "widget:copy-to-clipboard";
|
|
172
|
-
readonly PLATFORM_INFO: "native:platform-info";
|
|
173
|
-
readonly WALLET_OPENED: "native:wallet-opened";
|
|
174
|
-
readonly BACK_PRESSED: "native:back-pressed";
|
|
175
|
-
readonly NAVIGATE_BACK: "native:navigate-back";
|
|
176
|
-
readonly CARD_DETAILS_SESSION: "native:card-details-session";
|
|
177
|
-
readonly BIOMETRIC_FAILED: "native:biometric-failed";
|
|
178
|
-
readonly CLIPBOARD_RESULT: "native:clipboard-result";
|
|
179
|
-
};
|
|
180
73
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,kBAAkB,CAAC;IAChC,aAAa,EAAE,wBAAwB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,wBAAwB,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,qBAAqB,GACrB,wBAAwB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sBAAsB,EAAE,CAAC,WAAW,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Widget SDK Types
|
|
4
|
-
* Messages that can be sent between the web widget and React Native
|
|
5
|
-
*/
|
|
6
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
3
|
+
exports.WALLET_URLS = void 0;
|
|
8
4
|
/**
|
|
9
|
-
*
|
|
5
|
+
* Internal: Wallet URLs
|
|
10
6
|
*/
|
|
11
7
|
exports.WALLET_URLS = {
|
|
12
8
|
ios: {
|
|
13
|
-
passkit: "shoebox://",
|
|
9
|
+
passkit: "shoebox://",
|
|
14
10
|
fallback: "https://wallet.apple.com",
|
|
15
11
|
},
|
|
16
12
|
android: {
|
|
@@ -18,30 +14,4 @@ exports.WALLET_URLS = {
|
|
|
18
14
|
fallback: "https://wallet.google.com",
|
|
19
15
|
},
|
|
20
16
|
};
|
|
21
|
-
/**
|
|
22
|
-
* Message type constants that clients can use
|
|
23
|
-
* @example
|
|
24
|
-
* if (message.type === MessageTypes.READY) {
|
|
25
|
-
* // Handle ready
|
|
26
|
-
* }
|
|
27
|
-
*/
|
|
28
|
-
exports.MessageTypes = {
|
|
29
|
-
// Widget → Native
|
|
30
|
-
READY: "widget:ready",
|
|
31
|
-
OPEN_WALLET: "widget:open-wallet",
|
|
32
|
-
ERROR: "widget:error",
|
|
33
|
-
CLOSE: "widget:close",
|
|
34
|
-
TRANSACTION_REQUESTED: "widget:transaction-requested",
|
|
35
|
-
TOKEN_EXPIRED: "widget:token-expired",
|
|
36
|
-
REQUEST_CARD_DETAILS_SESSION: "widget:request-card-details-session",
|
|
37
|
-
COPY_TO_CLIPBOARD: "widget:copy-to-clipboard",
|
|
38
|
-
// Native → Widget
|
|
39
|
-
PLATFORM_INFO: "native:platform-info",
|
|
40
|
-
WALLET_OPENED: "native:wallet-opened",
|
|
41
|
-
BACK_PRESSED: "native:back-pressed",
|
|
42
|
-
NAVIGATE_BACK: "native:navigate-back",
|
|
43
|
-
CARD_DETAILS_SESSION: "native:card-details-session",
|
|
44
|
-
BIOMETRIC_FAILED: "native:biometric-failed",
|
|
45
|
-
CLIPBOARD_RESULT: "native:clipboard-result",
|
|
46
|
-
};
|
|
47
17
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+DA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,0BAA0B;KACrC;IACD,OAAO,EAAE;QACP,SAAS,EAAE,yCAAyC;QACpD,QAAQ,EAAE,2BAA2B;KACtC;CACO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletUtils.d.ts","sourceRoot":"","sources":["../src/walletUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"walletUtils.d.ts","sourceRoot":"","sources":["../src/walletUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,OAAO,CAkBxD,CAAC;AA6GF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,OAAO,CAYzD,CAAC"}
|