@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.
- package/dist/0xsequence-provider.cjs.dev.js +39 -7
- package/dist/0xsequence-provider.cjs.prod.js +39 -7
- package/dist/0xsequence-provider.esm.js +39 -7
- package/package.json +8 -8
- package/src/transports/mux-transport/mux-message-provider.ts +4 -0
- package/src/transports/wallet-request-handler.ts +17 -0
- package/src/wallet.ts +9 -0
|
@@ -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 [
|
|
811
|
-
response.result = await signer.getWalletConfig(
|
|
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 [
|
|
819
|
-
response.result = await signer.getWalletState(
|
|
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
|
-
|
|
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 [
|
|
811
|
-
response.result = await signer.getWalletConfig(
|
|
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 [
|
|
819
|
-
response.result = await signer.getWalletState(
|
|
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
|
-
|
|
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 [
|
|
807
|
-
response.result = await signer.getWalletConfig(
|
|
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 [
|
|
815
|
-
response.result = await signer.getWalletState(
|
|
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
|
-
|
|
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.
|
|
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.
|
|
17
|
-
"@0xsequence/auth": "^0.36.
|
|
18
|
-
"@0xsequence/config": "^0.36.
|
|
19
|
-
"@0xsequence/network": "^0.36.
|
|
20
|
-
"@0xsequence/transactions": "^0.36.
|
|
21
|
-
"@0xsequence/utils": "^0.36.
|
|
22
|
-
"@0xsequence/wallet": "^0.36.
|
|
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
|
|