FRE-600: Fix code review blockers

- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-25 00:08:01 -04:00
parent 65b552bb08
commit 7c684a42cc
48450 changed files with 5679671 additions and 383 deletions

View File

@@ -0,0 +1,45 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConnectionProvider = void 0;
const web3_js_1 = require("@solana/web3.js");
const react_1 = __importStar(require("react"));
const useConnection_js_1 = require("./useConnection.js");
const ConnectionProvider = ({ children, endpoint, config = { commitment: 'confirmed' }, }) => {
const connection = (0, react_1.useMemo)(() => new web3_js_1.Connection(endpoint, config), [endpoint, config]);
return react_1.default.createElement(useConnection_js_1.ConnectionContext.Provider, { value: { connection } }, children);
};
exports.ConnectionProvider = ConnectionProvider;
//# sourceMappingURL=ConnectionProvider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ConnectionProvider.js","sourceRoot":"","sources":["../../src/ConnectionProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAoE;AACpE,+CAAgE;AAChE,yDAAuD;AAQhD,MAAM,kBAAkB,GAAgC,CAAC,EAC5D,QAAQ,EACR,QAAQ,EACR,MAAM,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,GACvC,EAAE,EAAE;IACD,MAAM,UAAU,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,oBAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvF,OAAO,8BAAC,oCAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAG,QAAQ,CAA8B,CAAC;AACtG,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B"}

View File

