@wagmi/core 2.6.18 → 2.7.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.
@@ -1,2 +1,2 @@
1
- export const version = '2.6.18';
1
+ export const version = '2.7.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA"}
@@ -1,12 +1,13 @@
1
- import { type SwitchChainErrorType as viem_SwitchChainErrorType, type UserRejectedRequestErrorType } from 'viem';
1
+ import { type AddEthereumChainParameter, type SwitchChainErrorType as viem_SwitchChainErrorType, type UserRejectedRequestErrorType } from 'viem';
2
2
  import { type Config } from '../createConfig.js';
3
3
  import type { BaseErrorType, ErrorType } from '../errors/base.js';
4
4
  import { type ChainNotConfiguredErrorType } from '../errors/config.js';
5
5
  import { type ProviderNotFoundErrorType, type SwitchChainNotSupportedErrorType } from '../errors/connector.js';
6
6
  import type { ConnectorParameter } from '../types/properties.js';
7
- import { type Evaluate } from '../types/utils.js';
7
+ import { type Evaluate, type ExactPartial } from '../types/utils.js';
8
8
  export type SwitchChainParameters<config extends Config = Config, chainId extends config['chains'][number]['id'] = config['chains'][number]['id']> = Evaluate<ConnectorParameter & {
9
9
  chainId: chainId | config['chains'][number]['id'];
10
+ addEthereumChainParameter?: Evaluate<ExactPartial<Omit<AddEthereumChainParameter, 'chainId'>>> | undefined;
10
11
  }>;
