@reown/appkit-core 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/exports/index.js +0 -1
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/exports/react.js +2 -1
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/exports/vue.js +45 -0
- package/dist/esm/exports/vue.js.map +1 -0
- package/dist/esm/src/controllers/AccountController.js +1 -1
- package/dist/esm/src/controllers/AccountController.js.map +1 -1
- package/dist/esm/src/controllers/ApiController.js +6 -7
- package/dist/esm/src/controllers/ApiController.js.map +1 -1
- package/dist/esm/src/controllers/ChainController.js +112 -46
- package/dist/esm/src/controllers/ChainController.js.map +1 -1
- package/dist/esm/src/controllers/ConnectionController.js +10 -1
- package/dist/esm/src/controllers/ConnectionController.js.map +1 -1
- package/dist/esm/src/controllers/ConnectorController.js +21 -4
- package/dist/esm/src/controllers/ConnectorController.js.map +1 -1
- package/dist/esm/src/controllers/EnsController.js +1 -2
- package/dist/esm/src/controllers/EnsController.js.map +1 -1
- package/dist/esm/src/controllers/SendController.js +4 -4
- package/dist/esm/src/controllers/SendController.js.map +1 -1
- package/dist/esm/src/controllers/SwapController.js +4 -5
- package/dist/esm/src/controllers/SwapController.js.map +1 -1
- package/dist/esm/src/controllers/TransactionsController.js +2 -2
- package/dist/esm/src/controllers/TransactionsController.js.map +1 -1
- package/dist/esm/src/utils/AssetUtil.js +4 -4
- package/dist/esm/src/utils/AssetUtil.js.map +1 -1
- package/dist/esm/src/utils/ConstantsUtil.js +1 -0
- package/dist/esm/src/utils/ConstantsUtil.js.map +1 -1
- package/dist/esm/src/utils/CoreHelperUtil.js +1 -1
- package/dist/esm/src/utils/CoreHelperUtil.js.map +1 -1
- package/dist/esm/src/utils/StorageUtil.js +1 -1
- package/dist/esm/src/utils/StorageUtil.js.map +1 -1
- package/dist/esm/src/utils/SwapApiUtil.js +4 -5
- package/dist/esm/src/utils/SwapApiUtil.js.map +1 -1
- package/dist/esm/tests/controllers/ApiController.test.js +117 -50
- package/dist/esm/tests/controllers/ApiController.test.js.map +1 -1
- package/dist/esm/tests/controllers/ChainController.test.js +175 -20
- package/dist/esm/tests/controllers/ChainController.test.js.map +1 -1
- package/dist/esm/tests/controllers/ConnectionController.test.js +6 -2
- package/dist/esm/tests/controllers/ConnectionController.test.js.map +1 -1
- package/dist/esm/tests/controllers/EnsController.test.js +28 -14
- package/dist/esm/tests/controllers/EnsController.test.js.map +1 -1
- package/dist/esm/tests/controllers/SwapController.test.js +15 -8
- package/dist/esm/tests/controllers/SwapController.test.js.map +1 -1
- package/dist/esm/tests/controllers/TransactionsController.test.js +2 -1
- package/dist/esm/tests/controllers/TransactionsController.test.js.map +1 -1
- package/dist/esm/tests/hooks/react.test.js +16 -6
- package/dist/esm/tests/hooks/react.test.js.map +1 -1
- package/dist/esm/tests/utils/AssetUtil.test.js +8 -4
- package/dist/esm/tests/utils/AssetUtil.test.js.map +1 -1
- package/dist/esm/tests/utils/SwapApiUtil.test.js +40 -20
- package/dist/esm/tests/utils/SwapApiUtil.test.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/exports/index.d.ts +0 -2
- package/dist/types/exports/react.d.ts +4 -12
- package/dist/types/exports/vue.d.ts +12 -0
- package/dist/types/src/controllers/ChainController.d.ts +23 -18
- package/dist/types/src/controllers/ConnectionController.d.ts +4 -0
- package/dist/types/src/utils/ConstantsUtil.d.ts +2 -0
- package/dist/types/src/utils/TypeUtil.d.ts +40 -2
- package/package.json +24 -7
- package/dist/esm/src/controllers/NetworkController.js +0 -186
- package/dist/esm/src/controllers/NetworkController.js.map +0 -1
- package/dist/esm/tests/controllers/NetworkController.test.js +0 -131
- package/dist/esm/tests/controllers/NetworkController.test.js.map +0 -1
- package/dist/types/src/controllers/NetworkController.d.ts +0 -39
- package/dist/types/tests/controllers/NetworkController.test.d.ts +0 -1
|
@@ -6,8 +6,6 @@ export { AccountController } from '../src/controllers/AccountController.js';
|
|
|
6
6
|
export type { AccountControllerState } from '../src/controllers/AccountController.js';
|
|
7
7
|
export { ChainController } from '../src/controllers/ChainController.js';
|
|
8
8
|
export type { ChainControllerState } from '../src/controllers/ChainController.js';
|
|
9
|
-
export { NetworkController } from '../src/controllers/NetworkController.js';
|
|
10
|
-
export type { NetworkControllerClient, NetworkControllerState } from '../src/controllers/NetworkController.js';
|
|
11
9
|
export { OnRampController } from '../src/controllers/OnRampController.js';
|
|
12
10
|
export type { OnRampControllerState, OnRampProvider } from '../src/controllers/OnRampController.js';
|
|
13
11
|
export { ConnectionController } from '../src/controllers/ConnectionController.js';
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
+
import type { CaipNetwork, CaipNetworkId } from '@reown/appkit-common';
|
|
1
2
|
export declare function useAppKitNetwork(): {
|
|
2
|
-
caipNetwork:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readonly chainNamespace: import("@reown/appkit-common").ChainNamespace;
|
|
6
|
-
readonly name: string;
|
|
7
|
-
readonly currency: string;
|
|
8
|
-
readonly explorerUrl: string;
|
|
9
|
-
readonly rpcUrl: string;
|
|
10
|
-
readonly imageUrl?: string | undefined;
|
|
11
|
-
readonly imageId?: string | undefined;
|
|
12
|
-
} | undefined;
|
|
13
|
-
chainId: import("@reown/appkit-common").ChainId | undefined;
|
|
3
|
+
caipNetwork: CaipNetwork | undefined;
|
|
4
|
+
chainId: number | string | undefined;
|
|
5
|
+
caipNetworkId: CaipNetworkId | undefined;
|
|
14
6
|
};
|
|
15
7
|
export declare function useAppKitAccount(): {
|
|
16
8
|
caipAddress: `eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CaipNetwork, CaipNetworkId } from '@reown/appkit-common';
|
|
2
|
+
export declare function useAppKitNetwork(): {
|
|
3
|
+
caipNetwork: CaipNetwork | undefined;
|
|
4
|
+
chainId: number | string | undefined;
|
|
5
|
+
caipNetworkId: CaipNetworkId | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare function useAppKitAccount(): {
|
|
8
|
+
caipAddress: `eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | undefined;
|
|
9
|
+
address: string | undefined;
|
|
10
|
+
isConnected: boolean;
|
|
11
|
+
status: "reconnecting" | "connected" | "disconnected" | "connecting" | undefined;
|
|
12
|
+
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { ChainAdapter, Connector } from '../utils/TypeUtil.js';
|
|
2
|
-
import { type NetworkControllerState } from './NetworkController.js';
|
|
1
|
+
import type { AdapterNetworkState, ChainAdapter, Connector } from '../utils/TypeUtil.js';
|
|
3
2
|
import { type AccountControllerState } from './AccountController.js';
|
|
4
|
-
import { type CaipAddress, type CaipNetwork, type ChainNamespace } from '@reown/appkit-common';
|
|
3
|
+
import { type CaipAddress, type CaipNetwork, type CaipNetworkId, type ChainNamespace } from '@reown/appkit-common';
|
|
5
4
|
export interface ChainControllerState {
|
|
6
5
|
activeChain: ChainNamespace | undefined;
|
|
7
6
|
activeCaipAddress: CaipAddress | undefined;
|
|
@@ -14,31 +13,37 @@ export interface ChainControllerState {
|
|
|
14
13
|
type ChainsInitializerAdapter = Pick<ChainAdapter, 'connectionControllerClient' | 'networkControllerClient' | 'defaultNetwork' | 'chainNamespace' | 'adapterType' | 'caipNetworks'>;
|
|
15
14
|
export declare const ChainController: {
|
|
16
15
|
state: ChainControllerState;
|
|
16
|
+
subscribe(callback: (value: ChainControllerState) => void): () => void;
|
|
17
17
|
subscribeKey<K extends keyof ChainControllerState>(key: K, callback: (value: ChainControllerState[K]) => void): () => void;
|
|
18
18
|
subscribeChainProp<K_1 extends keyof ChainAdapter>(property: K_1, callback: (value: ChainAdapter[K_1] | undefined) => void, chain?: ChainNamespace): () => void;
|
|
19
19
|
initialize(adapters: ChainsInitializerAdapter[]): void;
|
|
20
20
|
initializeUniversalAdapter(adapter: ChainsInitializerAdapter, adapters: ChainsInitializerAdapter[]): void;
|
|
21
|
-
|
|
21
|
+
setAdapterNetworkState(chain: ChainNamespace, props: Partial<AdapterNetworkState>): void;
|
|
22
22
|
setChainAccountData(chain: ChainNamespace | undefined, accountProps: Partial<AccountControllerState>, replaceState?: boolean): void;
|
|
23
23
|
setAccountProp(prop: keyof AccountControllerState, value: AccountControllerState[keyof AccountControllerState], chain: ChainNamespace | undefined, replaceState?: boolean): void;
|
|
24
24
|
setActiveNamespace(chain: ChainNamespace | undefined): void;
|
|
25
|
-
setActiveCaipNetwork(caipNetwork:
|
|
26
|
-
|
|
27
|
-
* The setCaipNetwork function is being called for different purposes and it needs to be controlled if it should replace the NetworkController state or not.
|
|
28
|
-
* While we initializing the adapters, we need to set the caipNetwork without replacing the state.
|
|
29
|
-
* But when we switch the network, we need to replace the state.
|
|
30
|
-
* @param chain
|
|
31
|
-
* @param caipNetwork
|
|
32
|
-
* @param shouldReplace - if true, it will replace the NetworkController state
|
|
33
|
-
*/
|
|
34
|
-
setCaipNetwork(chain: ChainNamespace | undefined, caipNetwork: NetworkControllerState['caipNetwork'], shouldReplace?: boolean): void;
|
|
25
|
+
setActiveCaipNetwork(caipNetwork: AdapterNetworkState['caipNetwork']): void;
|
|
26
|
+
switchActiveNetwork(network: CaipNetwork): Promise<void>;
|
|
35
27
|
setActiveConnector(connector: ChainControllerState['activeConnector']): void;
|
|
36
|
-
getNetworkControllerClient(chainNamespace?: ChainNamespace): import("
|
|
28
|
+
getNetworkControllerClient(chainNamespace?: ChainNamespace): import("../utils/TypeUtil.js").NetworkControllerClient;
|
|
37
29
|
getConnectionControllerClient(_chain?: ChainNamespace): import("./ConnectionController.js").ConnectionControllerClient;
|
|
38
30
|
getAccountProp<K_2 extends keyof AccountControllerState>(key: K_2, _chain?: ChainNamespace): AccountControllerState[K_2] | undefined;
|
|
39
|
-
getNetworkProp<K_3 extends keyof
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
getNetworkProp<K_3 extends keyof AdapterNetworkState>(key: K_3, namespace: ChainNamespace): AdapterNetworkState[K_3] | undefined;
|
|
32
|
+
getRequestedCaipNetworks(chainToFilter: ChainNamespace): CaipNetwork[];
|
|
33
|
+
getAllRequestedCaipNetworks(): CaipNetwork[];
|
|
34
|
+
setRequestedCaipNetworks(requestedNetworks: CaipNetwork[], chain: ChainNamespace): void;
|
|
35
|
+
getAllApprovedCaipNetworkIds(): CaipNetworkId[];
|
|
36
|
+
getActiveCaipNetwork(): CaipNetwork | undefined;
|
|
37
|
+
getActiveCaipAddress(): `eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | undefined;
|
|
38
|
+
getApprovedCaipNetworkIds(namespace: ChainNamespace): CaipNetworkId[];
|
|
39
|
+
setApprovedCaipNetworksData(namespace: ChainNamespace): Promise<void>;
|
|
40
|
+
checkIfSupportedNetwork(namespace: ChainNamespace): boolean;
|
|
41
|
+
setSmartAccountEnabledNetworks(smartAccountEnabledNetworks: number[], chain: ChainNamespace): void;
|
|
42
|
+
checkIfSmartAccountEnabled(): boolean;
|
|
43
|
+
getActiveNetworkTokenAddress(): string;
|
|
44
|
+
showUnsupportedChainUI(): void;
|
|
45
|
+
checkIfNamesSupported(): boolean;
|
|
46
|
+
resetNetwork(namespace: ChainNamespace): void;
|
|
42
47
|
resetAccount(chain: ChainNamespace | undefined): void;
|
|
43
48
|
};
|
|
44
49
|
export {};
|
|
@@ -21,6 +21,8 @@ export interface ConnectionControllerClient {
|
|
|
21
21
|
writeContract: (args: WriteContractArgs) => Promise<`0x${string}` | null>;
|
|
22
22
|
getEnsAddress: (value: string) => Promise<false | string>;
|
|
23
23
|
getEnsAvatar: (value: string) => Promise<false | string>;
|
|
24
|
+
grantPermissions: (params: readonly unknown[] | object) => Promise<unknown>;
|
|
25
|
+
getCapabilities: (params: string) => Promise<unknown>;
|
|
24
26
|
}
|
|
25
27
|
export interface ConnectionControllerState {
|
|
26
28
|
_client?: ConnectionControllerClient;
|
|
@@ -48,6 +50,8 @@ export declare const ConnectionController: {
|
|
|
48
50
|
parseUnits(value: string, decimals: number): bigint;
|
|
49
51
|
formatUnits(value: bigint, decimals: number): string;
|
|
50
52
|
sendTransaction(args: SendTransactionArgs): Promise<string | null>;
|
|
53
|
+
getCapabilities(params: string): Promise<unknown>;
|
|
54
|
+
grantPermissions(params: object | readonly unknown[]): Promise<unknown>;
|
|
51
55
|
estimateGas(args: EstimateGasTransactionArgs): Promise<bigint>;
|
|
52
56
|
writeContract(args: WriteContractArgs): Promise<`0x${string}` | null>;
|
|
53
57
|
getEnsAddress(value: string): Promise<string | false>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Features } from './TypeUtil.js';
|
|
2
|
+
import type { ChainNamespace } from '@reown/appkit-common';
|
|
2
3
|
export declare const ONRAMP_PROVIDERS: {
|
|
3
4
|
label: string;
|
|
4
5
|
name: string;
|
|
@@ -35,6 +36,7 @@ export declare const ConstantsUtil: {
|
|
|
35
36
|
SWAP_SUGGESTED_TOKENS: string[];
|
|
36
37
|
SWAP_POPULAR_TOKENS: string[];
|
|
37
38
|
SWAP_SUPPORTED_NETWORKS: string[];
|
|
39
|
+
NAMES_SUPPORTED_CHAIN_NAMESPACES: ChainNamespace[];
|
|
38
40
|
NATIVE_TOKEN_ADDRESS: {
|
|
39
41
|
readonly eip155: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
40
42
|
readonly solana: "So11111111111111111111111111111111111111111";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { W3mFrameProvider, W3mFrameTypes } from '@reown/appkit-wallet';
|
|
2
2
|
import type { Balance, Transaction, CaipNetworkId, CaipNetwork, ChainNamespace, CaipAddress, AdapterType, SdkFramework, AppKitSdkVersion } from '@reown/appkit-common';
|
|
3
|
-
import type { NetworkControllerClient, NetworkControllerState } from '../controllers/NetworkController.js';
|
|
4
3
|
import type { ConnectionControllerClient } from '../controllers/ConnectionController.js';
|
|
5
4
|
import type { AccountControllerState } from '../controllers/AccountController.js';
|
|
6
5
|
import type { OnRampProviderOption } from '../controllers/OnRampController.js';
|
|
@@ -665,11 +664,50 @@ export interface WriteContractArgs {
|
|
|
665
664
|
method: 'send' | 'transfer' | 'call';
|
|
666
665
|
abi: any;
|
|
667
666
|
}
|
|
667
|
+
export interface NetworkControllerClient {
|
|
668
|
+
switchCaipNetwork: (network: CaipNetwork) => Promise<void>;
|
|
669
|
+
getApprovedCaipNetworksData: () => Promise<{
|
|
670
|
+
approvedCaipNetworkIds: CaipNetworkId[];
|
|
671
|
+
supportsAllNetworks: boolean;
|
|
672
|
+
}>;
|
|
673
|
+
}
|
|
674
|
+
export type AdapterNetworkState = {
|
|
675
|
+
supportsAllNetworks: boolean;
|
|
676
|
+
isUnsupportedChain?: boolean;
|
|
677
|
+
_client?: NetworkControllerClient;
|
|
678
|
+
caipNetwork?: CaipNetwork;
|
|
679
|
+
requestedCaipNetworks?: CaipNetwork[];
|
|
680
|
+
approvedCaipNetworkIds?: CaipNetworkId[];
|
|
681
|
+
allowUnsupportedCaipNetwork?: boolean;
|
|
682
|
+
smartAccountEnabledNetworks?: number[];
|
|
683
|
+
};
|
|
684
|
+
export type AdapterAccountState = {
|
|
685
|
+
currentTab: number;
|
|
686
|
+
caipAddress?: CaipAddress;
|
|
687
|
+
address?: string;
|
|
688
|
+
addressLabels: Map<string, string>;
|
|
689
|
+
allAccounts: AccountType[];
|
|
690
|
+
balance?: string;
|
|
691
|
+
balanceSymbol?: string;
|
|
692
|
+
profileName?: string | null;
|
|
693
|
+
profileImage?: string | null;
|
|
694
|
+
addressExplorerUrl?: string;
|
|
695
|
+
smartAccountDeployed?: boolean;
|
|
696
|
+
socialProvider?: SocialProvider;
|
|
697
|
+
tokenBalance?: Balance[];
|
|
698
|
+
shouldUpdateToAddress?: string;
|
|
699
|
+
connectedWalletInfo?: ConnectedWalletInfo;
|
|
700
|
+
preferredAccountType?: W3mFrameTypes.AccountType;
|
|
701
|
+
socialWindow?: Window;
|
|
702
|
+
farcasterUrl?: string;
|
|
703
|
+
status?: 'reconnecting' | 'connected' | 'disconnected' | 'connecting';
|
|
704
|
+
siweStatus?: 'uninitialized' | 'ready' | 'loading' | 'success' | 'rejected' | 'error';
|
|
705
|
+
};
|
|
668
706
|
export type ChainAdapter = {
|
|
669
707
|
connectionControllerClient?: ConnectionControllerClient;
|
|
670
708
|
networkControllerClient?: NetworkControllerClient;
|
|
671
709
|
accountState?: AccountControllerState;
|
|
672
|
-
networkState?:
|
|
710
|
+
networkState?: AdapterNetworkState;
|
|
673
711
|
defaultNetwork?: CaipNetwork;
|
|
674
712
|
chainNamespace: ChainNamespace;
|
|
675
713
|
isUniversalAdapterClient?: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-core",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/esm/exports/index.js",
|
|
6
6
|
"types": "./dist/types/exports/index.d.ts",
|
|
@@ -18,28 +18,45 @@
|
|
|
18
18
|
"types": "./dist/types/exports/react.d.ts",
|
|
19
19
|
"import": "./dist/esm/exports/react.js",
|
|
20
20
|
"default": "./dist/esm/exports/react.js"
|
|
21
|
+
},
|
|
22
|
+
"./vue": {
|
|
23
|
+
"types": "./dist/types/exports/vue.d.ts",
|
|
24
|
+
"import": "./dist/esm/exports/vue.js",
|
|
25
|
+
"default": "./dist/esm/exports/vue.js"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"typesVersions": {
|
|
29
|
+
"*": {
|
|
30
|
+
"react": [
|
|
31
|
+
"./dist/types/exports/react.d.ts"
|
|
32
|
+
],
|
|
33
|
+
"vue": [
|
|
34
|
+
"./dist/types/exports/vue.d.ts"
|
|
35
|
+
]
|
|
21
36
|
}
|
|
22
37
|
},
|
|
23
38
|
"dependencies": {
|
|
24
39
|
"@walletconnect/universal-provider": "2.17.0",
|
|
25
40
|
"valtio": "1.11.2",
|
|
26
|
-
"
|
|
27
|
-
"@reown/appkit-
|
|
41
|
+
"viem": "2.x",
|
|
42
|
+
"@reown/appkit-common": "1.1.0",
|
|
43
|
+
"@reown/appkit-wallet": "1.1.0"
|
|
28
44
|
},
|
|
45
|
+
"peerDependencies": {},
|
|
29
46
|
"devDependencies": {
|
|
30
47
|
"vitest": "2.0.5",
|
|
31
48
|
"@vitest/coverage-v8": "2.0.5",
|
|
32
|
-
"
|
|
49
|
+
"vue": "3.x"
|
|
33
50
|
},
|
|
34
51
|
"author": "Reown <support@reown.com> (https://reown.com)",
|
|
35
52
|
"license": "Apache-2.0",
|
|
36
|
-
"homepage": "https://github.com/
|
|
53
|
+
"homepage": "https://github.com/reown-com/appkit",
|
|
37
54
|
"repository": {
|
|
38
55
|
"type": "git",
|
|
39
|
-
"url": "git+https://github.com/
|
|
56
|
+
"url": "git+https://github.com/reown-com/appkit.git"
|
|
40
57
|
},
|
|
41
58
|
"bugs": {
|
|
42
|
-
"url": "https://github.com/
|
|
59
|
+
"url": "https://github.com/reown-com/appkit/issues"
|
|
43
60
|
},
|
|
44
61
|
"scripts": {
|
|
45
62
|
"build:clean": "rm -rf dist",
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { proxy, ref } from 'valtio/vanilla';
|
|
2
|
-
import { EventsController } from './EventsController.js';
|
|
3
|
-
import { ModalController } from './ModalController.js';
|
|
4
|
-
import { CoreHelperUtil } from '../utils/CoreHelperUtil.js';
|
|
5
|
-
import { NetworkUtil } from '@reown/appkit-common';
|
|
6
|
-
import { ChainController } from './ChainController.js';
|
|
7
|
-
import { ConstantsUtil } from '../utils/ConstantsUtil.js';
|
|
8
|
-
// -- State --------------------------------------------- //
|
|
9
|
-
const state = proxy({
|
|
10
|
-
supportsAllNetworks: true,
|
|
11
|
-
smartAccountEnabledNetworks: []
|
|
12
|
-
});
|
|
13
|
-
// -- Controller ---------------------------------------- //
|
|
14
|
-
export const NetworkController = {
|
|
15
|
-
state,
|
|
16
|
-
replaceState(newState) {
|
|
17
|
-
if (!newState) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
Object.assign(state, ref(newState));
|
|
21
|
-
},
|
|
22
|
-
subscribeKey(property, callback) {
|
|
23
|
-
let prev = undefined;
|
|
24
|
-
return ChainController.subscribeChainProp('networkState', networkState => {
|
|
25
|
-
if (networkState) {
|
|
26
|
-
const nextValue = networkState[property];
|
|
27
|
-
if (prev !== nextValue) {
|
|
28
|
-
prev = nextValue;
|
|
29
|
-
callback(nextValue);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
_getClient() {
|
|
35
|
-
return ChainController.getNetworkControllerClient();
|
|
36
|
-
},
|
|
37
|
-
setActiveCaipNetwork(caipNetwork) {
|
|
38
|
-
if (!caipNetwork) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
ChainController.setActiveCaipNetwork(caipNetwork);
|
|
42
|
-
const isSupported = this.checkIfSupportedNetwork();
|
|
43
|
-
if (!isSupported) {
|
|
44
|
-
this.showUnsupportedChainUI();
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
setCaipNetwork(caipNetwork) {
|
|
48
|
-
if (!caipNetwork) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (!caipNetwork?.chainNamespace) {
|
|
52
|
-
throw new Error('chain is required to set active network');
|
|
53
|
-
}
|
|
54
|
-
ChainController.setCaipNetwork(caipNetwork?.chainNamespace, caipNetwork);
|
|
55
|
-
},
|
|
56
|
-
setRequestedCaipNetworks(requestedNetworks, chain) {
|
|
57
|
-
ChainController.setChainNetworkData(chain, { requestedCaipNetworks: requestedNetworks });
|
|
58
|
-
},
|
|
59
|
-
setAllowUnsupportedChain(allowUnsupportedCaipNetwork, chain) {
|
|
60
|
-
ChainController.setChainNetworkData(chain || ChainController.state.activeChain, {
|
|
61
|
-
allowUnsupportedCaipNetwork
|
|
62
|
-
});
|
|
63
|
-
},
|
|
64
|
-
setSmartAccountEnabledNetworks(smartAccountEnabledNetworks, chain) {
|
|
65
|
-
ChainController.setChainNetworkData(chain, { smartAccountEnabledNetworks });
|
|
66
|
-
},
|
|
67
|
-
getRequestedCaipNetworks(chainToFilter) {
|
|
68
|
-
let chainAdapters = undefined;
|
|
69
|
-
if (!ChainController.state.activeChain) {
|
|
70
|
-
throw new Error('activeChain is required to get requested networks');
|
|
71
|
-
}
|
|
72
|
-
if (chainToFilter) {
|
|
73
|
-
const chain = chainToFilter;
|
|
74
|
-
if (!chain) {
|
|
75
|
-
throw new Error('chain is required to get requested networks');
|
|
76
|
-
}
|
|
77
|
-
chainAdapters = [chain];
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
const chains = [...ChainController.state.chains.keys()];
|
|
81
|
-
chainAdapters = chains;
|
|
82
|
-
}
|
|
83
|
-
const approvedIds = [];
|
|
84
|
-
const requestedNetworks = [];
|
|
85
|
-
chainAdapters.forEach((chn) => {
|
|
86
|
-
if (ChainController.state.chains.get(chn)?.networkState?.approvedCaipNetworkIds) {
|
|
87
|
-
approvedIds.push(...(ChainController.state.chains.get(chn)?.networkState?.approvedCaipNetworkIds || []));
|
|
88
|
-
}
|
|
89
|
-
if (ChainController.state.chains.get(chn)?.networkState?.requestedCaipNetworks) {
|
|
90
|
-
requestedNetworks.push(...(ChainController.state.chains.get(chn)?.networkState?.requestedCaipNetworks || []));
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
const sortedNetworks = CoreHelperUtil.sortRequestedNetworks(approvedIds, requestedNetworks);
|
|
94
|
-
return sortedNetworks;
|
|
95
|
-
},
|
|
96
|
-
async switchActiveNetwork(network) {
|
|
97
|
-
const networkControllerClient = ChainController.getNetworkControllerClient(network?.chainNamespace);
|
|
98
|
-
if (networkControllerClient) {
|
|
99
|
-
await networkControllerClient.switchCaipNetwork(network);
|
|
100
|
-
}
|
|
101
|
-
ChainController.setActiveCaipNetwork(network);
|
|
102
|
-
if (network) {
|
|
103
|
-
EventsController.sendEvent({
|
|
104
|
-
type: 'track',
|
|
105
|
-
event: 'SWITCH_NETWORK',
|
|
106
|
-
properties: { network: network.id }
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
getApprovedCaipNetworkIds(chainToFilter) {
|
|
111
|
-
if (chainToFilter) {
|
|
112
|
-
const chain = chainToFilter;
|
|
113
|
-
if (!chain) {
|
|
114
|
-
throw new Error('chain is required to get approved network IDs');
|
|
115
|
-
}
|
|
116
|
-
return ChainController.state.chains.get(chain)?.networkState?.approvedCaipNetworkIds;
|
|
117
|
-
}
|
|
118
|
-
const allCaipNetworkIds = [];
|
|
119
|
-
Object.values(ChainController.state.chains).forEach(adapter => {
|
|
120
|
-
if (adapter.networkState.approvedCaipNetworkIds) {
|
|
121
|
-
allCaipNetworkIds.push(...(adapter.networkState?.approvedCaipNetworkIds || []));
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
return allCaipNetworkIds;
|
|
125
|
-
},
|
|
126
|
-
async setApprovedCaipNetworksData(chain) {
|
|
127
|
-
if (!chain) {
|
|
128
|
-
throw new Error('chain is required to set approved network data');
|
|
129
|
-
}
|
|
130
|
-
const networkControllerClient = ChainController.getNetworkControllerClient();
|
|
131
|
-
const data = await networkControllerClient?.getApprovedCaipNetworksData();
|
|
132
|
-
ChainController.setChainNetworkData(chain, data);
|
|
133
|
-
},
|
|
134
|
-
checkIfSupportedNetwork() {
|
|
135
|
-
const chain = ChainController.state.activeChain;
|
|
136
|
-
if (!chain) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
const activeCaipNetwork = ChainController.state.activeCaipNetwork;
|
|
140
|
-
const requestedCaipNetworks = this.getRequestedCaipNetworks(chain);
|
|
141
|
-
if (!requestedCaipNetworks.length) {
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
return requestedCaipNetworks?.some(network => network.id === activeCaipNetwork?.id);
|
|
145
|
-
},
|
|
146
|
-
checkIfSmartAccountEnabled() {
|
|
147
|
-
const networkId = NetworkUtil.caipNetworkIdToNumber(ChainController.state.activeCaipNetwork?.id);
|
|
148
|
-
const activeChain = ChainController.state.activeChain;
|
|
149
|
-
if (!activeChain) {
|
|
150
|
-
throw new Error('activeChain is required to check if smart account is enabled');
|
|
151
|
-
}
|
|
152
|
-
if (!networkId) {
|
|
153
|
-
return false;
|
|
154
|
-
}
|
|
155
|
-
const smartAccountEnabledNetworks = ChainController.getNetworkProp('smartAccountEnabledNetworks');
|
|
156
|
-
return Boolean(smartAccountEnabledNetworks?.includes(Number(networkId)));
|
|
157
|
-
},
|
|
158
|
-
resetNetwork() {
|
|
159
|
-
const chain = ChainController.state.activeChain;
|
|
160
|
-
if (!chain) {
|
|
161
|
-
throw new Error('chain is required to reset network');
|
|
162
|
-
}
|
|
163
|
-
ChainController.setChainNetworkData(chain, {
|
|
164
|
-
approvedCaipNetworkIds: undefined,
|
|
165
|
-
supportsAllNetworks: true,
|
|
166
|
-
smartAccountEnabledNetworks: []
|
|
167
|
-
});
|
|
168
|
-
},
|
|
169
|
-
getSupportsAllNetworks() {
|
|
170
|
-
const chain = ChainController.state.activeChain;
|
|
171
|
-
if (!chain) {
|
|
172
|
-
throw new Error('chain is required to check if network supports all networks');
|
|
173
|
-
}
|
|
174
|
-
return ChainController.state.chains.get(chain)?.networkState?.supportsAllNetworks;
|
|
175
|
-
},
|
|
176
|
-
showUnsupportedChainUI() {
|
|
177
|
-
setTimeout(() => {
|
|
178
|
-
ModalController.open({ view: 'UnsupportedChain' });
|
|
179
|
-
}, 300);
|
|
180
|
-
},
|
|
181
|
-
getActiveNetworkTokenAddress() {
|
|
182
|
-
const address = ConstantsUtil.NATIVE_TOKEN_ADDRESS[ChainController.state.activeCaipNetwork?.chainNamespace || 'eip155'];
|
|
183
|
-
return `${ChainController.state.activeCaipNetwork?.id || 'eip155:1'}:${address}`;
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
//# sourceMappingURL=NetworkController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkController.js","sourceRoot":"","sources":["../../../../src/controllers/NetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EACL,WAAW,EAIZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAsBzD,4DAA4D;AAC5D,MAAM,KAAK,GAAG,KAAK,CAAyB;IAC1C,mBAAmB,EAAE,IAAI;IACzB,2BAA2B,EAAE,EAAE;CAChC,CAAC,CAAA;AAEF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK;IAEL,YAAY,CAAC,QAA4C;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAM;QACR,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrC,CAAC;IAED,YAAY,CACV,QAAW,EACX,QAAkD;QAElD,IAAI,IAAI,GAA0C,SAAS,CAAA;QAE3D,OAAO,eAAe,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE;YACvE,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;gBACxC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,IAAI,GAAG,SAAS,CAAA;oBAChB,QAAQ,CAAC,SAAS,CAAC,CAAA;gBACrB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU;QACR,OAAO,eAAe,CAAC,0BAA0B,EAAE,CAAA;IACrD,CAAC;IAED,oBAAoB,CAAC,WAAkD;QACrE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,eAAe,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;QAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAElD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,WAAkD;QAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,eAAe,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAA;IAC1E,CAAC;IAED,wBAAwB,CACtB,iBAAkE,EAClE,KAAiC;QAEjC,eAAe,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,wBAAwB,CACtB,2BAAkF,EAClF,KAAiC;QAEjC,eAAe,CAAC,mBAAmB,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE;YAC9E,2BAA2B;SAC5B,CAAC,CAAA;IACJ,CAAC;IAED,8BAA8B,CAC5B,2BAAkF,EAClF,KAAiC;QAEjC,eAAe,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,2BAA2B,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,wBAAwB,CAAC,aAA8B;QACrD,IAAI,aAAa,GAAiC,SAAS,CAAA;QAE3D,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,aAAa,CAAA;YAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAChE,CAAC;YAED,aAAa,GAAG,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAEvD,aAAa,GAAG,MAAM,CAAA;QACxB,CAAC;QAED,MAAM,WAAW,GAA4B,EAAE,CAAA;QAC/C,MAAM,iBAAiB,GAAkB,EAAE,CAAA;QAE3C,aAAa,CAAC,OAAO,CAAC,CAAC,GAAmB,EAAE,EAAE;YAC5C,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;gBAChF,WAAW,CAAC,IAAI,CACd,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,sBAAsB,IAAI,EAAE,CAAC,CACvF,CAAA;YACH,CAAC;YACD,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;gBAC/E,iBAAiB,CAAC,IAAI,CACpB,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,qBAAqB,IAAI,EAAE,CAAC,CACtF,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,cAAc,CAAC,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;QAE3F,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAA8C;QACtE,MAAM,uBAAuB,GAAG,eAAe,CAAC,0BAA0B,CACxE,OAAO,EAAE,cAAc,CACxB,CAAA;QAED,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC1D,CAAC;QAED,eAAe,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAE7C,IAAI,OAAO,EAAE,CAAC;YACZ,gBAAgB,CAAC,SAAS,CAAC;gBACzB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,gBAAgB;gBACvB,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;aACpC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,yBAAyB,CAAC,aAA8B;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,aAAa,CAAA;YAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;YAClE,CAAC;YAED,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,sBAAsB,CAAA;QACtF,CAAC;QAED,MAAM,iBAAiB,GAAoB,EAAE,CAAA;QAE7C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5D,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;gBAChD,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAA;YACjF,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,KAAiC;QACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QAED,MAAM,uBAAuB,GAAG,eAAe,CAAC,0BAA0B,EAAE,CAAA;QAC5E,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,2BAA2B,EAAE,CAAA;QAEzE,eAAe,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAClD,CAAC;IAED,uBAAuB;QACrB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAA;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAA;QACjE,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;QAElE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAiB,EAAE,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,0BAA0B;QACxB,MAAM,SAAS,GAAG,WAAW,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;QAChG,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAA;QAErD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;QACjF,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,2BAA2B,GAAG,eAAe,CAAC,cAAc,CAChE,6BAA6B,CAC9B,CAAA;QAED,OAAO,OAAO,CAAC,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,YAAY;QACV,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAA;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAED,eAAe,CAAC,mBAAmB,CAAC,KAAK,EAAE;YACzC,sBAAsB,EAAE,SAAS;YACjC,mBAAmB,EAAE,IAAI;YACzB,2BAA2B,EAAE,EAAE;SAChC,CAAC,CAAA;IACJ,CAAC;IAED,sBAAsB;QACpB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAA;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAChF,CAAC;QAED,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,mBAAmB,CAAA;IACnF,CAAC;IAED,sBAAsB;QACpB,UAAU,CAAC,GAAG,EAAE;YACd,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACpD,CAAC,EAAE,GAAG,CAAC,CAAA;IACT,CAAC;IAED,4BAA4B;QAC1B,MAAM,OAAO,GACX,aAAa,CAAC,oBAAoB,CAChC,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,cAAc,IAAI,QAAQ,CACpE,CAAA;QAEH,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,IAAI,UAAU,IAAI,OAAO,EAAE,CAAA;IAClF,CAAC;CACF,CAAA"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
-
import { ChainController, NetworkController } from '../../exports/index.js';
|
|
3
|
-
import { ConstantsUtil } from '@reown/appkit-common';
|
|
4
|
-
// -- Setup --------------------------------------------------------------------
|
|
5
|
-
const caipNetwork = {
|
|
6
|
-
id: 'eip155:1',
|
|
7
|
-
name: 'Ethereum',
|
|
8
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
9
|
-
chainId: 1,
|
|
10
|
-
currency: 'ETH',
|
|
11
|
-
explorerUrl: 'https://etherscan.io',
|
|
12
|
-
rpcUrl: 'https://rpc.infura.com/v1/'
|
|
13
|
-
};
|
|
14
|
-
const solanaCaipNetwork = {
|
|
15
|
-
id: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
|
|
16
|
-
name: 'Solana',
|
|
17
|
-
chainNamespace: ConstantsUtil.CHAIN.SOLANA,
|
|
18
|
-
chainId: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
|
|
19
|
-
currency: 'SOL',
|
|
20
|
-
explorerUrl: 'https://solscan.io',
|
|
21
|
-
rpcUrl: 'https://rpc.infura.com/v1/'
|
|
22
|
-
};
|
|
23
|
-
const requestedCaipNetworks = [
|
|
24
|
-
{
|
|
25
|
-
id: 'eip155:1',
|
|
26
|
-
name: 'Ethereum',
|
|
27
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
28
|
-
chainId: 1,
|
|
29
|
-
currency: 'ETH',
|
|
30
|
-
explorerUrl: 'https://etherscan.io',
|
|
31
|
-
rpcUrl: 'https://rpc.infura.com/v1/'
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
id: 'eip155:42161',
|
|
35
|
-
name: 'Arbitrum One',
|
|
36
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
37
|
-
chainId: 42161,
|
|
38
|
-
currency: 'ETH',
|
|
39
|
-
explorerUrl: 'https://etherscan.io',
|
|
40
|
-
rpcUrl: 'https://rpc.infura.com/v1/'
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: 'eip155:43114',
|
|
44
|
-
name: 'Avalanche C-Chain',
|
|
45
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
46
|
-
chainId: 43114,
|
|
47
|
-
currency: 'ETH',
|
|
48
|
-
explorerUrl: 'https://etherscan.io',
|
|
49
|
-
rpcUrl: 'https://rpc.infura.com/v1/'
|
|
50
|
-
}
|
|
51
|
-
];
|
|
52
|
-
const approvedCaipNetworkIds = ['eip155:1', 'eip155:42161'];
|
|
53
|
-
const chain = ConstantsUtil.CHAIN.EVM;
|
|
54
|
-
const client = {
|
|
55
|
-
switchCaipNetwork: async (_caipNetwork) => Promise.resolve(),
|
|
56
|
-
getApprovedCaipNetworksData: async () => Promise.resolve({ approvedCaipNetworkIds, supportsAllNetworks: false })
|
|
57
|
-
};
|
|
58
|
-
// -- Tests --------------------------------------------------------------------
|
|
59
|
-
describe('NetworkController', () => {
|
|
60
|
-
it('should throw if client not set', () => {
|
|
61
|
-
expect(NetworkController._getClient).toThrow('Chain is required to get network controller client');
|
|
62
|
-
ChainController.initialize([
|
|
63
|
-
{
|
|
64
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
65
|
-
caipNetworks: []
|
|
66
|
-
}
|
|
67
|
-
]);
|
|
68
|
-
expect(NetworkController._getClient).toThrow('NetworkController client not set');
|
|
69
|
-
});
|
|
70
|
-
it('should have valid default state', () => {
|
|
71
|
-
ChainController.initialize([
|
|
72
|
-
{
|
|
73
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
74
|
-
networkControllerClient: client,
|
|
75
|
-
caipNetworks: []
|
|
76
|
-
}
|
|
77
|
-
]);
|
|
78
|
-
expect(NetworkController.state).toEqual({
|
|
79
|
-
supportsAllNetworks: true,
|
|
80
|
-
smartAccountEnabledNetworks: []
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
it('should update state correctly on setRequestedCaipNetworks()', () => {
|
|
84
|
-
NetworkController.setRequestedCaipNetworks(requestedCaipNetworks, chain);
|
|
85
|
-
expect(NetworkController.state.requestedCaipNetworks).toEqual(requestedCaipNetworks);
|
|
86
|
-
});
|
|
87
|
-
it('should update state correctly on setCaipNetwork()', () => {
|
|
88
|
-
NetworkController.setActiveCaipNetwork(caipNetwork);
|
|
89
|
-
expect(ChainController.state.activeCaipNetwork).toEqual(caipNetwork);
|
|
90
|
-
});
|
|
91
|
-
it('should update state correctly on getApprovedCaipNetworkIds()', async () => {
|
|
92
|
-
await NetworkController.setApprovedCaipNetworksData(chain);
|
|
93
|
-
expect(NetworkController.state.approvedCaipNetworkIds).toEqual(approvedCaipNetworkIds);
|
|
94
|
-
});
|
|
95
|
-
it('should reset state correctly on resetNetwork()', () => {
|
|
96
|
-
NetworkController.resetNetwork();
|
|
97
|
-
expect(NetworkController.state.approvedCaipNetworkIds).toEqual(undefined);
|
|
98
|
-
expect(NetworkController.state.requestedCaipNetworks).toEqual(requestedCaipNetworks);
|
|
99
|
-
expect(NetworkController.state.smartAccountEnabledNetworks).toEqual([]);
|
|
100
|
-
});
|
|
101
|
-
it('should check correctly if smart accounts are enabled on the network', () => {
|
|
102
|
-
NetworkController.setActiveCaipNetwork(caipNetwork);
|
|
103
|
-
NetworkController.setSmartAccountEnabledNetworks([1], chain);
|
|
104
|
-
expect(NetworkController.checkIfSmartAccountEnabled()).toEqual(true);
|
|
105
|
-
NetworkController.setSmartAccountEnabledNetworks([], chain);
|
|
106
|
-
expect(NetworkController.checkIfSmartAccountEnabled()).toEqual(false);
|
|
107
|
-
NetworkController.setSmartAccountEnabledNetworks([2], chain);
|
|
108
|
-
expect(NetworkController.checkIfSmartAccountEnabled()).toEqual(false);
|
|
109
|
-
NetworkController.setActiveCaipNetwork({
|
|
110
|
-
id: 'eip155:2',
|
|
111
|
-
name: 'Ethereum',
|
|
112
|
-
chainNamespace: ConstantsUtil.CHAIN.EVM,
|
|
113
|
-
chainId: 2,
|
|
114
|
-
currency: 'ETH',
|
|
115
|
-
explorerUrl: 'https://etherscan.io',
|
|
116
|
-
rpcUrl: 'https://rpc.infura.com/v1/'
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
it('should get correct active network token address', () => {
|
|
120
|
-
let mock = vi
|
|
121
|
-
.spyOn(ChainController.state, 'activeCaipNetwork', 'get')
|
|
122
|
-
.mockReturnValue(undefined);
|
|
123
|
-
expect(NetworkController.getActiveNetworkTokenAddress()).toEqual('eip155:1:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee');
|
|
124
|
-
mock.mockReturnValue(caipNetwork);
|
|
125
|
-
expect(NetworkController.getActiveNetworkTokenAddress()).toEqual('eip155:1:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee');
|
|
126
|
-
mock.mockReturnValue(solanaCaipNetwork);
|
|
127
|
-
expect(NetworkController.getActiveNetworkTokenAddress()).toEqual('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp:So11111111111111111111111111111111111111111');
|
|
128
|
-
mock.mockClear();
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
//# sourceMappingURL=NetworkController.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkController.test.js","sourceRoot":"","sources":["../../../../tests/controllers/NetworkController.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { type CaipNetwork, type CaipNetworkId, type ChainNamespace } from '@reown/appkit-common';
|
|
2
|
-
export interface NetworkControllerClient {
|
|
3
|
-
switchCaipNetwork: (network: NetworkControllerState['caipNetwork']) => Promise<void>;
|
|
4
|
-
getApprovedCaipNetworksData: () => Promise<{
|
|
5
|
-
approvedCaipNetworkIds: NetworkControllerState['approvedCaipNetworkIds'];
|
|
6
|
-
supportsAllNetworks: NetworkControllerState['supportsAllNetworks'];
|
|
7
|
-
}>;
|
|
8
|
-
}
|
|
9
|
-
export interface NetworkControllerState {
|
|
10
|
-
supportsAllNetworks: boolean;
|
|
11
|
-
isUnsupportedChain?: boolean;
|
|
12
|
-
_client?: NetworkControllerClient;
|
|
13
|
-
caipNetwork?: CaipNetwork;
|
|
14
|
-
requestedCaipNetworks?: CaipNetwork[];
|
|
15
|
-
approvedCaipNetworkIds?: CaipNetworkId[];
|
|
16
|
-
allowUnsupportedCaipNetwork?: boolean;
|
|
17
|
-
smartAccountEnabledNetworks?: number[];
|
|
18
|
-
}
|
|
19
|
-
export declare const NetworkController: {
|
|
20
|
-
state: NetworkControllerState;
|
|
21
|
-
replaceState(newState: NetworkControllerState | undefined): void;
|
|
22
|
-
subscribeKey<K extends keyof NetworkControllerState>(property: K, callback: (val: NetworkControllerState[K]) => void): () => void;
|
|
23
|
-
_getClient(): NetworkControllerClient;
|
|
24
|
-
setActiveCaipNetwork(caipNetwork: NetworkControllerState['caipNetwork']): void;
|
|
25
|
-
setCaipNetwork(caipNetwork: NetworkControllerState['caipNetwork']): void;
|
|
26
|
-
setRequestedCaipNetworks(requestedNetworks: NetworkControllerState['requestedCaipNetworks'], chain: ChainNamespace | undefined): void;
|
|
27
|
-
setAllowUnsupportedChain(allowUnsupportedCaipNetwork: NetworkControllerState['allowUnsupportedCaipNetwork'], chain: ChainNamespace | undefined): void;
|
|
28
|
-
setSmartAccountEnabledNetworks(smartAccountEnabledNetworks: NetworkControllerState['smartAccountEnabledNetworks'], chain: ChainNamespace | undefined): void;
|
|
29
|
-
getRequestedCaipNetworks(chainToFilter?: ChainNamespace): CaipNetwork[];
|
|
30
|
-
switchActiveNetwork(network: NetworkControllerState['caipNetwork']): Promise<void>;
|
|
31
|
-
getApprovedCaipNetworkIds(chainToFilter?: ChainNamespace): (`eip155:${string}` | `eip155:${number}` | `solana:${string}` | `solana:${number}` | `polkadot:${string}` | `polkadot:${number}`)[] | undefined;
|
|
32
|
-
setApprovedCaipNetworksData(chain: ChainNamespace | undefined): Promise<void>;
|
|
33
|
-
checkIfSupportedNetwork(): boolean;
|
|
34
|
-
checkIfSmartAccountEnabled(): boolean;
|
|
35
|
-
resetNetwork(): void;
|
|
36
|
-
getSupportsAllNetworks(): boolean | undefined;
|
|
37
|
-
showUnsupportedChainUI(): void;
|
|
38
|
-
getActiveNetworkTokenAddress(): string;
|
|
39
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|