This repository was archived by the owner on Feb 26, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 1
1
const debug = require ( "debug" ) ( "provider:wrapper" ) ; // eslint-disable-line no-unused-vars
2
2
const ProviderError = require ( "./error" ) ;
3
3
4
+ function make1193ProviderRequest ( provider ) {
5
+ /*
6
+ NOTE: If truffle switches to use WebSockets instead of HTTP requests in the future
7
+ then we will need to keep separate requestId counters for .request and .send
8
+ methods to avoid collision while generating requestIds on parallel requests.
9
+ */
10
+ let requestId = 0 ;
11
+ const modifiedRequest = async function ( { method, params } ) {
12
+ return await new Promise ( ( accept , reject ) => {
13
+ provider . send (
14
+ {
15
+ jsonrpc : "2.0" ,
16
+ id : ++ requestId ,
17
+ method,
18
+ params
19
+ } ,
20
+ ( error , response ) => {
21
+ if ( error ) {
22
+ return reject ( error ) ;
23
+ }
24
+ if ( response . error ) {
25
+ const error = new Error ( response . error . message ) ;
26
+ error . code = response . error . code ;
27
+ if ( response . error . data ) {
28
+ error . data = response . error . data ;
29
+ }
30
+ return reject ( error ) ;
31
+ }
32
+ const { result : res } = response ;
33
+ accept ( res ) ;
34
+ }
35
+ ) ;
36
+ } ) ;
37
+ } ;
38
+ return modifiedRequest . bind ( provider ) ;
39
+ }
40
+
4
41
module . exports = {
5
42
/*
6
43
* Web3.js Transport Wrapper
@@ -32,6 +69,11 @@ module.exports = {
32
69
const originalSendAsync = provider . sendAsync . bind ( provider ) ;
33
70
provider . sendAsync = this . send ( originalSendAsync , preHook , postHook ) ;
34
71
}
72
+
73
+ // EIP-1193 provider wrapping
74
+ if ( provider . request === undefined && provider . send !== undefined ) {
75
+ provider . request = make1193ProviderRequest ( provider ) ;
76
+ }
35
77
/* mark as wrapped */
36
78
provider . _alreadyWrapped = true ;
37
79
You can’t perform that action at this time.
0 commit comments