@pooflabs/web 0.0.81-rc2 → 0.0.81
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/auth/index.d.ts +10 -1
- package/dist/auth/providers/phantom-wallet-provider.d.ts +20 -21
- package/dist/global.d.ts +3 -1
- package/dist/{index-DHm4usay.js → index-B2WGCssJ.js} +347 -414
- package/dist/index-B2WGCssJ.js.map +1 -0
- package/dist/{index-CHqM9n4K.esm.js → index-CjHbp7Dq.esm.js} +3697 -562
- package/dist/index-CjHbp7Dq.esm.js.map +1 -0
- package/dist/{index-CL4JIAAR.js → index-DXPkkq81.js} +3698 -563
- package/dist/index-DXPkkq81.js.map +1 -0
- package/dist/{index-BjlCinic.js → index-D_DiP8XQ.js} +3698 -563
- package/dist/index-D_DiP8XQ.js.map +1 -0
- package/dist/{index-DCo85UGg.esm.js → index-dcJIjFrs.esm.js} +3697 -562
- package/dist/index-dcJIjFrs.esm.js.map +1 -0
- package/dist/{index-Bx_lLXRT.esm.js → index-nt_HQVrk.esm.js} +345 -414
- package/dist/index-nt_HQVrk.esm.js.map +1 -0
- package/dist/{index.browser-7dDfRU5G.esm.js → index.browser-BNdFfyIg.esm.js} +1571 -1368
- package/dist/index.browser-BNdFfyIg.esm.js.map +1 -0
- package/dist/{index.browser-CmlqbyPr.js → index.browser-CT6PUv9G.js} +1571 -1368
- package/dist/index.browser-CT6PUv9G.js.map +1 -0
- package/dist/index.browser-Cy21yaX0.esm.js +1096 -0
- package/dist/index.browser-Cy21yaX0.esm.js.map +1 -0
- package/dist/index.browser-OvGNsMPu.esm.js +1002 -0
- package/dist/index.browser-OvGNsMPu.esm.js.map +1 -0
- package/dist/index.browser-ZD7Tz2bn.js +1099 -0
- package/dist/index.browser-ZD7Tz2bn.js.map +1 -0
- package/dist/index.browser-d0PlOXpF.js +105 -0
- package/dist/index.browser-d0PlOXpF.js.map +1 -0
- package/dist/index.browser-pE1s68e9.esm.js +102 -0
- package/dist/index.browser-pE1s68e9.esm.js.map +1 -0
- package/dist/index.browser-vuTr40so.js +1008 -0
- package/dist/index.browser-vuTr40so.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{index.native-TLhfXfe6.esm.js → index.native-BqYr--vb.esm.js} +202 -178
- package/dist/index.native-BqYr--vb.esm.js.map +1 -0
- package/dist/{index.native-DJA9_K3i.js → index.native-CyA-RdvW.js} +204 -178
- package/dist/index.native-CyA-RdvW.js.map +1 -0
- package/dist/index.native.esm.js +1 -1
- package/dist/index.native.js +1 -1
- package/dist/{phantom-wallet-provider-BegJFoWW.js → phantom-wallet-provider-DWCaMkyz.js} +148 -192
- package/dist/phantom-wallet-provider-DWCaMkyz.js.map +1 -0
- package/dist/{phantom-wallet-provider-DzUAMhbm.esm.js → phantom-wallet-provider-K2V96G-G.esm.js} +148 -192
- package/dist/phantom-wallet-provider-K2V96G-G.esm.js.map +1 -0
- package/dist/{privy-wallet-provider-Du-QHaaG.js → privy-wallet-provider-BMg_S_d0.js} +4 -4
- package/dist/privy-wallet-provider-BMg_S_d0.js.map +1 -0
- package/dist/{privy-wallet-provider-BspbiyOr.esm.js → privy-wallet-provider-DoX8q99w.esm.js} +4 -4
- package/dist/privy-wallet-provider-DoX8q99w.esm.js.map +1 -0
- package/dist/{solana-mobile-wallet-provider-Bh7SBFpQ.esm.js → solana-mobile-wallet-provider-Cmphb3oB.esm.js} +3 -52
- package/dist/solana-mobile-wallet-provider-Cmphb3oB.esm.js.map +1 -0
- package/dist/{solana-mobile-wallet-provider-DPp4SYem.js → solana-mobile-wallet-provider-t22Ie8lY.js} +3 -52
- package/dist/solana-mobile-wallet-provider-t22Ie8lY.js.map +1 -0
- package/package.json +3 -3
- package/dist/index-BjlCinic.js.map +0 -1
- package/dist/index-Bx_lLXRT.esm.js.map +0 -1
- package/dist/index-CHqM9n4K.esm.js.map +0 -1
- package/dist/index-CL4JIAAR.js.map +0 -1
- package/dist/index-DCo85UGg.esm.js.map +0 -1
- package/dist/index-DHm4usay.js.map +0 -1
- package/dist/index.browser-7dDfRU5G.esm.js.map +0 -1
- package/dist/index.browser-Bg_-PAgT.esm.js +0 -1250
- package/dist/index.browser-Bg_-PAgT.esm.js.map +0 -1
- package/dist/index.browser-C-_FEr5M.esm.js +0 -1134
- package/dist/index.browser-C-_FEr5M.esm.js.map +0 -1
- package/dist/index.browser-CmlqbyPr.js.map +0 -1
- package/dist/index.browser-CxXQ2RhF.js +0 -122
- package/dist/index.browser-CxXQ2RhF.js.map +0 -1
- package/dist/index.browser-DjEZSiqI.js +0 -1137
- package/dist/index.browser-DjEZSiqI.js.map +0 -1
- package/dist/index.browser-DuVkpEzB.js +0 -1253
- package/dist/index.browser-DuVkpEzB.js.map +0 -1
- package/dist/index.browser-xJkO73vw.esm.js +0 -119
- package/dist/index.browser-xJkO73vw.esm.js.map +0 -1
- package/dist/index.native-DJA9_K3i.js.map +0 -1
- package/dist/index.native-TLhfXfe6.esm.js.map +0 -1
- package/dist/phantom-wallet-provider-BegJFoWW.js.map +0 -1
- package/dist/phantom-wallet-provider-DzUAMhbm.esm.js.map +0 -1
- package/dist/privy-wallet-provider-BspbiyOr.esm.js.map +0 -1
- package/dist/privy-wallet-provider-Du-QHaaG.js.map +0 -1
- package/dist/solana-mobile-wallet-provider-Bh7SBFpQ.esm.js.map +0 -1
- package/dist/solana-mobile-wallet-provider-DPp4SYem.js.map +0 -1
|
@@ -4,6 +4,21 @@ import * as anchor from '@coral-xyz/anchor';
|
|
|
4
4
|
import { Program } from '@coral-xyz/anchor';
|
|
5
5
|
import * as React$2 from 'react';
|
|
6
6
|
|
|
7
|
+
function _mergeNamespaces(n, m) {
|
|
8
|
+
m.forEach(function (e) {
|
|
9
|
+
e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default' && !(k in n)) {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
|
|
7
22
|
function getDefaultExportFromCjs$1 (x) {
|
|
8
23
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
9
24
|
}
|
|
@@ -9447,11 +9462,11 @@ function requireSrc () {
|
|
|
9447
9462
|
}
|
|
9448
9463
|
|
|
9449
9464
|
var bs58$1;
|
|
9450
|
-
var hasRequiredBs58;
|
|
9465
|
+
var hasRequiredBs58$1;
|
|
9451
9466
|
|
|
9452
|
-
function requireBs58 () {
|
|
9453
|
-
if (hasRequiredBs58) return bs58$1;
|
|
9454
|
-
hasRequiredBs58 = 1;
|
|
9467
|
+
function requireBs58$1 () {
|
|
9468
|
+
if (hasRequiredBs58$1) return bs58$1;
|
|
9469
|
+
hasRequiredBs58$1 = 1;
|
|
9455
9470
|
var basex = requireSrc();
|
|
9456
9471
|
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
9457
9472
|
|
|
@@ -9459,8 +9474,8 @@ function requireBs58 () {
|
|
|
9459
9474
|
return bs58$1;
|
|
9460
9475
|
}
|
|
9461
9476
|
|
|
9462
|
-
var bs58Exports = requireBs58();
|
|
9463
|
-
var bs58$2 = /*@__PURE__*/getDefaultExportFromCjs(bs58Exports);
|
|
9477
|
+
var bs58Exports$1 = requireBs58$1();
|
|
9478
|
+
var bs58$2 = /*@__PURE__*/getDefaultExportFromCjs(bs58Exports$1);
|
|
9464
9479
|
|
|
9465
9480
|
// ─────────────────────────────────────────────────────────────
|
|
9466
9481
|
// Local implementation of getSimulationComputeUnits
|
|
@@ -10106,40 +10121,17 @@ async function getConfig() {
|
|
|
10106
10121
|
return clientConfig;
|
|
10107
10122
|
}
|
|
10108
10123
|
|
|
10109
|
-
|
|
10110
|
-
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
|
|
10117
|
-
|
|
10118
|
-
|
|
10119
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
10120
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
10121
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
10122
|
-
***************************************************************************** */
|
|
10123
|
-
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
10124
|
-
|
|
10125
|
-
|
|
10126
|
-
function __rest(s, e) {
|
|
10127
|
-
var t = {};
|
|
10128
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
10129
|
-
t[p] = s[p];
|
|
10130
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
10131
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
10132
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10133
|
-
t[p[i]] = s[p[i]];
|
|
10134
|
-
}
|
|
10135
|
-
return t;
|
|
10136
|
-
}
|
|
10137
|
-
|
|
10138
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
10139
|
-
var e = new Error(message);
|
|
10140
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
10124
|
+
var __rest = function (s, e) {
|
|
10125
|
+
var t = {};
|
|
10126
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
10127
|
+
t[p] = s[p];
|
|
10128
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
10129
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
10130
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10131
|
+
t[p[i]] = s[p[i]];
|
|
10132
|
+
}
|
|
10133
|
+
return t;
|
|
10141
10134
|
};
|
|
10142
|
-
|
|
10143
10135
|
/**
|
|
10144
10136
|
* Thrown when a user's wallet doesn't have enough SOL to cover the transaction.
|
|
10145
10137
|
* Apps can catch this to trigger an onramp/funding flow.
|
|
@@ -12960,7 +12952,7 @@ async function getAuthProvider(config) {
|
|
|
12960
12952
|
}
|
|
12961
12953
|
return currentAuthProvider;
|
|
12962
12954
|
}
|
|
12963
|
-
async function login$1() {
|
|
12955
|
+
async function login$1(options) {
|
|
12964
12956
|
// Re-initialize provider if it was cleared by logout
|
|
12965
12957
|
if (!currentAuthProvider && initConfig) {
|
|
12966
12958
|
currentAuthProvider = await getAuthProvider(initConfig);
|
|
@@ -12973,6 +12965,14 @@ async function login$1() {
|
|
|
12973
12965
|
if (!currentAuthProvider) {
|
|
12974
12966
|
throw new Error("Auth provider not initialized. Please call init() first.");
|
|
12975
12967
|
}
|
|
12968
|
+
// Forward per-call overrides to providers that support them (duck-typed to stay
|
|
12969
|
+
// lazy-load safe — no direct import of PhantomWalletProvider here).
|
|
12970
|
+
// Always call (even with null) so previous overrides are cleared when this
|
|
12971
|
+
// login() is invoked without options — early-return paths inside the provider
|
|
12972
|
+
// bypass the .finally() cleanup, so we reset here too.
|
|
12973
|
+
if (typeof currentAuthProvider.setLoginOverrides === 'function') {
|
|
12974
|
+
currentAuthProvider.setLoginOverrides(options !== null && options !== void 0 ? options : null);
|
|
12975
|
+
}
|
|
12976
12976
|
const loginResult = await currentAuthProvider.login();
|
|
12977
12977
|
if (loginResult) {
|
|
12978
12978
|
// Store which auth method was used so we restore the right provider on reload
|
|
@@ -13055,11 +13055,11 @@ function setAuthLoading(loading) {
|
|
|
13055
13055
|
function getAuthLoading() {
|
|
13056
13056
|
return isAuthLoading;
|
|
13057
13057
|
}
|
|
13058
|
-
async function login() {
|
|
13058
|
+
async function login(options) {
|
|
13059
13059
|
if (!authProviderInstance) {
|
|
13060
13060
|
throw new Error('SDK not initialized. Please call init() first.');
|
|
13061
13061
|
}
|
|
13062
|
-
const loggedInUser = await login$1();
|
|
13062
|
+
const loggedInUser = await login$1(options);
|
|
13063
13063
|
setCurrentUser(loggedInUser);
|
|
13064
13064
|
return currentUser;
|
|
13065
13065
|
}
|
|
@@ -15648,7 +15648,7 @@ async function loadDependencies() {
|
|
|
15648
15648
|
const [reactModule, reactDomModule, phantomModule] = await Promise.all([
|
|
15649
15649
|
import('react'),
|
|
15650
15650
|
import('react-dom/client'),
|
|
15651
|
-
import('./index-
|
|
15651
|
+
import('./index-dcJIjFrs.esm.js')
|
|
15652
15652
|
]);
|
|
15653
15653
|
// Extract default export from ESM module namespace
|
|
15654
15654
|
// Dynamic import() returns { default: Module, ...exports }, not the module directly
|
|
@@ -15660,6 +15660,10 @@ async function loadDependencies() {
|
|
|
15660
15660
|
return loadingPromise;
|
|
15661
15661
|
}
|
|
15662
15662
|
class PhantomWalletProvider {
|
|
15663
|
+
/** Temporarily override modal appearance for a single login() call. Cleared automatically after login settles. */
|
|
15664
|
+
setLoginOverrides(opts) {
|
|
15665
|
+
this.loginOverrides = opts;
|
|
15666
|
+
}
|
|
15663
15667
|
constructor(networkUrl = null, config = {}) {
|
|
15664
15668
|
this.containerElement = null;
|
|
15665
15669
|
this.root = null;
|
|
@@ -15669,6 +15673,7 @@ class PhantomWalletProvider {
|
|
|
15669
15673
|
this.loginInProgress = false;
|
|
15670
15674
|
this.autoLoginInProgress = false;
|
|
15671
15675
|
this.initPromise = null;
|
|
15676
|
+
this.loginOverrides = null;
|
|
15672
15677
|
/** Callback to swap to a Privy provider when the user clicks "Log in with email" */
|
|
15673
15678
|
this.onSwitchToPrivy = null;
|
|
15674
15679
|
/** Callback to swap to a Mobile Wallet Adapter provider when the user clicks "Connect Mobile Wallet" */
|
|
@@ -15691,13 +15696,8 @@ class PhantomWalletProvider {
|
|
|
15691
15696
|
async initializeAsync() {
|
|
15692
15697
|
// Lazy load dependencies only when actually instantiating
|
|
15693
15698
|
await loadDependencies();
|
|
15694
|
-
// Initialize React component
|
|
15695
|
-
|
|
15696
|
-
// or non-Android). Otherwise defer until ensureReady() is reached from
|
|
15697
|
-
// a user-gesture flow. See shouldMountEagerly() for the rationale.
|
|
15698
|
-
if (this.shouldMountEagerly()) {
|
|
15699
|
-
this.initialize();
|
|
15700
|
-
}
|
|
15699
|
+
// Initialize React component
|
|
15700
|
+
this.initialize();
|
|
15701
15701
|
}
|
|
15702
15702
|
/**
|
|
15703
15703
|
* Check if social login providers are configured (non-injected providers).
|
|
@@ -15705,69 +15705,6 @@ class PhantomWalletProvider {
|
|
|
15705
15705
|
hasSocialProviders() {
|
|
15706
15706
|
return this.resolvedProviders.some(p => p !== 'injected');
|
|
15707
15707
|
}
|
|
15708
|
-
/**
|
|
15709
|
-
* Decide whether to mount the @phantom/react-sdk <PhantomProvider> tree
|
|
15710
|
-
* eagerly during init() or defer until the first user-triggered call
|
|
15711
|
-
* (login / sign / etc.) reaches ensureReady().
|
|
15712
|
-
*
|
|
15713
|
-
* Mounting the React tree synchronously constructs BrowserSDK, which runs
|
|
15714
|
-
* wallet-standard discovery in its constructor and fires sdk.autoConnect()
|
|
15715
|
-
* in a useEffect on mount. On Solana Seeker (Android Chrome PWA), both
|
|
15716
|
-
* pathways probe the Android intent surface to discover the Phantom mobile
|
|
15717
|
-
* app, which surfaces Chrome's system "wants to access other apps and
|
|
15718
|
-
* services" permission dialog *before* the PWA activity has window focus.
|
|
15719
|
-
* The dialog renders with grayed-out buttons until the user backgrounds
|
|
15720
|
-
* and resumes the app.
|
|
15721
|
-
*
|
|
15722
|
-
* Returns true when eager mount is needed (callback to handle, prior
|
|
15723
|
-
* session, in-page wallet present, or non-Android). Otherwise returns
|
|
15724
|
-
* false — the React tree is mounted lazily inside ensureReady() once a
|
|
15725
|
-
* user gesture brings us there.
|
|
15726
|
-
*/
|
|
15727
|
-
shouldMountEagerly() {
|
|
15728
|
-
if (typeof window === 'undefined')
|
|
15729
|
-
return false;
|
|
15730
|
-
// Preserve desktop behavior: always mount eagerly.
|
|
15731
|
-
if (!detectAndroid())
|
|
15732
|
-
return true;
|
|
15733
|
-
// In-page wallet present (Phantom in-app browser / desktop extension on
|
|
15734
|
-
// a desktop-mode Android UA): no Android intent probe needed, mount free.
|
|
15735
|
-
// Tighten beyond truthy `window.phantom` since arbitrary stubs can land
|
|
15736
|
-
// on that key — require a wallet-shaped surface.
|
|
15737
|
-
const ph = window.phantom;
|
|
15738
|
-
if (ph && (ph.solana || ph.ethereum || ph.app))
|
|
15739
|
-
return true;
|
|
15740
|
-
// Returning from a Phantom redirect (OAuth or deeplink hop). SDK must
|
|
15741
|
-
// be live to read these URL params via urlParamsAccessor.
|
|
15742
|
-
const callbackKeys = ['session_id', 'wallet_id', 'selected_account_index', 'error', 'error_description'];
|
|
15743
|
-
try {
|
|
15744
|
-
const params = new URLSearchParams(window.location.search);
|
|
15745
|
-
if (callbackKeys.some(k => params.has(k)))
|
|
15746
|
-
return true;
|
|
15747
|
-
}
|
|
15748
|
-
catch (_a) {
|
|
15749
|
-
return true; // conservative on URL access failure
|
|
15750
|
-
}
|
|
15751
|
-
// Returning user with a stored Phantom session. They've already
|
|
15752
|
-
// approved the Android intent permission for this origin on first
|
|
15753
|
-
// login, so the dialog is typically pre-granted by Chrome — eager
|
|
15754
|
-
// mount lets autoConnect silently restore the wallet handshake.
|
|
15755
|
-
// Require BOTH the marker AND a session storage entry so a stale
|
|
15756
|
-
// orphaned marker doesn't keep eager-mounting forever. Note
|
|
15757
|
-
// isAuthenticated() is a raw key-existence check, not a validity
|
|
15758
|
-
// check — restoreSession() above clears the marker on the next load
|
|
15759
|
-
// if the session is unusable, so the bug self-corrects after at
|
|
15760
|
-
// most one further cold start.
|
|
15761
|
-
try {
|
|
15762
|
-
const stored = getPlatform().storage.getItem('tarobase_last_auth_method');
|
|
15763
|
-
if (stored === 'phantom' && WebSessionManager.isAuthenticated())
|
|
15764
|
-
return true;
|
|
15765
|
-
}
|
|
15766
|
-
catch (_b) {
|
|
15767
|
-
return true;
|
|
15768
|
-
}
|
|
15769
|
-
return false;
|
|
15770
|
-
}
|
|
15771
15708
|
static getInstance(networkUrl, config) {
|
|
15772
15709
|
if (!PhantomWalletProvider.instance) {
|
|
15773
15710
|
new PhantomWalletProvider(networkUrl, config);
|
|
@@ -15843,7 +15780,7 @@ class PhantomWalletProvider {
|
|
|
15843
15780
|
const sdkProviders = this.resolvedProviders.length > 0 ? [...this.resolvedProviders] : ['injected'];
|
|
15844
15781
|
// Inner component that uses hooks
|
|
15845
15782
|
const PhantomHooksComponent = () => {
|
|
15846
|
-
var _a, _b;
|
|
15783
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
15847
15784
|
const phantom = usePhantom();
|
|
15848
15785
|
const { connect, error: connectError } = useConnect();
|
|
15849
15786
|
const { disconnect, isDisconnecting } = useDisconnect();
|
|
@@ -16128,20 +16065,11 @@ class PhantomWalletProvider {
|
|
|
16128
16065
|
const handleMobileWalletClick = async () => {
|
|
16129
16066
|
that.loginInProgress = false;
|
|
16130
16067
|
walletClickedRef.current = true;
|
|
16131
|
-
|
|
16132
|
-
// closing the modal here triggers a React commit and a focus
|
|
16133
|
-
// transition that races MWA's transact() opening a localhost
|
|
16134
|
-
// WebSocket. Chrome's "Apps on Device" / Local Network Access
|
|
16135
|
-
// permission dialog spawns inheriting the activity's focus
|
|
16136
|
-
// state at that moment — and the in-transit focus produces a
|
|
16137
|
-
// dialog with grayed-out Allow/Block buttons. Keep the modal
|
|
16138
|
-
// mounted through MWA login so focus is stable when the
|
|
16139
|
-
// system dialog spawns; close it after login resolves.
|
|
16068
|
+
setShowWalletModal(false);
|
|
16140
16069
|
if (that.onSwitchToMWA) {
|
|
16141
16070
|
try {
|
|
16142
16071
|
const mwaProvider = await that.onSwitchToMWA();
|
|
16143
16072
|
const user = await mwaProvider.login();
|
|
16144
|
-
setShowWalletModal(false);
|
|
16145
16073
|
if (that.pendingLogin && user) {
|
|
16146
16074
|
that.pendingLogin.resolve(user);
|
|
16147
16075
|
that.pendingLogin = null;
|
|
@@ -16152,16 +16080,12 @@ class PhantomWalletProvider {
|
|
|
16152
16080
|
}
|
|
16153
16081
|
}
|
|
16154
16082
|
catch (error) {
|
|
16155
|
-
setShowWalletModal(false);
|
|
16156
16083
|
if (that.pendingLogin) {
|
|
16157
16084
|
that.pendingLogin.reject(error);
|
|
16158
16085
|
that.pendingLogin = null;
|
|
16159
16086
|
}
|
|
16160
16087
|
}
|
|
16161
16088
|
}
|
|
16162
|
-
else {
|
|
16163
|
-
setShowWalletModal(false);
|
|
16164
|
-
}
|
|
16165
16089
|
};
|
|
16166
16090
|
const handleCloseModal = () => {
|
|
16167
16091
|
setShowWalletModal(false);
|
|
@@ -16175,31 +16099,59 @@ class PhantomWalletProvider {
|
|
|
16175
16099
|
if (!showWalletModal) {
|
|
16176
16100
|
return null;
|
|
16177
16101
|
}
|
|
16178
|
-
const
|
|
16179
|
-
const
|
|
16180
|
-
const
|
|
16181
|
-
const
|
|
16182
|
-
const
|
|
16102
|
+
const effectiveTheme = (_c = (_b = (_a = that.loginOverrides) === null || _a === void 0 ? void 0 : _a.theme) !== null && _b !== void 0 ? _b : that.config.theme) !== null && _c !== void 0 ? _c : 'dark';
|
|
16103
|
+
const isLight = effectiveTheme === 'light';
|
|
16104
|
+
const bgColor = isLight ? '#FFFFFF' : '#111113';
|
|
16105
|
+
const cardBorder = isLight ? '1px solid rgba(0,0,0,0.08)' : '1px solid rgba(255,255,255,0.07)';
|
|
16106
|
+
const textColor = isLight ? '#0f0f0f' : '#f5f5f5';
|
|
16107
|
+
const subTextColor = isLight ? 'rgba(0,0,0,0.45)' : 'rgba(255,255,255,0.4)';
|
|
16108
|
+
const btnBg = isLight ? 'rgba(0,0,0,0.04)' : 'rgba(255,255,255,0.05)';
|
|
16109
|
+
const btnHoverBg = isLight ? 'rgba(0,0,0,0.08)' : 'rgba(255,255,255,0.09)';
|
|
16110
|
+
const btnBorder = isLight ? '1px solid rgba(0,0,0,0.10)' : '1px solid rgba(255,255,255,0.09)';
|
|
16111
|
+
const dividerColor = isLight ? 'rgba(0,0,0,0.10)' : 'rgba(255,255,255,0.08)';
|
|
16183
16112
|
const fontFamily = '"SF Pro Text",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif';
|
|
16184
16113
|
const buttonStyle = (id) => ({
|
|
16185
16114
|
display: 'flex',
|
|
16186
16115
|
alignItems: 'center',
|
|
16187
16116
|
justifyContent: 'center',
|
|
16188
|
-
gap: '
|
|
16117
|
+
gap: '10px',
|
|
16189
16118
|
width: '100%',
|
|
16190
|
-
height: '
|
|
16191
|
-
padding: '
|
|
16192
|
-
border:
|
|
16193
|
-
borderRadius: '
|
|
16119
|
+
height: '52px',
|
|
16120
|
+
padding: '0 20px',
|
|
16121
|
+
border: btnBorder,
|
|
16122
|
+
borderRadius: '12px',
|
|
16194
16123
|
backgroundColor: hoveredBtn === id ? btnHoverBg : btnBg,
|
|
16195
16124
|
color: textColor,
|
|
16196
16125
|
fontFamily,
|
|
16197
16126
|
fontSize: '14px',
|
|
16198
|
-
fontWeight: '
|
|
16199
|
-
lineHeight: '
|
|
16200
|
-
letterSpacing: '
|
|
16127
|
+
fontWeight: '500',
|
|
16128
|
+
lineHeight: '1',
|
|
16129
|
+
letterSpacing: '0',
|
|
16130
|
+
cursor: 'pointer',
|
|
16131
|
+
transition: 'background-color 0.15s, border-color 0.15s',
|
|
16132
|
+
boxSizing: 'border-box',
|
|
16133
|
+
});
|
|
16134
|
+
const emailButtonStyle = (id) => ({
|
|
16135
|
+
display: 'flex',
|
|
16136
|
+
alignItems: 'center',
|
|
16137
|
+
justifyContent: 'center',
|
|
16138
|
+
gap: '10px',
|
|
16139
|
+
width: '100%',
|
|
16140
|
+
height: '52px',
|
|
16141
|
+
padding: '0 20px',
|
|
16142
|
+
border: isLight ? '1px solid rgba(0,0,0,0.15)' : '1px solid rgba(255,255,255,0.15)',
|
|
16143
|
+
borderRadius: '12px',
|
|
16144
|
+
backgroundColor: hoveredBtn === id
|
|
16145
|
+
? (isLight ? 'rgba(0,0,0,0.06)' : 'rgba(255,255,255,0.12)')
|
|
16146
|
+
: (isLight ? 'rgba(0,0,0,0.03)' : 'rgba(255,255,255,0.08)'),
|
|
16147
|
+
color: textColor,
|
|
16148
|
+
fontFamily,
|
|
16149
|
+
fontSize: '14px',
|
|
16150
|
+
fontWeight: '500',
|
|
16151
|
+
lineHeight: '1',
|
|
16201
16152
|
cursor: 'pointer',
|
|
16202
|
-
transition: 'background-color 0.
|
|
16153
|
+
transition: 'background-color 0.15s, border-color 0.15s',
|
|
16154
|
+
boxSizing: 'border-box',
|
|
16203
16155
|
});
|
|
16204
16156
|
const walletButtons = [];
|
|
16205
16157
|
// Google OAuth button — shown when 'google' is in resolved providers
|
|
@@ -16211,7 +16163,7 @@ class PhantomWalletProvider {
|
|
|
16211
16163
|
onMouseEnter: () => setHoveredBtn('google-oauth'),
|
|
16212
16164
|
onMouseLeave: () => setHoveredBtn(null),
|
|
16213
16165
|
}, React$1.createElement('svg', {
|
|
16214
|
-
width: '
|
|
16166
|
+
width: '18', height: '18', viewBox: '0 0 24 24',
|
|
16215
16167
|
style: { flexShrink: '0' },
|
|
16216
16168
|
}, React$1.createElement('path', {
|
|
16217
16169
|
d: 'M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z',
|
|
@@ -16236,7 +16188,7 @@ class PhantomWalletProvider {
|
|
|
16236
16188
|
onMouseEnter: () => setHoveredBtn('apple-oauth'),
|
|
16237
16189
|
onMouseLeave: () => setHoveredBtn(null),
|
|
16238
16190
|
}, React$1.createElement('svg', {
|
|
16239
|
-
width: '
|
|
16191
|
+
width: '18', height: '18', viewBox: '0 0 24 24',
|
|
16240
16192
|
fill: textColor,
|
|
16241
16193
|
style: { flexShrink: '0' },
|
|
16242
16194
|
}, React$1.createElement('path', {
|
|
@@ -16288,11 +16240,9 @@ class PhantomWalletProvider {
|
|
|
16288
16240
|
onClick: handleMobileWalletClick,
|
|
16289
16241
|
onMouseEnter: () => setHoveredBtn('mobile-wallet'),
|
|
16290
16242
|
onMouseLeave: () => setHoveredBtn(null),
|
|
16291
|
-
},
|
|
16292
|
-
|
|
16293
|
-
|
|
16294
|
-
width: '20', height: '20', viewBox: '0 0 24 24', fill: 'none',
|
|
16295
|
-
style: { flexShrink: '0' },
|
|
16243
|
+
}, React$1.createElement('svg', {
|
|
16244
|
+
width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none',
|
|
16245
|
+
style: { flexShrink: '0', opacity: '0.85' },
|
|
16296
16246
|
},
|
|
16297
16247
|
// Phone outline
|
|
16298
16248
|
React$1.createElement('rect', {
|
|
@@ -16314,23 +16264,51 @@ class PhantomWalletProvider {
|
|
|
16314
16264
|
if (that.config.enablePrivyFallback) {
|
|
16315
16265
|
walletButtons.push(React$1.createElement('button', {
|
|
16316
16266
|
key: 'email-login',
|
|
16317
|
-
style:
|
|
16267
|
+
style: emailButtonStyle('email-login'),
|
|
16318
16268
|
onClick: handleEmailClick,
|
|
16319
16269
|
onMouseEnter: () => setHoveredBtn('email-login'),
|
|
16320
16270
|
onMouseLeave: () => setHoveredBtn(null),
|
|
16321
|
-
},
|
|
16322
|
-
|
|
16323
|
-
|
|
16324
|
-
width: '20', height: '20', viewBox: '0 0 24 24', fill: 'none',
|
|
16325
|
-
style: { flexShrink: '0' },
|
|
16271
|
+
}, React$1.createElement('svg', {
|
|
16272
|
+
width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none',
|
|
16273
|
+
style: { flexShrink: '0', opacity: '0.7' },
|
|
16326
16274
|
}, React$1.createElement('path', {
|
|
16327
16275
|
d: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z',
|
|
16328
|
-
stroke: textColor, strokeWidth: '
|
|
16276
|
+
stroke: textColor, strokeWidth: '1.75', strokeLinecap: 'round', strokeLinejoin: 'round', fill: 'none',
|
|
16329
16277
|
}), React$1.createElement('path', {
|
|
16330
16278
|
d: 'M22 6l-10 7L2 6',
|
|
16331
|
-
stroke: textColor, strokeWidth: '
|
|
16332
|
-
})), '
|
|
16279
|
+
stroke: textColor, strokeWidth: '1.75', strokeLinecap: 'round', strokeLinejoin: 'round', fill: 'none',
|
|
16280
|
+
})), 'Continue with email'));
|
|
16333
16281
|
}
|
|
16282
|
+
// Split email button from the rest to insert OR divider
|
|
16283
|
+
const emailBtnIndex = walletButtons.findIndex((b) => b && b.key === 'email-login');
|
|
16284
|
+
const mainButtons = emailBtnIndex >= 0 ? walletButtons.slice(0, emailBtnIndex) : walletButtons;
|
|
16285
|
+
const emailButton = emailBtnIndex >= 0 ? walletButtons[emailBtnIndex] : null;
|
|
16286
|
+
// OR divider — shown when there are both wallet/social buttons and an email button
|
|
16287
|
+
const orDivider = (mainButtons.length > 0 && emailButton)
|
|
16288
|
+
? React$1.createElement('div', {
|
|
16289
|
+
key: 'or-divider',
|
|
16290
|
+
style: {
|
|
16291
|
+
display: 'flex',
|
|
16292
|
+
alignItems: 'center',
|
|
16293
|
+
gap: '12px',
|
|
16294
|
+
margin: '4px 0',
|
|
16295
|
+
},
|
|
16296
|
+
}, React$1.createElement('div', {
|
|
16297
|
+
style: { flex: '1', height: '1px', backgroundColor: dividerColor },
|
|
16298
|
+
}), React$1.createElement('span', {
|
|
16299
|
+
style: {
|
|
16300
|
+
color: subTextColor,
|
|
16301
|
+
fontFamily,
|
|
16302
|
+
fontSize: '12px',
|
|
16303
|
+
fontWeight: '500',
|
|
16304
|
+
letterSpacing: '0.02em',
|
|
16305
|
+
textTransform: 'uppercase',
|
|
16306
|
+
userSelect: 'none',
|
|
16307
|
+
},
|
|
16308
|
+
}, 'or'), React$1.createElement('div', {
|
|
16309
|
+
style: { flex: '1', height: '1px', backgroundColor: dividerColor },
|
|
16310
|
+
}))
|
|
16311
|
+
: null;
|
|
16334
16312
|
// Render custom modal
|
|
16335
16313
|
return React$1.createElement('div', {
|
|
16336
16314
|
// Overlay
|
|
@@ -16340,12 +16318,14 @@ class PhantomWalletProvider {
|
|
|
16340
16318
|
left: '0',
|
|
16341
16319
|
right: '0',
|
|
16342
16320
|
bottom: '0',
|
|
16343
|
-
backgroundColor: 'rgba(0,0,0,0.
|
|
16321
|
+
backgroundColor: isLight ? 'rgba(0,0,0,0.35)' : 'rgba(0,0,0,0.65)',
|
|
16344
16322
|
display: 'flex',
|
|
16345
16323
|
alignItems: 'center',
|
|
16346
16324
|
justifyContent: 'center',
|
|
16347
16325
|
zIndex: 2147483647,
|
|
16348
16326
|
pointerEvents: 'auto',
|
|
16327
|
+
backdropFilter: 'blur(4px)',
|
|
16328
|
+
WebkitBackdropFilter: 'blur(4px)',
|
|
16349
16329
|
},
|
|
16350
16330
|
onClick: (e) => {
|
|
16351
16331
|
if (e.target === e.currentTarget)
|
|
@@ -16362,13 +16342,17 @@ class PhantomWalletProvider {
|
|
|
16362
16342
|
React$1.createElement('div', {
|
|
16363
16343
|
style: {
|
|
16364
16344
|
backgroundColor: bgColor,
|
|
16365
|
-
|
|
16366
|
-
|
|
16367
|
-
|
|
16368
|
-
|
|
16345
|
+
border: cardBorder,
|
|
16346
|
+
borderRadius: '20px',
|
|
16347
|
+
width: '380px',
|
|
16348
|
+
maxWidth: 'calc(100vw - 32px)',
|
|
16349
|
+
padding: '28px 24px 24px',
|
|
16369
16350
|
position: 'relative',
|
|
16370
|
-
boxShadow:
|
|
16351
|
+
boxShadow: isLight
|
|
16352
|
+
? '0 8px 40px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.06)'
|
|
16353
|
+
: '0 8px 40px rgba(0,0,0,0.6), 0 2px 8px rgba(0,0,0,0.3)',
|
|
16371
16354
|
pointerEvents: 'auto',
|
|
16355
|
+
boxSizing: 'border-box',
|
|
16372
16356
|
},
|
|
16373
16357
|
onMouseDown: (e) => {
|
|
16374
16358
|
e.stopPropagation();
|
|
@@ -16377,26 +16361,30 @@ class PhantomWalletProvider {
|
|
|
16377
16361
|
e.stopPropagation();
|
|
16378
16362
|
},
|
|
16379
16363
|
},
|
|
16380
|
-
// Close button
|
|
16364
|
+
// Close button
|
|
16381
16365
|
React$1.createElement('button', {
|
|
16382
16366
|
onClick: handleCloseModal,
|
|
16383
16367
|
style: {
|
|
16384
16368
|
position: 'absolute',
|
|
16385
|
-
top: '
|
|
16386
|
-
right: '
|
|
16387
|
-
background: '
|
|
16388
|
-
border: '
|
|
16369
|
+
top: '14px',
|
|
16370
|
+
right: '14px',
|
|
16371
|
+
background: isLight ? 'rgba(0,0,0,0.05)' : 'rgba(255,255,255,0.07)',
|
|
16372
|
+
border: isLight ? '1px solid rgba(0,0,0,0.08)' : '1px solid rgba(255,255,255,0.08)',
|
|
16373
|
+
borderRadius: '50%',
|
|
16374
|
+
width: '28px',
|
|
16375
|
+
height: '28px',
|
|
16389
16376
|
cursor: 'pointer',
|
|
16390
|
-
padding: '4px',
|
|
16391
16377
|
display: 'flex',
|
|
16392
16378
|
alignItems: 'center',
|
|
16393
16379
|
justifyContent: 'center',
|
|
16380
|
+
padding: '0',
|
|
16381
|
+
flexShrink: '0',
|
|
16394
16382
|
},
|
|
16395
16383
|
}, React$1.createElement('svg', {
|
|
16396
|
-
width: '
|
|
16384
|
+
width: '12', height: '12', viewBox: '0 0 12 12', fill: 'none',
|
|
16397
16385
|
}, React$1.createElement('path', {
|
|
16398
|
-
d: '
|
|
16399
|
-
stroke:
|
|
16386
|
+
d: 'M11 1L1 11M1 1l10 10',
|
|
16387
|
+
stroke: subTextColor, strokeWidth: '1.75', strokeLinecap: 'round',
|
|
16400
16388
|
}))),
|
|
16401
16389
|
// App icon (if provided)
|
|
16402
16390
|
that.config.appIcon ? React$1.createElement('div', {
|
|
@@ -16404,27 +16392,40 @@ class PhantomWalletProvider {
|
|
|
16404
16392
|
}, React$1.createElement('img', {
|
|
16405
16393
|
src: that.config.appIcon,
|
|
16406
16394
|
alt: that.config.appName || 'App',
|
|
16407
|
-
style: { width: '
|
|
16395
|
+
style: { width: '44px', height: '44px', borderRadius: '10px' },
|
|
16408
16396
|
})) : null,
|
|
16409
16397
|
// Title
|
|
16410
16398
|
React$1.createElement('div', {
|
|
16411
16399
|
style: {
|
|
16412
16400
|
color: textColor,
|
|
16413
16401
|
fontFamily,
|
|
16414
|
-
fontSize: '
|
|
16402
|
+
fontSize: '17px',
|
|
16415
16403
|
fontWeight: '600',
|
|
16416
16404
|
textAlign: 'center',
|
|
16405
|
+
marginBottom: '6px',
|
|
16406
|
+
letterSpacing: '-0.2px',
|
|
16407
|
+
},
|
|
16408
|
+
}, (_f = (_e = (_d = that.loginOverrides) === null || _d === void 0 ? void 0 : _d.modalTitle) !== null && _e !== void 0 ? _e : that.config.modalTitle) !== null && _f !== void 0 ? _f : (that.config.appName ? `Log in to ${that.config.appName}` : 'Log in to your account')),
|
|
16409
|
+
// Subtitle
|
|
16410
|
+
React$1.createElement('div', {
|
|
16411
|
+
style: {
|
|
16412
|
+
color: subTextColor,
|
|
16413
|
+
fontFamily,
|
|
16414
|
+
fontSize: '13px',
|
|
16415
|
+
fontWeight: '400',
|
|
16416
|
+
textAlign: 'center',
|
|
16417
16417
|
marginBottom: '24px',
|
|
16418
|
+
lineHeight: '1.4',
|
|
16418
16419
|
},
|
|
16419
|
-
}, '
|
|
16420
|
-
//
|
|
16420
|
+
}, (_j = (_h = (_g = that.loginOverrides) === null || _g === void 0 ? void 0 : _g.modalSubtitle) !== null && _h !== void 0 ? _h : that.config.modalSubtitle) !== null && _j !== void 0 ? _j : 'Choose how you\'d like to continue'),
|
|
16421
|
+
// Main buttons + OR divider + email button
|
|
16421
16422
|
React$1.createElement('div', {
|
|
16422
16423
|
style: {
|
|
16423
16424
|
display: 'flex',
|
|
16424
16425
|
flexDirection: 'column',
|
|
16425
16426
|
gap: '8px',
|
|
16426
16427
|
},
|
|
16427
|
-
}, ...
|
|
16428
|
+
}, ...mainButtons, orDivider, emailButton)));
|
|
16428
16429
|
};
|
|
16429
16430
|
// Wrapper component with PhantomProvider
|
|
16430
16431
|
const PhantomProviderWrapper = () => {
|
|
@@ -16457,13 +16458,6 @@ class PhantomWalletProvider {
|
|
|
16457
16458
|
if (this.initPromise) {
|
|
16458
16459
|
await this.initPromise;
|
|
16459
16460
|
}
|
|
16460
|
-
// Lazy-mount path: if initializeAsync deferred the React mount (e.g.
|
|
16461
|
-
// first-time visitor on Android Chrome PWA), do it now. We're being
|
|
16462
|
-
// called from a user-gesture flow like login(), so any Android intent
|
|
16463
|
-
// dialog that surfaces will appear with the activity already focused.
|
|
16464
|
-
if (!this.containerElement) {
|
|
16465
|
-
this.initialize();
|
|
16466
|
-
}
|
|
16467
16461
|
// Wait for SDK to be ready
|
|
16468
16462
|
await new Promise((resolve) => {
|
|
16469
16463
|
const check = () => {
|
|
@@ -16557,7 +16551,7 @@ class PhantomWalletProvider {
|
|
|
16557
16551
|
this.pendingLogin.reject = reject;
|
|
16558
16552
|
});
|
|
16559
16553
|
}
|
|
16560
|
-
|
|
16554
|
+
const loginPromise = new Promise((resolve, reject) => {
|
|
16561
16555
|
this.pendingLogin = { resolve, reject };
|
|
16562
16556
|
this.loginInProgress = true;
|
|
16563
16557
|
// Always use our custom wallet modal
|
|
@@ -16571,55 +16565,17 @@ class PhantomWalletProvider {
|
|
|
16571
16565
|
}
|
|
16572
16566
|
}, 180000);
|
|
16573
16567
|
});
|
|
16568
|
+
return loginPromise.finally(() => {
|
|
16569
|
+
this.loginOverrides = null;
|
|
16570
|
+
});
|
|
16574
16571
|
}
|
|
16575
16572
|
async restoreSession() {
|
|
16576
|
-
|
|
16577
|
-
|
|
16578
|
-
|
|
16579
|
-
|
|
16580
|
-
// before the PWA activity has window focus on Solana Seeker. The
|
|
16581
|
-
// resulting "access other apps and services" system dialog renders
|
|
16582
|
-
// with grayed-out buttons.
|
|
16583
|
-
//
|
|
16584
|
-
// Wrap getSession() in try/catch: WebSessionManager.getSession() runs
|
|
16585
|
-
// JSON.parse on the stored session *outside* its internal try/catch,
|
|
16586
|
-
// so genuinely malformed JSON in localStorage would propagate through
|
|
16587
|
-
// restoreSession() and break init() entirely. Treat any throw as
|
|
16588
|
-
// "no session" and fall through to the cleanup path so corrupted
|
|
16589
|
-
// storage is recoverable on next load.
|
|
16590
|
-
let session;
|
|
16591
|
-
try {
|
|
16592
|
-
session = await WebSessionManager.getSession();
|
|
16593
|
-
}
|
|
16594
|
-
catch (_a) {
|
|
16595
|
-
session = null;
|
|
16596
|
-
}
|
|
16597
|
-
if (!session) {
|
|
16598
|
-
// Tidy up storage so we don't leave junk behind:
|
|
16599
|
-
// (a) clearSession() removes any stale or unparseable session
|
|
16600
|
-
// storage entry. WebSessionManager.getSession() can't reach
|
|
16601
|
-
// its own clearSession() if JSON.parse threw. Idempotent —
|
|
16602
|
-
// safe to call unconditionally here.
|
|
16603
|
-
// (b) Drop the auth-method marker if it's stale.
|
|
16604
|
-
// WebSessionManager.clearSession() only removes the session
|
|
16605
|
-
// storage key, not the marker — so without this cleanup
|
|
16606
|
-
// shouldMountEagerly() would keep eager-mounting on every
|
|
16607
|
-
// future cold start.
|
|
16608
|
-
try {
|
|
16609
|
-
WebSessionManager.clearSession();
|
|
16610
|
-
}
|
|
16611
|
-
catch ( /* best-effort */_b) { /* best-effort */ }
|
|
16612
|
-
try {
|
|
16613
|
-
if (getPlatform().storage.getItem('tarobase_last_auth_method') === 'phantom') {
|
|
16614
|
-
getPlatform().storage.removeItem('tarobase_last_auth_method');
|
|
16615
|
-
}
|
|
16616
|
-
}
|
|
16617
|
-
catch (_c) {
|
|
16618
|
-
// storage unavailable — best-effort cleanup
|
|
16619
|
-
}
|
|
16620
|
-
return null;
|
|
16573
|
+
await this.ensureReady();
|
|
16574
|
+
const session = await WebSessionManager.getSession();
|
|
16575
|
+
if (session) {
|
|
16576
|
+
return { provider: this, address: session.address };
|
|
16621
16577
|
}
|
|
16622
|
-
return
|
|
16578
|
+
return null;
|
|
16623
16579
|
}
|
|
16624
16580
|
async address() {
|
|
16625
16581
|
var _a, _b, _c, _d;
|
|
@@ -20110,137 +20066,161 @@ function createSolanaRpcSubscriptionsFromTransport(transport) {
|
|
|
20110
20066
|
});
|
|
20111
20067
|
}
|
|
20112
20068
|
|
|
20113
|
-
|
|
20114
|
-
|
|
20115
|
-
|
|
20116
|
-
|
|
20117
|
-
|
|
20118
|
-
|
|
20119
|
-
|
|
20120
|
-
|
|
20121
|
-
|
|
20122
|
-
|
|
20123
|
-
|
|
20124
|
-
|
|
20125
|
-
|
|
20126
|
-
|
|
20127
|
-
|
|
20128
|
-
|
|
20129
|
-
|
|
20130
|
-
|
|
20131
|
-
|
|
20132
|
-
|
|
20133
|
-
|
|
20134
|
-
|
|
20135
|
-
|
|
20136
|
-
|
|
20137
|
-
|
|
20138
|
-
|
|
20139
|
-
|
|
20140
|
-
|
|
20141
|
-
|
|
20142
|
-
|
|
20143
|
-
|
|
20144
|
-
|
|
20145
|
-
|
|
20146
|
-
|
|
20147
|
-
|
|
20148
|
-
|
|
20149
|
-
|
|
20150
|
-
|
|
20151
|
-
|
|
20152
|
-
|
|
20153
|
-
|
|
20154
|
-
|
|
20155
|
-
|
|
20156
|
-
|
|
20157
|
-
|
|
20158
|
-
|
|
20159
|
-
|
|
20160
|
-
|
|
20161
|
-
|
|
20162
|
-
|
|
20163
|
-
|
|
20164
|
-
|
|
20165
|
-
|
|
20166
|
-
|
|
20167
|
-
|
|
20168
|
-
|
|
20169
|
-
|
|
20170
|
-
|
|
20171
|
-
|
|
20172
|
-
|
|
20173
|
-
|
|
20174
|
-
|
|
20175
|
-
|
|
20176
|
-
|
|
20177
|
-
|
|
20178
|
-
|
|
20179
|
-
|
|
20180
|
-
|
|
20181
|
-
|
|
20182
|
-
|
|
20183
|
-
|
|
20184
|
-
|
|
20185
|
-
|
|
20186
|
-
|
|
20187
|
-
|
|
20188
|
-
|
|
20189
|
-
|
|
20190
|
-
|
|
20191
|
-
|
|
20192
|
-
|
|
20193
|
-
|
|
20194
|
-
|
|
20195
|
-
|
|
20196
|
-
|
|
20197
|
-
|
|
20198
|
-
|
|
20199
|
-
|
|
20200
|
-
|
|
20201
|
-
|
|
20202
|
-
|
|
20203
|
-
|
|
20204
|
-
|
|
20205
|
-
|
|
20206
|
-
|
|
20207
|
-
|
|
20208
|
-
|
|
20209
|
-
|
|
20210
|
-
|
|
20211
|
-
|
|
20212
|
-
|
|
20213
|
-
|
|
20214
|
-
|
|
20215
|
-
|
|
20216
|
-
|
|
20217
|
-
|
|
20218
|
-
|
|
20219
|
-
|
|
20220
|
-
|
|
20221
|
-
|
|
20222
|
-
|
|
20223
|
-
|
|
20224
|
-
|
|
20225
|
-
|
|
20226
|
-
|
|
20227
|
-
|
|
20228
|
-
|
|
20229
|
-
|
|
20230
|
-
|
|
20231
|
-
|
|
20232
|
-
|
|
20233
|
-
|
|
20234
|
-
|
|
20069
|
+
var cjs = {};
|
|
20070
|
+
|
|
20071
|
+
var hasRequiredCjs;
|
|
20072
|
+
|
|
20073
|
+
function requireCjs () {
|
|
20074
|
+
if (hasRequiredCjs) return cjs;
|
|
20075
|
+
hasRequiredCjs = 1;
|
|
20076
|
+
// base-x encoding / decoding
|
|
20077
|
+
// Copyright (c) 2018 base-x contributors
|
|
20078
|
+
// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
|
|
20079
|
+
// Distributed under the MIT software license, see the accompanying
|
|
20080
|
+
// file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
|
20081
|
+
Object.defineProperty(cjs, '__esModule', { value: true });
|
|
20082
|
+
function base (ALPHABET) {
|
|
20083
|
+
if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
|
|
20084
|
+
const BASE_MAP = new Uint8Array(256);
|
|
20085
|
+
for (let j = 0; j < BASE_MAP.length; j++) {
|
|
20086
|
+
BASE_MAP[j] = 255;
|
|
20087
|
+
}
|
|
20088
|
+
for (let i = 0; i < ALPHABET.length; i++) {
|
|
20089
|
+
const x = ALPHABET.charAt(i);
|
|
20090
|
+
const xc = x.charCodeAt(0);
|
|
20091
|
+
if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }
|
|
20092
|
+
BASE_MAP[xc] = i;
|
|
20093
|
+
}
|
|
20094
|
+
const BASE = ALPHABET.length;
|
|
20095
|
+
const LEADER = ALPHABET.charAt(0);
|
|
20096
|
+
const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
|
|
20097
|
+
const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
|
|
20098
|
+
function encode (source) {
|
|
20099
|
+
// eslint-disable-next-line no-empty
|
|
20100
|
+
if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {
|
|
20101
|
+
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
|
20102
|
+
} else if (Array.isArray(source)) {
|
|
20103
|
+
source = Uint8Array.from(source);
|
|
20104
|
+
}
|
|
20105
|
+
if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }
|
|
20106
|
+
if (source.length === 0) { return '' }
|
|
20107
|
+
// Skip & count leading zeroes.
|
|
20108
|
+
let zeroes = 0;
|
|
20109
|
+
let length = 0;
|
|
20110
|
+
let pbegin = 0;
|
|
20111
|
+
const pend = source.length;
|
|
20112
|
+
while (pbegin !== pend && source[pbegin] === 0) {
|
|
20113
|
+
pbegin++;
|
|
20114
|
+
zeroes++;
|
|
20115
|
+
}
|
|
20116
|
+
// Allocate enough space in big-endian base58 representation.
|
|
20117
|
+
const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
|
|
20118
|
+
const b58 = new Uint8Array(size);
|
|
20119
|
+
// Process the bytes.
|
|
20120
|
+
while (pbegin !== pend) {
|
|
20121
|
+
let carry = source[pbegin];
|
|
20122
|
+
// Apply "b58 = b58 * 256 + ch".
|
|
20123
|
+
let i = 0;
|
|
20124
|
+
for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
|
|
20125
|
+
carry += (256 * b58[it1]) >>> 0;
|
|
20126
|
+
b58[it1] = (carry % BASE) >>> 0;
|
|
20127
|
+
carry = (carry / BASE) >>> 0;
|
|
20128
|
+
}
|
|
20129
|
+
if (carry !== 0) { throw new Error('Non-zero carry') }
|
|
20130
|
+
length = i;
|
|
20131
|
+
pbegin++;
|
|
20132
|
+
}
|
|
20133
|
+
// Skip leading zeroes in base58 result.
|
|
20134
|
+
let it2 = size - length;
|
|
20135
|
+
while (it2 !== size && b58[it2] === 0) {
|
|
20136
|
+
it2++;
|
|
20137
|
+
}
|
|
20138
|
+
// Translate the result into a string.
|
|
20139
|
+
let str = LEADER.repeat(zeroes);
|
|
20140
|
+
for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }
|
|
20141
|
+
return str
|
|
20142
|
+
}
|
|
20143
|
+
function decodeUnsafe (source) {
|
|
20144
|
+
if (typeof source !== 'string') { throw new TypeError('Expected String') }
|
|
20145
|
+
if (source.length === 0) { return new Uint8Array() }
|
|
20146
|
+
let psz = 0;
|
|
20147
|
+
// Skip and count leading '1's.
|
|
20148
|
+
let zeroes = 0;
|
|
20149
|
+
let length = 0;
|
|
20150
|
+
while (source[psz] === LEADER) {
|
|
20151
|
+
zeroes++;
|
|
20152
|
+
psz++;
|
|
20153
|
+
}
|
|
20154
|
+
// Allocate enough space in big-endian base256 representation.
|
|
20155
|
+
const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
|
|
20156
|
+
const b256 = new Uint8Array(size);
|
|
20157
|
+
// Process the characters.
|
|
20158
|
+
while (psz < source.length) {
|
|
20159
|
+
// Find code of next character
|
|
20160
|
+
const charCode = source.charCodeAt(psz);
|
|
20161
|
+
// Base map can not be indexed using char code
|
|
20162
|
+
if (charCode > 255) { return }
|
|
20163
|
+
// Decode character
|
|
20164
|
+
let carry = BASE_MAP[charCode];
|
|
20165
|
+
// Invalid character
|
|
20166
|
+
if (carry === 255) { return }
|
|
20167
|
+
let i = 0;
|
|
20168
|
+
for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
|
|
20169
|
+
carry += (BASE * b256[it3]) >>> 0;
|
|
20170
|
+
b256[it3] = (carry % 256) >>> 0;
|
|
20171
|
+
carry = (carry / 256) >>> 0;
|
|
20172
|
+
}
|
|
20173
|
+
if (carry !== 0) { throw new Error('Non-zero carry') }
|
|
20174
|
+
length = i;
|
|
20175
|
+
psz++;
|
|
20176
|
+
}
|
|
20177
|
+
// Skip leading zeroes in b256.
|
|
20178
|
+
let it4 = size - length;
|
|
20179
|
+
while (it4 !== size && b256[it4] === 0) {
|
|
20180
|
+
it4++;
|
|
20181
|
+
}
|
|
20182
|
+
const vch = new Uint8Array(zeroes + (size - it4));
|
|
20183
|
+
let j = zeroes;
|
|
20184
|
+
while (it4 !== size) {
|
|
20185
|
+
vch[j++] = b256[it4++];
|
|
20186
|
+
}
|
|
20187
|
+
return vch
|
|
20188
|
+
}
|
|
20189
|
+
function decode (string) {
|
|
20190
|
+
const buffer = decodeUnsafe(string);
|
|
20191
|
+
if (buffer) { return buffer }
|
|
20192
|
+
throw new Error('Non-base' + BASE + ' character')
|
|
20193
|
+
}
|
|
20194
|
+
return {
|
|
20195
|
+
encode,
|
|
20196
|
+
decodeUnsafe,
|
|
20197
|
+
decode
|
|
20198
|
+
}
|
|
20199
|
+
}
|
|
20200
|
+
cjs.default = base;
|
|
20201
|
+
return cjs;
|
|
20202
|
+
}
|
|
20203
|
+
|
|
20204
|
+
var bs58;
|
|
20205
|
+
var hasRequiredBs58;
|
|
20206
|
+
|
|
20207
|
+
function requireBs58 () {
|
|
20208
|
+
if (hasRequiredBs58) return bs58;
|
|
20209
|
+
hasRequiredBs58 = 1;
|
|
20210
|
+
var basex = requireCjs();
|
|
20211
|
+
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
20212
|
+
|
|
20213
|
+
bs58 = basex(ALPHABET);
|
|
20214
|
+
return bs58;
|
|
20235
20215
|
}
|
|
20236
20216
|
|
|
20237
|
-
var
|
|
20238
|
-
var
|
|
20217
|
+
var bs58Exports = requireBs58();
|
|
20218
|
+
var base58 = /*@__PURE__*/getDefaultExportFromCjs$1(bs58Exports);
|
|
20239
20219
|
|
|
20240
|
-
var index = /*#__PURE__*/
|
|
20220
|
+
var index = /*#__PURE__*/_mergeNamespaces({
|
|
20241
20221
|
__proto__: null,
|
|
20242
|
-
default:
|
|
20243
|
-
});
|
|
20222
|
+
default: base58
|
|
20223
|
+
}, [bs58Exports]);
|
|
20244
20224
|
|
|
20245
20225
|
const SURFNET_RPC_URL$1 = "https://surfpool.fly.dev";
|
|
20246
20226
|
let React;
|
|
@@ -20974,7 +20954,7 @@ class PrivyWalletProvider {
|
|
|
20974
20954
|
// Handle case where signature might be bytes instead of string
|
|
20975
20955
|
const rawSig = result.signature;
|
|
20976
20956
|
if (rawSig instanceof Uint8Array || Array.isArray(rawSig)) {
|
|
20977
|
-
signature =
|
|
20957
|
+
signature = base58.encode(rawSig instanceof Uint8Array ? rawSig : new Uint8Array(rawSig));
|
|
20978
20958
|
}
|
|
20979
20959
|
else {
|
|
20980
20960
|
signature = rawSig;
|
|
@@ -21142,46 +21122,6 @@ function isMobileWalletAvailable() {
|
|
|
21142
21122
|
return detectAndroid();
|
|
21143
21123
|
}
|
|
21144
21124
|
const ED25519_SIGNATURE_LENGTH = 64;
|
|
21145
|
-
/**
|
|
21146
|
-
* On Android Chrome PWA (e.g. Solana Seeker in standalone mode), MWA's
|
|
21147
|
-
* transact() opens a WebSocket to ws://localhost:<port>/solana-wallet to
|
|
21148
|
-
* handshake with the wallet app on the device. Chrome guards localhost
|
|
21149
|
-
* connections behind the Local Network Access ("Apps on Device") permission
|
|
21150
|
-
* dialog. The dialog inherits the activity's window-focus state at spawn
|
|
21151
|
-
* time — so if focus is in transit (e.g. just after a Phantom-modal close
|
|
21152
|
-
* triggers a React commit), the dialog renders with grayed-out Allow/Block
|
|
21153
|
-
* buttons and only becomes interactive after a manual background→resume
|
|
21154
|
-
* (which forces an onPause→onResume cycle on the activity).
|
|
21155
|
-
*
|
|
21156
|
-
* Wait for window focus to settle, then yield one frame, before opening
|
|
21157
|
-
* the WebSocket. This makes the system dialog spawn into a focused activity
|
|
21158
|
-
* so its buttons are immediately tappable.
|
|
21159
|
-
*/
|
|
21160
|
-
async function awaitActivityFocus() {
|
|
21161
|
-
if (typeof document === 'undefined' || typeof window === 'undefined')
|
|
21162
|
-
return;
|
|
21163
|
-
if (!document.hasFocus()) {
|
|
21164
|
-
await new Promise((resolve) => {
|
|
21165
|
-
const onFocus = () => {
|
|
21166
|
-
window.removeEventListener('focus', onFocus);
|
|
21167
|
-
resolve();
|
|
21168
|
-
};
|
|
21169
|
-
window.addEventListener('focus', onFocus);
|
|
21170
|
-
// Fallback in case the focus event never fires (e.g. activity
|
|
21171
|
-
// already focused but document.hasFocus() momentarily lies during
|
|
21172
|
-
// a React commit). 600ms is a perceptual ceiling — beyond this
|
|
21173
|
-
// the user notices a stall, so we'd rather take the focus race
|
|
21174
|
-
// than block forever.
|
|
21175
|
-
setTimeout(() => {
|
|
21176
|
-
window.removeEventListener('focus', onFocus);
|
|
21177
|
-
resolve();
|
|
21178
|
-
}, 600);
|
|
21179
|
-
});
|
|
21180
|
-
}
|
|
21181
|
-
// Yield to next paint so any pending React commits / focus changes have
|
|
21182
|
-
// flushed before the WebSocket open spawns the system dialog.
|
|
21183
|
-
await new Promise((r) => requestAnimationFrame(() => r()));
|
|
21184
|
-
}
|
|
21185
21125
|
// Dynamically imported MWA protocol module
|
|
21186
21126
|
let mwaProtocolModule = null;
|
|
21187
21127
|
let mwaProtocolLoadPromise = null;
|
|
@@ -21194,7 +21134,7 @@ async function loadMwaProtocol() {
|
|
|
21194
21134
|
return mwaProtocolLoadPromise;
|
|
21195
21135
|
mwaProtocolLoadPromise = (async () => {
|
|
21196
21136
|
try {
|
|
21197
|
-
mwaProtocolModule = await import('./index.browser-
|
|
21137
|
+
mwaProtocolModule = await import('./index.browser-pE1s68e9.esm.js');
|
|
21198
21138
|
}
|
|
21199
21139
|
catch (e) {
|
|
21200
21140
|
console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');
|
|
@@ -21216,7 +21156,7 @@ async function registerMobileWalletAdapter(config) {
|
|
|
21216
21156
|
if (typeof window === 'undefined')
|
|
21217
21157
|
return;
|
|
21218
21158
|
try {
|
|
21219
|
-
const walletStandardMobile = await import('./index.browser-
|
|
21159
|
+
const walletStandardMobile = await import('./index.browser-BNdFfyIg.esm.js');
|
|
21220
21160
|
const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);
|
|
21221
21161
|
if (!registerMwa) {
|
|
21222
21162
|
console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');
|
|
@@ -21360,7 +21300,6 @@ class SolanaMobileWalletProvider {
|
|
|
21360
21300
|
}
|
|
21361
21301
|
// Pre-fetch nonce from server while wallet is not yet connected
|
|
21362
21302
|
const nonce = await genAuthNonce();
|
|
21363
|
-
await awaitActivityFocus();
|
|
21364
21303
|
// Single transact() call: authorize + signMessages — one wallet popup
|
|
21365
21304
|
const result = await transact(async (wallet) => {
|
|
21366
21305
|
// Step 1: Authorize — user approves the dApp
|
|
@@ -21449,7 +21388,6 @@ class SolanaMobileWalletProvider {
|
|
|
21449
21388
|
await loadMwaProtocol();
|
|
21450
21389
|
const { transact } = mwaProtocolModule;
|
|
21451
21390
|
const authToken = this.authToken;
|
|
21452
|
-
await awaitActivityFocus();
|
|
21453
21391
|
await transact(async (wallet) => {
|
|
21454
21392
|
await wallet.deauthorize({ auth_token: authToken });
|
|
21455
21393
|
}, this.getAssociationConfig());
|
|
@@ -21475,7 +21413,6 @@ class SolanaMobileWalletProvider {
|
|
|
21475
21413
|
const { transact } = mwaProtocolModule;
|
|
21476
21414
|
const base64Addr = this.base64Address;
|
|
21477
21415
|
try {
|
|
21478
|
-
await awaitActivityFocus();
|
|
21479
21416
|
const signedMessages = await transact(async (wallet) => {
|
|
21480
21417
|
await this.reauthorizeWallet(wallet);
|
|
21481
21418
|
const messageBytes = getPlatform().textEncode(message);
|
|
@@ -21529,7 +21466,6 @@ class SolanaMobileWalletProvider {
|
|
|
21529
21466
|
}
|
|
21530
21467
|
}
|
|
21531
21468
|
try {
|
|
21532
|
-
await awaitActivityFocus();
|
|
21533
21469
|
const signedTransactions = await transact(async (wallet) => {
|
|
21534
21470
|
await this.reauthorizeWallet(wallet);
|
|
21535
21471
|
return wallet.signTransactions({ transactions: [transaction] });
|
|
@@ -21577,7 +21513,6 @@ class SolanaMobileWalletProvider {
|
|
|
21577
21513
|
}
|
|
21578
21514
|
if (isSurfnet) {
|
|
21579
21515
|
// Surfnet: sign-only, then submit to our specific RPC
|
|
21580
|
-
await awaitActivityFocus();
|
|
21581
21516
|
const signedTransactions = await transact(async (wallet) => {
|
|
21582
21517
|
await this.reauthorizeWallet(wallet);
|
|
21583
21518
|
return wallet.signTransactions({ transactions: [transaction] });
|
|
@@ -21597,7 +21532,6 @@ class SolanaMobileWalletProvider {
|
|
|
21597
21532
|
return signature;
|
|
21598
21533
|
}
|
|
21599
21534
|
// Non-surfnet: use signAndSendTransactions for wallet-optimized submission
|
|
21600
|
-
await awaitActivityFocus();
|
|
21601
21535
|
const signatures = await transact(async (wallet) => {
|
|
21602
21536
|
await this.reauthorizeWallet(wallet);
|
|
21603
21537
|
return wallet.signAndSendTransactions({
|
|
@@ -21681,7 +21615,6 @@ class SolanaMobileWalletProvider {
|
|
|
21681
21615
|
tx = result.tx;
|
|
21682
21616
|
}
|
|
21683
21617
|
if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
|
|
21684
|
-
await awaitActivityFocus();
|
|
21685
21618
|
const [signedTx] = await transact(async (wallet) => {
|
|
21686
21619
|
await this.reauthorizeWallet(wallet);
|
|
21687
21620
|
return wallet.signTransactions({ transactions: [tx] });
|
|
@@ -21695,7 +21628,6 @@ class SolanaMobileWalletProvider {
|
|
|
21695
21628
|
}
|
|
21696
21629
|
if (isSurfnet) {
|
|
21697
21630
|
// Surfnet: sign then submit manually to our RPC
|
|
21698
|
-
await awaitActivityFocus();
|
|
21699
21631
|
const [signedTx] = await transact(async (wallet) => {
|
|
21700
21632
|
await this.reauthorizeWallet(wallet);
|
|
21701
21633
|
return wallet.signTransactions({ transactions: [tx] });
|
|
@@ -21724,7 +21656,6 @@ class SolanaMobileWalletProvider {
|
|
|
21724
21656
|
};
|
|
21725
21657
|
}
|
|
21726
21658
|
// Non-surfnet: use signAndSendTransactions
|
|
21727
|
-
await awaitActivityFocus();
|
|
21728
21659
|
const signatures = await transact(async (wallet) => {
|
|
21729
21660
|
await this.reauthorizeWallet(wallet);
|
|
21730
21661
|
return wallet.signAndSendTransactions({
|
|
@@ -21978,7 +21909,7 @@ class PrivyExpoProvider {
|
|
|
21978
21909
|
const wallet = await this.getWalletOrThrow();
|
|
21979
21910
|
const messageBytes = getPlatform().textEncode(message);
|
|
21980
21911
|
const result = await wallet.signMessage(messageBytes);
|
|
21981
|
-
return
|
|
21912
|
+
return base58.encode(result.signature);
|
|
21982
21913
|
}
|
|
21983
21914
|
async signTransaction(transaction) {
|
|
21984
21915
|
await this.ensureReady();
|
|
@@ -22133,5 +22064,5 @@ class PrivyExpoProvider {
|
|
|
22133
22064
|
}
|
|
22134
22065
|
}
|
|
22135
22066
|
|
|
22136
|
-
export {
|
|
22137
|
-
//# sourceMappingURL=index-
|
|
22067
|
+
export { genAuthNonce as $, count as A, aggregate as B, subscribe as C, useAuth as D, deserializeTransaction as E, getIdToken as F, setPlatform as G, getPlatform as H, PrivyWalletProvider as I, DEFAULT_TEST_ADDRESS as J, isMobileWalletAvailable as K, registerMobileWalletAdapter as L, MockAuthProvider as M, PrivyExpoProvider as N, OffchainAuthProvider as O, PhantomWalletProvider as P, InsufficientBalanceError as Q, ReactNativeSessionManager as R, SolanaMobileWalletProvider as S, ServerSessionManager as T, buildSetDocumentsTransaction as U, clearCache as V, WebSessionManager as W, closeAllSubscriptions as X, convertRemainingAccounts as Y, createSessionWithPrivy as Z, createSessionWithSignature as _, base58 as a, genSolanaMessage as a0, getCachedData as a1, getMany as a2, reconnectWithNewAuth as a3, refreshSession as a4, signSessionCreateMessage as a5, bufferExports as b, commonjsRequire as c, getCurrentUser as d, onAuthLoadingChanged as e, getAuthLoading as f, getDefaultExportFromCjs$1 as g, logout as h, init as i, getConfig as j, getAuthProvider as k, login as l, get as m, setMany as n, onAuthStateChanged as o, setFile as p, getFiles as q, require$$0 as r, set as s, runQuery as t, runQueryMany as u, runExpression as v, runExpressionMany as w, signMessage as x, signTransaction as y, signAndSubmitTransaction as z };
|
|
22068
|
+
//# sourceMappingURL=index-nt_HQVrk.esm.js.map
|