Comparing version 5.1.0 to 5.1.2
{ | ||
"name": "ethrpc", | ||
"version": "5.1.0", | ||
"version": "5.1.2", | ||
"description": "Ethereum JSON RPC", | ||
@@ -5,0 +5,0 @@ "author": "The Augur Developers <team@augur.net>", |
"use strict"; | ||
var speedomatic = require("speedomatic"); | ||
var BigNumber = require("bignumber.js"); | ||
var eth = require("../wrappers/eth"); | ||
var RPCError = require("../errors/rpc-error"); | ||
var constants = require("../constants"); | ||
@@ -9,0 +5,0 @@ function recheckSealedBlock(onChainTransaction, callback) { |
@@ -7,3 +7,2 @@ "use strict"; | ||
var eth = require("../wrappers/eth"); | ||
var RPCError = require("../errors/rpc-error"); | ||
var constants = require("../constants"); | ||
@@ -25,3 +24,6 @@ | ||
if (err) return callback(err); | ||
if (receipt == null) return callback(new RPCError("TRANSACTION_RECEIPT_NOT_FOUND")); | ||
if (receipt == null) { | ||
console.warn("[ethrpc] Transaction receipt not found for", transactionHash, err, receipt); | ||
return dispatch(recheckSealedBlock(transaction.tx, callback)); | ||
} | ||
var gasFees = speedomatic.unfix(new BigNumber(receipt.gasUsed, 16).times(new BigNumber(transaction.tx.gasPrice, 16)), "string"); | ||
@@ -28,0 +30,0 @@ dispatch({ type: "UPDATE_ON_CHAIN_TRANSACTION", hash: transactionHash, data: { gasFees: gasFees } }); |
@@ -162,3 +162,3 @@ "use strict"; | ||
abstractTransport.connected = false; | ||
notifyDisconnectListeners(abstractTransport); | ||
notifyDisconnectListeners(abstractTransport, error); | ||
reconnect(abstractTransport); | ||
@@ -170,2 +170,3 @@ } | ||
error.data = rpcObject; | ||
notifyDisconnectListeners(abstractTransport, error); | ||
abstractTransport.messageHandler(error); | ||
@@ -210,3 +211,3 @@ } | ||
*/ | ||
function notifyDisconnectListeners(abstractTransport) { | ||
function notifyDisconnectListeners(abstractTransport, error) { | ||
Object.keys(abstractTransport.disconnectListeners).forEach(function (key) { | ||
@@ -216,3 +217,3 @@ if (typeof abstractTransport.disconnectListeners[key] !== "function") { | ||
} else { | ||
abstractTransport.disconnectListeners[key](); | ||
abstractTransport.disconnectListeners[key](error); | ||
} | ||
@@ -219,0 +220,0 @@ }); |
@@ -10,3 +10,2 @@ "use strict"; | ||
AbstractTransport.call(this, address, timeout, messageHandler); | ||
this.initialConnect(initialConnectCallback); | ||
@@ -19,14 +18,20 @@ } | ||
IpcTransport.prototype.connect = function (callback) { | ||
IpcTransport.prototype.connect = function (initialCallback) { | ||
var self = this; | ||
var initialCallbackCalled = false; | ||
var callback = function (err) { | ||
initialCallbackCalled = true; | ||
initialCallback(err); | ||
}; | ||
this.ipcClient = net.connect({ path: this.address }); | ||
this.ipcClient.on("connect", function () { | ||
callback(null); | ||
callback = function () { }; | ||
console.log("IPC socket connected", self.address); | ||
if (!initialCallbackCalled) callback(null); | ||
// FIXME: UTF surrogates that cross buffer boundaries will break oboe (https://github.com/jimhigson/oboe.js/issues/133) | ||
oboe(this.ipcClient).done(function (jso) { | ||
oboe(self.ipcClient).done(function (jso) { | ||
// FIXME: oboe sometimes gives an empty object for no apparent reason, ignore it | ||
if (Object.keys(jso).length === 0 && typeof jso === "object") { return; } | ||
this.messageHandler(null, jso); | ||
}.bind(this)); | ||
}.bind(this)); | ||
self.messageHandler(null, jso); | ||
}); | ||
}); | ||
this.ipcClient.on("data", function (/*message*/) { | ||
@@ -37,9 +42,10 @@ // handled by oboe | ||
// CONSIDER: can we capture unhandled errors somehow? in at least one code path, the same error comes in via an errorCallback passed to `write` where we handle it correctly. i'm not certain that all sources of errors come from calls to `.write` though, but I'm not sure how to dedupe without monkey patching the IPC client. | ||
// if `callback` is not the identity function then it means we haven't connected yet, so fire the callback to let the system know the connect failed. | ||
callback(error); | ||
callback = function () { }; | ||
// if `callback` hasn't been called yet, fire the callback to let the system know the connect failed. | ||
Object.keys(self.disconnectListeners).forEach(function (key) { self.disconnectListeners[key](error); }); | ||
if (!initialCallbackCalled) callback(error); | ||
}); | ||
this.ipcClient.on("end", function () { | ||
callback(new Error("IPC socket closed without opening, likely means failed connection.")); | ||
callback = function () { }; | ||
console.info("IPC socket closed", self.address); | ||
Object.keys(self.disconnectListeners).forEach(function (key) { self.disconnectListeners[key](); }); | ||
if (!initialCallbackCalled) callback(new Error("IPC socket closed without opening, likely means failed connection.")); | ||
}); | ||
@@ -58,3 +64,3 @@ }; | ||
if (error.code === "EPIPE") error.retryable = true; | ||
setTimeout(function () { errorCallback(error); }); | ||
setTimeout(function () { errorCallback(error); }, 0); | ||
} | ||
@@ -61,0 +67,0 @@ }; |
@@ -15,10 +15,14 @@ "use strict"; | ||
WsTransport.prototype.connect = function (callback) { | ||
WsTransport.prototype.connect = function (initialCallback) { | ||
var self = this; | ||
var initialCallbackCalled = false; | ||
var callback = function (err) { | ||
initialCallbackCalled = true; | ||
initialCallback(err); | ||
}; | ||
this.webSocketClient = new WebSocketClient(this.address, undefined, undefined, undefined, { timeout: this.timeout }); | ||
var messageHandler = function () { }; | ||
this.webSocketClient.onopen = function () { | ||
//console.log("websocket", self.address, "opened"); | ||
callback(null); | ||
callback = function () { }; | ||
var messageHandler = function () {}; | ||
this.webSocketClient.onopen = function (event) { | ||
console.log("websocket", self.address, "opened", event); | ||
if (!initialCallbackCalled) callback(null); | ||
messageHandler = self.messageHandler; | ||
@@ -36,11 +40,6 @@ }; | ||
if (event && event.code !== 1000) { | ||
///console.error("websocket", self.address, "closed:", event.code, event.reason); | ||
var keys = Object.keys(self.disconnectListeners); | ||
var listeners = self.disconnectListeners; | ||
keys.forEach(function (key) { | ||
return listeners[key](); | ||
}); | ||
callback(new Error("Web socket closed without opening, usually means failed connection.")); | ||
console.info("websocket", self.address, "closed:", event.code, event.reason, event); | ||
Object.keys(self.disconnectListeners).forEach(function (key) { self.disconnectListeners[key](event); }); | ||
if (!initialCallbackCalled) callback(new Error("Web socket closed without opening, usually means failed connection.")); | ||
} | ||
callback = function () { }; | ||
}; | ||
@@ -47,0 +46,0 @@ }; |
// generated by genversion | ||
module.exports = '5.1.0' | ||
module.exports = '5.1.2' |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
9
2329945
45216
11