@rango-dev/wallets-react 0.27.1-next.14 → 0.27.1-next.3
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.map +1 -1
- package/dist/hub/helpers.d.ts +1 -2
- package/dist/hub/helpers.d.ts.map +1 -1
- package/dist/hub/mod.d.ts +1 -1
- package/dist/hub/mod.d.ts.map +1 -1
- package/dist/hub/useHubAdapter.d.ts.map +1 -1
- package/dist/hub/utils.d.ts +5 -5
- package/dist/hub/utils.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/legacy/types.d.ts +24 -17
- package/dist/legacy/types.d.ts.map +1 -1
- package/dist/useProviders.d.ts.map +1 -1
- package/dist/wallets-react.build.json +1 -1
- package/package.json +8 -14
- package/src/hub/autoConnect.ts +11 -9
- package/src/hub/helpers.ts +12 -11
- package/src/hub/mod.ts +1 -5
- package/src/hub/useHubAdapter.ts +46 -79
- package/src/hub/utils.ts +158 -155
- package/src/index.ts +1 -0
- package/src/legacy/types.ts +25 -25
- package/src/useProviders.ts +6 -2
- package/dist/helpers/index.d.ts +0 -2
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/index.js +0 -2
- package/dist/helpers/index.js.map +0 -7
- package/helpers/package.json +0 -8
- package/src/helpers/index.ts +0 -1
|
@@ -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;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,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,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA2H5D,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACnD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,uBAAuB,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,uBAAuB,CAAC,EAAE,CAAC;CACpD,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB"}
|
package/dist/hub/helpers.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { AllProxiedNamespaces } from './types.js';
|
|
2
2
|
import type { Accounts, AccountsWithActiveChain } from '@rango-dev/wallets-core/namespaces/common';
|
|
3
|
-
import type { Result } from 'ts-results';
|
|
4
3
|
import { CAIP } from '@rango-dev/wallets-core/utils';
|
|
5
4
|
export declare function mapCaipNamespaceToLegacyNetworkName(chainId: CAIP.ChainIdParams | string): string;
|
|
6
5
|
/**
|
|
@@ -14,7 +13,7 @@ export declare function fromAccountIdToLegacyAddressFormat(account: string): str
|
|
|
14
13
|
/**
|
|
15
14
|
* Getting a list of (lazy) promises and run them one after another.
|
|
16
15
|
*/
|
|
17
|
-
export declare function runSequentiallyWithoutFailure<
|
|
16
|
+
export declare function runSequentiallyWithoutFailure<T extends () => Promise<unknown>>(promises: Array<T>): Promise<Array<T extends () => Promise<infer R> ? R : never>>;
|
|
18
17
|
export declare function isConnectResultEvm(result: Awaited<ReturnType<AllProxiedNamespaces['connect']>>): result is AccountsWithActiveChain;
|
|
19
18
|
export declare function isConnectResultSolana(result: Awaited<ReturnType<AllProxiedNamespaces['connect']>>): result is Accounts;
|
|
20
19
|
//# 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,EACV,QAAQ,EACR,uBAAuB,EACxB,MAAM,2CAA2C,CAAC;
|
|
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,EACV,QAAQ,EACR,uBAAuB,EACxB,MAAM,2CAA2C,CAAC;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,GACnC,MAAM,CAeR;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,CAAC,SAAS,MAAM,OAAO,CAAC,OAAO,CAAC,EAEhC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,GACjB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAY9D;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"}
|
package/dist/hub/mod.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { separateLegacyAndHubProviders,
|
|
1
|
+
export { separateLegacyAndHubProviders, findProviderByType } from './utils.js';
|
|
2
2
|
export { useHubAdapter } from './useHubAdapter.js';
|
|
3
3
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/hub/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/hub/mod.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/hub/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"useHubAdapter.d.ts","sourceRoot":"","sources":["../../src/hub/useHubAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAKxE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAiB1B,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG;IAChE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,wGAAwG;IACxG,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;CAC7C,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CA2TvE"}
|
package/dist/hub/utils.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { AllProxiedNamespaces } from './types.js';
|
|
2
|
-
import type { Hub, Provider } from '@rango-dev/wallets-core';
|
|
2
|
+
import type { Hub, Provider, State } from '@rango-dev/wallets-core';
|
|
3
3
|
import type { LegacyNamespaceInputForConnect, LegacyProviderInterface, LegacyEventHandler as WalletEventHandler } from '@rango-dev/wallets-core/legacy';
|
|
4
|
-
import type { Event } from '@rango-dev/wallets-core/store';
|
|
5
4
|
import { type VersionedProviders } from '@rango-dev/wallets-core/utils';
|
|
6
5
|
import { type AddEthereumChainParameter } from '@rango-dev/wallets-shared';
|
|
7
6
|
import { type BlockchainMeta } from 'rango-types';
|
|
8
7
|
import { type ConnectResult, type ProviderProps } from '../legacy/mod.js';
|
|
9
|
-
export declare function separateLegacyAndHubProviders(providers: VersionedProviders[]
|
|
8
|
+
export declare function separateLegacyAndHubProviders(providers: VersionedProviders[], options?: {
|
|
9
|
+
isExperimentalEnabled?: boolean;
|
|
10
|
+
}): [LegacyProviderInterface[], Provider[]];
|
|
10
11
|
export declare function findProviderByType(providers: Provider[], type: string): Provider | undefined;
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function getAllLegacyProviders(allProviders: VersionedProviders[]): LegacyProviderInterface[];
|
|
12
|
+
export declare function checkHubStateAndTriggerEvents(hub: Hub, currentState: State, previousState: State, onUpdateState: WalletEventHandler, allProviders: VersionedProviders[], allBlockChains: ProviderProps['allBlockChains']): void;
|
|
13
13
|
export declare function getLegacyProvider(allProviders: VersionedProviders[], type: string): LegacyProviderInterface;
|
|
14
14
|
/**
|
|
15
15
|
* In legacy mode, for those who have switch network functionality (like evm), we are using an enum for network names
|
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,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
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,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,IAAI,kBAAkB,EACzC,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,yBAAyB,EAE/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,aAAa,CAAC;AAEnE,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAU1B,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,kBAAkB,EAAE,EAC/B,OAAO,CAAC,EAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC,CA0BzC;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,QAAQ,GAAG,SAAS,CAEtB;AAWD,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,KAAK,EACnB,aAAa,EAAE,KAAK,EACpB,aAAa,EAAE,kBAAkB,EACjC,YAAY,EAAE,kBAAkB,EAAE,EAClC,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAC9C,IAAI,CA2JN;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,kBAAkB,EAAE,EAClC,IAAI,EAAE,MAAM,GACX,uBAAuB,CAgBzB;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,8BAA8B,EACzC,IAAI,EAAE,cAAc,EAAE,yCAUvB;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,8BAA8B,EACzC,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,CAoBf;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,QAAQ,EAAE,EACzB,aAAa,EAAE,QAAQ,EAAE,WAY1B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from './legacy/helpers.js';
|
|
|
2
2
|
export { default as Provider } from './provider.js';
|
|
3
3
|
export { useWallets } from './legacy/hooks.js';
|
|
4
4
|
export * from './legacy/types.js';
|
|
5
|
+
export { separateLegacyAndHubProviders } from './hub/mod.js';
|
|
5
6
|
//# 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,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var ue=Object.defineProperty;var i=(e,t)=>ue(e,"name",{value:t,configurable:!0});import{Persistor as pe}from"@rango-dev/wallets-core/legacy";var y="last-connected-wallets",w="hub-v1-last-connected-wallets";import{Persistor as I}from"@rango-dev/wallets-core/legacy";var h=class{static{i(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,n){if(this.#e===w)return this.#t(t,n);if(this.#e===y)return this.#a(t);throw new Error("Not implemented")}removeWallets(t){if(this.#e===w)return this.#o(t);if(this.#e===y)return this.#c(t);throw new Error("Not implemented")}list(){if(this.#e===w)return this.#n();if(this.#e===y)return this.#r();throw new Error("Not implemented")}removeNamespacesFromWallet(t,n){if(this.#e===w)return this.#s(t,n);throw new Error("Not implemented")}#r(){let n=new I().getItem(y)||[],s={};return n.forEach(c=>{s[c]=[]}),s}#n(){return new I().getItem(w)||{}}#t(t,n){let s=new I,c=s.getItem(this.#e)||{};s.setItem(this.#e,{...c,[t]:n})}#a(t){let n=new I,s=n.getItem(this.#e)||[];n.setItem(y,s.concat(t))}#o(t){let n=new I,s=n.getItem(this.#e)||{};if(!t){n.setItem(this.#e,{});return}t.forEach(c=>{s[c]&&delete s[c]}),n.setItem(this.#e,s)}#s(t,n){let u=(new I().getItem(this.#e)||{})[t].filter(a=>!n.includes(a.namespace));this.#o([t]),this.#t(t,u)}#c(t){let n=new I,s=n.getItem(this.#e)||[];if(!t){n.setItem(this.#e,[]);return}n.setItem(y,s.filter(c=>!t.includes(c)))}};function Xe(e,t){return e.find(n=>n.type===t)||null}i(Xe,"choose");var H={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function U(e,t){if(t.type==="new_state"){let n=e[t.wallet];return n?{...e,[t.wallet]:{...n,[t.name]:t.value}}:{...e,[t.wallet]:{...H,[t.name]:t.value}}}return e}i(U,"stateReducer");function Y(e){return Object.entries(e).filter(([,t])=>t?.connected).map(([t])=>t)}i(Y,"connectedWallets");function G(e){return Object.entries(e).map(([t])=>t)}i(G,"availableWallets");function $(e){let t=new Map;return e.forEach(n=>{let{config:s,...c}=n;t.set(s.type,{actions:c,config:s})}),t}i($,"checkWalletProviders");function Ze(e){return e?.constructor?.name==="AsyncFunction"}i(Ze,"isAsync");function et(e){let{checkInstallation:t=!0}=e.config;return t}i(et,"needsCheckInstallation");async function q({type:e,walletActions:t,getState:n}){if(t.canEagerConnect){let s=new h(y),l=!!s.list()[e];l&&!n(e).connected&&B(),l||s.addWallet(e,[])}}i(q,"tryPersistWallet");function K({type:e,walletActions:t}){t.canEagerConnect&&new h(y).removeWallets([e])}i(K,"tryRemoveWalletFromPersistance");function B(){let e=new pe;e.getItem(y)&&e.removeItem(y)}i(B,"clearPersistance");function R(e,t){return i((s,c,l,u,a)=>{e({type:"new_state",wallet:s,name:c,value:l}),t&&t(s,c,l,u,a)},"handler")}i(R,"makeEventHandler");import Ve from"react";import{createContext as me}from"react";var P="Context hasn't been initialized yet.",fe={async connect(){throw new Error(P)},async disconnect(){throw new Error(P)},async disconnectAll(){throw new Error(P)},async suggestAndConnect(){throw new Error(P)},state(){throw new Error(P)},canSwitchNetworkTo(){throw new Error(P)},providers(){throw new Error(P)},getWalletInfo(){throw new Error(P)},getSigners(){throw new Error(P)}},A=me(fe);import{LegacyEvents as W}from"@rango-dev/wallets-core/legacy";import"@rango-dev/wallets-core/utils";import{pickVersion as O}from"@rango-dev/wallets-core/utils";import{convertEvmBlockchainMetaToEvmChainInfo as Se}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Ae}from"rango-types";import{useEffect as F,useReducer as Pe}from"react";async function z(e,t){let n=new h(y),s=n.list(),c=Object.keys(s);if(c.length){let l=[];c.forEach(o=>{let r=e.get(o);if(r){let d=t(r);l.push({walletType:o,eagerConnect:d.eagerConnect.bind(d)})}});let u=await Promise.allSettled(l.map(async({eagerConnect:o})=>o())),a=[];u.forEach((o,r)=>{let{status:d}=o;d==="rejected"&&a.push(l[r].walletType)}),a.length&&n.removeWallets(a)}}i(z,"autoConnect");import{LegacyWallet as ge}from"@rango-dev/wallets-core/legacy";import{useContext as ye,useRef as ve}from"react";function Q(e){let t=ve({});function n(s){let c=s.config.type;return typeof t.current[c]>"u"&&(t.current[c]=new ge({config:s.config,handler:e},s.actions)),t.current[c]}return i(n,"updater"),n}i(Q,"useInitializers");function we(){let e=ye(A);if(!e)throw Error("useWallet can only be used within the Provider component");return e}i(we,"useWallets");import{useEffect as he,useRef as Ce}from"react";function J(e){return!!e.allBlockChains?.length&&!!e.autoConnect}i(J,"shouldTryAutoConnect");function T(e){let t=Ce(!1);he(()=>{J(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}i(T,"useAutoConnect");function _(e){let[t,n]=Pe(U,{}),s=Q(R(n,e.onUpdateState)),c=e.providers,l=$(c);T({allBlockChains:e.allBlockChains,autoConnect:e.autoConnect,autoConnectHandler:async()=>z(l,s)});let u={async connect(a,o){let r=l.get(a);if(!r)throw new Error(`You should add ${a} to provider first.`);let d;o&&o.length>0&&(d=o.find(f=>!!f.network)?.network);let m=await s(r).connect(d,o);return e.autoConnect&&q({type:a,walletActions:r.actions,getState:u.state}),[m]},async disconnect(a){let o=l.get(a);if(!o)throw new Error(`You should add ${a} to provider first.`);await s(o).disconnect(),e.autoConnect&&K({type:a,walletActions:o.actions})},async disconnectAll(){let a=[];return Y(t).forEach(o=>{let r=l.get(o);if(r){let d=s(r);a.push(d.disconnect())}}),e.autoConnect&&B(),await Promise.allSettled(a)},async suggestAndConnect(a,o){let r=l.get(a);if(!r)throw new Error(`You should add ${a} to provider first.`);return await s(r).suggestAndConnect(o)},state(a){return t[a]||H},canSwitchNetworkTo(a,o){let r=l.get(a);if(!r)return!1;let d=s(r);return d.canSwitchNetworkTo?d.canSwitchNetworkTo(o,d.provider):!1},providers(){let a={};return G(t).forEach(o=>{let r=l.get(o);if(r){let d=s(r);a[o]=d.provider}}),a},getWalletInfo(a){let o=l.get(a);if(!o)throw new Error(`You should add ${a} to provider first.`);return o.actions.getWalletInfo(e.allBlockChains||[])},async getSigners(a){let o=l.get(a);if(!o)throw new Error(`You should add ${a} to provider first.`);let r=s(o),d=r.provider;return r.getSigners(d)}};return F(()=>{l.forEach(a=>{let o=s(a),r=i(()=>{o.onInit&&o.onInit()},"runOnInit"),d=i(p=>{p.target&&p.target.readyState==="complete"&&(r(),document.removeEventListener("readystatechange",d))},"initWhenPageIsReady");r(),document.addEventListener("readystatechange",d)})},[]),F(()=>{e.allBlockChains&&l.forEach(o=>{let r=s(o),d=r.getWalletInfo(e.allBlockChains||[]);r.setInfo({supportedBlockchains:d.supportedChains,isContractWallet:!!d.isContractWallet})})},[e.allBlockChains]),F(()=>{l.forEach(a=>{s(a).setHandler(R(n,e.onUpdateState))})},[e.onUpdateState]),u}i(_,"useLegacyProviders");import{legacyFormatAddressWithNetwork as We}from"@rango-dev/wallets-core/legacy";import{CAIP as Ee}from"@rango-dev/wallets-core/utils";import{Err as ke,Ok as Ie}from"ts-results";function Le(e){return typeof e=="string"?e:["solana"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference}i(Le,"mapCaipNamespaceToLegacyNetworkName");function x(e){let{chainId:t,address:n}=Ee.AccountId.parse(e),s=Le(t);return We(n,s)}i(x,"fromAccountIdToLegacyAddressFormat");async function b(e){return e.reduce(async(t,n)=>{let s=await t;try{let c=await n();return[...s,new Ie(c)]}catch(c){return[...s,new ke(c)]}},Promise.resolve([]))}i(b,"runSequentiallyWithoutFailure");function X(e){return typeof e=="object"&&!Array.isArray(e)}i(X,"isConnectResultEvm");function Z(e){return Array.isArray(e)}i(Z,"isConnectResultSolana");function D(e){let t="0.0.0",n="1.0.0",s=[],c=[];return e.forEach(l=>{try{let u=O(l,n);c.push(u[1])}catch{let u=O(l,t);s.push(u[1])}}),[s,c]}i(D,"separateLegacyAndHubProviders");function E(e,t){return e.find(n=>n.id===t)}i(E,"findProviderByType");var Ne=new h(w);function ee(e,t,n,s,c){let l;try{l=k(s,t.provider)}catch(g){console.warn("Having legacy provider is required for including some information like supported chain. ",g)}let u=e.get(t.provider);if(!u)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let a=t.namespace,o=a?u.findByNamespace(a):void 0,r=null,d=null;if(o){let[g]=o.state();r=g().accounts,d=g().network}let[p]=u.state(),m={connected:p().connected,connecting:p().connecting,installed:p().installed,accounts:r,network:d,reachable:!0},f={supportedBlockchains:l?.getWalletInfo(c||[]).supportedChains||[],isContractWallet:!1,isHub:!0,namespace:a};switch(t.type){case"provider_detected":n(t.provider,W.INSTALLED,!0,m,f);break;case"provider_connecting":n(t.provider,W.CONNECTING,t.value,m,f);break;case"provider_connected":n(t.provider,W.CONNECTED,!0,m,f);break;case"provider_disconnected":n(t.provider,W.CONNECTED,!1,m,f),n(t.provider,W.ACCOUNTS,null,m,f);break;case"namespace_disconnected":Ne.removeNamespacesFromWallet(t.provider,[t.namespace]),n(t.provider,W.NAMESPACE_DISCONNECTED,t.namespace,m,{...f,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&n(t.provider,W.NAMESPACE_DISCONNECTED,t.namespace,m,f);let g=t.accounts.map(x);n(t.provider,W.ACCOUNTS,g,m,{...f,namespace:t.namespace})}break;case"namespace_network_switched":n(t.provider,W.NETWORK,t.network,m,{...f,namespace:t.namespace});break}}i(ee,"mapHubEventsToLegacy");function te(e){let t="0.0.0",n=[];return e.forEach(s=>{let c=O(s,t);n.push(c[1])}),n}i(te,"getAllLegacyProviders");function k(e,t){let s=te(e).find(c=>c.config.type===t);if(!s)throw console.warn(`You have a provider that doesn't have legacy provider. It causes some problems since we need some legacy functionality. Provider Id: ${t}`),new Error(`You need to have legacy implementation to use some methods. Provider Id: ${t}`);return s}i(k,"getLegacyProvider");function V(e,t){if(!e.network)return;let n=t.filter(Ae);return Se(n)[e.network]}i(V,"convertNamespaceNetworkToEvmChainId");function oe(e,t){return V(e,t)||e.network}i(oe,"tryConvertNamespaceNetworkToChainInfo");function re(e){return X(e)?{accounts:e.accounts,network:e.network,provider:void 0}:Z(e)?{accounts:e,network:null,provider:void 0}:{accounts:[e],network:null,provider:void 0}}i(re,"transformHubResultToLegacyResult");function ne(e,t){let n=e.map(c=>c.id).sort().toString(),s=t.map(c=>c.id).sort().toString();return n===s}i(ne,"checkProviderListsEquality");import"@rango-dev/wallets-shared";import{useEffect as ie,useRef as Fe,useState as _e}from"react";import{Ok as Oe,Result as De}from"ts-results";import{legacyEagerConnectHandler as Te,legacyIsEvmNamespace as xe}from"@rango-dev/wallets-core/legacy";import{Result as be}from"ts-results";var j=new h(w);async function He(e,t,n){let{getHub:s,allBlockChains:c}=n,l=s().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 u=[];t.forEach(p=>{let m=p.namespace,f=l.findByNamespace(m);if(!f)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${p.namespace})`);u.push([p,f])});let a=u.map(([p,m])=>{let g=(xe(p)?V(p,c||[]):void 0)||p.network;return async()=>await m.connect(g).catch(C=>{throw C instanceof Error?C:new Error(C)})}),o=await b(a),r=[];if(o.forEach((p,m)=>{p.err&&r.push(u[m][0])}),r.length>0&&j.removeNamespacesFromWallet(e,r.map(p=>p.namespace)),!o.some(p=>p.ok))throw new Error(`No namespace connected for ${e}`);return be.all(...o).unwrap()}i(He,"eagerConnect");async function ae(e){let{getHub:t,allBlockChains:n,getLegacyProvider:s,wallets:c}=e,l=j.list(),u=Object.keys(l),a=[];if(u.length){let o=[];u.forEach(r=>{if(c&&!c.includes(r)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",r),a.push(r);return}let d=s(r),p;try{p=d.getInstance()}catch{console.warn("It seems instance isn't available yet for auto connect. This can happen when extension not loaded yet (sometimes when opening browser for first time) or extension is disabled. Desired wallet:",r);return}let m=l[r].map(C=>({namespace:C.namespace,network:C.network})),f=i(async()=>{if(!d.canEagerConnect)throw new Error(`${r} provider hasn't implemented canEagerConnect.`);return await d.canEagerConnect({instance:p,meta:d.getWalletInfo(n||[]).supportedChains})},"canEagerConnect"),g=i(async()=>He(r,m,{allBlockChains:n,getHub:t}),"connectHandler");o.push(Te({canEagerConnect:f,connectHandler:g,providerName:r}).catch(C=>{a.push(r),console.warn(C)}))}),await Promise.all(o),j.removeWallets(a)}}i(ae,"autoConnect");import{createStore as Be,Hub as Re}from"@rango-dev/wallets-core";import{useRef as se}from"react";function ce(e){let t=se(null),n=se(null);function s(){let u=new Re({store:c()});return e.forEach(a=>{u.add(a.id,a)}),n.current=u,u}i(s,"createHub");function c(){if(t.current!==null)return t.current;let u=Be();return t.current=u,u}i(c,"getStore");function l(){let u=n.current?.getAll();return!n.current||!u||!ne(Array.from(u.values()),e)?s():n.current}return i(l,"getHub"),{getStore:c,getHub:l}}i(ce,"useHubRefs");function M(e){let{getStore:t,getHub:n}=ce(e.providers),[,s]=_e(0),c=Fe({onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains});ie(()=>{c.current={onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}},[e]),ie(()=>{let a=i(()=>{n().init(),s(r=>r+1)},"runOnInit"),o=i(r=>{r.target&&r.target.readyState==="complete"&&(a(),document.removeEventListener("readystatechange",o))},"initHubWhenPageIsReady");a(),document.addEventListener("readystatechange",o),t().subscribe(r=>{if(c.current.onUpdateState)try{ee(n(),r,c.current.onUpdateState,c.current.allVersionedProviders,c.current.allBlockChains)}catch(d){console.error(d)}s(d=>d+1)}).flushEvents()},[]),T({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{ae({getLegacyProvider:k.bind(null,e.allVersionedProviders),allBlockChains:e.allBlockChains,getHub:n,wallets:e.configs?.wallets})}});let l=new h(w);return{canSwitchNetworkTo(a,o){let r=k(e.allVersionedProviders,a),d=r.canSwitchNetworkTo;return d?d({network:o,meta:e.allBlockChains||[],provider:r.getInstance()}):!1},async connect(a,o){let r=n().get(a);if(!r)throw new Error(`You should add ${a} to provider first then call 'connect'.`);if(!o)throw new Error("Passing namespace to `connect` is required.");let d=[];o.forEach(v=>{let S=v.namespace,N=r.findByNamespace(S);if(!N)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${v.namespace})`);d.push([v,N])});let p=d.map(([v,S])=>{let N=oe(v,e.allBlockChains||[]);return async()=>S.connect(N).then(re).then(de=>({response:de,input:{namespace:v.namespace,network:v.network}}))}),m=await b(p),f=m.filter(v=>v.ok).map(v=>({namespace:v.val.input.namespace,network:v.val.input.network}));k(e.allVersionedProviders,a).canEagerConnect&&f.length>0&&l.addWallet(a,f);let C=m.map(v=>v.andThen(S=>new Oe(S.response))),L=De.all(...C);if(L.err)throw L.val;return L.unwrap()},async disconnect(a){let o=n().get(a);if(!o)throw new Error(`You should add ${a} to provider first then call 'disconnect'.`);o.getAll().forEach(r=>r.disconnect()),e.autoConnect&&l.removeWallets([a])},async disconnectAll(){let a=Array.from(n().getAll().values()).map(async o=>this.disconnect(o.id));return await Promise.allSettled(a)},async getSigners(a){let o=k(e.allVersionedProviders,a);return o.getSigners(o.getInstance())},getWalletInfo(a){let o=n().get(a);if(!o)throw new Error(`You should add ${a} to provider first.`);let r=o.info();if(!r)throw new Error("Your provider should have required `info`.");let d=k(e.allVersionedProviders,a),p={DEFAULT:""};Object.keys(r.extensions).forEach(f=>{let g=f;if(r.extensions[g]==="homepage"&&(p.DEFAULT=r.extensions[g]||""),["firefox","chrome","brave","edge"].includes(g)){let L=g.toUpperCase();p[L]=r.extensions[g]||""}});let m=d.getWalletInfo(e.allBlockChains||[]);return{name:r.name,img:r.icon,installLink:p,color:"red",supportedChains:m.supportedChains,isContractWallet:!1,mobileWallet:!1,showOnMobile:void 0,needsNamespace:m.needsNamespace,needsDerivationPath:m.needsDerivationPath,isHub:!0,properties:o.info()?.properties}},providers(){let a={};return Array.from(n().getAll().keys()).forEach(o=>{try{let r=k(e.allVersionedProviders,o);a[o]=r.getInstance()}catch(r){console.warn(r)}}),a},state(a){let r=n().state()[a];if(!r)throw new Error(`It seems your requested provider doesn't exist in hub. Provider Id: ${a}`);let d=r.namespaces.filter(m=>m.connected).flatMap(m=>m.accounts?.map(x)).filter(m=>!!m);return{connected:r.connected,connecting:r.connecting,installed:r.installed,reachable:!0,accounts:d,network:null}},suggestAndConnect(a,o){throw new Error("`suggestAndConnect` is not implemented")}}}i(M,"useHubAdapter");function le(e){let{providers:t,...n}=e,[s,c]=D(t),l=_({...n,providers:s}),u=M({...n,providers:c,allVersionedProviders:t});return{canSwitchNetworkTo(o,r){return E(c,o)?u.canSwitchNetworkTo(o,r):l.canSwitchNetworkTo(o,r)},async connect(o,r){return E(c,o)?await u.connect(o,r):await l.connect(o,r)},async disconnect(o){return E(c,o)?await u.disconnect(o):await l.disconnect(o)},async disconnectAll(){return await Promise.allSettled([u.disconnectAll(),l.disconnectAll()])},async getSigners(o){return E(c,o)?u.getSigners(o):l.getSigners(o)},getWalletInfo(o){return E(c,o)?u.getWalletInfo(o):l.getWalletInfo(o)},providers(){let o={};return c.length>0&&(o={...o,...u.providers()}),s.length>0&&(o={...o,...l.providers()}),o},state(o){return E(c,o)?u.state(o):l.state(o)},async suggestAndConnect(o,r){return E(c,o)?u.suggestAndConnect(o,r):await l.suggestAndConnect(o,r)}}}i(le,"useProviders");function je(e){let t=le(e);return Ve.createElement(A.Provider,{value:t},e.children)}i(je,"Provider");var Me=je;import{LegacyEvents as xo}from"@rango-dev/wallets-core/legacy";export{xo as Events,Me as Provider,G as availableWallets,$ as checkWalletProviders,Xe as choose,B as clearPersistance,Y as connectedWallets,H as defaultWalletState,Ze as isAsync,R as makeEventHandler,et as needsCheckInstallation,U as stateReducer,q as tryPersistWallet,K as tryRemoveWalletFromPersistance,we as useWallets};
|
|
1
|
+
var ge=Object.defineProperty;var c=(e,n)=>ge(e,"name",{value:n,configurable:!0});import{Persistor as ye}from"@rango-dev/wallets-core/legacy";var h="last-connected-wallets",v="hub-v1-last-connected-wallets";import{Persistor as L}from"@rango-dev/wallets-core/legacy";var w=class{static{c(this,"LastConnectedWalletsFromStorage")}#e;constructor(n){this.#e=n}addWallet(n,a){if(this.#e===v)return this.#t(n,a);if(this.#e===h)return this.#a(n);throw new Error("Not implemented")}removeWallets(n){if(this.#e===v)return this.#n(n);if(this.#e===h)return this.#c(n);throw new Error("Not implemented")}list(){if(this.#e===v)return this.#r();if(this.#e===h)return this.#o();throw new Error("Not implemented")}removeNamespacesFromWallet(n,a){if(this.#e===v)return this.#s(n,a);throw new Error("Not implemented")}#o(){let a=new L().getItem(h)||[],s={};return a.forEach(i=>{s[i]=[]}),s}#r(){return new L().getItem(v)||{}}#t(n,a){let s=new L,i=s.getItem(this.#e)||{};s.setItem(this.#e,{...i,[n]:a})}#a(n){let a=new L,s=a.getItem(this.#e)||[];a.setItem(h,s.concat(n))}#n(n){let a=new L,s=a.getItem(this.#e)||{};if(!n){a.setItem(this.#e,{});return}n.forEach(i=>{s[i]&&delete s[i]}),a.setItem(this.#e,s)}#s(n,a){let u=(new L().getItem(this.#e)||{})[n].filter(r=>!a.includes(r.namespace));this.#n([n]),this.#t(n,u)}#c(n){let a=new L,s=a.getItem(this.#e)||[];if(!n){a.setItem(this.#e,[]);return}a.setItem(h,s.filter(i=>!n.includes(i)))}};function Ze(e,n){return e.find(a=>a.type===n)||null}c(Ze,"choose");var B={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function $(e,n){if(n.type==="new_state"){let a=e[n.wallet];return a?{...e,[n.wallet]:{...a,[n.name]:n.value}}:{...e,[n.wallet]:{...B,[n.name]:n.value}}}return e}c($,"stateReducer");function q(e){return Object.entries(e).filter(([,n])=>n?.connected).map(([n])=>n)}c(q,"connectedWallets");function K(e){return Object.entries(e).map(([n])=>n)}c(K,"availableWallets");function z(e){let n=new Map;return e.forEach(a=>{let{config:s,...i}=a;n.set(s.type,{actions:i,config:s})}),n}c(z,"checkWalletProviders");function et(e){return e?.constructor?.name==="AsyncFunction"}c(et,"isAsync");function tt(e){let{checkInstallation:n=!0}=e.config;return n}c(tt,"needsCheckInstallation");async function Q({type:e,walletActions:n,getState:a}){if(n.canEagerConnect){let s=new w(h),d=!!s.list()[e];d&&!a(e).connected&&R(),d||s.addWallet(e,[])}}c(Q,"tryPersistWallet");function J({type:e,walletActions:n}){n.canEagerConnect&&new w(h).removeWallets([e])}c(J,"tryRemoveWalletFromPersistance");function R(){let e=new ye;e.getItem(h)&&e.removeItem(h)}c(R,"clearPersistance");function F(e,n){return c((s,i,d,u,r)=>{e({type:"new_state",wallet:s,name:i,value:d}),n&&n(s,i,d,u,r)},"handler")}c(F,"makeEventHandler");import je from"react";import{createContext as he}from"react";var W="Context hasn't been initialized yet.",ve={async connect(){throw new Error(W)},async disconnect(){throw new Error(W)},async disconnectAll(){throw new Error(W)},async suggestAndConnect(){throw new Error(W)},state(){throw new Error(W)},canSwitchNetworkTo(){throw new Error(W)},providers(){throw new Error(W)},getWalletInfo(){throw new Error(W)},getSigners(){throw new Error(W)}},I=he(ve);import{guessProviderStateSelector as re,namespaceStateSelector as ae}from"@rango-dev/wallets-core";import{LegacyEvents as x}from"@rango-dev/wallets-core/legacy";import{generateStoreId as xe}from"@rango-dev/wallets-core/utils";import{pickVersion as D}from"@rango-dev/wallets-core/utils";import{convertEvmBlockchainMetaToEvmChainInfo as Ie}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Te}from"rango-types";import{useEffect as O,useReducer as ke}from"react";async function X(e,n){let a=new w(h),s=a.list(),i=Object.keys(s);if(i.length){let d=[];i.forEach(t=>{let o=e.get(t);if(o){let l=n(o);d.push({walletType:t,eagerConnect:l.eagerConnect.bind(l)})}});let u=await Promise.allSettled(d.map(async({eagerConnect:t})=>t())),r=[];u.forEach((t,o)=>{let{status:l}=t;l==="rejected"&&r.push(d[o].walletType)}),r.length&&a.removeWallets(r)}}c(X,"autoConnect");import{LegacyWallet as we}from"@rango-dev/wallets-core/legacy";import{useContext as Ce,useRef as Pe}from"react";function Z(e){let n=Pe({});function a(s){let i=s.config.type;return typeof n.current[i]>"u"&&(n.current[i]=new we({config:s.config,handler:e},s.actions)),n.current[i]}return c(a,"updater"),a}c(Z,"useInitializers");function We(){let e=Ce(I);if(!e)throw Error("useWallet can only be used within the Provider component");return e}c(We,"useWallets");import{useEffect as Ee,useRef as Se}from"react";function ee(e){return!!e.allBlockChains?.length&&!!e.autoConnect}c(ee,"shouldTryAutoConnect");function b(e){let n=Se(!1);Ee(()=>{ee(e)&&!n.current&&(n.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}c(b,"useAutoConnect");function _(e){let[n,a]=ke($,{}),s=Z(F(a,e.onUpdateState)),i=e.providers,d=z(i);b({allBlockChains:e.allBlockChains,autoConnect:e.autoConnect,autoConnectHandler:async()=>X(d,s)});let u={async connect(r,t){let o=d.get(r);if(!o)throw new Error(`You should add ${r} to provider first.`);let l;t&&t.length>0&&(l=t.find(y=>!!y.network)?.network);let p=await s(o).connect(l,t);return e.autoConnect&&Q({type:r,walletActions:o.actions,getState:u.state}),[p]},async disconnect(r){let t=d.get(r);if(!t)throw new Error(`You should add ${r} to provider first.`);await s(t).disconnect(),e.autoConnect&&J({type:r,walletActions:t.actions})},async disconnectAll(){let r=[];return q(n).forEach(t=>{let o=d.get(t);if(o){let l=s(o);r.push(l.disconnect())}}),e.autoConnect&&R(),await Promise.allSettled(r)},async suggestAndConnect(r,t){let o=d.get(r);if(!o)throw new Error(`You should add ${r} to provider first.`);return await s(o).suggestAndConnect(t)},state(r){return n[r]||B},canSwitchNetworkTo(r,t){let o=d.get(r);if(!o)return!1;let l=s(o);return l.canSwitchNetworkTo?l.canSwitchNetworkTo(t,l.provider):!1},providers(){let r={};return K(n).forEach(t=>{let o=d.get(t);if(o){let l=s(o);r[t]=l.provider}}),r},getWalletInfo(r){let t=d.get(r);if(!t)throw new Error(`You should add ${r} to provider first.`);return t.actions.getWalletInfo(e.allBlockChains||[])},async getSigners(r){let t=d.get(r);if(!t)throw new Error(`You should add ${r} to provider first.`);let o=s(t),l=o.provider;return o.getSigners(l)}};return O(()=>{d.forEach(r=>{let t=s(r),o=c(()=>{t.onInit&&t.onInit()},"runOnInit"),l=c(m=>{m.target&&m.target.readyState==="complete"&&(o(),document.removeEventListener("readystatechange",l))},"initWhenPageIsReady");o(),document.addEventListener("readystatechange",l)})},[]),O(()=>{e.allBlockChains&&d.forEach(t=>{let o=s(t),l=o.getWalletInfo(e.allBlockChains||[]);o.setInfo({supportedBlockchains:l.supportedChains,isContractWallet:!!l.isContractWallet})})},[e.allBlockChains]),O(()=>{d.forEach(r=>{s(r).setHandler(F(a,e.onUpdateState))})},[e.onUpdateState]),u}c(_,"useLegacyProviders");import{legacyFormatAddressWithNetwork as Le}from"@rango-dev/wallets-core/legacy";import{CAIP as Ae}from"@rango-dev/wallets-core/utils";function Ne(e){return typeof e=="string"?e:["solana"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference}c(Ne,"mapCaipNamespaceToLegacyNetworkName");function H(e){let{chainId:n,address:a}=Ae.AccountId.parse(e),s=Ne(n);return Le(a,s)}c(H,"fromAccountIdToLegacyAddressFormat");async function te(e){return await e.reduce(async(a,s)=>{let i=await a;try{let d=await s();return[...i,d]}catch(d){return[...i,d]}},Promise.resolve([]))}c(te,"runSequentiallyWithoutFailure");function ne(e){return typeof e=="object"&&!Array.isArray(e)}c(ne,"isConnectResultEvm");function oe(e){return Array.isArray(e)}c(oe,"isConnectResultSolana");function T(e,n){let a="0.0.0",s="1.0.0",{isExperimentalEnabled:i=!1}=n||{};if(i){let u=[],r=[];return e.forEach(t=>{try{let o=D(t,s);r.push(o[1])}catch{let o=D(t,a);u.push(o[1])}}),[u,r]}return[e.map(u=>D(u,a)[1]),[]]}c(T,"separateLegacyAndHubProviders");function E(e,n){return e.find(a=>a.id===n)}c(E,"findProviderByType");var be=new w(v);function se(e,n,a,s,i,d){e.getAll().forEach((u,r)=>{let t=re(n,r),o=re(a,r),l=[],m=!1,p=!1,y=!1,g=null,f=[];u.getAll().forEach(A=>{let M=xe(r,A.namespaceId),N=ae(n,M),Y=ae(a,M);if(N.network!==null&&(g=N.network),N.network!==Y.network&&(p=!0),Y.accounts?.slice().sort().toString()!==N.accounts?.slice().sort().toString())if(N.accounts){let G=N.accounts.map(H);l?l=[...l,...G]:l=[...G],m=!0}else f.push(A.namespaceId),l=null,y=!0}),f.length>0&&be.removeNamespacesFromWallet(r,f);let C;try{C=S(i,r)}catch(A){console.warn("Having legacy provider is required for including some information like supported chain. ",A)}let P={connected:t.connected,connecting:t.connecting,installed:t.installed,accounts:l,network:g,reachable:!0},k={supportedBlockchains:C?.getWalletInfo(d||[]).supportedChains||[],isContractWallet:!1,isHub:!0};o.installed!==t.installed&&s(r,x.INSTALLED,t.installed,P,k),o.connecting!==t.connecting&&s(r,x.CONNECTING,t.connecting,P,k),o.connected!==t.connected&&s(r,x.CONNECTED,t.connected,P,k),m&&s(r,x.ACCOUNTS,l,P,k),y&&s(r,x.ACCOUNTS,null,P,k),p&&s(r,x.NETWORK,g,P,k)})}c(se,"checkHubStateAndTriggerEvents");function S(e,n){let[a]=T(e),s=a.find(i=>i.config.type===n);if(!s)throw console.warn(`You have a provider that doesn't have legacy provider. It causes some problems since we need some legacy functionality. Provider Id: ${n}`),new Error(`You need to have legacy implementation to use some methods. Provider Id: ${n}`);return s}c(S,"getLegacyProvider");function j(e,n){if(!e.network)return;let a=n.filter(Te);return Ie(a)[e.network]}c(j,"convertNamespaceNetworkToEvmChainId");function ce(e,n){return j(e,n)||e.network}c(ce,"tryConvertNamespaceNetworkToChainInfo");function ie(e){return ne(e)?{accounts:e.accounts,network:e.network,provider:void 0}:oe(e)?{accounts:e,network:null,provider:void 0}:{accounts:[e],network:null,provider:void 0}}c(ie,"transformHubResultToLegacyResult");function le(e,n){let a=e.map(i=>i.id).sort().toString(),s=n.map(i=>i.id).sort().toString();return a===s}c(le,"checkProviderListsEquality");import"@rango-dev/wallets-shared";import{useEffect as me,useRef as _e,useState as De}from"react";import{legacyEagerConnectHandler as He,legacyIsEvmNamespace as Be}from"@rango-dev/wallets-core/legacy";var V=new w(v);async function Re(e,n,a){let{getHub:s,allBlockChains:i}=a,d=s().get(e);if(!d)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!n)throw new Error("Passing namespace to `connect` is required. ");let u=[];n.forEach(p=>{let y=p.namespace,g=d.findByNamespace(y);if(!g)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${p.namespace})`);u.push([p,g])});let r=u.map(([p,y])=>{let f=(Be(p)?j(p,i||[]):void 0)||p.network;return async()=>await y.connect(f).catch(C=>{throw C instanceof Error?C:new Error(C)})}),t=await te(r),o=[];if(t.forEach((p,y)=>{p instanceof Error&&o.push(u[y][0])}),o.length>0&&V.removeNamespacesFromWallet(e,o.map(p=>p.namespace)),!(t.length-o.length>0))throw new Error(`No namespace connected for ${e}`);return t.filter(p=>!(p instanceof Error))}c(Re,"eagerConnect");async function de(e){let{getHub:n,allBlockChains:a,getLegacyProvider:s,wallets:i}=e,d=V.list(),u=Object.keys(d),r=[];if(u.length){let t=[];u.forEach(o=>{if(i&&!i.includes(o)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",o),r.push(o);return}let l=s(o),m;try{m=l.getInstance()}catch{console.warn("It seems instance isn't available yet for auto connect. This can happen when extension not loaded yet (sometimes when opening browser for first time) or extension is disabled. Desired wallet:",o);return}let p=d[o].map(f=>({namespace:f.namespace,network:f.network})),y=c(async()=>{if(!l.canEagerConnect)throw new Error(`${o} provider hasn't implemented canEagerConnect.`);return await l.canEagerConnect({instance:m,meta:l.getWalletInfo(a||[]).supportedChains})},"canEagerConnect"),g=c(async()=>Re(o,p,{allBlockChains:a,getHub:n}),"connectHandler");t.push(He({canEagerConnect:y,connectHandler:g,providerName:o}).catch(f=>{r.push(o),console.warn(f)}))}),await Promise.all(t),V.removeWallets(r)}}c(de,"autoConnect");import{createStore as Fe,Hub as Oe}from"@rango-dev/wallets-core";import{useRef as ue}from"react";function pe(e){let n=ue(null),a=ue(null);function s(){let u=new Oe({store:i()});return e.forEach(r=>{u.add(r.id,r)}),a.current=u,u}c(s,"createHub");function i(){if(n.current!==null)return n.current;let u=Fe();return n.current=u,u}c(i,"getStore");function d(){let u=a.current?.getAll();return!a.current||!u||!le(Array.from(u.values()),e)?s():a.current}return c(d,"getHub"),{getStore:i,getHub:d}}c(pe,"useHubRefs");function U(e){let{getStore:n,getHub:a}=pe(e.providers),[,s]=De(0),i=_e({onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains});me(()=>{i.current={onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}},[e]),me(()=>{let r=c(()=>{a().init(),s(o=>o+1)},"runOnInit"),t=c(o=>{o.target&&o.target.readyState==="complete"&&(r(),document.removeEventListener("readystatechange",t))},"initHubWhenPageIsReady");r(),document.addEventListener("readystatechange",t),n().subscribe((o,l)=>{i.current.onUpdateState&&se(a(),o,l,i.current.onUpdateState,i.current.allVersionedProviders,i.current.allBlockChains),s(m=>m+1)})},[]),b({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{de({getLegacyProvider:S.bind(null,e.allVersionedProviders),allBlockChains:e.allBlockChains,getHub:a,wallets:e.configs?.wallets})}});let d=new w(v);return{canSwitchNetworkTo(r,t){let o=S(e.allVersionedProviders,r),l=o.canSwitchNetworkTo;return l?l({network:t,meta:e.allBlockChains||[],provider:o.getInstance()}):!1},async connect(r,t){let o=a().get(r);if(!o)throw new Error(`You should add ${r} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required.");let l=[];t.forEach(f=>{let C=f.namespace,P=o.findByNamespace(C);if(!P)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${f.namespace})`);l.push([f,P])});let m=[],p=l.map(async([f,C])=>{let P=ce(f,e.allBlockChains||[]);return C.connect(P).then(ie).then(A=>(m.push({namespace:f.namespace,network:f.network}),A))});return S(e.allVersionedProviders,r).canEagerConnect&&Promise.allSettled(p).then(()=>{m.length>0&&d.addWallet(r,m)}),await Promise.all(p)},async disconnect(r){let t=a().get(r);if(!t)throw new Error(`You should add ${r} to provider first then call 'connect'.`);t.getAll().forEach(o=>o.disconnect()),e.autoConnect&&d.removeWallets([r])},disconnectAll(){throw new Error("`disconnectAll` not implemented")},async getSigners(r){let t=S(e.allVersionedProviders,r);return t.getSigners(t.getInstance())},getWalletInfo(r){let t=a().get(r);if(!t)throw new Error(`You should add ${r} to provider first.`);let o=t.info();if(!o)throw new Error("Your provider should have required `info`.");let l=S(e.allVersionedProviders,r),m={DEFAULT:""};Object.keys(o.extensions).forEach(y=>{let g=y;if(o.extensions[g]==="homepage"&&(m.DEFAULT=o.extensions[g]||""),["firefox","chrome","brave","edge"].includes(g)){let C=g.toUpperCase();m[C]=o.extensions[g]||""}});let p=l.getWalletInfo(e.allBlockChains||[]);return{name:o.name,img:o.icon,installLink:m,color:"red",supportedChains:p.supportedChains,isContractWallet:!1,mobileWallet:!1,showOnMobile:void 0,needsNamespace:p.needsNamespace,needsDerivationPath:p.needsDerivationPath,isHub:!0,properties:t.info()?.properties}},providers(){let r={};return Array.from(a().getAll().keys()).forEach(t=>{try{let o=S(e.allVersionedProviders,t);r[t]=o.getInstance()}catch(o){console.warn(o)}}),r},state(r){let o=a().state()[r];if(!o)throw new Error(`It seems your requested provider doesn't exist in hub. Provider Id: ${r}`);let l=o.namespaces.filter(p=>p.connected).flatMap(p=>p.accounts?.map(H)).filter(p=>!!p);return{connected:o.connected,connecting:o.connecting,installed:o.installed,reachable:!0,accounts:l,network:null}},suggestAndConnect(r,t){throw new Error("`suggestAndConnect` is not implemented")}}}c(U,"useHubAdapter");function fe(e){let{providers:n,...a}=e,[s,i]=T(n,{isExperimentalEnabled:a.configs?.isExperimentalEnabled}),d=_({...a,providers:s}),u=U({...a,providers:i,allVersionedProviders:n});return{canSwitchNetworkTo(t,o){return E(i,t)?u.canSwitchNetworkTo(t,o):d.canSwitchNetworkTo(t,o)},async connect(t,o){return E(i,t)?await u.connect(t,o):await d.connect(t,o)},async disconnect(t){return E(i,t)?await u.disconnect(t):await d.disconnect(t)},async disconnectAll(){return await Promise.allSettled([u.disconnectAll(),d.disconnectAll()])},async getSigners(t){return E(i,t)?u.getSigners(t):d.getSigners(t)},getWalletInfo(t){return E(i,t)?u.getWalletInfo(t):d.getWalletInfo(t)},providers(){let t={};return i.length>0&&(t={...t,...u.providers()}),s.length>0&&(t={...t,...d.providers()}),t},state(t){return E(i,t)?u.state(t):d.state(t)},async suggestAndConnect(t,o){return E(i,t)?u.suggestAndConnect(t,o):await d.suggestAndConnect(t,o)}}}c(fe,"useProviders");function Ve(e){let n=fe(e);return je.createElement(I.Provider,{value:n},e.children)}c(Ve,"Provider");var Ue=Ve;var Me=(u=>(u.CONNECTED="connected",u.CONNECTING="connecting",u.REACHABLE="reachable",u.INSTALLED="installed",u.ACCOUNTS="accounts",u.NETWORK="network",u))(Me||{});export{Me as Events,Ue as Provider,K as availableWallets,z as checkWalletProviders,Ze as choose,R as clearPersistance,q as connectedWallets,B as defaultWalletState,et as isAsync,F as makeEventHandler,tt as needsCheckInstallation,T as separateLegacyAndHubProviders,$ as stateReducer,Q as tryPersistWallet,J as tryRemoveWalletFromPersistance,We as useWallets};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|