@@ -0,0 +1,179 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WalletProvider = WalletProvider;
const wallet_adapter_mobile_1 = require("@solana-mobile/wallet-adapter-mobile");
const wallet_standard_wallet_adapter_react_1 = require("@solana/wallet-standard-wallet-adapter-react");
const react_1 = __importStar(require("react"));
const getEnvironment_js_1 = __importStar(require("./getEnvironment.js"));
const getInferredClusterFromEndpoint_js_1 = __importDefault(require("./getInferredClusterFromEndpoint.js"));
const useConnection_js_1 = require("./useConnection.js");
const useLocalStorage_js_1 = require("./useLocalStorage.js");
const WalletProviderBase_js_1 = require("./WalletProviderBase.js");
let _userAgent;
function getUserAgent() {
var _a, _b;
if (_userAgent === undefined) {
_userAgent = (_b = (_a = globalThis.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) !== null && _b !== void 0 ? _b : null;
}
return _userAgent;
}
function getIsMobile(adapters) {
const userAgentString = getUserAgent();
return (0, getEnvironment_js_1.default)({ adapters, userAgentString }) === getEnvironment_js_1.Environment.MOBILE_WEB;
}
function getUriForAppIdentity() {
const location = globalThis.location;
if (!location)
return;
return `${location.protocol}//${location.host}`;
}
function WalletProvider({ children, wallets: adapters, autoConnect, localStorageKey = 'walletName', onError, }) {
const { connection } = (0, useConnection_js_1.useConnection)();
const adaptersWithStandardAdapters = (0, wallet_standard_wallet_adapter_react_1.useStandardWalletAdapters)(adapters);
const mobileWalletAdapter = (0, react_1.useMemo)(() => {
if (!getIsMobile(adaptersWithStandardAdapters)) {
return null;
}
const existingMobileWalletAdapter = adaptersWithStandardAdapters.find((adapter) => adapter.name === wallet_adapter_mobile_1.SolanaMobileWalletAdapterWalletName);
if (existingMobileWalletAdapter) {
return existingMobileWalletAdapter;
}
return new wallet_adapter_mobile_1.SolanaMobileWalletAdapter({
addressSelector: (0, wallet_adapter_mobile_1.createDefaultAddressSelector)(),
appIdentity: {
uri: getUriForAppIdentity(),
},
authorizationResultCache: (0, wallet_adapter_mobile_1.createDefaultAuthorizationResultCache)(),
cluster: (0, getInferredClusterFromEndpoint_js_1.default)(connection === null || connection === void 0 ? void 0 : connection.rpcEndpoint),
onWalletNotFound: (0, wallet_adapter_mobile_1.createDefaultWalletNotFoundHandler)(),
});
}, [adaptersWithStandardAdapters, connection === null || connection === void 0 ? void 0 : connection.rpcEndpoint]);
const adaptersWithMobileWalletAdapter = (0, react_1.useMemo)(() => {
if (mobileWalletAdapter == null || adaptersWithStandardAdapters.indexOf(mobileWalletAdapter) !== -1) {
return adaptersWithStandardAdapters;
}
return [mobileWalletAdapter, ...adaptersWithStandardAdapters];
}, [adaptersWithStandardAdapters, mobileWalletAdapter]);
const [walletName, setWalletName] = (0, useLocalStorage_js_1.useLocalStorage)(localStorageKey, null);
const adapter = (0, react_1.useMemo)(() => { var _a; return (_a = adaptersWithMobileWalletAdapter.find((a) => a.name === walletName)) !== null && _a !== void 0 ? _a : null; }, [adaptersWithMobileWalletAdapter, walletName]);
const changeWallet = (0, react_1.useCallback)((nextWalletName) => {
if (walletName === nextWalletName)
return;
if (adapter &&
// Selecting a wallet other than the mobile wallet adapter is not
// sufficient reason to call `disconnect` on the mobile wallet adapter.
// Calling `disconnect` on the mobile wallet adapter causes the entire
// authorization store to be wiped.
adapter.name !== wallet_adapter_mobile_1.SolanaMobileWalletAdapterWalletName) {
adapter.disconnect();
}
setWalletName(nextWalletName);
}, [adapter, setWalletName, walletName]);
(0, react_1.useEffect)(() => {
if (!adapter)
return;
function handleDisconnect() {
if (isUnloadingRef.current)
return;
setWalletName(null);
}
adapter.on('disconnect', handleDisconnect);
return () => {
adapter.off('disconnect', handleDisconnect);
};
}, [adapter, adaptersWithStandardAdapters, setWalletName, walletName]);
const hasUserSelectedAWallet = (0, react_1.useRef)(false);
const handleAutoConnectRequest = (0, react_1.useMemo)(() => {
if (!autoConnect || !adapter)
return;
return () => __awaiter(this, void 0, void 0, function* () {
// If autoConnect is true or returns true, use the default autoConnect behavior.
if (autoConnect === true || (yield autoConnect(adapter))) {
if (hasUserSelectedAWallet.current) {
yield adapter.connect();
}
else {
yield adapter.autoConnect();
}
}
});
}, [autoConnect, adapter]);
const isUnloadingRef = (0, react_1.useRef)(false);
(0, react_1.useEffect)(() => {
if (walletName === wallet_adapter_mobile_1.SolanaMobileWalletAdapterWalletName && getIsMobile(adaptersWithStandardAdapters)) {
isUnloadingRef.current = false;
return;
}
function handleBeforeUnload() {
isUnloadingRef.current = true;
}
/**
* Some wallets fire disconnection events when the window unloads. Since there's no way to
* distinguish between a disconnection event received because a user initiated it, and one
* that was received because they've closed the window, we have to track window unload
* events themselves. Downstream components use this information to decide whether to act
* upon or drop wallet events and errors.
*/
window.addEventListener('beforeunload', handleBeforeUnload);
return () => {
window.removeEventListener('beforeunload', handleBeforeUnload);
};
}, [adaptersWithStandardAdapters, walletName]);
const handleConnectError = (0, react_1.useCallback)(() => {
if (adapter) {
// If any error happens while connecting, unset the adapter.
changeWallet(null);
}
}, [adapter, changeWallet]);
const selectWallet = (0, react_1.useCallback)((walletName) => {
hasUserSelectedAWallet.current = true;
changeWallet(walletName);
}, [changeWallet]);
return (react_1.default.createElement(WalletProviderBase_js_1.WalletProviderBase, { wallets: adaptersWithMobileWalletAdapter, adapter: adapter, isUnloadingRef: isUnloadingRef, onAutoConnectRequest: handleAutoConnectRequest, onConnectError: handleConnectError, onError: onError, onSelectWallet: selectWallet }, children));
}
//# sourceMappingURL=WalletProvider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProvider.tsx"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,286 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WalletProviderBase = WalletProviderBase;
const wallet_adapter_base_1 = require("@solana/wallet-adapter-base");
const react_1 = __importStar(require("react"));
const errors_js_1 = require("./errors.js");
const useWallet_js_1 = require("./useWallet.js");
function WalletProviderBase({ children, wallets: adapters, adapter, isUnloadingRef, onAutoConnectRequest, onConnectError, onError, onSelectWallet, }) {
const isConnectingRef = (0, react_1.useRef)(false);
const [connecting, setConnecting] = (0, react_1.useState)(false);
const isDisconnectingRef = (0, react_1.useRef)(false);
const [disconnecting, setDisconnecting] = (0, react_1.useState)(false);
const [publicKey, setPublicKey] = (0, react_1.useState)(() => { var _a; return (_a = adapter === null || adapter === void 0 ? void 0 : adapter.publicKey) !== null && _a !== void 0 ? _a : null; });
const [connected, setConnected] = (0, react_1.useState)(() => { var _a; return (_a = adapter === null || adapter === void 0 ? void 0 : adapter.connected) !== null && _a !== void 0 ? _a : false; });
/**
* Store the error handlers as refs so that a change in the
* custom error handler does not recompute other dependencies.
*/
const onErrorRef = (0, react_1.useRef)(onError);
(0, react_1.useEffect)(() => {
onErrorRef.current = onError;
return () => {
onErrorRef.current = undefined;
};
}, [onError]);
const handleErrorRef = (0, react_1.useRef)((error, adapter) => {
if (!isUnloadingRef.current) {
if (onErrorRef.current) {
onErrorRef.current(error, adapter);
}
else {
console.error(error, adapter);
if (error instanceof wallet_adapter_base_1.WalletNotReadyError && typeof window !== 'undefined' && adapter) {
window.open(adapter.url, '_blank');
}
}
}
return error;
});
// Wrap adapters to conform to the `Wallet` interface
const [wallets, setWallets] = (0, react_1.useState)(() => adapters
.map((adapter) => ({
adapter,
readyState: adapter.readyState,
}))
.filter(({ readyState }) => readyState !== wallet_adapter_base_1.WalletReadyState.Unsupported));
// When the adapters change, start to listen for changes to their `readyState`
(0, react_1.useEffect)(() => {
// When the adapters change, wrap them to conform to the `Wallet` interface
setWallets((wallets) => adapters
.map((adapter, index) => {
const wallet = wallets[index];
// If the wallet hasn't changed, return the same instance
return wallet && wallet.adapter === adapter && wallet.readyState === adapter.readyState
? wallet
: {
adapter: adapter,
readyState: adapter.readyState,
};
})
.filter(({ readyState }) => readyState !== wallet_adapter_base_1.WalletReadyState.Unsupported));
function handleReadyStateChange(readyState) {
setWallets((prevWallets) => {
const index = prevWallets.findIndex(({ adapter }) => adapter === this);
if (index === -1)
return prevWallets;
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const { adapter } = prevWallets[index];
return [
...prevWallets.slice(0, index),
{ adapter, readyState },
...prevWallets.slice(index + 1),
].filter(({ readyState }) => readyState !== wallet_adapter_base_1.WalletReadyState.Unsupported);
});
}
adapters.forEach((adapter) => adapter.on('readyStateChange', handleReadyStateChange, adapter));
return () => {
adapters.forEach((adapter) => adapter.off('readyStateChange', handleReadyStateChange, adapter));
};
}, [adapter, adapters]);
const wallet = (0, react_1.useMemo)(() => { var _a; return (_a = wallets.find((wallet) => wallet.adapter === adapter)) !== null && _a !== void 0 ? _a : null; }, [adapter, wallets]);
// Setup and teardown event listeners when the adapter changes
(0, react_1.useEffect)(() => {
if (!adapter)
return;
const handleConnect = (publicKey) => {
setPublicKey(publicKey);
isConnectingRef.current = false;
setConnecting(false);
setConnected(true);
isDisconnectingRef.current = false;
setDisconnecting(false);
};
const handleDisconnect = () => {
if (isUnloadingRef.current)
return;
setPublicKey(null);
isConnectingRef.current = false;
setConnecting(false);
setConnected(false);
isDisconnectingRef.current = false;
setDisconnecting(false);
};
const handleError = (error) => {
handleErrorRef.current(error, adapter);
};
adapter.on('connect', handleConnect);
adapter.on('disconnect', handleDisconnect);
adapter.on('error', handleError);
return () => {
adapter.off('connect', handleConnect);
adapter.off('disconnect', handleDisconnect);
adapter.off('error', handleError);
handleDisconnect();
};
}, [adapter, isUnloadingRef]);
// When the adapter changes, clear the `autoConnect` tracking flag
const didAttemptAutoConnectRef = (0, react_1.useRef)(false);
(0, react_1.useEffect)(() => {
return () => {
didAttemptAutoConnectRef.current = false;
};
}, [adapter]);
// If auto-connect is enabled, request to connect when the adapter changes and is ready
(0, react_1.useEffect)(() => {
if (didAttemptAutoConnectRef.current ||
isConnectingRef.current ||
connected ||
!onAutoConnectRequest ||
!((wallet === null || wallet === void 0 ? void 0 : wallet.readyState) === wallet_adapter_base_1.WalletReadyState.Installed || (wallet === null || wallet === void 0 ? void 0 : wallet.readyState) === wallet_adapter_base_1.WalletReadyState.Loadable))
return;
isConnectingRef.current = true;
setConnecting(true);
didAttemptAutoConnectRef.current = true;
(function () {
return __awaiter(this, void 0, void 0, function* () {
try {
yield onAutoConnectRequest();
}
catch (_a) {
onConnectError();
// Drop the error. It will be caught by `handleError` anyway.
}
finally {
setConnecting(false);
isConnectingRef.current = false;
}
});
})();
}, [connected, onAutoConnectRequest, onConnectError, wallet]);
// Send a transaction using the provided connection
const sendTransaction = (0, react_1.useCallback)((transaction, connection, options) => __awaiter(this, void 0, void 0, function* () {
if (!adapter)
throw handleErrorRef.current(new errors_js_1.WalletNotSelectedError());
if (!connected)
throw handleErrorRef.current(new wallet_adapter_base_1.WalletNotConnectedError(), adapter);
return yield adapter.sendTransaction(transaction, connection, options);
}), [adapter, connected]);
// Sign a transaction if the wallet supports it
const signTransaction = (0, react_1.useMemo)(() => adapter && 'signTransaction' in adapter
? (transaction) => __awaiter(this, void 0, void 0, function* () {
if (!connected)
throw handleErrorRef.current(new wallet_adapter_base_1.WalletNotConnectedError(), adapter);
return yield adapter.signTransaction(transaction);
})
: undefined, [adapter, connected]);
// Sign multiple transactions if the wallet supports it
const signAllTransactions = (0, react_1.useMemo)(() => adapter && 'signAllTransactions' in adapter
? (transactions) => __awaiter(this, void 0, void 0, function* () {
if (!connected)
throw handleErrorRef.current(new wallet_adapter_base_1.WalletNotConnectedError(), adapter);
return yield adapter.signAllTransactions(transactions);
})
: undefined, [adapter, connected]);
// Sign an arbitrary message if the wallet supports it
const signMessage = (0, react_1.useMemo)(() => adapter && 'signMessage' in adapter
? (message) => __awaiter(this, void 0, void 0, function* () {
if (!connected)
throw handleErrorRef.current(new wallet_adapter_base_1.WalletNotConnectedError(), adapter);
return yield adapter.signMessage(message);
})
: undefined, [adapter, connected]);
// Sign in if the wallet supports it
const signIn = (0, react_1.useMemo)(() => adapter && 'signIn' in adapter
? (input) => __awaiter(this, void 0, void 0, function* () {
return yield adapter.signIn(input);
})
: undefined, [adapter]);
const handleConnect = (0, react_1.useCallback)(() => __awaiter(this, void 0, void 0, function* () {
if (isConnectingRef.current || isDisconnectingRef.current || (wallet === null || wallet === void 0 ? void 0 : wallet.adapter.connected))
return;
if (!wallet)
throw handleErrorRef.current(new errors_js_1.WalletNotSelectedError());
const { adapter, readyState } = wallet;
if (!(readyState === wallet_adapter_base_1.WalletReadyState.Installed || readyState === wallet_adapter_base_1.WalletReadyState.Loadable))
throw handleErrorRef.current(new wallet_adapter_base_1.WalletNotReadyError(), adapter);
isConnectingRef.current = true;
setConnecting(true);
try {
yield adapter.connect();
}
catch (e) {
onConnectError();
throw e;
}
finally {
setConnecting(false);
isConnectingRef.current = false;
}
}), [onConnectError, wallet]);
const handleDisconnect = (0, react_1.useCallback)(() => __awaiter(this, void 0, void 0, function* () {
if (isDisconnectingRef.current)
return;
if (!adapter)
return;
isDisconnectingRef.current = true;
setDisconnecting(true);
try {
yield adapter.disconnect();
}
finally {
setDisconnecting(false);
isDisconnectingRef.current = false;
}
}), [adapter]);
return (react_1.default.createElement(useWallet_js_1.WalletContext.Provider, { value: {
autoConnect: !!onAutoConnectRequest,
wallets,
wallet,
publicKey,
connected,
connecting,
disconnecting,
select: onSelectWallet,
connect: handleConnect,
disconnect: handleDisconnect,
sendTransaction,
signTransaction,
signAllTransactions,
signMessage,
signIn,
} }, children));
}
//# sourceMappingURL=WalletProviderBase.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = defineProperty;
function defineProperty(obj, prop, val) {
Object.defineProperty(obj, prop, val);
}
//# sourceMappingURL=defineProperty.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"defineProperty.js","sourceRoot":"","sources":["../../src/defineProperty.ts"],"names":[],"mappings":";;AAqBA,iCAMC;AAND,SAAwB,cAAc,CAClC,GAAQ,EACR,IAAS,EACT,GAAU;IAEV,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC"}

View File

@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WalletNotSelectedError = void 0;
const wallet_adapter_base_1 = require("@solana/wallet-adapter-base");
class WalletNotSelectedError extends wallet_adapter_base_1.WalletError {
constructor() {
super(...arguments);
this.name = 'WalletNotSelectedError';
}
}
exports.WalletNotSelectedError = WalletNotSelectedError;
//# sourceMappingURL=errors.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,qEAA0D;AAE1D,MAAa,sBAAuB,SAAQ,iCAAW;IAAvD;;QACI,SAAI,GAAG,wBAAwB,CAAC;IACpC,CAAC;CAAA;AAFD,wDAEC"}

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Environment = void 0;
exports.default = getEnvironment;
const wallet_adapter_mobile_1 = require("@solana-mobile/wallet-adapter-mobile");
const wallet_adapter_base_1 = require("@solana/wallet-adapter-base");
var Environment;
(function (Environment) {
Environment[Environment["DESKTOP_WEB"] = 0] = "DESKTOP_WEB";
Environment[Environment["MOBILE_WEB"] = 1] = "MOBILE_WEB";
})(Environment || (exports.Environment = Environment = {}));
function isWebView(userAgentString) {
return /(WebView|Version\/.+(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)|; wv\).+(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+))/i.test(userAgentString);
}
function getEnvironment({ adapters, userAgentString }) {
if (adapters.some((adapter) => adapter.name !== wallet_adapter_mobile_1.SolanaMobileWalletAdapterWalletName &&
adapter.readyState === wallet_adapter_base_1.WalletReadyState.Installed)) {
/**
* There are only two ways a browser extension adapter should be able to reach `Installed` status:
*
* 1. Its browser extension is installed.
* 2. The app is running on a mobile wallet's in-app browser.
*
* In either case, we consider the environment to be desktop-like.
*/
return Environment.DESKTOP_WEB;
}
if (userAgentString &&
// Step 1: Check whether we're on a platform that supports MWA at all.
/android/i.test(userAgentString) &&
// Step 2: Determine that we are *not* running in a WebView.
!isWebView(userAgentString)) {
return Environment.MOBILE_WEB;
}
else {
return Environment.DESKTOP_WEB;
}
}
//# sourceMappingURL=getEnvironment.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getEnvironment.js","sourceRoot":"","sources":["../../src/getEnvironment.ts"],"names":[],"mappings":";;;AAmBA,iCA6BC;AAhDD,gFAA2F;AAC3F,qEAA6E;AAE7E,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,2DAAW,CAAA;IACX,yDAAU,CAAA;AACd,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAOD,SAAS,SAAS,CAAC,eAAuB;IACtC,OAAO,yGAAyG,CAAC,IAAI,CACjH,eAAe,CAClB,CAAC;AACN,CAAC;AAED,SAAwB,cAAc,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAU;IACxE,IACI,QAAQ,CAAC,IAAI,CACT,CAAC,OAAO,EAAE,EAAE,CACR,OAAO,CAAC,IAAI,KAAK,2DAAmC;QACpD,OAAO,CAAC,UAAU,KAAK,sCAAgB,CAAC,SAAS,CACxD,EACH,CAAC;QACC;;;;;;;WAOG;QACH,OAAO,WAAW,CAAC,WAAW,CAAC;IACnC,CAAC;IACD,IACI,eAAe;QACf,sEAAsE;QACtE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;QAChC,4DAA4D;QAC5D,CAAC,SAAS,CAAC,eAAe,CAAC,EAC7B,CAAC;QACC,OAAO,WAAW,CAAC,UAAU,CAAC;IAClC,CAAC;SAAM,CAAC;QACJ,OAAO,WAAW,CAAC,WAAW,CAAC;IACnC,CAAC;AACL,CAAC"}

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = getInferredClusterFromEndpoint;
function getInferredClusterFromEndpoint(endpoint) {
if (!endpoint) {
return 'mainnet-beta';
}
if (/devnet/i.test(endpoint)) {
return 'devnet';
}
else if (/testnet/i.test(endpoint)) {
return 'testnet';
}
else {
return 'mainnet-beta';
}
}
//# sourceMappingURL=getInferredClusterFromEndpoint.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getInferredClusterFromEndpoint.js","sourceRoot":"","sources":["../../src/getInferredClusterFromEndpoint.ts"],"names":[],"mappings":";;AAEA,iDAWC;AAXD,SAAwB,8BAA8B,CAAC,QAAiB;IACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,cAAc,CAAC;IAC1B,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACJ,OAAO,cAAc,CAAC;IAC1B,CAAC;AACL,CAAC"}