11
12
  export type SwitchChainReturnType<config extends Config = Config, chainId extends config['chains'][number]['id'] = config['chains'][number]['id']> = Extract<config['chains'][number], {
12
13
  id: Config extends config ? number : chainId;
@@ -1 +1 @@
1
- {"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../src/actions/switchChain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,IAAI,yBAAyB,EACtD,KAAK,4BAA4B,EAClC,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,yBAAyB,EAE9B,KAAK,gCAAgC,EACtC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC7E,QAAQ,CACV,kBAAkB,GAAG;IACnB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;CAClD,CACF,CAAA;AAED,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC7E,OAAO,CACT,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EACxB;IAAE,EAAE,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CACjD,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B,gCAAgC,GAChC,2BAA2B,GAE3B,yBAAyB,GACzB,4BAA4B,GAE5B,aAAa,GACb,SAAS,GAET,yBAAyB,CAAA;AAE7B,oDAAoD;AACpD,wBAAsB,WAAW,CAC/B,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAE9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GACjD,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkBjD"}
1
+ {"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../src/actions/switchChain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,IAAI,yBAAyB,EACtD,KAAK,4BAA4B,EAClC,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,yBAAyB,EAE9B,KAAK,gCAAgC,EACtC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEpE,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC7E,QAAQ,CACV,kBAAkB,GAAG;IACnB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;IACjD,yBAAyB,CAAC,EACtB,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC,CAAC,GAClE,SAAS,CAAA;CACd,CACF,CAAA;AAED,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC7E,OAAO,CACT,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EACxB;IAAE,EAAE,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CACjD,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B,gCAAgC,GAChC,2BAA2B,GAE3B,yBAAyB,GACzB,4BAA4B,GAE5B,aAAa,GACb,SAAS,GAET,yBAAyB,CAAA;AAE7B,oDAAoD;AACpD,wBAAsB,WAAW,CAC/B,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAE9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GACjD,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqBjD"}
@@ -1,7 +1,7 @@
1
- import { type Address, type Chain, type Client, type ProviderConnectInfo, type ProviderMessage } from 'viem';
1
+ import { type AddEthereumChainParameter, type Address, type Chain, type Client, type ProviderConnectInfo, type ProviderMessage } from 'viem';
2
2
  import { Emitter } from '../createEmitter.js';
3
3
  import { type Storage } from '../createStorage.js';
4
- import { type Evaluate } from '../types/utils.js';
4
+ import { type Evaluate, type ExactPartial, type Omit } from '../types/utils.js';
5
5
  export type ConnectorEventMap = {
6
6
  change: {
7
7
  accounts?: readonly Address[] | undefined;
@@ -47,9 +47,10 @@ export type CreateConnectorFn<provider = unknown, properties extends Record<stri
47
47
  chainId?: number | undefined;
48
48
  } | undefined): Promise<Client>;
49
49
  isAuthorized(): Promise<boolean>;
50
- switchChain?(parameters: {
50
+ switchChain?(parameters: Evaluate<{
51
+ addEthereumChainParameter?: ExactPartial<Omit<AddEthereumChainParameter, 'chainId'>> | undefined;
51
52
  chainId: number;
52
- }): Promise<Chain>;
53
+ }>): Promise<Chain>;
53
54
  onAccountsChanged(accounts: string[]): void;
54
55
  onChainChanged(chainId: string): void;
55
56
  onConnect?(connectInfo: ProviderConnectInfo): void;
@@ -1 +1 @@
1
- {"version":3,"file":"createConnector.d.ts","sourceRoot":"","sources":["../../../src/connectors/createConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createConnector.d.ts","sourceRoot":"","sources":["../../../src/connectors/createConnector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type EIP1193EventMap, type EIP1193Provider, type ProviderConnectInfo } from 'viem';
1
+ import { type AddEthereumChainParameter, type EIP1193Provider, type ProviderConnectInfo } from 'viem';
2
2
  import { type Evaluate } from '../types/utils.js';
3
3
  export type InjectedParameters = {
4
4
  /**
@@ -14,8 +14,8 @@ export type InjectedParameters = {
14
14
  target?: TargetId | Target | (() => Target | undefined) | undefined;
15
15
  };
16
16
  export declare function injected(parameters?: InjectedParameters): import("./createConnector.js").CreateConnectorFn<{
17
- on: <TEvent extends keyof EIP1193EventMap>(event: TEvent, listener: EIP1193EventMap[TEvent]) => void;
18
- removeListener: <TEvent_1 extends keyof EIP1193EventMap>(event: TEvent_1, listener: EIP1193EventMap[TEvent_1]) => void;
17
+ on: <TEvent extends keyof import("viem").EIP1193EventMap>(event: TEvent, listener: import("viem").EIP1193EventMap[TEvent]) => void;
18
+ removeListener: <TEvent_1 extends keyof import("viem").EIP1193EventMap>(event: TEvent_1, listener: import("viem").EIP1193EventMap[TEvent_1]) => void;
19
19
  request: import("viem").EIP1193RequestFn<[{
20
20
  Method: "web3_clientVersion";
21
21
  Parameters?: undefined;
@@ -179,7 +179,7 @@ export declare function injected(parameters?: InjectedParameters): import("./cre
179
179
  }, {
180
180
  Method: "eth_newPendingTransactionFilter";
181
181
  Parameters?: undefined;
182
- ReturnType: `0x${string}`; /** Only exists in MetaMask as of 2022/04/03 */
182
+ ReturnType: `0x${string}`;
183
183
  }, {
184
184
  Method: "eth_protocolVersion";
185
185
  Parameters?: undefined;
@@ -238,7 +238,7 @@ export declare function injected(parameters?: InjectedParameters): import("./cre
238
238
  ReturnType: `0x${string}`;
239
239
  }, {
240
240
  Method: "wallet_addEthereumChain";
241
- Parameters: [chain: import("viem").AddEthereumChainParameter];
241
+ Parameters: [chain: AddEthereumChainParameter];
242
242
  ReturnType: null;
243
243
  }, {
244
244
  Method: "wallet_getPermissions";
@@ -1 +1 @@
1
- {"version":3,"file":"injected.d.ts","sourceRoot":"","sources":["../../../src/connectors/injected.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injected.d.ts","sourceRoot":"","sources":["../../../src/connectors/injected.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,17 @@ export declare function switchChainMutationOptions<config extends Config>(config
6
6
  readonly mutationFn: (variables: {
7
7
  connector?: import("../createConfig.js").Connector | undefined;
8
8
  chainId: config["chains"][number]["id"];
9
+ addEthereumChainParameter?: {
10
+ chainName?: string | undefined;
11
+ nativeCurrency?: {
12
+ name: string;
13
+ symbol: string;
14
+ decimals: number;
15
+ } | undefined;
16
+ rpcUrls?: readonly string[] | undefined;
17
+ blockExplorerUrls?: string[] | undefined;
18
+ iconUrls?: string[] | undefined;
19
+ } | undefined;
9
20
  }) => Promise<Extract<config["chains"][number], {
10
21
  id: Config extends config ? number : config["chains"][number]["id"];
11
22
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../src/query/switchChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,sBAAsB,CAAA;AAE/E,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE3B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,EAC9D,MAAM,EAAE,MAAM;;;;;;;;EAYf;AAED,MAAM,MAAM,eAAe,CACzB,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC5C,QAAQ,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpD,MAAM,MAAM,oBAAoB,CAC9B,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC5C,QAAQ,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpD,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,CACxE,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAE9C,SAAS,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,OAAO,CAAC,EACJ,QAAQ,CACN,aAAa,CACX,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,oBAAoB,EACpB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,OAAO,CACR,CACF,GACD,SAAS,KACV,IAAI,CAAA;AAET,MAAM,MAAM,sBAAsB,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,CAC7E,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAE9C,SAAS,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,OAAO,CAAC,EACJ,QAAQ,CACN,aAAa,CACX,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,oBAAoB,EACpB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,OAAO,CACR,CACF,GACD,SAAS,KACV,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../src/query/switchChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,sBAAsB,CAAA;AAE/E,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE3B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,EAC9D,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;EAYf;AAED,MAAM,MAAM,eAAe,CACzB,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC5C,QAAQ,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpD,MAAM,MAAM,oBAAoB,CAC9B,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAC5C,QAAQ,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpD,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,CACxE,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAE9C,SAAS,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,OAAO,CAAC,EACJ,QAAQ,CACN,aAAa,CACX,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,oBAAoB,EACpB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,OAAO,CACR,CACF,GACD,SAAS,KACV,IAAI,CAAA;AAET,MAAM,MAAM,sBAAsB,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,GAAG,OAAO,IAAI,CAC7E,OAAO,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAE9C,SAAS,EAAE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,EAChD,OAAO,CAAC,EACJ,QAAQ,CACN,aAAa,CACX,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,oBAAoB,EACpB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,OAAO,CACR,CACF,GACD,SAAS,KACV,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.6.18";
1
+ export declare const version = "2.7.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wagmi/core",
3
3
  "description": "VanillaJS library for Ethereum",
4
- "version": "2.6.18",
4
+ "version": "2.7.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,4 +1,5 @@
1
1
  import {
2
+ type AddEthereumChainParameter,
2
3
  type SwitchChainErrorType as viem_SwitchChainErrorType,
3
4
  type UserRejectedRequestErrorType,
4
5
  } from 'viem'
@@ -15,7 +16,7 @@ import {
15
16
  type SwitchChainNotSupportedErrorType,
16
17
  } from '../errors/connector.js'
17
18
  import type { ConnectorParameter } from '../types/properties.js'
18
- import { type Evaluate } from '../types/utils.js'
19
+ import { type Evaluate, type ExactPartial } from '../types/utils.js'
19
20
 
20
21
  export type SwitchChainParameters<
21
22
  config extends Config = Config,
@@ -23,6 +24,9 @@ export type SwitchChainParameters<
23
24
  > = Evaluate<
24
25
  ConnectorParameter & {
25
26
  chainId: chainId | config['chains'][number]['id']
27
+ addEthereumChainParameter?:
28
+ | Evaluate<ExactPartial<Omit<AddEthereumChainParameter, 'chainId'>>>
29
+ | undefined
26
30
  }
27
31
  >
28
32
 
@@ -54,7 +58,7 @@ export async function switchChain<
54
58
  config: config,
55
59
  parameters: SwitchChainParameters<config, chainId>,
56
60
  ): Promise<SwitchChainReturnType<config, chainId>> {
57
- const { chainId } = parameters
61
+ const { addEthereumChainParameter, chainId } = parameters
58
62
 
59
63
  const connection = config.state.connections.get(
60
64
  parameters.connector?.uid ?? config.state.current!,
@@ -63,7 +67,10 @@ export async function switchChain<
63
67
  const connector = connection.connector
64
68
  if (!connector.switchChain)
65
69
  throw new SwitchChainNotSupportedError({ connector })
66
- const chain = await connector.switchChain({ chainId })
70
+ const chain = await connector.switchChain({
71
+ addEthereumChainParameter,
72
+ chainId,
73
+ })
67
74
  return chain as SwitchChainReturnType<config, chainId>
68
75
  }
69
76
 
@@ -1,4 +1,5 @@
1
1
  import {
2
+ type AddEthereumChainParameter,
2
3
  type Address,
3
4
  type Chain,
4
5
  type Client,
@@ -8,7 +9,7 @@ import {
8
9
 
9
10
  import { Emitter } from '../createEmitter.js'
10
11
  import { type Storage } from '../createStorage.js'
11
- import { type Evaluate } from '../types/utils.js'
12
+ import { type Evaluate, type ExactPartial, type Omit } from '../types/utils.js'
12
13
 
13
14
  export type ConnectorEventMap = {
14
15
  change: {
@@ -55,7 +56,14 @@ export type CreateConnectorFn<
55
56
  parameters?: { chainId?: number | undefined } | undefined,
56
57
  ): Promise<Client>
57
58
  isAuthorized(): Promise<boolean>
58
- switchChain?(parameters: { chainId: number }): Promise<Chain>
59
+ switchChain?(
60
+ parameters: Evaluate<{
61
+ addEthereumChainParameter?:
62
+ | ExactPartial<Omit<AddEthereumChainParameter, 'chainId'>>
63
+ | undefined
64
+ chainId: number
65
+ }>,
66
+ ): Promise<Chain>
59
67
 
60
68
  onAccountsChanged(accounts: string[]): void
61
69
  onChainChanged(chainId: string): void
@@ -1,6 +1,6 @@
1
1
  import {
2
+ type AddEthereumChainParameter,
2
3
  type Address,
3
- type EIP1193EventMap,
4
4
  type EIP1193Provider,
5
5
  type ProviderConnectInfo,
6
6
  ProviderRpcError,
@@ -223,13 +223,13 @@ export function injected(parameters: InjectedParameters = {}) {
223
223
  currentChainId = chain?.id ?? currentChainId
224
224
  }
225
225
 
226
- if (shimDisconnect) {
227
- // Remove disconnected shim if it exists
226
+ // Remove disconnected shim if it exists
227
+ if (shimDisconnect)
228
228
  await config.storage?.removeItem(`${this.id}.disconnected`)
229
- // Add connected shim if no target exists
230
- if (!parameters.target)
231
- await config.storage?.setItem('injected.connected', true)
232
- }
229
+
230
+ // Add connected shim if no target exists
231
+ if (!parameters.target)
232
+ await config.storage?.setItem('injected.connected', true)
233
233
 
234
234
  return { accounts, chainId: currentChainId }
235
235
  } catch (err) {
@@ -262,9 +262,10 @@ export function injected(parameters: InjectedParameters = {}) {
262
262
  // Add shim signalling connector is disconnected
263
263
  if (shimDisconnect) {
264
264
  await config.storage?.setItem(`${this.id}.disconnected`, true)
265
- if (!parameters.target)
266
- await config.storage?.removeItem('injected.connected')
267
265
  }
266
+
267
+ if (!parameters.target)
268
+ await config.storage?.removeItem('injected.connected')
268
269
  },
269
270
  async getAccounts() {
270
271
  const provider = await this.getProvider()
@@ -373,7 +374,7 @@ export function injected(parameters: InjectedParameters = {}) {
373
374
  return false
374
375
  }
375
376
  },
376
- async switchChain({ chainId }) {
377
+ async switchChain({ addEthereumChainParameter, chainId }) {
377
378
  const provider = await this.getProvider()
378
379
  if (!provider) throw new ProviderNotFoundError()
379
380
 
@@ -382,20 +383,26 @@ export function injected(parameters: InjectedParameters = {}) {
382
383
 
383
384
  try {
384
385
  await Promise.all([
385
- provider.request({
386
- method: 'wallet_switchEthereumChain',
387
- params: [{ chainId: numberToHex(chainId) }],
388
- }),
389
- new Promise<void>((resolve) => {
390
- const listener: EIP1193EventMap['chainChanged'] = (data) => {
391
- console.log('[injected] switchChain.listener', { data, chainId })
392
- if (Number(data) === chainId) {
393
- provider.removeListener('chainChanged', listener)
394
- resolve()
395
- }
396
- }
397
- provider.on('chainChanged', listener)
398
- }),
386
+ provider
387
+ .request({
388
+ method: 'wallet_switchEthereumChain',
389
+ params: [{ chainId: numberToHex(chainId) }],
390
+ })
391
+ // During `'wallet_switchEthereumChain'`, MetaMask makes a `'net_version'` RPC call to the target chain.
392
+ // If this request fails, MetaMask does not emit the `'chainChanged'` event, but will still switch the chain.
393
+ // To counter this behavior, we request and emit the current chain ID to confirm the chain switch either via
394
+ // this callback or an externally emitted `'chainChanged'` event.
395
+ // https://github.com/MetaMask/metamask-extension/issues/24247
396
+ .then(async () => {
397
+ const currentChainId = await this.getChainId()
398
+ if (currentChainId === chainId)
399
+ config.emitter.emit('change', { chainId })
400
+ }),
401
+ new Promise<void>((resolve) =>
402
+ config.emitter.once('change', ({ chainId: currentChainId }) => {
403
+ if (currentChainId === chainId) resolve()
404
+ }),
405
+ ),
399
406
  ])
400
407
  return chain
401
408
  } catch (err) {
@@ -413,23 +420,33 @@ export function injected(parameters: InjectedParameters = {}) {
413
420
  const { default: blockExplorer, ...blockExplorers } =
414
421
  chain.blockExplorers ?? {}
415
422
  let blockExplorerUrls
416
- if (blockExplorer)
423
+ if (addEthereumChainParameter?.blockExplorerUrls)
424
+ blockExplorerUrls = addEthereumChainParameter.blockExplorerUrls
425
+ else if (blockExplorer)
417
426
  blockExplorerUrls = [
418
427
  blockExplorer.url,
419
428
  ...Object.values(blockExplorers).map((x) => x.url),
420
429
  ]
421
430
 
431
+ let rpcUrls
432
+ if (addEthereumChainParameter?.rpcUrls?.length)
433
+ rpcUrls = addEthereumChainParameter.rpcUrls
434
+ else rpcUrls = [chain.rpcUrls.default?.http[0] ?? '']
435
+
436
+ const addEthereumChain = {
437
+ blockExplorerUrls,
438
+ chainId: numberToHex(chainId),
439
+ chainName: addEthereumChainParameter?.chainName ?? chain.name,
440
+ iconUrls: addEthereumChainParameter?.iconUrls,
441
+ nativeCurrency:
442
+ addEthereumChainParameter?.nativeCurrency ??
443
+ chain.nativeCurrency,
444
+ rpcUrls,
445
+ } satisfies AddEthereumChainParameter
446
+
422
447
  await provider.request({
423
448
  method: 'wallet_addEthereumChain',
424
- params: [
425
- {
426
- chainId: numberToHex(chainId),
427
- chainName: chain.name,
428
- nativeCurrency: chain.nativeCurrency,
429
- rpcUrls: [chain.rpcUrls.default?.http[0] ?? ''],
430
- blockExplorerUrls,
431
- },
432
- ],
449
+ params: [addEthereumChain],
433
450
  })
434
451
 
435
452
  const currentChainId = await this.getChainId()
@@ -450,7 +467,6 @@ export function injected(parameters: InjectedParameters = {}) {
450
467
  }
451
468
  },
452
469
  async onAccountsChanged(accounts) {
453
- console.log('[injected] onAccountsChanged', accounts)
454
470
  // Disconnect if there are no accounts
455
471
  if (accounts.length === 0) this.onDisconnect()
456
472
  // Connect if emitter is listening for connect event (e.g. is disconnected and connects through wallet interface)
@@ -468,7 +484,6 @@ export function injected(parameters: InjectedParameters = {}) {
468
484
  })
469
485
  },
470
486
  onChainChanged(chain) {
471
- console.log('[injected] onChainChanged', chain)
472
487
  const chainId = Number(chain)
473
488
  config.emitter.emit('change', { chainId })
474
489
  },
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.6.18'
1
+ export const version = '2.7.0'