@dynamic-labs/ethereum 1.0.0-alpha.7 → 1.0.0-alpha.9
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/CHANGELOG.md +36 -0
- package/package.json +7 -7
- package/src/coinbase/coinbase.d.ts +12 -12
- package/src/eip6963Provider.cjs +39 -0
- package/src/eip6963Provider.d.ts +25 -0
- package/src/eip6963Provider.js +34 -0
- package/src/ethProviderHelper.cjs +18 -0
- package/src/ethProviderHelper.d.ts +4 -0
- package/src/ethProviderHelper.js +18 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
|
|
2
|
+
## [1.0.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.8...v1.0.0-alpha.9) (2023-12-07)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### ⚠ BREAKING CHANGES
|
|
6
|
+
|
|
7
|
+
* how to migrate
|
|
8
|
+
Whenever you would use the property wallets from the object returned by useDynamicContext, you must now rename it to walletConnectorOptions.
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* add support for eip6963 ([#4064](https://github.com/dynamic-labs/DynamicAuth/issues/4064)) ([3f8cf0e](https://github.com/dynamic-labs/DynamicAuth/commit/3f8cf0e4250945f3a331f701d491a308fab5f7b8))
|
|
13
|
+
* allow AA wallets to access owner features ([#4079](https://github.com/dynamic-labs/DynamicAuth/issues/4079)) ([9efc2be](https://github.com/dynamic-labs/DynamicAuth/commit/9efc2bee87ec9193c3682863d72024b3586de724))
|
|
14
|
+
* introduce UserWalletsContext ([#4083](https://github.com/dynamic-labs/DynamicAuth/issues/4083)) ([b9ca7f6](https://github.com/dynamic-labs/DynamicAuth/commit/b9ca7f6b0aff4b3992325b70cc9a903ece445c7f))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* ensure zero dev provider will receive a signer ([#4084](https://github.com/dynamic-labs/DynamicAuth/issues/4084)) ([f02a540](https://github.com/dynamic-labs/DynamicAuth/commit/f02a54036d39bfc5fb0c262f292acf914e4bd653))
|
|
20
|
+
* render recovery section only when turnkey provider is enabled ([#4093](https://github.com/dynamic-labs/DynamicAuth/issues/4093)) ([5f29bd2](https://github.com/dynamic-labs/DynamicAuth/commit/5f29bd23ccca2e307822377be28396edc7ab1fda))
|
|
21
|
+
* reset selected social provider on logout ([#4078](https://github.com/dynamic-labs/DynamicAuth/issues/4078)) ([85dc611](https://github.com/dynamic-labs/DynamicAuth/commit/85dc611d9c0e733bdb9d316b008bdaa35bcc2a91))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
* rename wallets > walletConnectorOptions ([#4086](https://github.com/dynamic-labs/DynamicAuth/issues/4086)) ([10a7795](https://github.com/dynamic-labs/DynamicAuth/commit/10a779567e751469a667095726da52d78facbd57))
|
|
25
|
+
|
|
26
|
+
## [1.0.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.7...v1.0.0-alpha.8) (2023-12-05)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### ⚠ BREAKING CHANGES
|
|
30
|
+
|
|
31
|
+
* rename EthereumSmartWalletConnectors to ZeroDevSmartWalletConnectors (#4067)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Features
|
|
35
|
+
|
|
36
|
+
* add support for pregenerated wallets + securing them ([#3968](https://github.com/dynamic-labs/DynamicAuth/issues/3968)) ([8212b76](https://github.com/dynamic-labs/DynamicAuth/commit/8212b760ba199bd989e0ba2ad3caf97590db4861))
|
|
37
|
+
|
|
2
38
|
## [1.0.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2023-12-05)
|
|
3
39
|
|
|
4
40
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/ethereum",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.9",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"@walletconnect/universal-provider": "2.10.6",
|
|
33
33
|
"eventemitter3": "5.0.1",
|
|
34
34
|
"buffer": "6.0.3",
|
|
35
|
-
"@dynamic-labs/rpc-providers": "1.0.0-alpha.
|
|
36
|
-
"@dynamic-labs/turnkey": "1.0.0-alpha.
|
|
37
|
-
"@dynamic-labs/types": "1.0.0-alpha.
|
|
38
|
-
"@dynamic-labs/utils": "1.0.0-alpha.
|
|
39
|
-
"@dynamic-labs/wallet-book": "1.0.0-alpha.
|
|
40
|
-
"@dynamic-labs/wallet-connector-core": "1.0.0-alpha.
|
|
35
|
+
"@dynamic-labs/rpc-providers": "1.0.0-alpha.9",
|
|
36
|
+
"@dynamic-labs/turnkey": "1.0.0-alpha.9",
|
|
37
|
+
"@dynamic-labs/types": "1.0.0-alpha.9",
|
|
38
|
+
"@dynamic-labs/utils": "1.0.0-alpha.9",
|
|
39
|
+
"@dynamic-labs/wallet-book": "1.0.0-alpha.9",
|
|
40
|
+
"@dynamic-labs/wallet-connector-core": "1.0.0-alpha.9",
|
|
41
41
|
"stream": "0.0.2"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
@@ -30,20 +30,20 @@ export declare class Coinbase extends EthWalletConnector {
|
|
|
30
30
|
type: string;
|
|
31
31
|
uid: string;
|
|
32
32
|
addChain: (args: import("viem").AddChainParameters) => Promise<void>;
|
|
33
|
-
deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<TAbi, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride>) => Promise<`0x${string}`>;
|
|
33
|
+
deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride>) => Promise<`0x${string}`>;
|
|
34
34
|
getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
|
|
35
35
|
getChainId: () => Promise<number>;
|
|
36
36
|
getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
|
|
37
|
-
prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
|
|
37
|
+
prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
|
|
38
38
|
requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
|
|
39
39
|
requestPermissions: (args: {
|
|
40
40
|
[x: string]: Record<string, any>;
|
|
41
41
|
eth_accounts: Record<string, any>;
|
|
42
42
|
}) => Promise<import("viem").RequestPermissionsReturnType>;
|
|
43
43
|
sendRawTransaction: (args: import("viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
|
|
44
|
-
sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
|
|
44
|
+
sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
|
|
45
45
|
signMessage: (args: import("viem").SignMessageParameters<import("viem").Account | undefined>) => Promise<`0x${string}`>;
|
|
46
|
-
signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
|
|
46
|
+
signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
|
|
47
47
|
signTypedData: <const TTypedData extends {
|
|
48
48
|
[x: string]: readonly import("viem").TypedDataParameter[];
|
|
49
49
|
[x: `string[${string}]`]: undefined;
|
|
@@ -254,7 +254,7 @@ export declare class Coinbase extends EthWalletConnector {
|
|
|
254
254
|
}, TPrimaryType extends string>(args: import("viem").SignTypedDataParameters<TTypedData, TPrimaryType, import("viem").Account | undefined>) => Promise<`0x${string}`>;
|
|
255
255
|
switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
|
|
256
256
|
watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
|
|
257
|
-
writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_4>) => Promise<`0x${string}`>;
|
|
257
|
+
writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_4>) => Promise<`0x${string}`>;
|
|
258
258
|
extend: <const client extends {
|
|
259
259
|
[x: string]: unknown;
|
|
260
260
|
account?: undefined;
|
|
@@ -268,7 +268,7 @@ export declare class Coinbase extends EthWalletConnector {
|
|
|
268
268
|
transport?: undefined;
|
|
269
269
|
type?: undefined;
|
|
270
270
|
uid?: undefined;
|
|
271
|
-
}>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
|
|
271
|
+
} & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
|
|
272
272
|
} | {
|
|
273
273
|
account: undefined;
|
|
274
274
|
batch?: {
|
|
@@ -287,20 +287,20 @@ export declare class Coinbase extends EthWalletConnector {
|
|
|
287
287
|
type: string;
|
|
288
288
|
uid: string;
|
|
289
289
|
addChain: (args: import("viem").AddChainParameters) => Promise<void>;
|
|
290
|
-
deployContract: <const TAbi_2 extends import("viem").Abi | readonly unknown[], TChainOverride_5 extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<TAbi_2, undefined, undefined, TChainOverride_5>) => Promise<`0x${string}`>;
|
|
290
|
+
deployContract: <const TAbi_2 extends import("viem").Abi | readonly unknown[], TChainOverride_5 extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi_2, undefined, undefined, TChainOverride_5>) => Promise<`0x${string}`>;
|
|
291
291
|
getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
|
|
292
292
|
getChainId: () => Promise<number>;
|
|
293
293
|
getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
|
|
294
|
-
prepareTransactionRequest: <TChainOverride_6 extends import("viem").Chain | undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_6>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
|
|
294
|
+
prepareTransactionRequest: <TChainOverride_6 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_6>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
|
|
295
295
|
requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
|
|
296
296
|
requestPermissions: (args: {
|
|
297
297
|
[x: string]: Record<string, any>;
|
|
298
298
|
eth_accounts: Record<string, any>;
|
|
299
299
|
}) => Promise<import("viem").RequestPermissionsReturnType>;
|
|
300
300
|
sendRawTransaction: (args: import("viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
|
|
301
|
-
sendTransaction: <TChainOverride_7 extends import("viem").Chain | undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_7>) => Promise<`0x${string}`>;
|
|
301
|
+
sendTransaction: <TChainOverride_7 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_7>) => Promise<`0x${string}`>;
|
|
302
302
|
signMessage: (args: import("viem").SignMessageParameters<undefined>) => Promise<`0x${string}`>;
|
|
303
|
-
signTransaction: <TChainOverride_8 extends import("viem").Chain | undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<undefined, undefined, TChainOverride_8>) => Promise<`0x${string}`>;
|
|
303
|
+
signTransaction: <TChainOverride_8 extends import("viem").Chain | undefined = undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<undefined, undefined, TChainOverride_8>) => Promise<`0x${string}`>;
|
|
304
304
|
signTypedData: <const TTypedData_1 extends {
|
|
305
305
|
[x: string]: readonly import("viem").TypedDataParameter[];
|
|
306
306
|
[x: `string[${string}]`]: undefined;
|
|
@@ -511,7 +511,7 @@ export declare class Coinbase extends EthWalletConnector {
|
|
|
511
511
|
}, TPrimaryType_1 extends string>(args: import("viem").SignTypedDataParameters<TTypedData_1, TPrimaryType_1, undefined>) => Promise<`0x${string}`>;
|
|
512
512
|
switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
|
|
513
513
|
watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
|
|
514
|
-
writeContract: <const TAbi_3 extends import("viem").Abi | readonly unknown[], TFunctionName_1 extends string, TChainOverride_9 extends import("viem").Chain | undefined>(args: import("viem").WriteContractParameters<TAbi_3, TFunctionName_1, undefined, undefined, TChainOverride_9>) => Promise<`0x${string}`>;
|
|
514
|
+
writeContract: <const TAbi_3 extends import("viem").Abi | readonly unknown[], TFunctionName_1 extends string, TChainOverride_9 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_3, TFunctionName_1, undefined, undefined, TChainOverride_9>) => Promise<`0x${string}`>;
|
|
515
515
|
extend: <const client_1 extends {
|
|
516
516
|
[x: string]: unknown;
|
|
517
517
|
account?: undefined;
|
|
@@ -525,7 +525,7 @@ export declare class Coinbase extends EthWalletConnector {
|
|
|
525
525
|
transport?: undefined;
|
|
526
526
|
type?: undefined;
|
|
527
527
|
uid?: undefined;
|
|
528
|
-
}>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client_1) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K_1 in keyof client_1]: client_1[K_1]; } & import("viem").WalletActions<undefined, undefined>>;
|
|
528
|
+
} & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client_1) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K_1 in keyof client_1]: client_1[K_1]; } & import("viem").WalletActions<undefined, undefined>>;
|
|
529
529
|
} | undefined;
|
|
530
530
|
isInstalledOnBrowser(): boolean;
|
|
531
531
|
fetchPublicAddress(opts?: FetchPublicAddressOpts): Promise<string | undefined>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const isEip9693Event = (event) => event.type === 'eip6963:announceProvider' &&
|
|
6
|
+
event.detail !== undefined;
|
|
7
|
+
class Eip6963Provider {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.providers = [];
|
|
10
|
+
}
|
|
11
|
+
registerProviders() {
|
|
12
|
+
if (typeof window === 'undefined') {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
window.addEventListener('eip6963:announceProvider', (event) => {
|
|
16
|
+
if (!isEip9693Event(event)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
this.providers.push(event.detail);
|
|
20
|
+
});
|
|
21
|
+
window.dispatchEvent(new Event('eip6963:requestProvider'));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
class Eip6963ProviderSingleton {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.eip6963Provider = new Eip6963Provider();
|
|
27
|
+
}
|
|
28
|
+
static get() {
|
|
29
|
+
var _a;
|
|
30
|
+
if (!((_a = Eip6963ProviderSingleton.instance) === null || _a === void 0 ? void 0 : _a.eip6963Provider)) {
|
|
31
|
+
Eip6963ProviderSingleton.instance = new Eip6963ProviderSingleton();
|
|
32
|
+
Eip6963ProviderSingleton.instance.eip6963Provider.registerProviders();
|
|
33
|
+
}
|
|
34
|
+
return Eip6963ProviderSingleton.instance.eip6963Provider;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exports.Eip6963Provider = Eip6963Provider;
|
|
39
|
+
exports.Eip6963ProviderSingleton = Eip6963ProviderSingleton;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IEthereum } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the assets needed to display a wallet
|
|
4
|
+
*/
|
|
5
|
+
type Eip6963ProviderInfo = {
|
|
6
|
+
uuid: string;
|
|
7
|
+
name: string;
|
|
8
|
+
icon: string;
|
|
9
|
+
rdns: string;
|
|
10
|
+
};
|
|
11
|
+
type Eip6963ProviderDetail = {
|
|
12
|
+
info: Eip6963ProviderInfo;
|
|
13
|
+
provider: IEthereum;
|
|
14
|
+
};
|
|
15
|
+
export declare class Eip6963Provider {
|
|
16
|
+
providers: Eip6963ProviderDetail[];
|
|
17
|
+
registerProviders(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare class Eip6963ProviderSingleton {
|
|
20
|
+
readonly eip6963Provider: Eip6963Provider;
|
|
21
|
+
private constructor();
|
|
22
|
+
private static instance;
|
|
23
|
+
static get(): Eip6963Provider;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const isEip9693Event = (event) => event.type === 'eip6963:announceProvider' &&
|
|
2
|
+
event.detail !== undefined;
|
|
3
|
+
class Eip6963Provider {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.providers = [];
|
|
6
|
+
}
|
|
7
|
+
registerProviders() {
|
|
8
|
+
if (typeof window === 'undefined') {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
window.addEventListener('eip6963:announceProvider', (event) => {
|
|
12
|
+
if (!isEip9693Event(event)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
this.providers.push(event.detail);
|
|
16
|
+
});
|
|
17
|
+
window.dispatchEvent(new Event('eip6963:requestProvider'));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
class Eip6963ProviderSingleton {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.eip6963Provider = new Eip6963Provider();
|
|
23
|
+
}
|
|
24
|
+
static get() {
|
|
25
|
+
var _a;
|
|
26
|
+
if (!((_a = Eip6963ProviderSingleton.instance) === null || _a === void 0 ? void 0 : _a.eip6963Provider)) {
|
|
27
|
+
Eip6963ProviderSingleton.instance = new Eip6963ProviderSingleton();
|
|
28
|
+
Eip6963ProviderSingleton.instance.eip6963Provider.registerProviders();
|
|
29
|
+
}
|
|
30
|
+
return Eip6963ProviderSingleton.instance.eip6963Provider;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { Eip6963Provider, Eip6963ProviderSingleton };
|
|
@@ -7,12 +7,20 @@ var viem = require('viem');
|
|
|
7
7
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
8
8
|
var utils = require('@dynamic-labs/utils');
|
|
9
9
|
var eventListenerHandlers = require('./utils/eventListenerHandlers.cjs');
|
|
10
|
+
var eip6963Provider = require('./eip6963Provider.cjs');
|
|
10
11
|
|
|
11
12
|
class EthProviderHelper {
|
|
12
13
|
constructor(wallet) {
|
|
13
14
|
this.wallet = wallet;
|
|
14
15
|
}
|
|
15
16
|
getInstalledProvider() {
|
|
17
|
+
const eip6963Config = this.getEip6963Config();
|
|
18
|
+
if (eip6963Config) {
|
|
19
|
+
const eip6963Provider = this.eip6963ProviderLookup(eip6963Config.rdns);
|
|
20
|
+
if (eip6963Provider) {
|
|
21
|
+
return eip6963Provider;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
16
24
|
const config = this.getInjectedConfig();
|
|
17
25
|
if (!config ||
|
|
18
26
|
!config.extensionLocators ||
|
|
@@ -20,6 +28,11 @@ class EthProviderHelper {
|
|
|
20
28
|
return undefined;
|
|
21
29
|
return this.installedProviderLookup(config.extensionLocators);
|
|
22
30
|
}
|
|
31
|
+
getEip6963Config() {
|
|
32
|
+
if (!this.wallet || !this.wallet.eip6963Config)
|
|
33
|
+
return;
|
|
34
|
+
return this.wallet.eip6963Config;
|
|
35
|
+
}
|
|
23
36
|
getInjectedConfig() {
|
|
24
37
|
if (!this.wallet || !this.wallet.injectedConfig)
|
|
25
38
|
return;
|
|
@@ -52,6 +65,11 @@ class EthProviderHelper {
|
|
|
52
65
|
const allInstalledProviders = this.installedProviders();
|
|
53
66
|
return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
|
|
54
67
|
}
|
|
68
|
+
eip6963ProviderLookup(rdns) {
|
|
69
|
+
var _a;
|
|
70
|
+
const { providers } = eip6963Provider.Eip6963ProviderSingleton.get();
|
|
71
|
+
return (_a = providers.find((provider) => provider.info.rdns === rdns)) === null || _a === void 0 ? void 0 : _a.provider;
|
|
72
|
+
}
|
|
55
73
|
isInstalledHelper() {
|
|
56
74
|
return this.findProvider() !== undefined;
|
|
57
75
|
}
|
|
@@ -6,6 +6,9 @@ export declare class EthProviderHelper {
|
|
|
6
6
|
private wallet;
|
|
7
7
|
constructor(wallet: WalletSchema);
|
|
8
8
|
getInstalledProvider(): IEthereum | undefined;
|
|
9
|
+
getEip6963Config(): {
|
|
10
|
+
rdns: string;
|
|
11
|
+
} | undefined;
|
|
9
12
|
getInjectedConfig(): {
|
|
10
13
|
chain: string;
|
|
11
14
|
extensionLocators: {
|
|
@@ -16,6 +19,7 @@ export declare class EthProviderHelper {
|
|
|
16
19
|
} | undefined;
|
|
17
20
|
installedProviders(): IEthereum[];
|
|
18
21
|
installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
|
|
22
|
+
eip6963ProviderLookup(rdns: string): IEthereum | undefined;
|
|
19
23
|
isInstalledHelper(): boolean;
|
|
20
24
|
findProvider(): IEthereum | undefined;
|
|
21
25
|
findWalletClient(): WalletClient | undefined;
|
package/src/ethProviderHelper.js
CHANGED
|
@@ -3,12 +3,20 @@ import { createWalletClient, custom, getAddress } from 'viem';
|
|
|
3
3
|
import { ProviderLookup, logger } from '@dynamic-labs/wallet-connector-core';
|
|
4
4
|
import { getProvidersFromWindow } from '@dynamic-labs/utils';
|
|
5
5
|
import { eventListenerHandlers } from './utils/eventListenerHandlers.js';
|
|
6
|
+
import { Eip6963ProviderSingleton } from './eip6963Provider.js';
|
|
6
7
|
|
|
7
8
|
class EthProviderHelper {
|
|
8
9
|
constructor(wallet) {
|
|
9
10
|
this.wallet = wallet;
|
|
10
11
|
}
|
|
11
12
|
getInstalledProvider() {
|
|
13
|
+
const eip6963Config = this.getEip6963Config();
|
|
14
|
+
if (eip6963Config) {
|
|
15
|
+
const eip6963Provider = this.eip6963ProviderLookup(eip6963Config.rdns);
|
|
16
|
+
if (eip6963Provider) {
|
|
17
|
+
return eip6963Provider;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
12
20
|
const config = this.getInjectedConfig();
|
|
13
21
|
if (!config ||
|
|
14
22
|
!config.extensionLocators ||
|
|
@@ -16,6 +24,11 @@ class EthProviderHelper {
|
|
|
16
24
|
return undefined;
|
|
17
25
|
return this.installedProviderLookup(config.extensionLocators);
|
|
18
26
|
}
|
|
27
|
+
getEip6963Config() {
|
|
28
|
+
if (!this.wallet || !this.wallet.eip6963Config)
|
|
29
|
+
return;
|
|
30
|
+
return this.wallet.eip6963Config;
|
|
31
|
+
}
|
|
19
32
|
getInjectedConfig() {
|
|
20
33
|
if (!this.wallet || !this.wallet.injectedConfig)
|
|
21
34
|
return;
|
|
@@ -48,6 +61,11 @@ class EthProviderHelper {
|
|
|
48
61
|
const allInstalledProviders = this.installedProviders();
|
|
49
62
|
return ProviderLookup(allInstalledProviders, providerFlags);
|
|
50
63
|
}
|
|
64
|
+
eip6963ProviderLookup(rdns) {
|
|
65
|
+
var _a;
|
|
66
|
+
const { providers } = Eip6963ProviderSingleton.get();
|
|
67
|
+
return (_a = providers.find((provider) => provider.info.rdns === rdns)) === null || _a === void 0 ? void 0 : _a.provider;
|
|
68
|
+
}
|
|
51
69
|
isInstalledHelper() {
|
|
52
70
|
return this.findProvider() !== undefined;
|
|
53
71
|
}
|