@@ -14,6 +14,7 @@ import { User } from './User'
1414import { RelayProvider } from './providers/RelayProvider'
1515import { TLProvider } from './providers/TLProvider'
1616
17+ import { Provider } from './providers/Provider'
1718import { TLSigner } from './signers/TLSigner'
1819import { Web3Signer } from './signers/Web3Signer'
1920
@@ -26,14 +27,32 @@ import {
2627
2728import utils from './utils'
2829
29- import { TLNetworkConfig } from './typings'
30+ import { ProviderUrl , TLNetworkConfig } from './typings'
3031import { IdentityWallet } from './wallets/IdentityWallet'
3132
3233/**
3334 * The TLNetwork class is the single entry-point into the trustlines-clientlib.
3435 * It contains all of the library's functionality and all calls to the library should be made through a `TLNetwork` instance.
3536 */
3637export class TLNetwork {
38+ private static validateConfig ( config : TLNetworkConfig ) : void {
39+ if (
40+ config . relayProviderUrlObject &&
41+ ( config . relayApiUrl || config . relayWsApiUrl )
42+ ) {
43+ throw new Error (
44+ `Invalid input config; cannot input both relay provider url object and full urls`
45+ )
46+ }
47+ if (
48+ config . messagingProviderUrlObject &&
49+ ( config . messagingApiUrl || config . messagingWsApiUrl )
50+ ) {
51+ throw new Error (
52+ `Invalid input config; cannot input both messaging provider url object and full urls`
53+ )
54+ }
55+ }
3756 /**
3857 * User instance containing all user/keystore related methods.
3958 */
@@ -94,90 +113,107 @@ export class TLNetwork {
94113 /**
95114 * @hidden
96115 */
97- public provider : TLProvider
116+ public relayProvider : TLProvider
117+ /**
118+ * @hidden
119+ */
120+ public messagingProvider : Provider
98121
99122 /**
100123 * Initiates a new TLNetwork instance that provides the public interface to trustlines-clientlib.
101124 * @param config Configuration object. See [[TLNetworkConfig]] for more information.
102125 */
103126 constructor ( config : TLNetworkConfig = { } ) {
127+ TLNetwork . validateConfig ( config )
128+ const defaultProviderUrl : ProviderUrl = {
129+ protocol : 'http' ,
130+ host : 'localhost' ,
131+ port : '' ,
132+ path : '' ,
133+ wsProtocol : 'ws'
134+ }
104135 const {
105- protocol = 'http' ,
106- host = 'localhost' ,
107- port = '' ,
108- path = '' ,
109- wsProtocol = 'ws' ,
136+ relayProviderUrlObject = config . relayProviderUrlObject ||
137+ defaultProviderUrl ,
138+ messagingProviderUrlObject = config . messagingProviderUrlObject ||
139+ defaultProviderUrl ,
110140 relayApiUrl,
111141 relayWsApiUrl,
142+ messagingApiUrl,
143+ messagingWsApiUrl,
112144 web3Provider,
113145 identityFactoryAddress,
114146 identityImplementationAddress,
115147 walletType = WALLET_TYPE_ETHERS ,
116148 chainId
117149 } = config
118150
119- this . setProvider (
151+ this . setProviders (
120152 new RelayProvider (
121- relayApiUrl || utils . buildApiUrl ( protocol , host , port , path ) ,
122- relayWsApiUrl || utils . buildApiUrl ( wsProtocol , host , port , path )
153+ relayApiUrl || utils . buildApiUrl ( relayProviderUrlObject ) ,
154+ relayWsApiUrl || utils . buildWsApiUrl ( relayProviderUrlObject )
155+ ) ,
156+ new Provider (
157+ messagingApiUrl || utils . buildApiUrl ( messagingProviderUrlObject ) ,
158+ messagingWsApiUrl || utils . buildWsApiUrl ( messagingProviderUrlObject )
123159 )
124160 )
125161
126- this . setWallet ( walletType , this . provider , chainId , {
162+ this . setWallet ( walletType , this . relayProvider , chainId , {
127163 identityFactoryAddress,
128164 identityImplementationAddress
129165 } )
130166 this . setSigner ( web3Provider , this . wallet )
131167
132- this . currencyNetwork = new CurrencyNetwork ( this . provider )
168+ this . currencyNetwork = new CurrencyNetwork ( this . relayProvider )
133169 this . transaction = new Transaction ( {
134- provider : this . provider ,
170+ provider : this . relayProvider ,
135171 signer : this . signer ,
136172 currencyNetwork : this . currencyNetwork
137173 } )
138174 this . user = new User ( {
139- provider : this . provider ,
175+ provider : this . relayProvider ,
140176 signer : this . signer ,
141177 wallet : this . wallet
142178 } )
143179 this . contact = new Contact ( {
144- provider : this . provider ,
180+ provider : this . relayProvider ,
145181 user : this . user
146182 } )
147183 this . event = new Event ( {
148184 currencyNetwork : this . currencyNetwork ,
149- provider : this . provider ,
185+ provider : this . relayProvider ,
150186 user : this . user
151187 } )
152188 this . messaging = new Messaging ( {
153189 currencyNetwork : this . currencyNetwork ,
154- provider : this . provider ,
190+ provider : this . messagingProvider ,
155191 user : this . user
156192 } )
157193 this . trustline = new Trustline ( {
158194 currencyNetwork : this . currencyNetwork ,
159195 event : this . event ,
160- provider : this . provider ,
196+ provider : this . relayProvider ,
161197 transaction : this . transaction ,
162198 user : this . user
163199 } )
164200 this . payment = new Payment ( {
165201 currencyNetwork : this . currencyNetwork ,
166202 event : this . event ,
167- provider : this . provider ,
203+ provider : this . relayProvider ,
168204 transaction : this . transaction ,
169205 user : this . user
170206 } )
171207 this . exchange = new Exchange ( {
172208 currencyNetwork : this . currencyNetwork ,
173209 event : this . event ,
174210 payment : this . payment ,
175- provider : this . provider ,
211+ provider : this . relayProvider ,
176212 transaction : this . transaction ,
177213 user : this . user
178214 } )
179215 this . ethWrapper = new EthWrapper ( {
180- provider : this . provider ,
216+ provider : this . relayProvider ,
181217 transaction : this . transaction ,
182218 user : this . user
183219 } )
@@ -186,11 +222,15 @@ export class TLNetwork {
186222 /**
187223 * @hidden
188224 */
189- public setProvider ( provider : TLProvider ) : void {
190- if ( ! ( provider instanceof RelayProvider ) ) {
225+ public setProviders (
226+ relayProvider : TLProvider ,
227+ messagingProvider : Provider
228+ ) : void {
229+ if ( ! ( relayProvider instanceof RelayProvider ) ) {
191230 throw new Error ( 'Provider not supported.' )
192231 }
193- this . provider = provider
232+ this . relayProvider = relayProvider
233+ this . messagingProvider = messagingProvider
194234 }
195235
196236 /**
0 commit comments