@0xsequence/provider 2.0.0 → 2.0.1
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 +18 -16
- package/dist/0xsequence-provider.cjs.prod.js +18 -16
- package/dist/0xsequence-provider.esm.js +19 -17
- package/package.json +10 -10
- package/src/client.ts +13 -1
- package/src/transports/unreal-transport/unreal-message-handler.ts +2 -2
- package/src/transports/unreal-transport/unreal-message-provider.ts +2 -2
- package/src/transports/window-transport/window-message-handler.ts +3 -14
- package/src/transports/window-transport/window-message-provider.ts +3 -3
|
@@ -1461,7 +1461,7 @@ class UnrealMessageProvider extends BaseProviderTransport {
|
|
|
1461
1461
|
// all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
1462
1462
|
sendMessage(message) {
|
|
1463
1463
|
var _window$ue3;
|
|
1464
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
1464
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, utils.bigintReplacer) : message;
|
|
1465
1465
|
console.log('Sending message to wallet:', postedMessage);
|
|
1466
1466
|
(_window$ue3 = window.ue) == null || (_window$ue3 = _window$ue3.sequencewallettransport) == null || _window$ue3.sendmessagetowallet(postedMessage);
|
|
1467
1467
|
}
|
|
@@ -1560,7 +1560,7 @@ class UnrealMessageHandler extends BaseWalletTransport {
|
|
|
1560
1560
|
return;
|
|
1561
1561
|
}
|
|
1562
1562
|
// prepare payload
|
|
1563
|
-
const payload = JSON.stringify(message);
|
|
1563
|
+
const payload = JSON.stringify(message, utils.bigintReplacer);
|
|
1564
1564
|
|
|
1565
1565
|
// post-message to app.
|
|
1566
1566
|
(_window$ue3 = window.ue) == null || (_window$ue3 = _window$ue3.sequencewallettransport) == null || _window$ue3.sendmessagetosequencejs(payload);
|
|
@@ -1835,7 +1835,7 @@ class WindowMessageProvider extends BaseProviderTransport {
|
|
|
1835
1835
|
}
|
|
1836
1836
|
let message;
|
|
1837
1837
|
try {
|
|
1838
|
-
message = JSON.parse(event.data);
|
|
1838
|
+
message = JSON.parse(event.data, utils.bigintReviver);
|
|
1839
1839
|
} catch (err) {
|
|
1840
1840
|
// event is not a ProviderMessage JSON object, skip
|
|
1841
1841
|
return;
|
|
@@ -1859,7 +1859,7 @@ class WindowMessageProvider extends BaseProviderTransport {
|
|
|
1859
1859
|
utils.logger.warn('WindowMessageProvider: sendMessage failed as walletWindow is unavailable');
|
|
1860
1860
|
return;
|
|
1861
1861
|
}
|
|
1862
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
1862
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, utils.bigintReplacer) : message;
|
|
1863
1863
|
this.walletWindow.postMessage(postedMessage, this.walletURL.origin);
|
|
1864
1864
|
}
|
|
1865
1865
|
}
|
|
@@ -1886,13 +1886,7 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
1886
1886
|
// Wallet always expects json-rpc request messages from a dapp
|
|
1887
1887
|
let request;
|
|
1888
1888
|
try {
|
|
1889
|
-
request = JSON.parse(event.data,
|
|
1890
|
-
// BigNumber compatibility with older versions of sequence.js
|
|
1891
|
-
if (isBigNumberSerialized(value)) {
|
|
1892
|
-
return BigInt(value.hex);
|
|
1893
|
-
}
|
|
1894
|
-
return value;
|
|
1895
|
-
});
|
|
1889
|
+
request = JSON.parse(event.data, utils.bigintReviver);
|
|
1896
1890
|
} catch (err) {
|
|
1897
1891
|
// event is not a ProviderMessage JSON object, skip
|
|
1898
1892
|
return;
|
|
@@ -1982,7 +1976,7 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
1982
1976
|
// postMessage sends message to the dapp window
|
|
1983
1977
|
sendMessage(message) {
|
|
1984
1978
|
// prepare payload
|
|
1985
|
-
const payload = JSON.stringify(message);
|
|
1979
|
+
const payload = JSON.stringify(message, utils.bigintReplacer);
|
|
1986
1980
|
|
|
1987
1981
|
// post-message to app.
|
|
1988
1982
|
// only for init requests, we send to '*' origin
|
|
@@ -2014,9 +2008,6 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
2014
2008
|
}
|
|
2015
2009
|
}
|
|
2016
2010
|
}
|
|
2017
|
-
const isBigNumberSerialized = value => {
|
|
2018
|
-
return typeof value === 'object' && value.type === 'BigNumber' && ethers.ethers.isHexString(value.hex);
|
|
2019
|
-
};
|
|
2020
2011
|
|
|
2021
2012
|
function isMuxTransportTemplate(obj) {
|
|
2022
2013
|
return obj && typeof obj === 'object' && (obj.windowTransport && typeof obj.windowTransport === 'object' || obj.proxyTransport && typeof obj.proxyTransport === 'object' || obj.extensionTransport && typeof obj.extensionTransport === 'object' || obj.unrealTransport && typeof obj.unrealTransport === 'object') && (
|
|
@@ -4004,7 +3995,10 @@ class SequenceClient {
|
|
|
4004
3995
|
// to avoid the default EIP6492 behavior overriding an explicit
|
|
4005
3996
|
// "legacy sign" request, so we map the method here.
|
|
4006
3997
|
request.method = this.mapSignMethod(request.method);
|
|
4007
|
-
|
|
3998
|
+
const result = await this.transport.request(request);
|
|
3999
|
+
|
|
4000
|
+
// We may need to unwrap the response if it's a JSON-RPC response. ie. older universal wallet versions
|
|
4001
|
+
return unwrapJsonRpcResponse(result);
|
|
4008
4002
|
}
|
|
4009
4003
|
async getNetworks(pull) {
|
|
4010
4004
|
const connectedSession = this.session.connectedSession();
|
|
@@ -4136,6 +4130,14 @@ class SequenceClient {
|
|
|
4136
4130
|
// exclusively used for Sequence specific methods
|
|
4137
4131
|
}
|
|
4138
4132
|
|
|
4133
|
+
// Unwrap a JsonRpcResponse result
|
|
4134
|
+
const unwrapJsonRpcResponse = response => {
|
|
4135
|
+
if (response && typeof response === 'object' && 'jsonrpc' in response && 'result' in response) {
|
|
4136
|
+
return response.result;
|
|
4137
|
+
}
|
|
4138
|
+
return response;
|
|
4139
|
+
};
|
|
4140
|
+
|
|
4139
4141
|
const DefaultProviderConfig = {
|
|
4140
4142
|
transports: {
|
|
4141
4143
|
walletAppURL: 'https://sequence.app',
|
|
@@ -1461,7 +1461,7 @@ class UnrealMessageProvider extends BaseProviderTransport {
|
|
|
1461
1461
|
// all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
1462
1462
|
sendMessage(message) {
|
|
1463
1463
|
var _window$ue3;
|
|
1464
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
1464
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, utils.bigintReplacer) : message;
|
|
1465
1465
|
console.log('Sending message to wallet:', postedMessage);
|
|
1466
1466
|
(_window$ue3 = window.ue) == null || (_window$ue3 = _window$ue3.sequencewallettransport) == null || _window$ue3.sendmessagetowallet(postedMessage);
|
|
1467
1467
|
}
|
|
@@ -1560,7 +1560,7 @@ class UnrealMessageHandler extends BaseWalletTransport {
|
|
|
1560
1560
|
return;
|
|
1561
1561
|
}
|
|
1562
1562
|
// prepare payload
|
|
1563
|
-
const payload = JSON.stringify(message);
|
|
1563
|
+
const payload = JSON.stringify(message, utils.bigintReplacer);
|
|
1564
1564
|
|
|
1565
1565
|
// post-message to app.
|
|
1566
1566
|
(_window$ue3 = window.ue) == null || (_window$ue3 = _window$ue3.sequencewallettransport) == null || _window$ue3.sendmessagetosequencejs(payload);
|
|
@@ -1835,7 +1835,7 @@ class WindowMessageProvider extends BaseProviderTransport {
|
|
|
1835
1835
|
}
|
|
1836
1836
|
let message;
|
|
1837
1837
|
try {
|
|
1838
|
-
message = JSON.parse(event.data);
|
|
1838
|
+
message = JSON.parse(event.data, utils.bigintReviver);
|
|
1839
1839
|
} catch (err) {
|
|
1840
1840
|
// event is not a ProviderMessage JSON object, skip
|
|
1841
1841
|
return;
|
|
@@ -1859,7 +1859,7 @@ class WindowMessageProvider extends BaseProviderTransport {
|
|
|
1859
1859
|
utils.logger.warn('WindowMessageProvider: sendMessage failed as walletWindow is unavailable');
|
|
1860
1860
|
return;
|
|
1861
1861
|
}
|
|
1862
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
1862
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, utils.bigintReplacer) : message;
|
|
1863
1863
|
this.walletWindow.postMessage(postedMessage, this.walletURL.origin);
|
|
1864
1864
|
}
|
|
1865
1865
|
}
|
|
@@ -1886,13 +1886,7 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
1886
1886
|
// Wallet always expects json-rpc request messages from a dapp
|
|
1887
1887
|
let request;
|
|
1888
1888
|
try {
|
|
1889
|
-
request = JSON.parse(event.data,
|
|
1890
|
-
// BigNumber compatibility with older versions of sequence.js
|
|
1891
|
-
if (isBigNumberSerialized(value)) {
|
|
1892
|
-
return BigInt(value.hex);
|
|
1893
|
-
}
|
|
1894
|
-
return value;
|
|
1895
|
-
});
|
|
1889
|
+
request = JSON.parse(event.data, utils.bigintReviver);
|
|
1896
1890
|
} catch (err) {
|
|
1897
1891
|
// event is not a ProviderMessage JSON object, skip
|
|
1898
1892
|
return;
|
|
@@ -1982,7 +1976,7 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
1982
1976
|
// postMessage sends message to the dapp window
|
|
1983
1977
|
sendMessage(message) {
|
|
1984
1978
|
// prepare payload
|
|
1985
|
-
const payload = JSON.stringify(message);
|
|
1979
|
+
const payload = JSON.stringify(message, utils.bigintReplacer);
|
|
1986
1980
|
|
|
1987
1981
|
// post-message to app.
|
|
1988
1982
|
// only for init requests, we send to '*' origin
|
|
@@ -2014,9 +2008,6 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
2014
2008
|
}
|
|
2015
2009
|
}
|
|
2016
2010
|
}
|
|
2017
|
-
const isBigNumberSerialized = value => {
|
|
2018
|
-
return typeof value === 'object' && value.type === 'BigNumber' && ethers.ethers.isHexString(value.hex);
|
|
2019
|
-
};
|
|
2020
2011
|
|
|
2021
2012
|
function isMuxTransportTemplate(obj) {
|
|
2022
2013
|
return obj && typeof obj === 'object' && (obj.windowTransport && typeof obj.windowTransport === 'object' || obj.proxyTransport && typeof obj.proxyTransport === 'object' || obj.extensionTransport && typeof obj.extensionTransport === 'object' || obj.unrealTransport && typeof obj.unrealTransport === 'object') && (
|
|
@@ -4004,7 +3995,10 @@ class SequenceClient {
|
|
|
4004
3995
|
// to avoid the default EIP6492 behavior overriding an explicit
|
|
4005
3996
|
// "legacy sign" request, so we map the method here.
|
|
4006
3997
|
request.method = this.mapSignMethod(request.method);
|
|
4007
|
-
|
|
3998
|
+
const result = await this.transport.request(request);
|
|
3999
|
+
|
|
4000
|
+
// We may need to unwrap the response if it's a JSON-RPC response. ie. older universal wallet versions
|
|
4001
|
+
return unwrapJsonRpcResponse(result);
|
|
4008
4002
|
}
|
|
4009
4003
|
async getNetworks(pull) {
|
|
4010
4004
|
const connectedSession = this.session.connectedSession();
|
|
@@ -4136,6 +4130,14 @@ class SequenceClient {
|
|
|
4136
4130
|
// exclusively used for Sequence specific methods
|
|
4137
4131
|
}
|
|
4138
4132
|
|
|
4133
|
+
// Unwrap a JsonRpcResponse result
|
|
4134
|
+
const unwrapJsonRpcResponse = response => {
|
|
4135
|
+
if (response && typeof response === 'object' && 'jsonrpc' in response && 'result' in response) {
|
|
4136
|
+
return response.result;
|
|
4137
|
+
}
|
|
4138
|
+
return response;
|
|
4139
|
+
};
|
|
4140
|
+
|
|
4139
4141
|
const DefaultProviderConfig = {
|
|
4140
4142
|
transports: {
|
|
4141
4143
|
walletAppURL: 'https://sequence.app',
|
|
@@ -2,7 +2,7 @@ import { walletContracts } from '@0xsequence/abi';
|
|
|
2
2
|
import { commons, VERSION } from '@0xsequence/core';
|
|
3
3
|
import { ethers } from 'ethers';
|
|
4
4
|
import { EventEmitter2 } from 'eventemitter2';
|
|
5
|
-
import { logger, encodeMessageDigest, encodeTypedDataDigest, sanitizeNumberString, sanitizeHost, sanitizeAlphanumeric, base64EncodeObject, base64DecodeObject, toHexString } from '@0xsequence/utils';
|
|
5
|
+
import { logger, encodeMessageDigest, encodeTypedDataDigest, sanitizeNumberString, sanitizeHost, sanitizeAlphanumeric, base64EncodeObject, bigintReplacer, base64DecodeObject, bigintReviver, toHexString } from '@0xsequence/utils';
|
|
6
6
|
import { findSupportedNetwork, ChainId, findNetworkConfig, allNetworks, JsonRpcProvider, loggingProviderMiddleware, exceptionProviderMiddleware, CachedProvider } from '@0xsequence/network';
|
|
7
7
|
import { signAuthorization } from '@0xsequence/auth';
|
|
8
8
|
import { isBrowser, Databeat } from '@databeat/tracker';
|
|
@@ -1457,7 +1457,7 @@ class UnrealMessageProvider extends BaseProviderTransport {
|
|
|
1457
1457
|
// all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
1458
1458
|
sendMessage(message) {
|
|
1459
1459
|
var _window$ue3;
|
|
1460
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
1460
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, bigintReplacer) : message;
|
|
1461
1461
|
console.log('Sending message to wallet:', postedMessage);
|
|
1462
1462
|
(_window$ue3 = window.ue) == null || (_window$ue3 = _window$ue3.sequencewallettransport) == null || _window$ue3.sendmessagetowallet(postedMessage);
|
|
1463
1463
|
}
|
|
@@ -1556,7 +1556,7 @@ class UnrealMessageHandler extends BaseWalletTransport {
|
|
|
1556
1556
|
return;
|
|
1557
1557
|
}
|
|
1558
1558
|
// prepare payload
|
|
1559
|
-
const payload = JSON.stringify(message);
|
|
1559
|
+
const payload = JSON.stringify(message, bigintReplacer);
|
|
1560
1560
|
|
|
1561
1561
|
// post-message to app.
|
|
1562
1562
|
(_window$ue3 = window.ue) == null || (_window$ue3 = _window$ue3.sequencewallettransport) == null || _window$ue3.sendmessagetosequencejs(payload);
|
|
@@ -1831,7 +1831,7 @@ class WindowMessageProvider extends BaseProviderTransport {
|
|
|
1831
1831
|
}
|
|
1832
1832
|
let message;
|
|
1833
1833
|
try {
|
|
1834
|
-
message = JSON.parse(event.data);
|
|
1834
|
+
message = JSON.parse(event.data, bigintReviver);
|
|
1835
1835
|
} catch (err) {
|
|
1836
1836
|
// event is not a ProviderMessage JSON object, skip
|
|
1837
1837
|
return;
|
|
@@ -1855,7 +1855,7 @@ class WindowMessageProvider extends BaseProviderTransport {
|
|
|
1855
1855
|
logger.warn('WindowMessageProvider: sendMessage failed as walletWindow is unavailable');
|
|
1856
1856
|
return;
|
|
1857
1857
|
}
|
|
1858
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
1858
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, bigintReplacer) : message;
|
|
1859
1859
|
this.walletWindow.postMessage(postedMessage, this.walletURL.origin);
|
|
1860
1860
|
}
|
|
1861
1861
|
}
|
|
@@ -1882,13 +1882,7 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
1882
1882
|
// Wallet always expects json-rpc request messages from a dapp
|
|
1883
1883
|
let request;
|
|
1884
1884
|
try {
|
|
1885
|
-
request = JSON.parse(event.data,
|
|
1886
|
-
// BigNumber compatibility with older versions of sequence.js
|
|
1887
|
-
if (isBigNumberSerialized(value)) {
|
|
1888
|
-
return BigInt(value.hex);
|
|
1889
|
-
}
|
|
1890
|
-
return value;
|
|
1891
|
-
});
|
|
1885
|
+
request = JSON.parse(event.data, bigintReviver);
|
|
1892
1886
|
} catch (err) {
|
|
1893
1887
|
// event is not a ProviderMessage JSON object, skip
|
|
1894
1888
|
return;
|
|
@@ -1978,7 +1972,7 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
1978
1972
|
// postMessage sends message to the dapp window
|
|
1979
1973
|
sendMessage(message) {
|
|
1980
1974
|
// prepare payload
|
|
1981
|
-
const payload = JSON.stringify(message);
|
|
1975
|
+
const payload = JSON.stringify(message, bigintReplacer);
|
|
1982
1976
|
|
|
1983
1977
|
// post-message to app.
|
|
1984
1978
|
// only for init requests, we send to '*' origin
|
|
@@ -2010,9 +2004,6 @@ class WindowMessageHandler extends BaseWalletTransport {
|
|
|
2010
2004
|
}
|
|
2011
2005
|
}
|
|
2012
2006
|
}
|
|
2013
|
-
const isBigNumberSerialized = value => {
|
|
2014
|
-
return typeof value === 'object' && value.type === 'BigNumber' && ethers.isHexString(value.hex);
|
|
2015
|
-
};
|
|
2016
2007
|
|
|
2017
2008
|
function isMuxTransportTemplate(obj) {
|
|
2018
2009
|
return obj && typeof obj === 'object' && (obj.windowTransport && typeof obj.windowTransport === 'object' || obj.proxyTransport && typeof obj.proxyTransport === 'object' || obj.extensionTransport && typeof obj.extensionTransport === 'object' || obj.unrealTransport && typeof obj.unrealTransport === 'object') && (
|
|
@@ -4000,7 +3991,10 @@ class SequenceClient {
|
|
|
4000
3991
|
// to avoid the default EIP6492 behavior overriding an explicit
|
|
4001
3992
|
// "legacy sign" request, so we map the method here.
|
|
4002
3993
|
request.method = this.mapSignMethod(request.method);
|
|
4003
|
-
|
|
3994
|
+
const result = await this.transport.request(request);
|
|
3995
|
+
|
|
3996
|
+
// We may need to unwrap the response if it's a JSON-RPC response. ie. older universal wallet versions
|
|
3997
|
+
return unwrapJsonRpcResponse(result);
|
|
4004
3998
|
}
|
|
4005
3999
|
async getNetworks(pull) {
|
|
4006
4000
|
const connectedSession = this.session.connectedSession();
|
|
@@ -4132,6 +4126,14 @@ class SequenceClient {
|
|
|
4132
4126
|
// exclusively used for Sequence specific methods
|
|
4133
4127
|
}
|
|
4134
4128
|
|
|
4129
|
+
// Unwrap a JsonRpcResponse result
|
|
4130
|
+
const unwrapJsonRpcResponse = response => {
|
|
4131
|
+
if (response && typeof response === 'object' && 'jsonrpc' in response && 'result' in response) {
|
|
4132
|
+
return response.result;
|
|
4133
|
+
}
|
|
4134
|
+
return response;
|
|
4135
|
+
};
|
|
4136
|
+
|
|
4135
4137
|
const DefaultProviderConfig = {
|
|
4136
4138
|
transports: {
|
|
4137
4139
|
walletAppURL: 'https://sequence.app',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsequence/provider",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
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",
|
|
@@ -12,15 +12,15 @@
|
|
|
12
12
|
"@databeat/tracker": "^0.9.1",
|
|
13
13
|
"eventemitter2": "^6.4.5",
|
|
14
14
|
"webextension-polyfill": "^0.10.0",
|
|
15
|
-
"@0xsequence/abi": "2.0.
|
|
16
|
-
"@0xsequence/account": "2.0.
|
|
17
|
-
"@0xsequence/auth": "2.0.
|
|
18
|
-
"@0xsequence/core": "2.0.
|
|
19
|
-
"@0xsequence/migration": "2.0.
|
|
20
|
-
"@0xsequence/network": "2.0.
|
|
21
|
-
"@0xsequence/relayer": "2.0.
|
|
22
|
-
"@0xsequence/utils": "2.0.
|
|
23
|
-
"@0xsequence/wallet": "2.0.
|
|
15
|
+
"@0xsequence/abi": "2.0.1",
|
|
16
|
+
"@0xsequence/account": "2.0.1",
|
|
17
|
+
"@0xsequence/auth": "2.0.1",
|
|
18
|
+
"@0xsequence/core": "2.0.1",
|
|
19
|
+
"@0xsequence/migration": "2.0.1",
|
|
20
|
+
"@0xsequence/network": "2.0.1",
|
|
21
|
+
"@0xsequence/relayer": "2.0.1",
|
|
22
|
+
"@0xsequence/utils": "2.0.1",
|
|
23
|
+
"@0xsequence/wallet": "2.0.1"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"ethers": ">=6"
|
package/src/client.ts
CHANGED
|
@@ -385,7 +385,10 @@ export class SequenceClient {
|
|
|
385
385
|
// "legacy sign" request, so we map the method here.
|
|
386
386
|
request.method = this.mapSignMethod(request.method)
|
|
387
387
|
|
|
388
|
-
|
|
388
|
+
const result = await this.transport.request(request)
|
|
389
|
+
|
|
390
|
+
// We may need to unwrap the response if it's a JSON-RPC response. ie. older universal wallet versions
|
|
391
|
+
return unwrapJsonRpcResponse(result)
|
|
389
392
|
}
|
|
390
393
|
|
|
391
394
|
async getNetworks(pull?: boolean): Promise<NetworkConfig[]> {
|
|
@@ -511,3 +514,12 @@ export class SequenceClient {
|
|
|
511
514
|
// wallet-webapp does implement them, but this client is meant to be
|
|
512
515
|
// exclusively used for Sequence specific methods
|
|
513
516
|
}
|
|
517
|
+
|
|
518
|
+
// Unwrap a JsonRpcResponse result
|
|
519
|
+
const unwrapJsonRpcResponse = (response: any): any => {
|
|
520
|
+
if (response && typeof response === 'object' && 'jsonrpc' in response && 'result' in response) {
|
|
521
|
+
return response.result
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
return response
|
|
525
|
+
}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from '../../types'
|
|
11
11
|
import { WalletRequestHandler } from '../wallet-request-handler'
|
|
12
12
|
import { BaseWalletTransport } from '../base-wallet-transport'
|
|
13
|
-
import { logger, base64DecodeObject } from '@0xsequence/utils'
|
|
13
|
+
import { logger, base64DecodeObject, bigintReplacer } from '@0xsequence/utils'
|
|
14
14
|
import { overrideLogs } from './overridelogs'
|
|
15
15
|
|
|
16
16
|
// all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
@@ -104,7 +104,7 @@ export class UnrealMessageHandler extends BaseWalletTransport {
|
|
|
104
104
|
return
|
|
105
105
|
}
|
|
106
106
|
// prepare payload
|
|
107
|
-
const payload = JSON.stringify(message)
|
|
107
|
+
const payload = JSON.stringify(message, bigintReplacer)
|
|
108
108
|
|
|
109
109
|
// post-message to app.
|
|
110
110
|
window.ue?.sequencewallettransport?.sendmessagetosequencejs(payload)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OpenWalletIntent, ProviderMessage, InitState, WindowSessionParams } from '../../types'
|
|
2
2
|
import { BaseProviderTransport } from '../base-provider-transport'
|
|
3
|
-
import { base64EncodeObject } from '@0xsequence/utils'
|
|
3
|
+
import { base64EncodeObject, bigintReplacer } from '@0xsequence/utils'
|
|
4
4
|
import { overrideLogs } from './overridelogs'
|
|
5
5
|
|
|
6
6
|
let registeredUnrealMessageProvider: UnrealMessageProvider | undefined
|
|
@@ -114,7 +114,7 @@ export class UnrealMessageProvider extends BaseProviderTransport {
|
|
|
114
114
|
|
|
115
115
|
// all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
116
116
|
sendMessage(message: ProviderMessage<unknown>) {
|
|
117
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message
|
|
117
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, bigintReplacer) : message
|
|
118
118
|
console.log('Sending message to wallet:', postedMessage)
|
|
119
119
|
window.ue?.sequencewallettransport?.sendmessagetowallet(postedMessage)
|
|
120
120
|
}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from '../../types'
|
|
11
11
|
import { WalletRequestHandler } from '../wallet-request-handler'
|
|
12
12
|
import { BaseWalletTransport } from '../base-wallet-transport'
|
|
13
|
-
import { logger, base64DecodeObject } from '@0xsequence/utils'
|
|
13
|
+
import { logger, base64DecodeObject, bigintReviver, bigintReplacer } from '@0xsequence/utils'
|
|
14
14
|
import { ethers } from 'ethers'
|
|
15
15
|
|
|
16
16
|
export class WindowMessageHandler extends BaseWalletTransport {
|
|
@@ -93,14 +93,7 @@ export class WindowMessageHandler extends BaseWalletTransport {
|
|
|
93
93
|
// Wallet always expects json-rpc request messages from a dapp
|
|
94
94
|
let request: ProviderMessageRequest
|
|
95
95
|
try {
|
|
96
|
-
request = JSON.parse(event.data,
|
|
97
|
-
// BigNumber compatibility with older versions of sequence.js
|
|
98
|
-
if (isBigNumberSerialized(value)) {
|
|
99
|
-
return BigInt(value.hex)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return value
|
|
103
|
-
})
|
|
96
|
+
request = JSON.parse(event.data, bigintReviver)
|
|
104
97
|
} catch (err) {
|
|
105
98
|
// event is not a ProviderMessage JSON object, skip
|
|
106
99
|
return
|
|
@@ -125,7 +118,7 @@ export class WindowMessageHandler extends BaseWalletTransport {
|
|
|
125
118
|
// postMessage sends message to the dapp window
|
|
126
119
|
sendMessage(message: ProviderMessage<any>) {
|
|
127
120
|
// prepare payload
|
|
128
|
-
const payload = JSON.stringify(message)
|
|
121
|
+
const payload = JSON.stringify(message, bigintReplacer)
|
|
129
122
|
|
|
130
123
|
// post-message to app.
|
|
131
124
|
// only for init requests, we send to '*' origin
|
|
@@ -169,7 +162,3 @@ export class WindowMessageHandler extends BaseWalletTransport {
|
|
|
169
162
|
}
|
|
170
163
|
}
|
|
171
164
|
}
|
|
172
|
-
|
|
173
|
-
const isBigNumberSerialized = (value: any): boolean => {
|
|
174
|
-
return typeof value === 'object' && value.type === 'BigNumber' && ethers.isHexString(value.hex)
|
|
175
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OpenWalletIntent, ProviderMessage, InitState, WindowSessionParams } from '../../types'
|
|
2
2
|
import { BaseProviderTransport } from '../base-provider-transport'
|
|
3
|
-
import { logger, base64EncodeObject } from '@0xsequence/utils'
|
|
3
|
+
import { logger, base64EncodeObject, bigintReplacer, bigintReviver } from '@0xsequence/utils'
|
|
4
4
|
import { isBrowserExtension, isUnityPlugin } from '../../utils'
|
|
5
5
|
|
|
6
6
|
// ..
|
|
@@ -172,7 +172,7 @@ export class WindowMessageProvider extends BaseProviderTransport {
|
|
|
172
172
|
|
|
173
173
|
let message: ProviderMessage<any>
|
|
174
174
|
try {
|
|
175
|
-
message = JSON.parse(event.data)
|
|
175
|
+
message = JSON.parse(event.data, bigintReviver)
|
|
176
176
|
} catch (err) {
|
|
177
177
|
// event is not a ProviderMessage JSON object, skip
|
|
178
178
|
return
|
|
@@ -191,7 +191,7 @@ export class WindowMessageProvider extends BaseProviderTransport {
|
|
|
191
191
|
logger.warn('WindowMessageProvider: sendMessage failed as walletWindow is unavailable')
|
|
192
192
|
return
|
|
193
193
|
}
|
|
194
|
-
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message
|
|
194
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message, bigintReplacer) : message
|
|
195
195
|
this.walletWindow.postMessage(postedMessage, this.walletURL.origin)
|
|
196
196
|
}
|
|
197
197
|
}
|