View File

@@ -0,0 +1,24 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./ConnectionProvider.js"), exports);
__exportStar(require("./errors.js"), exports);
__exportStar(require("./useAnchorWallet.js"), exports);
__exportStar(require("./useConnection.js"), exports);
__exportStar(require("./useLocalStorage.js"), exports);
__exportStar(require("./useWallet.js"), exports);
__exportStar(require("./WalletProvider.js"), exports);
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,8CAA4B;AAC5B,uDAAqC;AACrC,qDAAmC;AACnC,uDAAqC;AACrC,iDAA+B;AAC/B,sDAAoC"}

View File

@@ -0,0 +1 @@
{ "type": "commonjs" }

View File

@@ -0,0 +1 @@
{"root":["../../src/ConnectionProvider.tsx","../../src/WalletProvider.tsx","../../src/WalletProviderBase.tsx","../../src/defineProperty.ts","../../src/errors.ts","../../src/getEnvironment.ts","../../src/getInferredClusterFromEndpoint.ts","../../src/index.ts","../../src/useAnchorWallet.ts","../../src/useConnection.ts","../../src/useLocalStorage.native.ts","../../src/useLocalStorage.ts","../../src/useWallet.ts"],"version":"5.8.3"}

View File

@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAnchorWallet = useAnchorWallet;
const react_1 = require("react");
const useWallet_js_1 = require("./useWallet.js");
function useAnchorWallet() {
const { publicKey, signTransaction, signAllTransactions } = (0, useWallet_js_1.useWallet)();
return (0, react_1.useMemo)(() => publicKey && signTransaction && signAllTransactions
? { publicKey, signTransaction, signAllTransactions }
: undefined, [publicKey, signTransaction, signAllTransactions]);
}
//# sourceMappingURL=useAnchorWallet.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"useAnchorWallet.js","sourceRoot":"","sources":["../../src/useAnchorWallet.ts"],"names":[],"mappings":";;AAUA,0CASC;AAlBD,iCAAgC;AAChC,iDAA2C;AAQ3C,SAAgB,eAAe;IAC3B,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,IAAA,wBAAS,GAAE,CAAC;IACxE,OAAO,IAAA,eAAO,EACV,GAAG,EAAE,CACD,SAAS,IAAI,eAAe,IAAI,mBAAmB;QAC/C,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE;QACrD,CAAC,CAAC,SAAS,EACnB,CAAC,SAAS,EAAE,eAAe,EAAE,mBAAmB,CAAC,CACpD,CAAC;AACN,CAAC"}

