@0xsequence/provider 0.36.4 → 0.36.7

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.
@@ -796,6 +796,27 @@ class WalletRequestHandler {
796
796
  response.result = gasPrice.toHexString();
797
797
  break;
798
798
  }
799
+
800
+ case 'wallet_switchEthereumChain':
801
+ {
802
+ const [switchParams] = request.params;
803
+
804
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
805
+ throw new Error('invalid chainId');
806
+ }
807
+
808
+ const _chainId = ethers.ethers.BigNumber.from(switchParams.chainId);
809
+
810
+ const ok = await _this.setDefaultNetwork(_chainId.toString(), true);
811
+
812
+ if (!ok) {
813
+ throw new Error(`unable to set chainId ${_chainId}`);
814
+ }
815
+
816
+ response.result = null; // success
817
+
818
+ break;
819
+ }
799
820
  // smart wallet method
800
821
 
801
822
  case 'sequence_getWalletContext':
@@ -807,16 +828,16 @@ class WalletRequestHandler {
807
828
 
808
829
  case 'sequence_getWalletConfig':
809
830
  {
810
- const [_chainId] = request.params;
811
- response.result = await signer.getWalletConfig(_chainId);
831
+ const [_chainId2] = request.params;
832
+ response.result = await signer.getWalletConfig(_chainId2);
812
833
  break;
813
834
  }
814
835
  // smart wallet method
815
836
 
816
837
  case 'sequence_getWalletState':
817
838
  {
818
- const [_chainId2] = request.params;
819
- response.result = await signer.getWalletState(_chainId2);
839
+ const [_chainId3] = request.params;
840
+ response.result = await signer.getWalletState(_chainId3);
820
841
  break;
821
842
  }
822
843
  // smart wallet method
@@ -2431,7 +2452,11 @@ class MuxMessageProvider {
2431
2452
  this.provider = this.messageProviders[0];
2432
2453
  this.provider.register();
2433
2454
  return;
2434
- }
2455
+ } // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
2456
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
2457
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
2458
+ // below, in which case one of the events will register. So perhaps this is fine.
2459
+
2435
2460
 
2436
2461
  this.messageProviders.forEach(m => {
2437
2462
  m.register();
@@ -3195,8 +3220,15 @@ class Wallet {
3195
3220
  }
3196
3221
 
3197
3222
  if ((_this$config$transpor5 = this.config.transports) != null && (_this$config$transpor6 = _this$config$transpor5.extensionTransport) != null && _this$config$transpor6.enabled) {
3198
- this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime);
3199
- this.transport.messageProvider.add(this.transport.extensionMessageProvider);
3223
+ this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime); // this.transport.extensionMessageProvider.register()
3224
+
3225
+ this.transport.messageProvider.add(this.transport.extensionMessageProvider); // NOTE/REVIEW: see note in mux-message-provider
3226
+ //
3227
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
3228
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
3229
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
3230
+ //
3231
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3200
3232
  }
3201
3233
 
3202
3234
  this.transport.messageProvider.register(); // .....
@@ -796,6 +796,27 @@ class WalletRequestHandler {
796
796
  response.result = gasPrice.toHexString();
797
797
  break;
798
798
  }
799
+
800
+ case 'wallet_switchEthereumChain':
801
+ {
802
+ const [switchParams] = request.params;
803
+
804
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
805
+ throw new Error('invalid chainId');
806
+ }
807
+
808
+ const _chainId = ethers.ethers.BigNumber.from(switchParams.chainId);
809
+
810
+ const ok = await _this.setDefaultNetwork(_chainId.toString(), true);
811
+
812
+ if (!ok) {
813
+ throw new Error(`unable to set chainId ${_chainId}`);
814
+ }
815
+
816
+ response.result = null; // success
817
+
818
+ break;
819
+ }
799
820
  // smart wallet method
800
821
 
801
822
  case 'sequence_getWalletContext':
