@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.
@@ -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, (key, value) => {
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
- return this.transport.request(request);
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, (key, value) => {
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
- return this.transport.request(request);
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, (key, value) => {
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
- return this.transport.request(request);
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.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.0",
16
- "@0xsequence/account": "2.0.0",
17
- "@0xsequence/auth": "2.0.0",
18
- "@0xsequence/core": "2.0.0",
19
- "@0xsequence/migration": "2.0.0",
20
- "@0xsequence/network": "2.0.0",
21
- "@0xsequence/relayer": "2.0.0",
22
- "@0xsequence/utils": "2.0.0",
23
- "@0xsequence/wallet": "2.0.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
- return this.transport.request(request)
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, (key, value) => {
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
  }