View File

@@ -0,0 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConnectionContext = void 0;
exports.useConnection = useConnection;
const react_1 = require("react");
exports.ConnectionContext = (0, react_1.createContext)({});
function useConnection() {
return (0, react_1.useContext)(exports.ConnectionContext);
}
//# sourceMappingURL=useConnection.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"useConnection.js","sourceRoot":"","sources":["../../src/useConnection.ts"],"names":[],"mappings":";;;AASA,sCAEC;AAVD,iCAAkD;AAMrC,QAAA,iBAAiB,GAAG,IAAA,qBAAa,EAAyB,EAA4B,CAAC,CAAC;AAErG,SAAgB,aAAa;IACzB,OAAO,IAAA,kBAAU,EAAC,yBAAiB,CAAC,CAAC;AACzC,CAAC"}

View File

@@ -0,0 +1,42 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useLocalStorage = useLocalStorage;
const react_1 = require("react");
function useLocalStorage(key, defaultState) {
const state = (0, react_1.useState)(() => {
try {
const value = localStorage.getItem(key);
if (value)
return JSON.parse(value);
}
catch (error) {
if (typeof window !== 'undefined') {
console.error(error);
}
}
return defaultState;
});
const value = state[0];
const isFirstRenderRef = (0, react_1.useRef)(true);
(0, react_1.useEffect)(() => {
if (isFirstRenderRef.current) {
isFirstRenderRef.current = false;
return;
}
try {
if (value === null) {
localStorage.removeItem(key);
}
else {
localStorage.setItem(key, JSON.stringify(value));
}
}
catch (error) {
if (typeof window !== 'undefined') {
console.error(error);
}
}
}, [value, key]);
return state;
}
//# sourceMappingURL=useLocalStorage.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../../src/useLocalStorage.ts"],"names":[],"mappings":";;AAEA,0CAmCC;AArCD,iCAAwF;AAExF,SAAgB,eAAe,CAAI,GAAW,EAAE,YAAe;IAC3D,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAI,GAAG,EAAE;QAC3B,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,gBAAgB,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACtC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC3B,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;YACjC,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACjB,CAAC"}