@@ -807,16 +828,16 @@ class WalletRequestHandler {
807
828
 
808
829
  case 'sequence_getWalletConfig':
809
830
  {
810
- const [_chainId] = request.params;
811
- response.result = await signer.getWalletConfig(_chainId);
831
+ const [_chainId2] = request.params;
832
+ response.result = await signer.getWalletConfig(_chainId2);
812
833
  break;
813
834
  }
814
835
  // smart wallet method
815
836
 
816
837
  case 'sequence_getWalletState':
817
838
  {
818
- const [_chainId2] = request.params;
819
- response.result = await signer.getWalletState(_chainId2);
839
+ const [_chainId3] = request.params;
840
+ response.result = await signer.getWalletState(_chainId3);
820
841
  break;
821
842
  }
822
843
  // smart wallet method
@@ -2431,7 +2452,11 @@ class MuxMessageProvider {
2431
2452
  this.provider = this.messageProviders[0];
2432
2453
  this.provider.register();
2433
2454
  return;
2434
- }
2455
+ } // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
2456
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
2457
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
2458
+ // below, in which case one of the events will register. So perhaps this is fine.
2459
+
2435
2460
 
2436
2461
  this.messageProviders.forEach(m => {
2437
2462
  m.register();
@@ -3195,8 +3220,15 @@ class Wallet {
3195
3220
  }
3196
3221
 
3197
3222
  if ((_this$config$transpor5 = this.config.transports) != null && (_this$config$transpor6 = _this$config$transpor5.extensionTransport) != null && _this$config$transpor6.enabled) {
3198
- this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime);
3199
- this.transport.messageProvider.add(this.transport.extensionMessageProvider);
3223
+ this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime); // this.transport.extensionMessageProvider.register()
3224
+
3225
+ this.transport.messageProvider.add(this.transport.extensionMessageProvider); // NOTE/REVIEW: see note in mux-message-provider
3226
+ //
3227
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
3228
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
3229
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
3230
+ //
3231
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3200
3232
  }
3201
3233
 
3202
3234
  this.transport.messageProvider.register(); // .....
@@ -792,6 +792,27 @@ class WalletRequestHandler {
792
792
  response.result = gasPrice.toHexString();
793
793
  break;
794
794
  }
795
+
796
+ case 'wallet_switchEthereumChain':
797
+ {
798
+ const [switchParams] = request.params;
799
+
800
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
801
+ throw new Error('invalid chainId');
802
+ }
803
+
804
+ const _chainId = ethers.BigNumber.from(switchParams.chainId);
805
+
806
+ const ok = await _this.setDefaultNetwork(_chainId.toString(), true);
807
+
808
+ if (!ok) {
809
+ throw new Error(`unable to set chainId ${_chainId}`);
810
+ }
811
+
812
+ response.result = null; // success
813
+
814
+ break;
815
+ }
795
816
  // smart wallet method
796
817
 
797
818
  case 'sequence_getWalletContext':
@@ -803,16 +824,16 @@ class WalletRequestHandler {
803
824
 
804
825
  case 'sequence_getWalletConfig':
805
826
  {
806
- const [_chainId] = request.params;
807
- response.result = await signer.getWalletConfig(_chainId);
827
+ const [_chainId2] = request.params;
828
+ response.result = await signer.getWalletConfig(_chainId2);
808
829
  break;
809
830
  }
810
831
  // smart wallet method
811
832
 
812
833
  case 'sequence_getWalletState':
813
834
  {
814
- const [_chainId2] = request.params;
815
- response.result = await signer.getWalletState(_chainId2);
835
+ const [_chainId3] = request.params;
836
+ response.result = await signer.getWalletState(_chainId3);
816
837
  break;
817
838
  }
818
839
  // smart wallet method
@@ -2427,7 +2448,11 @@ class MuxMessageProvider {
2427
2448
  this.provider = this.messageProviders[0];
2428
2449
  this.provider.register();
2429
2450
  return;
2430
- }
2451
+ } // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
2452
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
2453
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
2454
+ // below, in which case one of the events will register. So perhaps this is fine.
2455
+
2431
2456
 
2432
2457
  this.messageProviders.forEach(m => {
2433
2458
  m.register();
@@ -3191,8 +3216,15 @@ class Wallet {
3191
3216
  }
3192
3217
 
3193
3218
  if ((_this$config$transpor5 = this.config.transports) != null && (_this$config$transpor6 = _this$config$transpor5.extensionTransport) != null && _this$config$transpor6.enabled) {
3194
- this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime);
3195
- this.transport.messageProvider.add(this.transport.extensionMessageProvider);
3219
+ this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime); // this.transport.extensionMessageProvider.register()
3220
+
3221
+ this.transport.messageProvider.add(this.transport.extensionMessageProvider); // NOTE/REVIEW: see note in mux-message-provider
3222
+ //
3223
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
3224
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
3225
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
3226
+ //
3227
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
3196
3228
  }
