@wagmi/core 0.2.0-next.9 → 0.2.2
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/LICENSE +1 -1
- package/README.md +30 -0
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +1 -11
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +234 -0
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +6 -15
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +234 -0
- package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +212 -0
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -0
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +62 -0
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +7 -0
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +62 -0
- package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +58 -0
- package/connectors/metaMask/package.json +4 -0
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +1 -11
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +250 -0
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +6 -15
- package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +250 -0
- package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +241 -0
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +1 -11
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +183 -0
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +6 -15
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +183 -0
- package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +161 -0
- package/dist/base-159de546.esm.js +513 -0
- package/dist/base-5812b724.cjs.dev.js +540 -0
- package/dist/base-59f3457e.cjs.prod.js +540 -0
- package/dist/classPrivateMethodGet-55c9909f.esm.js +16 -0
- package/dist/classPrivateMethodGet-976c8120.cjs.dev.js +19 -0
- package/dist/classPrivateMethodGet-d7330ed7.cjs.prod.js +19 -0
- package/dist/client-4d8337e7.cjs.prod.js +606 -0
- package/dist/client-5d456446.esm.js +595 -0
- package/dist/client-f77a08e4.cjs.dev.js +606 -0
- package/dist/declarations/src/actions/accounts/connect.d.ts +16 -0
- package/dist/declarations/src/actions/accounts/disconnect.d.ts +1 -0
- package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +20 -0
- package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -0
- package/dist/declarations/src/actions/accounts/getAccount.d.ts +7 -0
- package/dist/declarations/src/actions/accounts/getNetwork.d.ts +9 -0
- package/dist/declarations/src/actions/accounts/index.d.ts +12 -0
- package/dist/declarations/src/actions/accounts/signMessage.d.ts +9 -0
- package/dist/declarations/src/actions/accounts/signTypedData.d.ts +13 -0
- package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +6 -0
- package/dist/declarations/src/actions/accounts/watchAccount.d.ts +4 -0
- package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +3 -0
- package/dist/declarations/src/actions/accounts/watchSigner.d.ts +3 -0
- package/dist/declarations/src/actions/contracts/getContract.d.ts +11 -0
- package/dist/declarations/src/actions/contracts/index.d.ts +5 -0
- package/dist/declarations/src/actions/contracts/readContract.d.ts +14 -0
- package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +14 -0
- package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +7 -0
- package/dist/declarations/src/actions/contracts/writeContract.d.ts +11 -0
- package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +8 -0
- package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +8 -0
- package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +8 -0
- package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +9 -0
- package/dist/declarations/src/actions/ens/index.d.ts +4 -0
- package/dist/declarations/src/actions/index.d.ts +7 -0
- package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +5 -0
- package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +16 -0
- package/dist/declarations/src/actions/network-status/index.d.ts +3 -0
- package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +6 -0
- package/dist/declarations/src/actions/providers/getProvider.d.ts +7 -0
- package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +7 -0
- package/dist/declarations/src/actions/providers/index.d.ts +4 -0
- package/dist/declarations/src/actions/providers/watchProvider.d.ts +4 -0
- package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +4 -0
- package/dist/declarations/src/actions/tokens/fetchToken.d.ts +20 -0
- package/dist/declarations/src/actions/tokens/index.d.ts +1 -0
- package/dist/declarations/src/actions/transactions/index.d.ts +2 -0
- package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +7 -0
- package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +17 -0
- package/dist/declarations/src/client.d.ts +81 -0
- package/dist/declarations/src/connectors/base.d.ts +55 -0
- package/dist/declarations/src/connectors/coinbaseWallet.d.ts +52 -0
- package/dist/declarations/src/connectors/index.d.ts +2 -0
- package/dist/declarations/src/connectors/injected.d.ts +48 -0
- package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
- package/dist/declarations/src/connectors/mock/connector.d.ts +37 -0
- package/dist/declarations/src/connectors/mock/index.d.ts +2 -0
- package/dist/declarations/src/connectors/mock/provider.d.ts +42 -0
- package/dist/declarations/src/connectors/walletConnect.d.ts +32 -0
- package/dist/declarations/src/constants/abis.d.ts +2 -0
- package/dist/declarations/src/constants/blockExplorers.d.ts +9 -0
- package/dist/declarations/src/constants/chains.d.ts +21 -0
- package/dist/declarations/src/constants/index.d.ts +7 -0
- package/dist/declarations/src/constants/rpcs.d.ts +9 -0
- package/dist/declarations/src/constants/units.d.ts +1 -0
- package/dist/declarations/src/errors.d.ts +28 -0
- package/dist/declarations/src/index.d.ts +12 -0
- package/dist/declarations/src/storage.d.ts +12 -0
- package/dist/declarations/src/types/index.d.ts +101 -0
- package/dist/declarations/src/utils/getInjectedName.d.ts +1 -0
- package/dist/declarations/src/utils/index.d.ts +3 -0
- package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -0
- package/dist/declarations/src/utils/warn.d.ts +1 -0
- package/dist/wagmi-core.cjs.d.ts +1 -11
- package/dist/wagmi-core.cjs.dev.js +653 -0
- package/dist/wagmi-core.cjs.js +6 -15
- package/dist/wagmi-core.cjs.prod.js +653 -0
- package/dist/wagmi-core.esm.js +593 -0
- package/package.json +24 -12
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
import { c as client, g as getClient } from './client-5d456446.esm.js';
|
|
2
|
+
export { C as Client, I as InjectedConnector, C as WagmiClient, a as createClient, b as createStorage, a as createWagmiClient, b as createWagmiStorage, n as noopStorage } from './client-5d456446.esm.js';
|
|
3
|
+
import { C as ConnectorAlreadyConnectedError, a as allChains, b as ConnectorNotFoundError, U as UserRejectedRequestError, S as SwitchChainNotSupportedError } from './base-159de546.esm.js';
|
|
4
|
+
export { A as AddChainError, k as ChainNotConfiguredError, c as Connector, C as ConnectorAlreadyConnectedError, b as ConnectorNotFoundError, l as SwitchChainError, S as SwitchChainNotSupportedError, U as UserRejectedRequestError, d as alchemyRpcUrls, a as allChains, e as chain, f as chainId, g as defaultChains, h as defaultL2Chains, i as etherscanBlockExplorers, j as infuraRpcUrls, n as normalizeChainId } from './base-159de546.esm.js';
|
|
5
|
+
import { Contract } from 'ethers/lib/ethers';
|
|
6
|
+
import { formatUnits, getAddress } from 'ethers/lib/utils';
|
|
7
|
+
import './classPrivateMethodGet-55c9909f.esm.js';
|
|
8
|
+
import 'ethers';
|
|
9
|
+
import 'zustand/vanilla';
|
|
10
|
+
import 'zustand/middleware';
|
|
11
|
+
import 'eventemitter3';
|
|
12
|
+
|
|
13
|
+
// https://ethereum.org/en/developers/docs/standards/tokens/erc-20
|
|
14
|
+
const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
|
|
15
|
+
|
|
16
|
+
const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);', 'function approve(address _approved, uint256 _tokenId) external payable;', 'function balanceOf(address _owner) external view returns (uint256);', 'function getApproved(uint256 _tokenId) external view returns (address);', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool);', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address);', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;', 'function setApprovalForAll(address _operator, bool _approved) external;', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable;'];
|
|
17
|
+
|
|
18
|
+
// https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
|
|
19
|
+
const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
|
|
20
|
+
|
|
21
|
+
async function connect(_ref) {
|
|
22
|
+
let {
|
|
23
|
+
connector
|
|
24
|
+
} = _ref;
|
|
25
|
+
const activeConnector = client.connector;
|
|
26
|
+
if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new ConnectorAlreadyConnectedError();
|
|
27
|
+
const data = await connector.connect();
|
|
28
|
+
client.setLastUsedConnector(connector.id);
|
|
29
|
+
client.setState(x => ({ ...x,
|
|
30
|
+
connector,
|
|
31
|
+
chains: connector === null || connector === void 0 ? void 0 : connector.chains,
|
|
32
|
+
data
|
|
33
|
+
}));
|
|
34
|
+
client.storage.setItem('connected', true);
|
|
35
|
+
return { ...data,
|
|
36
|
+
connector
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function disconnect() {
|
|
41
|
+
const client = getClient();
|
|
42
|
+
if (client.connector) await client.connector.disconnect();
|
|
43
|
+
client.clearState();
|
|
44
|
+
client.storage.removeItem('connected');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function getProvider() {
|
|
48
|
+
let {
|
|
49
|
+
chainId
|
|
50
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
51
|
+
const client = getClient();
|
|
52
|
+
if (chainId && typeof client.config.provider === 'function') return client.config.provider({
|
|
53
|
+
chainId
|
|
54
|
+
});
|
|
55
|
+
return client.provider;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function getWebSocketProvider() {
|
|
59
|
+
let {
|
|
60
|
+
chainId
|
|
61
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
62
|
+
const client = getClient();
|
|
63
|
+
if (chainId && typeof client.config.webSocketProvider === 'function') return client.config.webSocketProvider({
|
|
64
|
+
chainId
|
|
65
|
+
});
|
|
66
|
+
return client.webSocketProvider;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function watchProvider(args, callback) {
|
|
70
|
+
const client = getClient();
|
|
71
|
+
|
|
72
|
+
const handleChange = async () => callback(getProvider(args));
|
|
73
|
+
|
|
74
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
75
|
+
let {
|
|
76
|
+
provider
|
|
77
|
+
} = _ref;
|
|
78
|
+
return provider;
|
|
79
|
+
}, handleChange);
|
|
80
|
+
return unsubscribe;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function watchWebSocketProvider(args, callback) {
|
|
84
|
+
const client = getClient();
|
|
85
|
+
|
|
86
|
+
const handleChange = async () => callback(getWebSocketProvider(args));
|
|
87
|
+
|
|
88
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
89
|
+
let {
|
|
90
|
+
webSocketProvider
|
|
91
|
+
} = _ref;
|
|
92
|
+
return webSocketProvider;
|
|
93
|
+
}, handleChange);
|
|
94
|
+
return unsubscribe;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function fetchBalance(_ref) {
|
|
98
|
+
var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
|
|
99
|
+
|
|
100
|
+
let {
|
|
101
|
+
addressOrName,
|
|
102
|
+
chainId,
|
|
103
|
+
formatUnits: unit = 'ether',
|
|
104
|
+
token
|
|
105
|
+
} = _ref;
|
|
106
|
+
const client = getClient();
|
|
107
|
+
const provider = getProvider({
|
|
108
|
+
chainId
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
if (token) {
|
|
112
|
+
const contract = new Contract(token, erc20ABI, provider);
|
|
113
|
+
const [value, decimals, symbol] = await Promise.all([contract.balanceOf(addressOrName), contract.decimals(), contract.symbol()]);
|
|
114
|
+
return {
|
|
115
|
+
decimals,
|
|
116
|
+
formatted: formatUnits(value, unit),
|
|
117
|
+
symbol,
|
|
118
|
+
unit,
|
|
119
|
+
value
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const chains = [...((_client$connector$cha = (_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : _client$connector.chains) !== null && _client$connector$cha !== void 0 ? _client$connector$cha : []), ...allChains];
|
|
124
|
+
const value = await provider.getBalance(addressOrName);
|
|
125
|
+
const chain = chains.find(x => x.id === provider.network.chainId);
|
|
126
|
+
return {
|
|
127
|
+
decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
|
|
128
|
+
formatted: formatUnits(value, unit),
|
|
129
|
+
symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
|
|
130
|
+
unit,
|
|
131
|
+
value
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async function fetchSigner() {
|
|
136
|
+
var _client$connector, _client$connector$get;
|
|
137
|
+
|
|
138
|
+
const client = getClient();
|
|
139
|
+
const signer = (await ((_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
|
|
140
|
+
return signer;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function getAccount() {
|
|
144
|
+
const {
|
|
145
|
+
data,
|
|
146
|
+
connector
|
|
147
|
+
} = getClient();
|
|
148
|
+
return {
|
|
149
|
+
address: data === null || data === void 0 ? void 0 : data.account,
|
|
150
|
+
connector
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function getNetwork() {
|
|
155
|
+
var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
|
|
156
|
+
|
|
157
|
+
const client = getClient();
|
|
158
|
+
const chainId = (_client$data = client.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
|
|
159
|
+
const activeChains = (_client$chains = client.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
|
|
160
|
+
const activeChain = (_find = [...activeChains, ...allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
|
|
161
|
+
id: chainId,
|
|
162
|
+
name: "Chain ".concat(chainId),
|
|
163
|
+
rpcUrls: {
|
|
164
|
+
default: ''
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
chain: chainId ? { ...activeChain,
|
|
169
|
+
...((_client$data2 = client.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
|
|
170
|
+
id: chainId
|
|
171
|
+
} : undefined,
|
|
172
|
+
chains: activeChains
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async function signMessage(args) {
|
|
177
|
+
try {
|
|
178
|
+
const signer = await fetchSigner();
|
|
179
|
+
if (!signer) throw new ConnectorNotFoundError();
|
|
180
|
+
return await signer.signMessage(args.message);
|
|
181
|
+
} catch (error_) {
|
|
182
|
+
let error = error_;
|
|
183
|
+
if (error_.code === 4001) error = new UserRejectedRequestError();
|
|
184
|
+
throw error;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
async function signTypedData(args) {
|
|
189
|
+
try {
|
|
190
|
+
const signer = await fetchSigner();
|
|
191
|
+
if (!signer) throw new ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
|
|
192
|
+
|
|
193
|
+
return await signer._signTypedData(args.domain, args.types, args.value);
|
|
194
|
+
} catch (error_) {
|
|
195
|
+
let error = error_;
|
|
196
|
+
if (error_.code === 4001) error = new UserRejectedRequestError();
|
|
197
|
+
throw error;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
async function switchNetwork(_ref) {
|
|
202
|
+
var _client$connector;
|
|
203
|
+
|
|
204
|
+
let {
|
|
205
|
+
chainId
|
|
206
|
+
} = _ref;
|
|
207
|
+
const client = getClient();
|
|
208
|
+
if (!((_client$connector = client.connector) !== null && _client$connector !== void 0 && _client$connector.switchChain)) throw new SwitchChainNotSupportedError();
|
|
209
|
+
const chain = await client.connector.switchChain(chainId);
|
|
210
|
+
return chain;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function watchAccount(callback) {
|
|
214
|
+
const client = getClient();
|
|
215
|
+
|
|
216
|
+
const handleChange = () => callback(getAccount());
|
|
217
|
+
|
|
218
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
219
|
+
let {
|
|
220
|
+
data,
|
|
221
|
+
connector
|
|
222
|
+
} = _ref;
|
|
223
|
+
return {
|
|
224
|
+
account: data === null || data === void 0 ? void 0 : data.account,
|
|
225
|
+
connector
|
|
226
|
+
};
|
|
227
|
+
}, handleChange, {
|
|
228
|
+
equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
|
|
229
|
+
});
|
|
230
|
+
return unsubscribe;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function watchNetwork(callback) {
|
|
234
|
+
const client = getClient();
|
|
235
|
+
|
|
236
|
+
const handleChange = () => callback(getNetwork());
|
|
237
|
+
|
|
238
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
239
|
+
var _data$chain;
|
|
240
|
+
|
|
241
|
+
let {
|
|
242
|
+
data,
|
|
243
|
+
chains
|
|
244
|
+
} = _ref;
|
|
245
|
+
return {
|
|
246
|
+
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
247
|
+
chains
|
|
248
|
+
};
|
|
249
|
+
}, handleChange, {
|
|
250
|
+
equalityFn: (selected, previous) => selected.chainId === previous.chainId && selected.chains === previous.chains
|
|
251
|
+
});
|
|
252
|
+
return unsubscribe;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function watchSigner(callback) {
|
|
256
|
+
const client = getClient();
|
|
257
|
+
|
|
258
|
+
const handleChange = async () => callback(await fetchSigner());
|
|
259
|
+
|
|
260
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
261
|
+
var _data$chain;
|
|
262
|
+
|
|
263
|
+
let {
|
|
264
|
+
data,
|
|
265
|
+
connector
|
|
266
|
+
} = _ref;
|
|
267
|
+
return {
|
|
268
|
+
account: data === null || data === void 0 ? void 0 : data.account,
|
|
269
|
+
chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
|
|
270
|
+
connector
|
|
271
|
+
};
|
|
272
|
+
}, handleChange, {
|
|
273
|
+
equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId && selected.connector === previous.connector
|
|
274
|
+
});
|
|
275
|
+
return unsubscribe;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
function getContract(_ref) {
|
|
279
|
+
let {
|
|
280
|
+
addressOrName,
|
|
281
|
+
contractInterface,
|
|
282
|
+
signerOrProvider
|
|
283
|
+
} = _ref;
|
|
284
|
+
return new Contract(addressOrName, contractInterface, signerOrProvider);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
async function readContract(contractConfig, functionName) {
|
|
288
|
+
let {
|
|
289
|
+
args,
|
|
290
|
+
chainId,
|
|
291
|
+
overrides
|
|
292
|
+
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
293
|
+
const provider = getProvider({
|
|
294
|
+
chainId
|
|
295
|
+
});
|
|
296
|
+
const contract = getContract({
|
|
297
|
+
signerOrProvider: provider,
|
|
298
|
+
...contractConfig
|
|
299
|
+
});
|
|
300
|
+
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
301
|
+
const contractFunction = contract[functionName];
|
|
302
|
+
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not in interface for contract \"").concat(contractConfig.addressOrName, "\""));
|
|
303
|
+
const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
|
|
304
|
+
return response;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function watchContractEvent(
|
|
308
|
+
/** Contract configuration */
|
|
309
|
+
contractArgs,
|
|
310
|
+
/** Event name to listen to */
|
|
311
|
+
eventName, callback) {
|
|
312
|
+
let {
|
|
313
|
+
chainId,
|
|
314
|
+
once
|
|
315
|
+
} = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
316
|
+
let contract;
|
|
317
|
+
|
|
318
|
+
const watchEvent = async () => {
|
|
319
|
+
if (contract) {
|
|
320
|
+
var _contract;
|
|
321
|
+
|
|
322
|
+
(_contract = contract) === null || _contract === void 0 ? void 0 : _contract.off(eventName, callback);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
contract = getContract({
|
|
326
|
+
signerOrProvider: getWebSocketProvider({
|
|
327
|
+
chainId
|
|
328
|
+
}) || getProvider({
|
|
329
|
+
chainId
|
|
330
|
+
}),
|
|
331
|
+
...contractArgs
|
|
332
|
+
});
|
|
333
|
+
if (once) contract.once(eventName, callback);else contract.on(eventName, callback);
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
watchEvent();
|
|
337
|
+
const client = getClient();
|
|
338
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
339
|
+
let {
|
|
340
|
+
provider,
|
|
341
|
+
webSocketProvider
|
|
342
|
+
} = _ref;
|
|
343
|
+
return {
|
|
344
|
+
provider,
|
|
345
|
+
webSocketProvider
|
|
346
|
+
};
|
|
347
|
+
}, watchEvent, {
|
|
348
|
+
equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
|
|
349
|
+
});
|
|
350
|
+
return () => {
|
|
351
|
+
var _contract2;
|
|
352
|
+
|
|
353
|
+
(_contract2 = contract) === null || _contract2 === void 0 ? void 0 : _contract2.off(eventName, callback);
|
|
354
|
+
unsubscribe();
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
async function fetchBlockNumber() {
|
|
359
|
+
let {
|
|
360
|
+
chainId
|
|
361
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
362
|
+
const provider = getProvider({
|
|
363
|
+
chainId
|
|
364
|
+
});
|
|
365
|
+
const blockNumber = await provider.getBlockNumber();
|
|
366
|
+
return blockNumber;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function watchBlockNumber(args, callback) {
|
|
370
|
+
var _client$webSocketProv;
|
|
371
|
+
|
|
372
|
+
let prevProvider;
|
|
373
|
+
|
|
374
|
+
const createListener = provider => {
|
|
375
|
+
if (prevProvider) {
|
|
376
|
+
var _prevProvider;
|
|
377
|
+
|
|
378
|
+
(_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', callback);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
provider.on('block', callback);
|
|
382
|
+
prevProvider = provider;
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
const client = getClient();
|
|
386
|
+
const provider_ = (_client$webSocketProv = client.webSocketProvider) !== null && _client$webSocketProv !== void 0 ? _client$webSocketProv : client.provider;
|
|
387
|
+
if (args.listen) createListener(provider_);
|
|
388
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
389
|
+
let {
|
|
390
|
+
provider,
|
|
391
|
+
webSocketProvider
|
|
392
|
+
} = _ref;
|
|
393
|
+
return {
|
|
394
|
+
provider,
|
|
395
|
+
webSocketProvider
|
|
396
|
+
};
|
|
397
|
+
}, async _ref2 => {
|
|
398
|
+
let {
|
|
399
|
+
provider,
|
|
400
|
+
webSocketProvider
|
|
401
|
+
} = _ref2;
|
|
402
|
+
const provider_ = webSocketProvider !== null && webSocketProvider !== void 0 ? webSocketProvider : provider;
|
|
403
|
+
|
|
404
|
+
if (args.listen && provider_) {
|
|
405
|
+
createListener(provider_);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
callback(await fetchBlockNumber());
|
|
409
|
+
}, {
|
|
410
|
+
equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
|
|
411
|
+
});
|
|
412
|
+
return () => {
|
|
413
|
+
unsubscribe();
|
|
414
|
+
provider_ === null || provider_ === void 0 ? void 0 : provider_.off('block', callback);
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
function watchReadContract(contractConfig, functionName) {
|
|
419
|
+
let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
420
|
+
let callback = arguments.length > 3 ? arguments[3] : undefined;
|
|
421
|
+
const client = getClient();
|
|
422
|
+
|
|
423
|
+
const handleChange = async () => callback(await readContract(contractConfig, functionName, config));
|
|
424
|
+
|
|
425
|
+
const unwatch = config.listenToBlock ? watchBlockNumber({
|
|
426
|
+
listen: true
|
|
427
|
+
}, handleChange) : undefined;
|
|
428
|
+
const unsubscribe = client.subscribe(_ref => {
|
|
429
|
+
let {
|
|
430
|
+
provider
|
|
431
|
+
} = _ref;
|
|
432
|
+
return provider;
|
|
433
|
+
}, handleChange);
|
|
434
|
+
return () => {
|
|
435
|
+
unsubscribe();
|
|
436
|
+
unwatch === null || unwatch === void 0 ? void 0 : unwatch();
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
async function writeContract(contractConfig, functionName) {
|
|
441
|
+
let {
|
|
442
|
+
args,
|
|
443
|
+
overrides
|
|
444
|
+
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
445
|
+
const client = getClient();
|
|
446
|
+
if (!client.connector) throw new ConnectorNotFoundError();
|
|
447
|
+
const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
|
|
448
|
+
|
|
449
|
+
try {
|
|
450
|
+
const signer = await client.connector.getSigner();
|
|
451
|
+
const contract = getContract(contractConfig);
|
|
452
|
+
const contractWithSigner = contract.connect(signer);
|
|
453
|
+
const contractFunction = contractWithSigner[functionName];
|
|
454
|
+
if (!contractFunction) console.warn("\"".concat(functionName, "\" does not in interface for contract \"").concat(contractConfig.addressOrName, "\""));
|
|
455
|
+
const response = await contractFunction(...params);
|
|
456
|
+
return response;
|
|
457
|
+
} catch (error_) {
|
|
458
|
+
let error = error_;
|
|
459
|
+
if (error_.code === 4001) error = new UserRejectedRequestError();
|
|
460
|
+
throw error;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
async function fetchEnsAddress(_ref) {
|
|
465
|
+
let {
|
|
466
|
+
chainId,
|
|
467
|
+
name
|
|
468
|
+
} = _ref;
|
|
469
|
+
const provider = getProvider({
|
|
470
|
+
chainId
|
|
471
|
+
});
|
|
472
|
+
const address = await provider.resolveName(name);
|
|
473
|
+
|
|
474
|
+
try {
|
|
475
|
+
return address ? getAddress(address) : null;
|
|
476
|
+
} catch (_error) {
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
async function fetchEnsAvatar(_ref) {
|
|
482
|
+
let {
|
|
483
|
+
addressOrName,
|
|
484
|
+
chainId
|
|
485
|
+
} = _ref;
|
|
486
|
+
const provider = getProvider({
|
|
487
|
+
chainId
|
|
488
|
+
}); // TODO: Update with more advanced logic
|
|
489
|
+
// https://github.com/ensdomains/ens-avatar
|
|
490
|
+
|
|
491
|
+
const avatar = await provider.getAvatar(addressOrName);
|
|
492
|
+
return avatar;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
async function fetchEnsName(_ref) {
|
|
496
|
+
let {
|
|
497
|
+
address,
|
|
498
|
+
chainId
|
|
499
|
+
} = _ref;
|
|
500
|
+
const provider = getProvider({
|
|
501
|
+
chainId
|
|
502
|
+
});
|
|
503
|
+
return await provider.lookupAddress(address);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
async function fetchEnsResolver(_ref) {
|
|
507
|
+
let {
|
|
508
|
+
chainId,
|
|
509
|
+
name
|
|
510
|
+
} = _ref;
|
|
511
|
+
const provider = getProvider({
|
|
512
|
+
chainId
|
|
513
|
+
});
|
|
514
|
+
const resolver = await provider.getResolver(name);
|
|
515
|
+
return resolver;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
async function fetchFeeData() {
|
|
519
|
+
let {
|
|
520
|
+
chainId,
|
|
521
|
+
formatUnits: units = 'wei'
|
|
522
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
523
|
+
const provider = getProvider({
|
|
524
|
+
chainId
|
|
525
|
+
});
|
|
526
|
+
const feeData = await provider.getFeeData();
|
|
527
|
+
const formatted = {
|
|
528
|
+
gasPrice: formatUnits(feeData.gasPrice, units),
|
|
529
|
+
maxFeePerGas: formatUnits(feeData.maxFeePerGas, units),
|
|
530
|
+
maxPriorityFeePerGas: formatUnits(feeData.maxPriorityFeePerGas, units)
|
|
531
|
+
};
|
|
532
|
+
return { ...feeData,
|
|
533
|
+
formatted
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
async function fetchToken(_ref) {
|
|
538
|
+
let {
|
|
539
|
+
address,
|
|
540
|
+
chainId,
|
|
541
|
+
formatUnits: units = 'ether'
|
|
542
|
+
} = _ref;
|
|
543
|
+
const provider = getProvider({
|
|
544
|
+
chainId
|
|
545
|
+
});
|
|
546
|
+
const contract = new Contract(address, erc20ABI, provider);
|
|
547
|
+
const [symbol, decimals, totalSupply] = await Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
|
|
548
|
+
const token = {
|
|
549
|
+
address,
|
|
550
|
+
decimals,
|
|
551
|
+
symbol,
|
|
552
|
+
totalSupply: {
|
|
553
|
+
formatted: formatUnits(totalSupply, units),
|
|
554
|
+
value: totalSupply
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
return token;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
async function sendTransaction(args) {
|
|
561
|
+
try {
|
|
562
|
+
const signer = await fetchSigner();
|
|
563
|
+
if (!signer) throw new ConnectorNotFoundError();
|
|
564
|
+
const transaction = await signer.sendTransaction(args.request);
|
|
565
|
+
return transaction;
|
|
566
|
+
} catch (error_) {
|
|
567
|
+
let error = error_;
|
|
568
|
+
if (error_.code === 4001) error = new UserRejectedRequestError();
|
|
569
|
+
throw error;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
async function waitForTransaction(_ref) {
|
|
574
|
+
let {
|
|
575
|
+
chainId,
|
|
576
|
+
confirmations,
|
|
577
|
+
hash,
|
|
578
|
+
timeout,
|
|
579
|
+
wait: wait_
|
|
580
|
+
} = _ref;
|
|
581
|
+
let promise;
|
|
582
|
+
|
|
583
|
+
if (hash) {
|
|
584
|
+
const provider = getProvider({
|
|
585
|
+
chainId
|
|
586
|
+
});
|
|
587
|
+
promise = provider.waitForTransaction(hash, confirmations, timeout);
|
|
588
|
+
} else if (wait_) promise = wait_(confirmations);else throw new Error('hash or wait is required');
|
|
589
|
+
|
|
590
|
+
return await promise;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
export { connect, disconnect, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, readContract, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchNetwork, watchProvider, watchReadContract, watchSigner, watchWebSocketProvider, writeContract };
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wagmi/core",
|
|
3
|
-
"description": "Vanilla JS
|
|
4
|
-
"license": "
|
|
5
|
-
"version": "0.2.
|
|
3
|
+
"description": "Vanilla JS library for Ethereum",
|
|
4
|
+
"license": "WAGMIT",
|
|
5
|
+
"version": "0.2.2",
|
|
6
|
+
"author": "awkweb.eth",
|
|
6
7
|
"ethereum": "awkweb.eth",
|
|
7
8
|
"repository": "tmm/wagmi",
|
|
8
9
|
"sideEffects": false,
|
|
@@ -18,6 +19,10 @@
|
|
|
18
19
|
"module": "./connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js",
|
|
19
20
|
"default": "./connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js"
|
|
20
21
|
},
|
|
22
|
+
"./connectors/metaMask": {
|
|
23
|
+
"module": "./connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js",
|
|
24
|
+
"default": "./connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js"
|
|
25
|
+
},
|
|
21
26
|
"./connectors/mock": {
|
|
22
27
|
"module": "./connectors/mock/dist/wagmi-core-connectors-mock.esm.js",
|
|
23
28
|
"default": "./connectors/mock/dist/wagmi-core-connectors-mock.cjs.js"
|
|
@@ -29,20 +34,19 @@
|
|
|
29
34
|
},
|
|
30
35
|
"files": [
|
|
31
36
|
"/dist",
|
|
32
|
-
"/connectors
|
|
33
|
-
"/connectors/walletConnect/",
|
|
34
|
-
"/connectors/coinbaseWallet/"
|
|
37
|
+
"/connectors"
|
|
35
38
|
],
|
|
36
39
|
"preconstruct": {
|
|
37
40
|
"entrypoints": [
|
|
38
41
|
"index.ts",
|
|
39
42
|
"connectors/coinbaseWallet.ts",
|
|
43
|
+
"connectors/metaMask.ts",
|
|
40
44
|
"connectors/walletConnect.ts",
|
|
41
45
|
"connectors/mock/index.ts"
|
|
42
46
|
]
|
|
43
47
|
},
|
|
44
48
|
"peerDependencies": {
|
|
45
|
-
"@coinbase/wallet-sdk": ">=3.0.
|
|
49
|
+
"@coinbase/wallet-sdk": ">=3.0.6",
|
|
46
50
|
"@walletconnect/ethereum-provider": ">=1.7.5",
|
|
47
51
|
"ethers": ">=5.5.1"
|
|
48
52
|
},
|
|
@@ -56,11 +60,19 @@
|
|
|
56
60
|
},
|
|
57
61
|
"dependencies": {
|
|
58
62
|
"eventemitter3": "^4.0.7",
|
|
59
|
-
"zustand": "^
|
|
63
|
+
"zustand": "^4.0.0-rc.1"
|
|
60
64
|
},
|
|
61
65
|
"devDependencies": {
|
|
62
|
-
"@coinbase/wallet-sdk": "^3.0.
|
|
63
|
-
"@walletconnect/ethereum-provider": "1.7.5",
|
|
64
|
-
"ethers": "^5.
|
|
65
|
-
}
|
|
66
|
+
"@coinbase/wallet-sdk": "^3.0.11",
|
|
67
|
+
"@walletconnect/ethereum-provider": "^1.7.5",
|
|
68
|
+
"ethers": "^5.6.4"
|
|
69
|
+
},
|
|
70
|
+
"keywords": [
|
|
71
|
+
"eth",
|
|
72
|
+
"ethereum",
|
|
73
|
+
"dapps",
|
|
74
|
+
"wallet",
|
|
75
|
+
"web3"
|
|
76
|
+
],
|
|
77
|
+
"readme": "# @wagmi/core\n\n## Documentation\n\nFor full documentation and examples, visit [wagmi.sh](https://wagmi.sh).\n\n## Installation\n\nInstall wagmi and its ethers peer dependency.\n\n```bash\nnpm install @wagmi/core ethers\n```\n\n## Community\n\nCheck out the following places for more wagmi-related content:\n\n- Join the [discussions on GitHub](https://github.com/tmm/wagmi/discussions)\n- Follow [@awkweb](https://twitter.com/awkweb) on Twitter for project updates\n- Sign the [guestbook](https://github.com/tmm/wagmi/discussions/2)\n- Share [your project/organization](https://github.com/tmm/wagmi/discussions/201) using wagmi\n\n## Support\n\nIf you find wagmi useful, please consider supporting development. Thank you 🙏\n\n- [awkweb.eth](https://etherscan.io/enslookup-search?search=awkweb.eth)\n- [GitHub Sponsors](https://github.com/sponsors/tmm?metadata_campaign=readme_core)\n- [Gitcoin Grant](https://gitcoin.co/grants/4493/wagmi-react-hooks-library-for-ethereum)\n"
|
|
66
78
|
}
|