-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprovider.js
42 lines (38 loc) · 1015 Bytes
/
provider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const ethers = require('ethers')
/**
* Gets the default provider based on the environment.
* @public
* @param {?(Object)} opts
* @return Provider
*/
function getDefaultProvider(opts) {
if ('undefined' !== typeof window && window.ethereum) {
return getProvider({ ethereum: window.ethereum })
} else {
return getProvider(opts)
}
}
/**
* Gets a provider based on input opts
* @param {?(Object)} opts
* @return Provider
*/
function getProvider(opts, ...args) {
if (opts && (opts.ethereum || opts.web3)) {
return new ethers.provider.Web3Provider(opts.ethereum || opts.web3)
}
return new ethers.provider.JsonRpcProvider(opts && opts.url, ...args)
}
/**
* A factory module for getting various providers.
* @module provider
* @example
* const { getDefaultProvider, getProvider } = require('tinyara/provider')
*
* const defaultProvider = getDefaultProvider()
* const rpcProvider = getProvider('http://my-rpc-provider')
*/
module.exports = {
getDefaultProvider,
getProvider
}