3197
3229
 
3198
3230
  this.transport.messageProvider.register(); // .....
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsequence/provider",
3
- "version": "0.36.4",
3
+ "version": "0.36.7",
4
4
  "description": "provider sub-package for Sequence",
5
5
  "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
6
6
  "source": "src/index.ts",
@@ -13,13 +13,13 @@
13
13
  "typecheck": "tsc --noEmit"
14
14
  },
15
15
  "dependencies": {
16
- "@0xsequence/abi": "^0.36.4",
17
- "@0xsequence/auth": "^0.36.4",
18
- "@0xsequence/config": "^0.36.4",
19
- "@0xsequence/network": "^0.36.4",
20
- "@0xsequence/transactions": "^0.36.4",
21
- "@0xsequence/utils": "^0.36.4",
22
- "@0xsequence/wallet": "^0.36.4",
16
+ "@0xsequence/abi": "^0.36.7",
17
+ "@0xsequence/auth": "^0.36.7",
18
+ "@0xsequence/config": "^0.36.7",
19
+ "@0xsequence/network": "^0.36.7",
20
+ "@0xsequence/transactions": "^0.36.7",
21
+ "@0xsequence/utils": "^0.36.7",
22
+ "@0xsequence/wallet": "^0.36.7",
23
23
  "@ethersproject/abstract-signer": "^5.5.0",
24
24
  "@ethersproject/hash": "^5.5.0",
25
25
  "@ethersproject/providers": "^5.5.1",
@@ -26,6 +26,10 @@ export class MuxMessageProvider implements ProviderTransport {
26
26
  return
27
27
  }
28
28
 
29
+ // REVIEW/NOTE: ........ this method does not work for the chrome-extension. The issue becomes
30
+ // when the browser quits or restarts, the "open" event is never triggered. Perhaps the code here is fine,
31
+ // or maybe its not. What should happen is when a dapp makes a request, it will call openWallet
32
+ // below, in which case one of the events will register. So perhaps this is fine.
29
33
  this.messageProviders.forEach(m => {
30
34
  m.register()
31
35
 
@@ -488,6 +488,23 @@ export class WalletRequestHandler implements ExternalProvider, JsonRpcHandler, P
488
488
  break
489
489
  }
490
490
 
491
+ case 'wallet_switchEthereumChain': {
492
+ const [switchParams] = request.params!
493
+ if (!switchParams.chainId || switchParams.chainId.length === 0) {
494
+ throw new Error('invalid chainId')
495
+ }
496
+
497
+ const chainId = ethers.BigNumber.from(switchParams.chainId)
498
+
499
+ const ok = await this.setDefaultNetwork(chainId.toString(), true)
500
+ if (!ok) {
501
+ throw new Error(`unable to set chainId ${chainId}`)
502
+ }
503
+
504
+ response.result = null // success
505
+ break
506
+ }
507
+
491
508
  // smart wallet method
492
509
  case 'sequence_getWalletContext': {
493
510
  response.result = await signer.getWalletContext()
package/src/wallet.ts CHANGED
@@ -141,7 +141,16 @@ export class Wallet implements WalletProvider {
141
141
  }
142
142
  if (this.config.transports?.extensionTransport?.enabled) {
143
143
  this.transport.extensionMessageProvider = new ExtensionMessageProvider(this.config.transports.extensionTransport.runtime)
144
+ // this.transport.extensionMessageProvider.register()
144
145
  this.transport.messageProvider.add(this.transport.extensionMessageProvider)
146
+
147
+ // NOTE/REVIEW: see note in mux-message-provider
148
+ //
149
+ // We don't add the extensionMessageProvider here because we don't send requests to it anyways, we seem to
150
+ // send all requests to the WindowMessageProvider anyways. By allowing it, if browser restarts, it will break
151
+ // the entire extension because messageProvider.provider will be undefined. So this is a hack to fix it.
152
+ //
153
+ // this.transport.messageProvider.add(this.transport.extensionMessageProvider)
145
154
  }
146
155
  this.transport.messageProvider.register()
147
156