@0xsequence/provider 1.2.1 → 1.2.2

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.
@@ -8,6 +8,7 @@ var ethers = require('ethers');
8
8
  var network = require('@0xsequence/network');
9
9
  var core = require('@0xsequence/core');
10
10
  var auth = require('@0xsequence/auth');
11
+ var abi = require('@0xsequence/abi');
11
12
 
12
13
  function _extends() {
13
14
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -2123,7 +2124,7 @@ function validateTransaction(wallet, transaction) {
2123
2124
  if (transaction.to.toLowerCase() === wallet.toLowerCase()) {
2124
2125
  if (transaction.data) {
2125
2126
  const data = ethers.ethers.utils.arrayify(transaction.data);
2126
- if (data.length >= 4) {
2127
+ if (data.length >= 4 && !isCreateContractCall(data)) {
2127
2128
  throw new Error('self calls are forbidden');
2128
2129
  }
2129
2130
  }
@@ -2132,6 +2133,15 @@ function validateTransaction(wallet, transaction) {
2132
2133
  throw new Error('delegate calls are forbidden');
2133
2134
  }
2134
2135
  }
2136
+ function isCreateContractCall(data) {
2137
+ const walletInterface = new ethers.ethers.utils.Interface(abi.walletContracts.mainModule.abi);
2138
+ try {
2139
+ walletInterface.decodeFunctionData('createContract', data);
2140
+ return true;
2141
+ } catch (_unused) {
2142
+ return false;
2143
+ }
2144
+ }
2135
2145
 
2136
2146
  const SIGNER_READY_TIMEOUT = 10000;
2137
2147
  class WalletRequestHandler {
@@ -3513,7 +3523,7 @@ class SingleNetworkSequenceProvider extends SequenceProvider {
3513
3523
 
3514
3524
  var packageJson = {
3515
3525
  name: "@0xsequence/provider",
3516
- version: "1.2.1",
3526
+ version: "1.2.2",
3517
3527
  description: "provider sub-package for Sequence",
3518
3528
  repository: "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
3519
3529
  source: "src/index.ts",
@@ -8,6 +8,7 @@ var ethers = require('ethers');
8
8
  var network = require('@0xsequence/network');
9
9
  var core = require('@0xsequence/core');
10
10
  var auth = require('@0xsequence/auth');
11
+ var abi = require('@0xsequence/abi');
11
12
 
12
13
  function _extends() {
13
14
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -2123,7 +2124,7 @@ function validateTransaction(wallet, transaction) {
2123
2124
  if (transaction.to.toLowerCase() === wallet.toLowerCase()) {
2124
2125
  if (transaction.data) {
2125
2126
  const data = ethers.ethers.utils.arrayify(transaction.data);
2126
- if (data.length >= 4) {
2127
+ if (data.length >= 4 && !isCreateContractCall(data)) {
2127
2128
  throw new Error('self calls are forbidden');
2128
2129
  }
2129
2130
  }
@@ -2132,6 +2133,15 @@ function validateTransaction(wallet, transaction) {
2132
2133
  throw new Error('delegate calls are forbidden');
2133
2134
  }
2134
2135
  }
2136
+ function isCreateContractCall(data) {
2137
+ const walletInterface = new ethers.ethers.utils.Interface(abi.walletContracts.mainModule.abi);
2138
+ try {
2139
+ walletInterface.decodeFunctionData('createContract', data);
2140
+ return true;
2141
+ } catch (_unused) {
2142
+ return false;
2143
+ }
2144
+ }
2135
2145
 
2136
2146
  const SIGNER_READY_TIMEOUT = 10000;
2137
2147
  class WalletRequestHandler {
@@ -3513,7 +3523,7 @@ class SingleNetworkSequenceProvider extends SequenceProvider {
3513
3523
 
3514
3524
  var packageJson = {
3515
3525
  name: "@0xsequence/provider",
3516
- version: "1.2.1",
3526
+ version: "1.2.2",
3517
3527
  description: "provider sub-package for Sequence",
3518
3528
  repository: "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
3519
3529
  source: "src/index.ts",
@@ -4,6 +4,7 @@ import { ethers, BigNumber } from 'ethers';
4
4
  import { findSupportedNetwork, ChainId, findNetworkConfig, allNetworks, JsonRpcRouter, loggingProviderMiddleware, exceptionProviderMiddleware, CachedProvider, JsonRpcSender } from '@0xsequence/network';
5
5
  import { commons } from '@0xsequence/core';
6
6
  import { signAuthorization } from '@0xsequence/auth';
7
+ import { walletContracts } from '@0xsequence/abi';
7
8
 
8
9
  function _extends() {
9
10
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -2119,7 +2120,7 @@ function validateTransaction(wallet, transaction) {
2119
2120
  if (transaction.to.toLowerCase() === wallet.toLowerCase()) {
2120
2121
  if (transaction.data) {
2121
2122
  const data = ethers.utils.arrayify(transaction.data);
2122
- if (data.length >= 4) {
2123
+ if (data.length >= 4 && !isCreateContractCall(data)) {
2123
2124
  throw new Error('self calls are forbidden');
2124
2125
  }
2125
2126
  }
@@ -2128,6 +2129,15 @@ function validateTransaction(wallet, transaction) {
2128
2129
  throw new Error('delegate calls are forbidden');
2129
2130
  }
2130
2131
  }
2132
+ function isCreateContractCall(data) {
2133
+ const walletInterface = new ethers.utils.Interface(walletContracts.mainModule.abi);
2134
+ try {
2135
+ walletInterface.decodeFunctionData('createContract', data);
2136
+ return true;
2137
+ } catch (_unused) {
2138
+ return false;
2139
+ }
2140
+ }
2131
2141
 
2132
2142
  const SIGNER_READY_TIMEOUT = 10000;
2133
2143
  class WalletRequestHandler {
@@ -3509,7 +3519,7 @@ class SingleNetworkSequenceProvider extends SequenceProvider {
3509
3519
 
3510
3520
  var packageJson = {
3511
3521
  name: "@0xsequence/provider",
3512
- version: "1.2.1",
3522
+ version: "1.2.2",
3513
3523
  description: "provider sub-package for Sequence",
3514
3524
  repository: "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
3515
3525
  source: "src/index.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsequence/provider",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
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",
@@ -11,15 +11,15 @@
11
11
  "dependencies": {
12
12
  "eventemitter2": "^6.4.5",
13
13
  "webextension-polyfill": "^0.10.0",
14
- "@0xsequence/abi": "1.2.1",
15
- "@0xsequence/core": "1.2.1",
16
- "@0xsequence/auth": "1.2.1",
17
- "@0xsequence/account": "1.2.1",
18
- "@0xsequence/migration": "1.2.1",
19
- "@0xsequence/network": "1.2.1",
20
- "@0xsequence/relayer": "1.2.1",
21
- "@0xsequence/utils": "1.2.1",
22
- "@0xsequence/wallet": "1.2.1"
14
+ "@0xsequence/abi": "1.2.2",
15
+ "@0xsequence/migration": "1.2.2",
16
+ "@0xsequence/auth": "1.2.2",
17
+ "@0xsequence/account": "1.2.2",
18
+ "@0xsequence/core": "1.2.2",
19
+ "@0xsequence/network": "1.2.2",
20
+ "@0xsequence/relayer": "1.2.2",
21
+ "@0xsequence/utils": "1.2.2",
22
+ "@0xsequence/wallet": "1.2.2"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "ethers": ">=5.5 < 6"
@@ -1,3 +1,4 @@
1
+ import { walletContracts } from '@0xsequence/abi'
1
2
  import { commons } from '@0xsequence/core'
2
3
  import { ethers } from 'ethers'
3
4
 
@@ -11,7 +12,7 @@ function validateTransaction(wallet: string, transaction: commons.transaction.Tr
11
12
  if (transaction.to.toLowerCase() === wallet.toLowerCase()) {
12
13
  if (transaction.data) {
13
14
  const data = ethers.utils.arrayify(transaction.data)
14
- if (data.length >= 4) {
15
+ if (data.length >= 4 && !isCreateContractCall(data)) {
15
16
  throw new Error('self calls are forbidden')
16
17
  }
17
18
  }
@@ -21,3 +22,13 @@ function validateTransaction(wallet: string, transaction: commons.transaction.Tr
21
22
  throw new Error('delegate calls are forbidden')
22
23
  }
23
24
  }
25
+
26
+ function isCreateContractCall(data: ethers.BytesLike): boolean {
27
+ const walletInterface = new ethers.utils.Interface(walletContracts.mainModule.abi)
28
+ try {
29
+ walletInterface.decodeFunctionData('createContract', data)
30
+ return true
31
+ } catch {
32
+ return false
33
+ }
34
+ }