@rango-dev/wallets-react 0.0.0-experimental-99f1781b-20260920 → 0.0.0-experimental-214d73c7-20260922
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/hub/autoConnect.d.ts +1 -1
- package/dist/hub/autoConnect.d.ts.map +1 -1
- package/dist/hub/helpers.d.ts +3 -25
- package/dist/hub/helpers.d.ts.map +1 -1
- package/dist/hub/useHubAdapter.d.ts.map +1 -1
- package/dist/hub/utils.d.ts +2 -2
- package/dist/hub/utils.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/legacy/types.d.ts +0 -4
- package/dist/legacy/types.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/hub/autoConnect.ts +39 -30
- package/src/hub/helpers.ts +16 -80
- package/src/hub/useHubAdapter.ts +108 -105
- package/src/hub/utils.ts +19 -21
- package/src/index.ts +0 -4
- package/src/legacy/types.ts +0 -4
- package/dist/errors.d.ts +0 -60
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.test.d.ts +0 -2
- package/dist/errors.test.d.ts.map +0 -1
- package/dist/hub/autoConnect.test.d.ts +0 -2
- package/dist/hub/autoConnect.test.d.ts.map +0 -1
- package/dist/hub/helpers.test.d.ts +0 -2
- package/dist/hub/helpers.test.d.ts.map +0 -1
- package/dist/hub/useHubAdapter.test.d.ts +0 -2
- package/dist/hub/useHubAdapter.test.d.ts.map +0 -1
- package/src/errors.test.ts +0 -349
- package/src/errors.ts +0 -124
- package/src/hub/autoConnect.test.ts +0 -193
- package/src/hub/helpers.test.ts +0 -138
- package/src/hub/useHubAdapter.test.ts +0 -186
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { UseAdapterParams } from './useHubAdapter.js';
|
|
2
|
-
import type { EventHandler } from '../legacy/types.js';
|
|
3
2
|
import type { Hub, Provider, WalletType } from '@hub3js/core';
|
|
3
|
+
import { type EventHandler } from '../legacy/types.js';
|
|
4
4
|
export declare function autoConnect(deps: {
|
|
5
5
|
getHub: () => Hub;
|
|
6
6
|
allBlockChains: UseAdapterParams['allBlockChains'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoConnect.d.ts","sourceRoot":"","sources":["../../src/hub/autoConnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"autoConnect.d.ts","sourceRoot":"","sources":["../../src/hub/autoConnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM9D,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,oBAAoB,CAAC;AA4L5B,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;IACpC,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEhB"}
|
package/dist/hub/helpers.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { AllProxiedNamespaces } from './types.js';
|
|
2
|
-
import type { NamespaceConnectAttempt } from '../errors.js';
|
|
3
|
-
import type { NamespaceInputForConnect } from '../legacy/types.js';
|
|
4
2
|
import type { ProviderProps } from '../types.js';
|
|
5
3
|
import type { Accounts, AccountsWithActiveChain } from '@hub3js/std/types';
|
|
6
4
|
import type { Result } from 'ts-results';
|
|
@@ -15,21 +13,11 @@ export declare function mapCaipNamespaceToLegacyNetworkName(chainId: ChainIdPara
|
|
|
15
13
|
*/
|
|
16
14
|
export declare function fromAccountIdToLegacyAddressFormat(account: string): string;
|
|
17
15
|
/**
|
|
18
|
-
*
|
|
19
|
-
* order. The first failure rejects, and the promises after it don't run.
|
|
20
|
-
*/
|
|
21
|
-
export declare function runSequentially<R>(promises: Array<() => Promise<R>>): Promise<R[]>;
|
|
22
|
-
/**
|
|
23
|
-
* Runs a list of (lazy) promises one after another, even when one fails, and returns
|
|
24
|
-
* each one's outcome in order as a `Result`.
|
|
16
|
+
* Getting a list of (lazy) promises and run them one after another.
|
|
25
17
|
*/
|
|
26
18
|
export declare function runSequentiallyWithoutFailure<R>(promises: Array<() => Promise<R>>): Promise<Result<R, unknown>[]>;
|
|
27
19
|
export declare function isConnectResultEvm(result: Awaited<ReturnType<AllProxiedNamespaces['connect']>>): result is AccountsWithActiveChain;
|
|
28
20
|
export declare function isConnectResultSolana(result: Awaited<ReturnType<AllProxiedNamespaces['connect']>>): result is Accounts;
|
|
29
|
-
export type QueueTaskResult<T> = {
|
|
30
|
-
result: Result<T, unknown>;
|
|
31
|
-
cancelled: boolean;
|
|
32
|
-
};
|
|
33
21
|
/**
|
|
34
22
|
* Creates a queue manager that ensures sequential execution of tasks by key.
|
|
35
23
|
* When multiple tasks with the same key are queued, they are executed one at a time
|
|
@@ -39,18 +27,8 @@ export type QueueTaskResult<T> = {
|
|
|
39
27
|
*/
|
|
40
28
|
export declare function createQueue(options?: {
|
|
41
29
|
onError?: (error: unknown, actions: {
|
|
42
|
-
|
|
30
|
+
removeCurrentKeyFromQueue: () => void;
|
|
43
31
|
}) => void;
|
|
44
|
-
}): <T>(task: () => Promise<T>, key: string) => Promise<
|
|
45
|
-
/**
|
|
46
|
-
* Runs one `connect` attempt for the requested namespaces. `connectNamespaces` passes
|
|
47
|
-
* each namespace's attempt to `reportAttempts` once they have all settled. Anything it
|
|
48
|
-
* throws, such as a config error or saving to storage failing, is added after the
|
|
49
|
-
* namespace failures, unchanged.
|
|
50
|
-
*
|
|
51
|
-
* Throws a `WalletConnectionAttemptError` if anything failed; otherwise returns each
|
|
52
|
-
* namespace's result in request order.
|
|
53
|
-
*/
|
|
54
|
-
export declare function runConnectionAttempt<T>(namespaces: NamespaceInputForConnect[] | undefined, connectNamespaces: (reportAttempts: (attempts: NamespaceConnectAttempt<T>[]) => void) => Promise<void>): Promise<T[]>;
|
|
32
|
+
}): <T>(task: () => Promise<T>, key: string) => Promise<Result<T, unknown>>;
|
|
55
33
|
export declare function shouldTryAutoConnect(props: Pick<ProviderProps, 'allBlockChains' | 'autoConnect'>): boolean;
|
|
56
34
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/hub/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/hub/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAYzC,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAGrD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,aAAa,GAAG,MAAM,GAC9B,MAAM,CAmCR;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;GAEG;AAEH,wBAAsB,6BAA6B,CAAC,CAAC,EACnD,QAAQ,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAU/B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3D,MAAM,IAAI,uBAAuB,CAEnC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAC3D,MAAM,IAAI,QAAQ,CAEpB;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACpC,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,yBAAyB,EAAE,MAAM,IAAI,CAAC;KACvC,KACE,IAAI,CAAC;CACX,IAgD0B,CAAC,QAClB,MAAM,OAAO,CAAC,CAAC,CAAC,OACjB,MAAM,KACV,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAW/B;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,aAAa,CAAC,GAC3D,OAAO,CAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AA6BzD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;IAChE,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CA6dvE"}
|
package/dist/hub/utils.d.ts
CHANGED
|
@@ -8,10 +8,10 @@ import type { Chain as AddEthereumChainParameter, EvmActions } from '@hub3js/evm
|
|
|
8
8
|
import type { SolanaActions } from '@hub3js/solana';
|
|
9
9
|
import { type VersionedProviders } from '@hub3js/core/utils';
|
|
10
10
|
import { type BlockchainMeta } from 'rango-types';
|
|
11
|
-
export declare function getHubProviders(providers: VersionedProviders[]): Provider[];
|
|
12
|
-
export declare function findProviderByType(providers: Provider[], type: string): Provider | undefined;
|
|
13
11
|
export declare function getProviderCoreState(provider: Provider): WalletState;
|
|
14
12
|
export declare function getProviderEventInfo(provider: Provider, allBlockChains: ProviderProps['allBlockChains']): EventInfo;
|
|
13
|
+
export declare function getHubProviders(providers: VersionedProviders[]): Provider[];
|
|
14
|
+
export declare function findProviderByType(providers: Provider[], type: string): Provider | undefined;
|
|
15
15
|
export declare function mapHubEventsToLegacy(hub: Hub, event: Event, onUpdateState: WalletEventHandler, metadata: {
|
|
16
16
|
allBlockChains: ProviderProps['allBlockChains'];
|
|
17
17
|
lastConnectAttemptParams: {
|
package/dist/hub/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/hub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,wBAAwB,EACxB,YAAY,IAAI,kBAAkB,EAClC,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EACV,KAAK,IAAI,yBAAyB,EAClC,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ1E,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,aAAa,CAAC;AAYnE,wBAAgB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/hub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,wBAAwB,EACxB,YAAY,IAAI,kBAAkB,EAClC,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EACV,KAAK,IAAI,yBAAyB,EAClC,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ1E,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,aAAa,CAAC;AAYnE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAUpE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAC9C,SAAS,CAaX;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAU3E;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,QAAQ,GAAG,SAAS,CAEtB;AAWD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,kBAAkB,EACjC,QAAQ,EAAE;IACR,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,wBAAwB,EAAE;QACxB,CAAC,IAAI,EAAE,UAAU,GAAG,wBAAwB,EAAE,CAAC;KAChD,CAAC;CACH,GACA,IAAI,CAwKN;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,wBAAwB,EACnC,IAAI,EAAE,cAAc,EAAE,GACrB,yBAAyB,GAAG,SAAS,CASvC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,wBAAwB,EACnC,IAAI,EAAE,cAAc,EAAE,GACrB,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAMhD;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GACxD,aAAa,CAiBf;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,sBAAsB,EAAE,QAAQ,EAAE,QAwBnC;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,oBAAoB,GACvB,EAAE,IAAI,oBAAoB,GAC3B,gBAAgB,CAAC,aAAa,CAAC,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,CAE5D;AACD,wBAAgB,cAAc,CAC5B,EAAE,EAAE,oBAAoB,GACvB,EAAE,IAAI,oBAAoB,GAC3B,gBAAgB,CAAC,UAAU,CAAC,GAAG;IAAE,WAAW,EAAE,KAAK,CAAA;CAAE,CAEtD;AACD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,oBAAoB,GACvB,EAAE,IAAI,oBAAoB,GAC3B,gBAAgB,CAAC,WAAW,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAExD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { default as Provider } from './provider.js';
|
|
2
2
|
export { useWallets } from './hooks.js';
|
|
3
|
-
export { AutoConnectionAttemptError, WalletConnectionAttemptError, } from './errors.js';
|
|
4
3
|
export type * from './types.js';
|
|
5
4
|
export * from './legacy/types.js';
|
|
6
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,mBAAmB,YAAY,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var ye=Object.defineProperty;var o=(e,t)=>ye(e,"name",{value:t,configurable:!0});import nt from"react";import{createContext as Ne}from"react";var A="Context hasn't been initialized yet.",ve={async connect(){throw new Error(A)},async disconnect(){throw new Error(A)},async disconnectAll(){throw new Error(A)},async suggestAndConnect(){throw new Error(A)},state(){throw new Error(A)},canSwitchNetworkTo(){throw new Error(A)},getWalletInfo(){throw new Error(A)},getSigners(){throw new Error(A)},hubProvider(){throw new Error(A)}},W=Ne(ve);import{pickVersion as Oe}from"@hub3js/core/utils";import{convertEvmBlockchainMetaToEvmChainInfo as Fe,formatAddressWithNetwork as Le,getBlockChainNameFromId as _e,getSupportedChainsFromProvider as De}from"@rango-dev/internal-blockchains";import{AccountId as je}from"caip";import{isEvmBlockchain as Me}from"rango-types";var B=(C=>(C.CONNECTED="connected",C.CONNECTING="connecting",C.REACHABLE="reachable",C.INSTALLED="installed",C.ACCOUNTS="accounts",C.NETWORK="network",C.NAMESPACE_DISCONNECTED="namespace_disconnected",C.PROVIDER_DISCONNECTED="provider_disconnected",C.AUTO_CONNECT_FAILED="auto_connect_failed",C))(B||{});var P="hub-v1-last-connected-wallets";import{CAIP_BITCOIN_CHAIN_ID as Ee,CAIP_BITCOINCASH_CHAIN_ID as ke,CAIP_DOGECOIN_CHAIN_ID as Ae,CAIP_LITECOIN_CHAIN_ID as Ie,CAIP_ZCASH_CHAIN_ID as Te}from"@hub3js/bip122";import{CAIP_NAMESPACE as be}from"@hub3js/tvm";import{formatAddressWithNetwork as Se}from"@rango-dev/internal-blockchains";import{CAIP_TRON_CHAIN_ID as xe}from"@rango-dev/wallets-core/namespaces/tron";import{AccountId as We}from"caip";import{Err as L,None as Be,Ok as z,Some as Re}from"ts-results";import{WalletConnectionError as Y}from"@hub3js/std/utils";function Pe(e){return typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:String(e)}o(Pe,"messageOf");var S=class extends AggregateError{static{o(this,"WalletConnectionAttemptError")}name="WalletConnectionAttemptError";requestedNamespaces;constructor(t){let{errors:n,requestedNamespaces:a,message:r}=t;super(n,r??(n.length>0?Pe(n[0]):"")),this.requestedNamespaces=a}},R=class extends S{static{o(this,"AutoConnectionAttemptError")}name="AutoConnectionAttemptError"};function V(e){return e.flatMap(({input:t,result:n,cancelled:a})=>a||n.ok?[]:n.val instanceof Y?[n.val]:[new Y({namespace:t.namespace,cause:n.val})])}o(V,"collectConnectionFailures");function G(e){let{requestedNamespaces:t,attempts:n,nonNamespaceError:a}=e;if(n.every(({result:f})=>f.ok)&&a.none)return;let r=V(n);return a.some&&r.push(a.val),new S({errors:r,requestedNamespaces:t})}o(G,"buildConnectionAttemptError");function K(e){let t=V(e);if(t.length)return new R({errors:t,requestedNamespaces:e.map(({input:n})=>n)})}o(K,"buildAutoConnectionAttemptError");function He(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===Ee?"BTC":e.reference===Te?"ZCASH":e.reference===Ie?"LTC":e.reference===Ae?"DOGE":e.reference===ke?"BCH":e.namespace.toLowerCase()===be?"TON":e.namespace==="sui"||e.reference===xe?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}o(He,"mapCaipNamespaceToLegacyNetworkName");function x(e){let{chainId:t,address:n}=We.parse(e),a=He(t);return Se(n,a)}o(x,"fromAccountIdToLegacyAddressFormat");async function X(e){let t=[];for(let n of e)t.push(await n());return t}o(X,"runSequentially");async function J(e){return e.reduce(async(t,n)=>{let a=await t;try{let r=await n();return[...a,new z(r)]}catch(r){return[...a,new L(r)]}},Promise.resolve([]))}o(J,"runSequentiallyWithoutFailure");function Z(e){return typeof e=="object"&&!Array.isArray(e)}o(Z,"isConnectResultEvm");function ee(e){return Array.isArray(e)}o(ee,"isConnectResultSolana");function te(e){let t=new Set,n=[],a=o((l,m)=>{n=n.filter(h=>h===l||h.key!==l.key?!0:(h.resolve({result:new L(m),cancelled:!0}),!1))},"cancelWaitingItems"),r=o(async()=>{let l=n.find(p=>!t.has(p.key));if(!l)return;let{task:m,resolve:h,key:C}=l;t.add(C);try{let p=await m();h({result:new z(p),cancelled:!1})}catch(p){e?.onError&&e.onError(p,{cancelWaitingItems:()=>a(l,p)}),h({result:new L(p),cancelled:!1})}finally{let p=n.findIndex(s=>s.key===C);p>=0&&n.splice(p,1),t.delete(C),r()}},"processQueue");return o(async(l,m)=>new Promise(h=>{n.push({task:l,resolve:h,key:m}),r()}),"queueTask")}o(te,"createQueue");async function ne(e,t){let n=[],a=Be;try{await t(f=>{n=f})}catch(f){a=new Re(f)}let r=G({requestedNamespaces:e??[],attempts:n,nonNamespaceError:a});if(r)throw r;return n.map(({result:f})=>f.unwrap())}o(ne,"runConnectionAttempt");function oe(e){return!!e.allBlockChains?.length&&!!e.autoConnect}o(oe,"shouldTryAutoConnect");var T=class{static{o(this,"Persistor")}getItem(t){let n=localStorage.getItem(t);return n?JSON.parse(n):null}setItem(t,n){localStorage.setItem(t,JSON.stringify(n))}removeItem(t){localStorage.removeItem(t)}};var I=class{static{o(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,n){if(this.#e===P)return this.#t(t,n);throw new Error("Not implemented")}removeWallets(t){if(this.#e===P)return this.#n(t);throw new Error("Not implemented")}list(){if(this.#e===P)return this.#o();throw new Error("Not implemented")}removeNamespacesFromWallet(t,n){if(this.#e===P)return this.#r(t,n);throw new Error("Not implemented")}#o(){return new T().getItem(P)||{}}#t(t,n){let a=new T,r=a.getItem(this.#e)||{},f=n;if(r[t]){let l=r[t];f=l.concat(n.filter(m=>!l.some(h=>h.namespace===m.namespace)))}a.setItem(this.#e,{...r,[t]:f})}#n(t){let n=new T,a=n.getItem(this.#e)||{};if(!t){n.setItem(this.#e,{});return}t.forEach(r=>{a[r]&&delete a[r]}),n.setItem(this.#e,a)}#r(t,n){let l=(new T().getItem(this.#e)||{})[t]?.filter(m=>!n.includes(m.namespace));this.#n([t]),l?.length>0&&this.#t(t,l)}};function _(e){return e.map(t=>{try{return Oe(t,"1.0.0")[1]}catch{throw new Error("Legacy providers aren't supported anymore. Expected a provider with version '1.0.0'.")}})}o(_,"getHubProviders");function D(e,t){return e.find(n=>n.id===t)}o(D,"findProviderByType");function j(e){let[t]=e.state();return{connected:t().connected,connecting:t().connecting,installed:t().installed,accounts:null,network:null,reachable:!0}}o(j,"getProviderCoreState");function M(e,t){let n=e.info()?.metadata.properties?.find(a=>a.name==="details");return{supportedBlockchains:De(e,t),isContractWallet:n?.value?.isContractWallet??!1,isHub:!0}}o(M,"getProviderEventInfo");var Ue=new I(P);function re(e,t,n,a){let r=e.get(t.provider);if(!r)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let f=t.namespace,l=f?r.findByNamespace(f):void 0,m=null,h=null,C;if(l){let[c]=l.state();m=c().accounts,h=c().network,a.lastConnectAttemptParams[t.provider]&&(C=a.lastConnectAttemptParams[t.provider].find(d=>d.namespace===f)?.derivationPath)}let p={...j(r),accounts:m,network:h,derivationPath:C},s={...M(r,a.allBlockChains),namespace:f};switch(t.type){case"provider_detected":n(t.provider,"installed",!0,p,s);break;case"provider_connecting":n(t.provider,"connecting",t.value,p,s);break;case"provider_connected":n(t.provider,"connected",!0,p,s);break;case"provider_disconnected":n(t.provider,"provider_disconnected",t.provider,p,s),n(t.provider,"connected",!1,p,s),n(t.provider,"accounts",null,p,s);break;case"namespace_disconnected":Ue.removeNamespacesFromWallet(t.provider,[t.namespace]),n(t.provider,"namespace_disconnected",t.namespace,p,{...s,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&n(t.provider,"namespace_disconnected",t.namespace,p,s);let c=[];s.isContractWallet?c=t.accounts.map(d=>{let{chainId:i,address:u}=je.parse(d);if(typeof i=="string")throw new Error("Should be in CAIP format");let g=_e(i.reference,s.supportedBlockchains);return g?Le(u,g):x(d)}):c=t.accounts.map(d=>x(d)),n(t.provider,"accounts",c,p,{...s,namespace:t.namespace})}break;case"namespace_network_switched":n(t.provider,"network",t.network,p,{...s,namespace:t.namespace});break}}o(re,"mapHubEventsToLegacy");function U(e,t){if(!e.network)return;let n=t.filter(Me);return Fe(n)[e.network]}o(U,"convertNamespaceNetworkToEvmChainId");function se(e,t){return U(e,t)||e.network}o(se,"tryConvertNamespaceNetworkToChainInfo");function ae(e){return Z(e)?{accounts:e.accounts,network:e.network}:ee(e)?{accounts:e,network:null}:{accounts:[e],network:null}}o(ae,"transformHubResultToLegacyResult");function ce(e,t){let n=e.getAll();t.filter(r=>!n.get(r.id)).forEach(r=>{e.add(r.id,r),r.init()}),n.forEach(r=>{t.some(l=>l.id===r.id)||e.remove(r.id)})}o(ce,"synchronizeHubWithConfigProviders");function ie(e){return e.namespaceId==="Solana"}o(ie,"isSolanaNamespace");function H(e){return e.namespaceId==="EVM"}o(H,"isEvmNamespace");function le(e){return e.namespaceId==="UTXO"}o(le,"isUtxoNamespace");import{isUserRejectionError as Je}from"@hub3js/std/utils";import{getSupportedChainsFromNamespace as Ze,getSupportedChainsFromProvider as et}from"@rango-dev/internal-blockchains";import{useEffect as q,useRef as $,useState as tt}from"react";import{debug as qe}from"@rango-dev/logging-core";function pe(e,t,n){let a=n instanceof Error?n:new Error(String(n));qe(a,{context:{method:e,args:t},tags:{type:"wallet-error"}})}o(pe,"logError");function $e(e,t){return(...n)=>{try{let a=t(...n);return a instanceof Promise?a.catch(r=>{throw pe(e,n,r),r}):a}catch(a){throw pe(e,n,a),a}}}o($e,"withErrorLogging");function ue(e){let t=Object.entries(e).map(([n,a])=>[n,$e(n,a.bind(e))]);return Object.fromEntries(t)}o(ue,"withErrorLoggingApi");import{Result as me}from"ts-results";function Qe(e){return e.namespace==="EVM"}o(Qe,"isEvmNamespaceInput");var O=new I(P);async function Ye(e,t,n){let{getHub:a,allBlockChains:r,onUpdateState:f}=n,l=a().get(e);if(!l)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required. ");let m=[];t.forEach(i=>{let u=i.namespace,g=l.findByNamespace(u);if(!g)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${i.namespace})`);m.push([i,g])});let h=m.map(([i,u])=>{let E=(Qe(i)?U(i,r||[]):void 0)||i.network;return async()=>{let N;return H(u)?N=o(async()=>u.connect(E),"connectNamespacePromise"):N=o(async()=>u.connect(),"connectNamespacePromise"),{input:i,result:await me.wrapAsync(N)}}}),C=await X(h),p=C.filter(({result:i})=>i.err).map(({input:i})=>i.namespace);p.length>0&&O.removeNamespacesFromWallet(e,p);let s=K(C);s&&f?.(e,"auto_connect_failed",s,j(l),M(l,r));let c=C.map(({result:i})=>i);if(!c.some(i=>i.ok))throw new Error(`No namespace connected for ${e}`);return me.all(...c.filter(i=>i.ok)).unwrap()}o(Ye,"eagerConnect");async function Ve(e,t){let n=[],a=[],r=[],f=[];e.forEach(m=>{let h=t.findByNamespace(m.namespace);h?(n.push(m),f.push(async()=>await h.canEagerConnect())):r.push(m)});let l=await J(f);return n.forEach((m,h)=>{l[h].ok&&l[h].val?a.push(m):r.push(m)}),{successNamespaces:a,failedNamespaces:r}}o(Ve,"tryRunCanEagerConnect");async function de(e){let{getHub:t,allBlockChains:n,wallets:a,onUpdateState:r}=e,f=O.list(),l=Object.keys(f),m=[];if(l.length){let h=[],C=a?.map(p=>typeof p=="string"?p:p.id);l.forEach(async p=>{if(C&&!C.includes(p)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",p),m.push(p);return}let s=t().get(p),c=f[p].map(u=>({namespace:u.namespace,network:u.network}));if(!c.length||!s){m.push(p);return}let{successNamespaces:d,failedNamespaces:i}=await Ve(c,s);if(d.length)i.length&&O.removeNamespacesFromWallet(s.id,i.map(u=>u.namespace));else{m.push(p);return}h.push(Ye(p,d,{allBlockChains:n,getHub:t,onUpdateState:r}).catch(u=>console.warn(u)))}),O.removeWallets(m),await Promise.all(h)}}o(de,"autoConnect");import{useEffect as Ge,useRef as Ke}from"react";function fe(e){let t=Ke(!1);Ge(()=>{oe(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}o(fe,"useAutoConnect");import{createStore as ze,Hub as Xe}from"@hub3js/core";import{useRef as Ce}from"react";function he(e){let t=Ce(null),n=Ce(null);function a(){let l=new Xe({store:r()});return e.forEach(m=>{l.add(m.id,m)}),n.current=l,l}o(a,"createHub");function r(){if(t.current!==null)return t.current;let l=ze();return t.current=l,l}o(r,"getStore");function f(){let l=n.current?.getAll();return!n.current||!l?a():(ce(n.current,e),n.current)}return o(f,"getHub"),{getStore:r,getHub:f}}o(he,"useHubRefs");function Q(e){let{getStore:t,getHub:n}=he(e.providers),[,a]=tt(0),r=$({onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}),f=$(!1),l=$({}),m=o((s,c)=>{l.current[s]=c||[]},"updateLastConnectAttemptParams"),h=te({onError:(s,c)=>{Je(s)&&c.cancelWaitingItems()}});q(()=>{r.current={onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}},[e]),q(()=>{t().subscribe(s=>{if(r.current.onUpdateState)try{re(n(),s,r.current.onUpdateState,{allBlockChains:r.current.allBlockChains,lastConnectAttemptParams:l.current})}catch(c){console.error(c)}a(c=>c+1)}).flushEvents()},[]),q(()=>{f.current||!e.allBlockChains?.length||(n().init(e.configs?.walletOptions),a(s=>s+1),f.current=!0)},[e.allBlockChains,e.configs?.walletOptions]),fe({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{de({allBlockChains:e.allBlockChains,getHub:n,wallets:e.configs?.wallets,onUpdateState:e.onUpdateState})}});let C=new I(P);return ue({canSwitchNetworkTo(s,c,d){let i=n().get(s);if(!i)return!1;if(!d)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let u=i.findByNamespace(d.namespace);if(!u)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${d.namespace})`);if(!("canSwitchNetwork"in u))return!1;let g=i.info()?.metadata?.properties?.find(v=>v.name==="namespaces");if(!r.current.allBlockChains)throw new Error("Blockchains are not available");let E=g?.value.data.find(v=>v.value===d.namespace);if(!E)throw new Error(`NamespaceMeta is not defined for requested namespace: ${d.namespace}`);let N=Ze(E,r.current.allBlockChains);return u.canSwitchNetwork({network:c,supportedChains:N})},async connect(s,c){return ne(c,o(async i=>{let u=n().get(s);if(!u)throw new Error(`You should add ${s} to provider first then call 'connect'.`);if(!c)throw new Error("Passing namespace to `connect` is required.");m(s,c);let g=[];c.forEach(y=>{let w=y.namespace,k=u.findByNamespace(w);if(!k)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${y.namespace})`);g.push([y,k])});let E=g.map(async([y,w])=>{let k=se(y,e.allBlockChains||[]),b;ie(w)?b=o(async()=>w.connect({derivationPath:y.derivationPath}),"connectNamespacePromise"):H(w)?b=o(async()=>w.connect(k,{derivationPath:y.derivationPath}),"connectNamespacePromise"):le(w)?b=o(async()=>w.connect({derivationPath:y.derivationPath}),"connectNamespacePromise"):b=o(async()=>w.connect(),"connectNamespacePromise");let F=o(async()=>b().then(ae),"connectNamespaceProcess"),{result:ge,cancelled:we}=await h(F,s);return{input:y,result:ge,cancelled:we,supportsEagerConnect:"canEagerConnect"in w}}),N=await Promise.all(E);i(N);let v=N.filter(({result:y,supportsEagerConnect:w})=>y.ok&&w).map(({input:y})=>({namespace:y.namespace,network:y.network}));v.length>0&&C.addWallet(s,v)},"connectNamespaces"))},async disconnect(s,c){let d=n().get(s);if(!d)throw new Error(`You should add ${s} to provider first then call 'disconnect'.`);d.getAll().forEach(i=>{let u=!c||c.includes(i.namespaceId),g=i.state()[0]().connected;if(u&&g)return i.disconnect()}),e.autoConnect&&(c?C.removeNamespacesFromWallet(s,c):C.removeWallets([s]))},async disconnectAll(){let s=Array.from(n().getAll().values()).map(async c=>this.disconnect(c.id));return await Promise.allSettled(s)},async getSigners(s){let c=n().get(s);if(!c)throw new Error(`You should add ${s} to provider first.`);let d=c.info();if(!d)throw new Error("Your provider should have required `info`.");let u=d.metadata.properties?.find(g=>g.name==="signers");if(!u)throw new Error("Your provider should contain signers property.");return u.value.getSigners()},getWalletInfo(s){let c=n().get(s);if(!c)throw new Error(`You should add ${s} to provider first.`);let d=c.info();if(!d)throw new Error("Your provider should have required `info`.");let i={DEFAULT:""},{metadata:u}=d,{extensions:g}=u;Object.keys(g).forEach(w=>{let k=w;if(k==="homepage"&&(i.DEFAULT=g[k]||""),["firefox","chrome","brave","edge"].includes(k)){let F=k.toUpperCase();i[F]=g[k]||""}});let E=u.properties,N=E?.find(w=>w.name==="namespaces"),v=E?.find(w=>w.name==="derivationPath"),y=E?.find(w=>w.name==="details");return{name:u.name,img:u.icon,installLink:i,color:"red",supportedChains:et(c,r.current.allBlockChains),isContractWallet:y?.value?.isContractWallet,mobileWallet:y?.value?.mobileWallet,showOnMobile:y?.value?.showOnMobile,needsNamespace:N?.value,needsDerivationPath:v?.value,isHub:!0,properties:u.properties}},state(s){let c=n().state(),d=n().get(s),i=c[s];if(!i||!d)return{connected:!1,connecting:!1,installed:!1,reachable:!1,accounts:null,network:null,namespaces:new Map};let u=i.namespaces.filter(N=>N.connected).flatMap(N=>N.accounts?.map(v=>x(v))).filter(N=>!!N),g=new Map(Array.from(d.getAll(),([N,v])=>[v.namespaceId,v.state()[0]()]));return{connected:i.connected,connecting:i.connecting,installed:i.installed,reachable:!0,accounts:u,network:null,namespaces:g}},async suggestAndConnect(s,c){let d=n().get(s);if(!d)throw new Error(`You should add ${s} to provider first then call 'suggestAndConnect'.`);let i=d.findByNamespace(c.namespace);throw i?"suggest"in i?c.network?new Error(`Suggest has not been implemented for given chain: ${c.network}`):new Error("You should pass network to the suggest and connect"):new Error("Suggest is not implemented on the provider"):new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${c.namespace})`)},hubProvider(s){let c=D(e.providers,s);if(!c)throw new Error(`You're trying to access ${s} provider which is not found in hub providers. it may not be registered yet.`);return c}})}o(Q,"useHubAdapter");function ot(e){let t=Q({...e,providers:_(e.providers)});return nt.createElement(W.Provider,{value:t},e.children)}o(ot,"Provider");var rt=ot;import{useContext as st}from"react";function at(){let e=st(W);if(!e)throw Error("useWallet can only be used within the Provider component");return e}o(at,"useWallets");export{R as AutoConnectionAttemptError,B as Events,rt as Provider,S as WalletConnectionAttemptError,at as useWallets};
|
|
1
|
+
var le=Object.defineProperty;var a=(e,t)=>le(e,"name",{value:t,configurable:!0});import Qe from"react";import{createContext as pe}from"react";var A="Context hasn't been initialized yet.",ue={async connect(){throw new Error(A)},async disconnect(){throw new Error(A)},async disconnectAll(){throw new Error(A)},async suggestAndConnect(){throw new Error(A)},state(){throw new Error(A)},canSwitchNetworkTo(){throw new Error(A)},getWalletInfo(){throw new Error(A)},getSigners(){throw new Error(A)},hubProvider(){throw new Error(A)}},x=pe(ue);import{pickVersion as Pe}from"@hub3js/core/utils";import{convertEvmBlockchainMetaToEvmChainInfo as Ee,formatAddressWithNetwork as ke,getBlockChainNameFromId as Ae,getSupportedChainsFromProvider as Ie}from"@rango-dev/internal-blockchains";import{AccountId as Te}from"caip";import{isEvmBlockchain as be}from"rango-types";var W=(d=>(d.CONNECTED="connected",d.CONNECTING="connecting",d.REACHABLE="reachable",d.INSTALLED="installed",d.ACCOUNTS="accounts",d.NETWORK="network",d.NAMESPACE_DISCONNECTED="namespace_disconnected",d.PROVIDER_DISCONNECTED="provider_disconnected",d.AUTO_CONNECT_FAILED="auto_connect_failed",d))(W||{});var E="hub-v1-last-connected-wallets";import{CAIP_BITCOIN_CHAIN_ID as me,CAIP_BITCOINCASH_CHAIN_ID as de,CAIP_DOGECOIN_CHAIN_ID as fe,CAIP_LITECOIN_CHAIN_ID as he,CAIP_ZCASH_CHAIN_ID as Ce}from"@hub3js/bip122";import{CAIP_NAMESPACE as ge}from"@hub3js/tvm";import{formatAddressWithNetwork as we}from"@rango-dev/internal-blockchains";import{CAIP_TRON_CHAIN_ID as ve}from"@rango-dev/wallets-core/namespaces/tron";import{AccountId as ye}from"caip";import{Err as R,Ok as K}from"ts-results";function Ne(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===me?"BTC":e.reference===Ce?"ZCASH":e.reference===he?"LTC":e.reference===fe?"DOGE":e.reference===de?"BCH":e.namespace.toLowerCase()===ge?"TON":e.namespace==="sui"||e.reference===ve?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}a(Ne,"mapCaipNamespaceToLegacyNetworkName");function S(e){let{chainId:t,address:n}=ye.parse(e),c=Ne(t);return we(n,c)}a(S,"fromAccountIdToLegacyAddressFormat");async function L(e){return e.reduce(async(t,n)=>{let c=await t;try{let s=await n();return[...c,new K(s)]}catch(s){return[...c,new R(s)]}},Promise.resolve([]))}a(L,"runSequentiallyWithoutFailure");function Y(e){return typeof e=="object"&&!Array.isArray(e)}a(Y,"isConnectResultEvm");function Q(e){return Array.isArray(e)}a(Q,"isConnectResultSolana");function V(e){let t=new Set,n=[],c=a((l,m)=>{n=n.filter(h=>h.key!==l?!0:(h.resolve(m),!1))},"removeKeyFromQueue"),s=a(async()=>{let l=n.find(p=>!t.has(p.key));if(!l)return;let{task:m,resolve:h,key:d}=l;t.add(d);try{let p=await m();h(new K(p))}catch(p){e?.onError&&e.onError(p,{removeCurrentKeyFromQueue:()=>c(d,new R(p))}),h(new R(p))}finally{let p=n.findIndex(r=>r.key===d);p>=0&&n.splice(p,1),t.delete(d),s()}},"processQueue");return a(async(l,m)=>new Promise(h=>{n.push({task:l,resolve:h,key:m}),s()}),"queueTask")}a(V,"createQueue");function G(e){return!!e.allBlockChains?.length&&!!e.autoConnect}a(G,"shouldTryAutoConnect");var T=class{static{a(this,"Persistor")}getItem(t){let n=localStorage.getItem(t);return n?JSON.parse(n):null}setItem(t,n){localStorage.setItem(t,JSON.stringify(n))}removeItem(t){localStorage.removeItem(t)}};var I=class{static{a(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,n){if(this.#e===E)return this.#t(t,n);throw new Error("Not implemented")}removeWallets(t){if(this.#e===E)return this.#n(t);throw new Error("Not implemented")}list(){if(this.#e===E)return this.#o();throw new Error("Not implemented")}removeNamespacesFromWallet(t,n){if(this.#e===E)return this.#r(t,n);throw new Error("Not implemented")}#o(){return new T().getItem(E)||{}}#t(t,n){let c=new T,s=c.getItem(this.#e)||{},C=n;if(s[t]){let l=s[t];C=l.concat(n.filter(m=>!l.some(h=>h.namespace===m.namespace)))}c.setItem(this.#e,{...s,[t]:C})}#n(t){let n=new T,c=n.getItem(this.#e)||{};if(!t){n.setItem(this.#e,{});return}t.forEach(s=>{c[s]&&delete c[s]}),n.setItem(this.#e,c)}#r(t,n){let l=(new T().getItem(this.#e)||{})[t]?.filter(m=>!n.includes(m.namespace));this.#n([t]),l?.length>0&&this.#t(t,l)}};function F(e){let[t]=e.state();return{connected:t().connected,connecting:t().connecting,installed:t().installed,accounts:null,network:null,reachable:!0}}a(F,"getProviderCoreState");function _(e,t){let n=e.info()?.metadata.properties?.find(c=>c.name==="details");return{supportedBlockchains:Ie(e,t),isContractWallet:n?.value?.isContractWallet??!1,isHub:!0}}a(_,"getProviderEventInfo");function O(e){return e.map(t=>{try{return Pe(t,"1.0.0")[1]}catch{throw new Error("Legacy providers aren't supported anymore. Expected a provider with version '1.0.0'.")}})}a(O,"getHubProviders");function D(e,t){return e.find(n=>n.id===t)}a(D,"findProviderByType");var Se=new I(E);function z(e,t,n,c){let s=e.get(t.provider);if(!s)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let C=t.namespace,l=C?s.findByNamespace(C):void 0,m=null,h=null,d;if(l){let[o]=l.state();m=o().accounts,h=o().network,c.lastConnectAttemptParams[t.provider]&&(d=c.lastConnectAttemptParams[t.provider].find(i=>i.namespace===C)?.derivationPath)}let p={...F(s),accounts:m,network:h,derivationPath:d},r={..._(s,c.allBlockChains),namespace:C};switch(t.type){case"provider_detected":n(t.provider,"installed",!0,p,r);break;case"provider_connecting":n(t.provider,"connecting",t.value,p,r);break;case"provider_connected":n(t.provider,"connected",!0,p,r);break;case"provider_disconnected":n(t.provider,"provider_disconnected",t.provider,p,r),n(t.provider,"connected",!1,p,r),n(t.provider,"accounts",null,p,r);break;case"namespace_disconnected":Se.removeNamespacesFromWallet(t.provider,[t.namespace]),n(t.provider,"namespace_disconnected",t.namespace,p,{...r,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&n(t.provider,"namespace_disconnected",t.namespace,p,r);let o=[];r.isContractWallet?o=t.accounts.map(i=>{let{chainId:u,address:f}=Te.parse(i);if(typeof u=="string")throw new Error("Should be in CAIP format");let w=Ae(u.reference,r.supportedBlockchains);return w?ke(f,w):S(i)}):o=t.accounts.map(i=>S(i)),n(t.provider,"accounts",o,p,{...r,namespace:t.namespace})}break;case"namespace_network_switched":n(t.provider,"network",t.network,p,{...r,namespace:t.namespace});break}}a(z,"mapHubEventsToLegacy");function j(e,t){if(!e.network)return;let n=t.filter(be);return Ee(n)[e.network]}a(j,"convertNamespaceNetworkToEvmChainId");function X(e,t){return j(e,t)||e.network}a(X,"tryConvertNamespaceNetworkToChainInfo");function J(e){return Y(e)?{accounts:e.accounts,network:e.network}:Q(e)?{accounts:e,network:null}:{accounts:[e],network:null}}a(J,"transformHubResultToLegacyResult");function Z(e,t){let n=e.getAll();t.filter(s=>!n.get(s.id)).forEach(s=>{e.add(s.id,s),s.init()}),n.forEach(s=>{t.some(l=>l.id===s.id)||e.remove(s.id)})}a(Z,"synchronizeHubWithConfigProviders");function ee(e){return e.namespaceId==="Solana"}a(ee,"isSolanaNamespace");function B(e){return e.namespaceId==="EVM"}a(B,"isEvmNamespace");function te(e){return e.namespaceId==="UTXO"}a(te,"isUtxoNamespace");import{isUserRejectionError as je,WalletConnectionError as Me}from"@hub3js/std/utils";import{getSupportedChainsFromNamespace as Ue,getSupportedChainsFromProvider as qe}from"@rango-dev/internal-blockchains";import{useEffect as M,useRef as U,useState as $e}from"react";import{Ok as Ke,Result as Ye}from"ts-results";import{debug as xe}from"@rango-dev/logging-core";function ne(e,t,n){let c=n instanceof Error?n:new Error(String(n));xe(c,{context:{method:e,args:t},tags:{type:"wallet-error"}})}a(ne,"logError");function We(e,t){return(...n)=>{try{let c=t(...n);return c instanceof Promise?c.catch(s=>{throw ne(e,n,s),s}):c}catch(c){throw ne(e,n,c),c}}}a(We,"withErrorLogging");function oe(e){let t=Object.entries(e).map(([n,c])=>[n,We(n,c.bind(e))]);return Object.fromEntries(t)}a(oe,"withErrorLoggingApi");import{Result as Be}from"ts-results";function He(e){return e.namespace==="EVM"}a(He,"isEvmNamespaceInput");var H=new I(E);async function Re(e,t,n){let{getHub:c,allBlockChains:s,onUpdateState:C}=n,l=c().get(e);if(!l)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required. ");let m=[];t.forEach(o=>{let i=o.namespace,u=l.findByNamespace(i);if(!u)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${o.namespace})`);m.push([o,u])});let h=m.map(([o,i])=>{let f=(He(o)?j(o,s||[]):void 0)||o.network;return async()=>{let w;B(i)?w=a(async()=>i.connect(f),"connectNamespacePromise"):w=a(async()=>i.connect(),"connectNamespacePromise");try{await w()}catch(y){throw y instanceof Error?y:new Error(y)}}}),d=await L(h);d.forEach(o=>{o.err&&C?.(e,"auto_connect_failed",o.val,F(l),_(l,s))});let p=m.filter((o,i)=>d[i].err).map(o=>o[0]);if(p.length>0&&H.removeNamespacesFromWallet(e,p.map(o=>o.namespace)),!d.some(o=>o.ok))throw new Error(`No namespace connected for ${e}`);return Be.all(...d.filter(o=>o.ok)).unwrap()}a(Re,"eagerConnect");async function Le(e,t){let n=[],c=[],s=[],C=[];e.forEach(m=>{let h=t.findByNamespace(m.namespace);h?(n.push(m),C.push(async()=>await h.canEagerConnect())):s.push(m)});let l=await L(C);return n.forEach((m,h)=>{l[h].ok&&l[h].val?c.push(m):s.push(m)}),{successNamespaces:c,failedNamespaces:s}}a(Le,"tryRunCanEagerConnect");async function re(e){let{getHub:t,allBlockChains:n,wallets:c,onUpdateState:s}=e,C=H.list(),l=Object.keys(C),m=[];if(l.length){let h=[],d=c?.map(p=>typeof p=="string"?p:p.id);l.forEach(async p=>{if(d&&!d.includes(p)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",p),m.push(p);return}let r=t().get(p),o=C[p].map(f=>({namespace:f.namespace,network:f.network}));if(!o.length||!r){m.push(p);return}let{successNamespaces:i,failedNamespaces:u}=await Le(o,r);if(i.length)u.length&&H.removeNamespacesFromWallet(r.id,u.map(f=>f.namespace));else{m.push(p);return}h.push(Re(p,i,{allBlockChains:n,getHub:t,onUpdateState:s}).catch(f=>console.warn(f)))}),H.removeWallets(m),await Promise.all(h)}}a(re,"autoConnect");import{useEffect as Fe,useRef as _e}from"react";function ae(e){let t=_e(!1);Fe(()=>{G(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}a(ae,"useAutoConnect");import{createStore as Oe,Hub as De}from"@hub3js/core";import{useRef as se}from"react";function ce(e){let t=se(null),n=se(null);function c(){let l=new De({store:s()});return e.forEach(m=>{l.add(m.id,m)}),n.current=l,l}a(c,"createHub");function s(){if(t.current!==null)return t.current;let l=Oe();return t.current=l,l}a(s,"getStore");function C(){let l=n.current?.getAll();return!n.current||!l?c():(Z(n.current,e),n.current)}return a(C,"getHub"),{getStore:s,getHub:C}}a(ce,"useHubRefs");function q(e){let{getStore:t,getHub:n}=ce(e.providers),[,c]=$e(0),s=U({onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}),C=U(!1),l=U({}),m=a((r,o)=>{l.current[r]=o||[]},"updateLastConnectAttemptParams"),h=V({onError:(r,o)=>{let i=r instanceof Me?r.cause:r;je(i)&&o.removeCurrentKeyFromQueue()}});M(()=>{s.current={onUpdateState:e.onUpdateState,allBlockChains:e.allBlockChains}},[e]),M(()=>{t().subscribe(r=>{if(s.current.onUpdateState)try{z(n(),r,s.current.onUpdateState,{allBlockChains:s.current.allBlockChains,lastConnectAttemptParams:l.current})}catch(o){console.error(o)}c(o=>o+1)}).flushEvents()},[]),M(()=>{C.current||!e.allBlockChains?.length||(n().init(e.configs?.walletOptions),c(r=>r+1),C.current=!0)},[e.allBlockChains,e.configs?.walletOptions]),ae({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{re({allBlockChains:e.allBlockChains,getHub:n,wallets:e.configs?.wallets,onUpdateState:e.onUpdateState})}});let d=new I(E);return oe({canSwitchNetworkTo(r,o,i){let u=n().get(r);if(!u)return!1;if(!i)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let f=u.findByNamespace(i.namespace);if(!f)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${i.namespace})`);if(!("canSwitchNetwork"in f))return!1;let w=u.info()?.metadata?.properties?.find(N=>N.name==="namespaces");if(!s.current.allBlockChains)throw new Error("Blockchains are not available");let y=w?.value.data.find(N=>N.value===i.namespace);if(!y)throw new Error(`NamespaceMeta is not defined for requested namespace: ${i.namespace}`);let P=Ue(y,s.current.allBlockChains);return f.canSwitchNetwork({network:o,supportedChains:P})},async connect(r,o){let i=n().get(r);if(!i)throw new Error(`You should add ${r} to provider first then call 'connect'.`);if(!o)throw new Error("Passing namespace to `connect` is required.");m(r,o);let u=[];o.forEach(g=>{let v=g.namespace,k=i.findByNamespace(v);if(!k)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${g.namespace})`);u.push([g,k])});let f=u.map(async([g,v])=>{let k=X(g,e.allBlockChains||[]),b;return ee(v)?b=a(async()=>v.connect({derivationPath:g.derivationPath}),"connectNamespacePromise"):B(v)?b=a(async()=>v.connect(k,{derivationPath:g.derivationPath}),"connectNamespacePromise"):te(v)?b=a(async()=>v.connect({derivationPath:g.derivationPath}),"connectNamespacePromise"):b=a(async()=>v.connect(),"connectNamespacePromise"),h(a(async()=>b().then(J).then(ie=>({response:ie,input:{namespace:g.namespace,network:g.network,supportsEagerConnect:"canEagerConnect"in v}})),"connectNamespaceProcess"),r)}),w=await Promise.all(f),y=w.filter(g=>g.ok).filter(g=>g.val.input.supportsEagerConnect).map(g=>({namespace:g.val.input.namespace,network:g.val.input.network}));y.length>0&&d.addWallet(r,y);let P=w.map(g=>g.andThen(v=>new Ke(v.response))),N=Ye.all(...P);if(N.err)throw N.val;return N.unwrap()},async disconnect(r,o){let i=n().get(r);if(!i)throw new Error(`You should add ${r} to provider first then call 'disconnect'.`);i.getAll().forEach(u=>{let f=!o||o.includes(u.namespaceId),w=u.state()[0]().connected;if(f&&w)return u.disconnect()}),e.autoConnect&&(o?d.removeNamespacesFromWallet(r,o):d.removeWallets([r]))},async disconnectAll(){let r=Array.from(n().getAll().values()).map(async o=>this.disconnect(o.id));return await Promise.allSettled(r)},async getSigners(r){let o=n().get(r);if(!o)throw new Error(`You should add ${r} to provider first.`);let i=o.info();if(!i)throw new Error("Your provider should have required `info`.");let f=i.metadata.properties?.find(w=>w.name==="signers");if(!f)throw new Error("Your provider should contain signers property.");return f.value.getSigners()},getWalletInfo(r){let o=n().get(r);if(!o)throw new Error(`You should add ${r} to provider first.`);let i=o.info();if(!i)throw new Error("Your provider should have required `info`.");let u={DEFAULT:""},{metadata:f}=i,{extensions:w}=f;Object.keys(w).forEach(v=>{let k=v;if(k==="homepage"&&(u.DEFAULT=w[k]||""),["firefox","chrome","brave","edge"].includes(k)){let $=k.toUpperCase();u[$]=w[k]||""}});let y=f.properties,P=y?.find(v=>v.name==="namespaces"),N=y?.find(v=>v.name==="derivationPath"),g=y?.find(v=>v.name==="details");return{name:f.name,img:f.icon,installLink:u,color:"red",supportedChains:qe(o,s.current.allBlockChains),isContractWallet:g?.value?.isContractWallet,mobileWallet:g?.value?.mobileWallet,showOnMobile:g?.value?.showOnMobile,needsNamespace:P?.value,needsDerivationPath:N?.value,isHub:!0,properties:f.properties}},state(r){let o=n().state(),i=n().get(r),u=o[r];if(!u||!i)return{connected:!1,connecting:!1,installed:!1,reachable:!1,accounts:null,network:null,namespaces:new Map};let f=u.namespaces.filter(P=>P.connected).flatMap(P=>P.accounts?.map(N=>S(N))).filter(P=>!!P),w=new Map(Array.from(i.getAll(),([P,N])=>[N.namespaceId,N.state()[0]()]));return{connected:u.connected,connecting:u.connecting,installed:u.installed,reachable:!0,accounts:f,network:null,namespaces:w}},async suggestAndConnect(r,o){let i=n().get(r);if(!i)throw new Error(`You should add ${r} to provider first then call 'suggestAndConnect'.`);let u=i.findByNamespace(o.namespace);throw u?"suggest"in u?o.network?new Error(`Suggest has not been implemented for given chain: ${o.network}`):new Error("You should pass network to the suggest and connect"):new Error("Suggest is not implemented on the provider"):new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${o.namespace})`)},hubProvider(r){let o=D(e.providers,r);if(!o)throw new Error(`You're trying to access ${r} provider which is not found in hub providers. it may not be registered yet.`);return o}})}a(q,"useHubAdapter");function Ve(e){let t=q({...e,providers:O(e.providers)});return Qe.createElement(x.Provider,{value:t},e.children)}a(Ve,"Provider");var Ge=Ve;import{useContext as ze}from"react";function Xe(){let e=ze(x);if(!e)throw Error("useWallet can only be used within the Provider component");return e}a(Xe,"useWallets");export{W as Events,Ge as Provider,Xe as useWallets};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|