@oobit/react-native-sdk 3.0.1 → 3.1.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.
@@ -1,8 +1,3 @@
1
- /**
2
- * Widget SDK Component
3
- * Embeds the web widget in a WebView and handles bidirectional communication
4
- */
5
-
6
1
  import React, {
7
2
  forwardRef,
8
3
  useEffect,
@@ -20,9 +15,9 @@ import {
20
15
  View,
21
16
  } from "react-native";
22
17
  import { WebView, WebViewMessageEvent } from "react-native-webview";
23
- import { getWidgetUrl, stripTokenPrefix } from "./config";
24
- import { WidgetMessage, WidgetSDKConfig } from "./types";
25
- import { isWalletAvailable, openNativeWallet } from "./walletUtils";
18
+ import type { WidgetMessage, WidgetSDKConfig } from "@oobit/core";
19
+ import { getWidgetUrl, stripTokenPrefix } from "@oobit/core";
20
+ import { isWalletAvailable, openNativeWallet } from "../utils/walletUtils";
26
21
 
27
22
  export interface WidgetSDKRef {
28
23
  navigateBack: () => void;
@@ -93,7 +88,7 @@ export const WidgetSDK = forwardRef<WidgetSDKRef, WidgetSDKConfig>(
93
88
  break;
94
89
  }
95
90
  } catch {
96
- // Ignore parse errors
91
+ // Invalid JSON from WebView - ignore
97
92
  }
98
93
  };
99
94
 
@@ -109,6 +104,7 @@ export const WidgetSDK = forwardRef<WidgetSDKRef, WidgetSDKConfig>(
109
104
  token: stripTokenPrefix(accessToken),
110
105
  platform: Platform.OS,
111
106
  userWalletAddress,
107
+ sdk: 'react-native',
112
108
  });
113
109
  return `${baseUrl}?${params.toString()}`;
114
110
  }, [accessToken, userWalletAddress]);
@@ -139,6 +135,11 @@ export const WidgetSDK = forwardRef<WidgetSDKRef, WidgetSDKConfig>(
139
135
  }
140
136
  return true;
141
137
  }}
138
+ onOpenWindow={(syntheticEvent) => {
139
+ const { nativeEvent } = syntheticEvent;
140
+ const { targetUrl } = nativeEvent;
141
+ Linking.openURL(targetUrl).catch(() => {});
142
+ }}
142
143
  javaScriptEnabled={true}
143
144
  domStorageEnabled={true}
144
145
  allowsInlineMediaPlayback={true}