View File

@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useLocalStorage = void 0;
const react_1 = require("react");
const useLocalStorage = function useLocalStorage(_key, defaultState) {
/**
* Until such time as we have a strategy for implementing wallet
* memorization on React Native, simply punt and return a no-op.
*/
return (0, react_1.useState)(defaultState);
};
exports.useLocalStorage = useLocalStorage;
//# sourceMappingURL=useLocalStorage.native.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"useLocalStorage.native.js","sourceRoot":"","sources":["../../src/useLocalStorage.native.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAG1B,MAAM,eAAe,GAA+B,SAAS,eAAe,CAC/E,IAAY,EACZ,YAAe;IAEf;;;OAGG;IACH,OAAO,IAAA,gBAAQ,EAAC,YAAY,CAAC,CAAC;AAClC,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B"}

View File

@@ -0,0 +1,65 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WalletContext = void 0;
exports.useWallet = useWallet;
const react_1 = require("react");
const EMPTY_ARRAY = [];
const DEFAULT_CONTEXT = {
autoConnect: false,
connecting: false,
connected: false,
disconnecting: false,
select() {
logMissingProviderError('call', 'select');
},
connect() {
return Promise.reject(logMissingProviderError('call', 'connect'));
},
disconnect() {
return Promise.reject(logMissingProviderError('call', 'disconnect'));
},
sendTransaction() {
return Promise.reject(logMissingProviderError('call', 'sendTransaction'));
},
signTransaction() {
return Promise.reject(logMissingProviderError('call', 'signTransaction'));
},
signAllTransactions() {
return Promise.reject(logMissingProviderError('call', 'signAllTransactions'));
},
signMessage() {
return Promise.reject(logMissingProviderError('call', 'signMessage'));
},
signIn() {
return Promise.reject(logMissingProviderError('call', 'signIn'));
},
};
Object.defineProperty(DEFAULT_CONTEXT, 'wallets', {
get() {
logMissingProviderError('read', 'wallets');
return EMPTY_ARRAY;
},
});
Object.defineProperty(DEFAULT_CONTEXT, 'wallet', {
get() {
logMissingProviderError('read', 'wallet');
return null;
},
});
Object.defineProperty(DEFAULT_CONTEXT, 'publicKey', {
get() {
logMissingProviderError('read', 'publicKey');
return null;
},
});
function logMissingProviderError(action, property) {
const error = new Error(`You have tried to ${action} "${property}" on a WalletContext without providing one. ` +
'Make sure to render a WalletProvider as an ancestor of the component that uses WalletContext.');
console.error(error);
return error;
}
exports.WalletContext = (0, react_1.createContext)(DEFAULT_CONTEXT);
function useWallet() {
return (0, react_1.useContext)(exports.WalletContext);
}
//# sourceMappingURL=useWallet.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../src/useWallet.ts"],"names":[],"mappings":";;;AAmGA,8BAEC;AA3FD,iCAAkD;AA2BlD,MAAM,WAAW,GAAyB,EAAE,CAAC;AAE7C,MAAM,eAAe,GAAgC;IACjD,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;IACpB,MAAM;QACF,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,UAAU;QACN,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,eAAe;QACX,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,eAAe;QACX,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,mBAAmB;QACf,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,WAAW;QACP,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM;QACF,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;CACJ,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAC9C,GAAG;QACC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC3C,OAAO,WAAW,CAAC;IACvB,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,EAAE;IAC7C,GAAG;QACC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,EAAE;IAChD,GAAG;QACC,uBAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC;AAEH,SAAS,uBAAuB,CAAC,MAAc,EAAE,QAAgB;IAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CACnB,qBAAqB,MAAM,KAAK,QAAQ,8CAA8C;QAClF,+FAA+F,CACtG,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACjB,CAAC;AAEY,QAAA,aAAa,GAAG,IAAA,qBAAa,EAAqB,eAAqC,CAAC,CAAC;AAEtG,SAAgB,SAAS;IACrB,OAAO,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;AACrC,CAAC"}