package/src/index.ts CHANGED
@@ -1,10 +1,10 @@
1
+ export { WidgetSDK } from './components/WidgetSDK';
2
+ export type { WidgetSDKRef } from './components/WidgetSDK';
3
+
1
4
  export type {
2
- EvmTransactionData,
5
+ TransactionRequest,
3
6
  EvmTransactionRequest,
4
7
  SolanaTransactionRequest,
5
- TransactionRequest,
6
8
  TransactionTokenMetadata,
7
9
  WidgetSDKConfig,
8
- } from "./types";
9
- export { WidgetSDK } from "./WidgetSDK";
10
- export type { WidgetSDKRef } from "./WidgetSDK";
10
+ } from '@oobit/core';
@@ -0,0 +1,94 @@
1
+ import { Alert, Linking, Platform } from "react-native";
2
+ import { WALLET_URLS } from "@oobit/core";
3
+
4
+ const GOOGLE_WALLET_PACKAGE = "com.google.android.apps.walletnfcrel";
5
+
6
+ export async function openNativeWallet(): Promise<boolean> {
7
+ try {
8
+ if (Platform.OS === "ios") {
9
+ return await openAppleWallet();
10
+ }
11
+ if (Platform.OS === "android") {
12
+ return await openGoogleWallet();
13
+ }
14
+ return false;
15
+ } catch {
16
+ Alert.alert(
17
+ "Error",
18
+ "Could not open wallet. Please check if the app is installed."
19
+ );
20
+ return false;
21
+ }
22
+ }
23
+
24
+ async function openAppleWallet(): Promise<boolean> {
25
+ const { passkit, fallback } = WALLET_URLS.ios;
26
+
27
+ // Try wallet:// scheme first (documented for recent iOS)
28
+ if (await tryOpenUrl("wallet://")) {
29
+ return true;
30
+ }
31
+
32
+ // Try shoebox:// scheme (unofficial but widely used)
33
+ if (await tryOpenUrl(passkit)) {
34
+ return true;
35
+ }
36
+
37
+ // Fallback to wallet.apple.com (opens in browser)
38
+ if (await tryOpenUrl(fallback)) {
39
+ return true;
40
+ }
41
+
42
+ throw new Error("Apple Wallet not available");
43
+ }
44
+
45
+ async function openGoogleWallet(): Promise<boolean> {
46
+ const launchUrl = `market://launch?id=${GOOGLE_WALLET_PACKAGE}`;
47
+
48
+ // Try launching the app directly
49
+ if (await tryOpenUrl(launchUrl)) {
50
+ return true;
51
+ }
52
+
53
+ // App not installed - open Play Store
54
+ const playStoreUrl = `market://details?id=${GOOGLE_WALLET_PACKAGE}`;
55
+ const webPlayStoreUrl = `https://play.google.com/store/apps/details?id=${GOOGLE_WALLET_PACKAGE}`;
56
+
57
+ const opened = await tryOpenUrl(playStoreUrl) || await tryOpenUrl(webPlayStoreUrl);
58
+
59
+ if (opened) {
60
+ Alert.alert(
61
+ "Google Wallet",
62
+ "Google Wallet is not installed. Opening Play Store to install the app."
63
+ );
64
+ }
65
+
66
+ return false;
67
+ }
68
+
69
+ async function tryOpenUrl(url: string): Promise<boolean> {
70
+ try {
71
+ const canOpen = await Linking.canOpenURL(url);
72
+ if (canOpen) {
73
+ await Linking.openURL(url);
74
+ return true;
75
+ }
76
+ } catch {
77
+ // URL scheme not available
78
+ }
79
+ return false;
80
+ }
81
+
82
+ export async function isWalletAvailable(): Promise<boolean> {
83
+ try {
84
+ if (Platform.OS === "ios") {
85
+ return await Linking.canOpenURL(WALLET_URLS.ios.passkit);
86
+ }
87
+ if (Platform.OS === "android") {
88
+ return await Linking.canOpenURL(WALLET_URLS.android.googlePay);
89
+ }
90
+ return false;
91
+ } catch {
92
+ return false;
93
+ }
94
+ }
@@ -1,12 +0,0 @@
1
- /**
2
- * Widget SDK Component
3
- * Embeds the web widget in a WebView and handles bidirectional communication
4
- */
5
- import React from "react";
6
- import { WidgetSDKConfig } from "./types";
7
- export interface WidgetSDKRef {
8
- navigateBack: () => void;
9
- reload: () => void;
10
- }
11
- export declare const WidgetSDK: React.ForwardRefExoticComponent<WidgetSDKConfig & React.RefAttributes<WidgetSDKRef>>;
12
- //# sourceMappingURL=WidgetSDK.d.ts.map
@@ -1 +0,0 @@
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 DELETED
@@ -1,143 +0,0 @@
1
- "use strict";
2
- /**
3
- * Widget SDK Component
4
- * Embeds the web widget in a WebView and handles bidirectional communication
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.WidgetSDK = void 0;
41
- const react_1 = __importStar(require("react"));
42
- const react_native_1 = require("react-native");
43
- const react_native_webview_1 = require("react-native-webview");
44
- const config_1 = require("./config");
45
- const walletUtils_1 = require("./walletUtils");
46
- exports.WidgetSDK = (0, react_1.forwardRef)(({ accessToken, userWalletAddress, onClose, onTransactionRequested }, ref) => {
47
- const webViewRef = (0, react_1.useRef)(null);
48
- const [walletAvailable, setWalletAvailable] = (0, react_1.useState)(false);
49
- const [isLoading, setIsLoading] = (0, react_1.useState)(true);
50
- const hasLoadedOnce = (0, react_1.useRef)(false);
51
- (0, react_1.useEffect)(() => {
52
- (0, walletUtils_1.isWalletAvailable)().then(setWalletAvailable);
53
- }, []);
54
- (0, react_1.useEffect)(() => {
55
- const backHandler = react_native_1.BackHandler.addEventListener("hardwareBackPress", () => {
56
- sendMessageToWidget({ type: "native:back-pressed" });
57
- return true;
58
- });
59
- return () => backHandler.remove();
60
- }, []);
61
- (0, react_1.useImperativeHandle)(ref, () => ({
62
- navigateBack: () => sendMessageToWidget({ type: "native:navigate-back" }),
63
- reload: () => {
64
- setIsLoading(true);
65
- hasLoadedOnce.current = false;
66
- webViewRef.current?.reload();
67
- },
68
- }));
69
- const handleMessage = (event) => {
70
- try {
71
- const message = JSON.parse(event.nativeEvent.data);
72
- switch (message.type) {
73
- case "widget:ready":
74
- sendMessageToWidget({
75
- type: "native:platform-info",
76
- payload: { platform: react_native_1.Platform.OS, walletAvailable },
77
- });
78
- break;
79
- case "widget:open-wallet":
80
- (0, walletUtils_1.openNativeWallet)().then((success) => {
81
- sendMessageToWidget({
82
- type: "native:wallet-opened",
83
- payload: { success },
84
- });
85
- });
86
- break;
87
- case "widget:close":
88
- onClose?.();
89
- break;
90
- case "widget:transaction-requested":
91
- onTransactionRequested(message.payload);
92
- break;
93
- }
94
- }
95
- catch {
96
- // Ignore parse errors
97
- }
98
- };
99
- const sendMessageToWidget = (message) => {
100
- webViewRef.current?.injectJavaScript(`window.postMessage(${JSON.stringify(message)}, '*'); true;`);
101
- };
102
- const finalWidgetUrl = (0, react_1.useMemo)(() => {
103
- const baseUrl = (0, config_1.getWidgetUrl)(accessToken);
104
- const params = new URLSearchParams({
105
- token: (0, config_1.stripTokenPrefix)(accessToken),
106
- platform: react_native_1.Platform.OS,
107
- userWalletAddress,
108
- });
109
- return `${baseUrl}?${params.toString()}`;
110
- }, [accessToken, userWalletAddress]);
111
- return (<react_native_1.View style={styles.container}>
112
- <react_native_webview_1.WebView ref={webViewRef} style={styles.webview} source={{ uri: finalWidgetUrl }} onMessage={handleMessage} onLoadEnd={() => {
113
- if (!hasLoadedOnce.current) {
114
- hasLoadedOnce.current = true;
115
- setIsLoading(false);
116
- }
117
- }} onShouldStartLoadWithRequest={(request) => {
118
- const { url } = request;
119
- if (url.startsWith("shoebox://") ||
120
- url.includes("pay.google.com") ||
121
- url.includes("wallet.google.com") ||
122
- url.includes("wallet.apple.com")) {
123
- react_native_1.Linking.openURL(url).catch(() => { });
124
- return false;
125
- }
126
- return true;
127
- }} javaScriptEnabled={true} domStorageEnabled={true} allowsInlineMediaPlayback={true} bounces={false} allowsBackForwardNavigationGestures={true} mixedContentMode="always"/>
128
- {isLoading && (<react_native_1.View style={styles.loadingOverlay}>
129
- <react_native_1.ActivityIndicator size="large" color="#007AFF"/>
130
- </react_native_1.View>)}
131
- </react_native_1.View>);
132
- });
133
- const styles = react_native_1.StyleSheet.create({
134
- container: { flex: 1 },
135
- webview: { flex: 1 },
136
- loadingOverlay: {
137
- ...react_native_1.StyleSheet.absoluteFillObject,
138
- backgroundColor: "rgba(255, 255, 255, 0.9)",
139
- justifyContent: "center",
140
- alignItems: "center",
141
- },
142
- });
143
- //# sourceMappingURL=WidgetSDK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetSDK.js","sourceRoot":"","sources":["../src/WidgetSDK.tsx"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,24 +0,0 @@
1
- /**
2
- * Widget SDK Configuration
3
- * Environment detection based on access token prefix
4
- */
5
- /**
6
- * Widget URLs by environment
7
- */
8
- export declare const WIDGET_URLS: {
9
- readonly sandbox: "https://oobit-widget-dev.web.app";
10
- readonly production: "https://oobit-widget.web.app";
11
- };
12
- /**
13
- * Get the widget URL based on the access token prefix
14
- * @param accessToken - The access token (prefixed with sbx_ or prod_)
15
- * @returns The widget URL for the corresponding environment
16
- */
17
- export declare function getWidgetUrl(accessToken: string): string;
18
- /**
19
- * Strip the environment prefix from an access token
20
- * @param accessToken - The access token (prefixed with sbx_ or prod_)
21
- * @returns The token without the environment prefix
22
- */
23
- export declare function stripTokenPrefix(accessToken: string): string;
24
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ5D"}
package/dist/config.js DELETED
@@ -1,53 +0,0 @@
1
- "use strict";
2
- /**
3
- * Widget SDK Configuration
4
- * Environment detection based on access token prefix
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.WIDGET_URLS = void 0;
8
- exports.getWidgetUrl = getWidgetUrl;
9
- exports.stripTokenPrefix = stripTokenPrefix;
10
- /**
11
- * Token prefixes that determine the environment
12
- */
13
- const TOKEN_PREFIX = {
14
- SANDBOX: "sbx_",
15
- PRODUCTION: "prod_",
16
- };
17
- /**
18
- * Widget URLs by environment
19
- */
20
- exports.WIDGET_URLS = {
21
- sandbox: "https://oobit-widget-dev.web.app",
22
- production: "https://oobit-widget.web.app",
23
- };
24
- /**
25
- * Get the widget URL based on the access token prefix
26
- * @param accessToken - The access token (prefixed with sbx_ or prod_)
27
- * @returns The widget URL for the corresponding environment
28
- */
29
- function getWidgetUrl(accessToken) {
30
- if (accessToken.startsWith(TOKEN_PREFIX.SANDBOX)) {
31
- return exports.WIDGET_URLS.sandbox;
32
- }
33
- if (accessToken.startsWith(TOKEN_PREFIX.PRODUCTION)) {
34
- return exports.WIDGET_URLS.production;
35
- }
36
- // Default to production for backwards compatibility
37
- return exports.WIDGET_URLS.production;
38
- }
39
- /**
40
- * Strip the environment prefix from an access token
41
- * @param accessToken - The access token (prefixed with sbx_ or prod_)
42
- * @returns The token without the environment prefix
43
- */
44
- function stripTokenPrefix(accessToken) {
45
- if (accessToken.startsWith(TOKEN_PREFIX.SANDBOX)) {
46
- return accessToken.slice(TOKEN_PREFIX.SANDBOX.length);
47
- }
48
- if (accessToken.startsWith(TOKEN_PREFIX.PRODUCTION)) {
49
- return accessToken.slice(TOKEN_PREFIX.PRODUCTION.length);
50
- }
51
- return accessToken;
52
- }
53
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAuBH,oCASC;AAOD,4CAQC;AA7CD;;GAEG;AACH,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,OAAO;CACX,CAAC;AAEX;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,OAAO,EAAE,kCAAkC;IAC3C,UAAU,EAAE,8BAA8B;CAClC,CAAC;AAEX;;;;GAIG;AACH,SAAgB,YAAY,CAAC,WAAmB;IAC9C,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,mBAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,mBAAW,CAAC,UAAU,CAAC;IAChC,CAAC;IACD,oDAAoD;IACpD,OAAO,mBAAW,CAAC,UAAU,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1 +0,0 @@
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/types.d.ts DELETED
@@ -1,73 +0,0 @@
1
- /**
2
- * Token metadata included with transaction requests
3
- */
4
- export interface TransactionTokenMetadata {
5
- symbol: string;
6
- amount: string;
7
- decimals: number;
8
- }
9
- /**
10
- * EVM transaction data
11
- */
12
- export interface EvmTransactionData {
13
- to: string;
14
- data: string;
15
- value: string;
16
- }
17
- /**
18
- * EVM transaction request payload
19
- */
20
- export interface EvmTransactionRequest {
21
- type: "evm";
22
- chainId: number;
23
- transaction: EvmTransactionData;
24
- tokenMetadata: TransactionTokenMetadata;
25
- }
26
- /**
27
- * Solana transaction request payload
28
- */
29
- export interface SolanaTransactionRequest {
30
- type: "solana";
31
- transaction: string;
32
- tokenMetadata: TransactionTokenMetadata;
33
- }
34
- /**
35
- * Transaction request payload
36
- */
37
- export type TransactionRequest = EvmTransactionRequest | SolanaTransactionRequest;
38
- /**
39
- * SDK Configuration
40
- */
41
- export interface WidgetSDKConfig {
42
- accessToken: string;
43
- userWalletAddress: string;
44
- onClose?: () => void;
45
- onTransactionRequested: (transaction: TransactionRequest) => void;
46
- }
47
- /**
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
62
- */
63
- export declare const WALLET_URLS: {
64
- readonly ios: {
65
- readonly passkit: "shoebox://";
66
- readonly fallback: "https://wallet.apple.com";
67
- };
68
- readonly android: {
69
- readonly googlePay: "https://pay.google.com/gp/w/home/wallet";
70
- readonly fallback: "https://wallet.google.com";
71
- };
72
- };
73
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
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 DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WALLET_URLS = void 0;
4
- /**
5
- * Internal: Wallet URLs
6
- */
7
- exports.WALLET_URLS = {
8
- ios: {
9
- passkit: "shoebox://",
10
- fallback: "https://wallet.apple.com",
11
- },
12
- android: {
13
- googlePay: "https://pay.google.com/gp/w/home/wallet",
14
- fallback: "https://wallet.google.com",
15
- },
16
- };
17
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
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,14 +0,0 @@
1
- /**
2
- * Wallet Integration Utilities
3
- * Handles opening Apple Wallet (iOS) and Google Wallet (Android)
4
- */
5
- /**
6
- * Opens the native wallet app based on platform
7
- * @returns Promise that resolves when wallet opens successfully
8
- */
9
- export declare const openNativeWallet: () => Promise<boolean>;
10
- /**
11
- * Check if wallet is available on the current platform
12
- */
13
- export declare const isWalletAvailable: () => Promise<boolean>;
14
- //# sourceMappingURL=walletUtils.d.ts.map
@@ -1 +0,0 @@
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"}