json-rpc-engine
Advanced tools
Comparing version 5.1.4 to 5.1.5
{ | ||
"name": "json-rpc-engine", | ||
"version": "5.1.4", | ||
"version": "5.1.5", | ||
"description": "a tool for processing JSON RPC", | ||
@@ -23,3 +23,3 @@ "license": "ISC", | ||
"async": "^2.0.1", | ||
"eth-json-rpc-errors": "^1.1.0", | ||
"eth-json-rpc-errors": "^2.0.0", | ||
"promise-to-callback": "^1.0.0", | ||
@@ -26,0 +26,0 @@ "safe-event-emitter": "^1.0.1" |
'use strict' | ||
const async = require('async') | ||
const SafeEventEmitter = require('safe-event-emitter') | ||
const { serializeError } = require('eth-json-rpc-errors') | ||
const { serializeError, ethErrors } = require('eth-json-rpc-errors') | ||
@@ -23,3 +23,3 @@ class RpcEngine extends SafeEventEmitter { | ||
if (Array.isArray(req)) { | ||
async.map(req, this._handle.bind(this), cb) | ||
this._handleBatch(req, cb) | ||
} else { | ||
@@ -34,2 +34,32 @@ this._handle(req, cb) | ||
async _handleBatch (reqs, cb) { | ||
const batchRes = [] | ||
for (const r of reqs) { | ||
try { | ||
let [err, res] = await this._promiseHandle(r) | ||
if (!res) { | ||
if (err) { | ||
throw err | ||
} else { | ||
throw ethErrors.rpc.internal('JsonRpcEngine: Request handler returned neither error nor response.') | ||
} | ||
} else { | ||
batchRes.push(res) | ||
} | ||
} catch (_err) { | ||
// some kind of fatal error | ||
return cb(_err, null) | ||
} | ||
} | ||
cb(null, batchRes) | ||
} | ||
_promiseHandle (req) { | ||
return new Promise((resolve) => { | ||
this._handle(req, (err, res) => { | ||
resolve([err, res]) | ||
}) | ||
}) | ||
} | ||
_handle (_req, cb) { | ||
@@ -71,3 +101,3 @@ // shallow clone request object | ||
const requestBody = JSON.stringify(req, null, 2) | ||
const message = 'JsonRpcEngine - response has no error or result for request:\n' + requestBody | ||
const message = 'JsonRpcEngine: Response has no error or result for request:\n' + requestBody | ||
return cb(new Error(message)) | ||
@@ -77,3 +107,3 @@ } | ||
const requestBody = JSON.stringify(req, null, 2) | ||
const message = 'JsonRpcEngine - nothing ended request:\n' + requestBody | ||
const message = 'JsonRpcEngine: Nothing ended request:\n' + requestBody | ||
return cb(new Error(message)) | ||
@@ -80,0 +110,0 @@ } |
@@ -158,2 +158,7 @@ /* eslint-env mocha */ | ||
engine.push(function (req, res, next, end) { | ||
if (req.id === 4) { | ||
delete res.result | ||
res.error = new Error() | ||
return end(res.error) | ||
} | ||
res.result = req.id | ||
@@ -165,3 +170,6 @@ end() | ||
let payloadB = { id: 2, jsonrpc: '2.0', method: 'hello' } | ||
let payload = [payloadA, payloadB] | ||
let payloadC = { id: 3, jsonrpc: '2.0', method: 'hello' } | ||
let payloadD = { id: 4, jsonrpc: '2.0', method: 'hello' } | ||
let payloadE = { id: 5, jsonrpc: '2.0', method: 'hello' } | ||
let payload = [payloadA, payloadB, payloadC, payloadD, payloadE] | ||
@@ -174,2 +182,6 @@ engine.handle(payload, function (err, res) { | ||
assert.equal(res[1].result, 2, 'has expected result') | ||
assert.equal(res[2].result, 3, 'has expected result') | ||
assert.ok(!res[3].result, 'has no result') | ||
assert.equal(res[3].error.code, -32603, 'has expected error') | ||
assert.equal(res[4].result, 5, 'has expected result') | ||
done() | ||
@@ -176,0 +188,0 @@ }) |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
33576
930
+ Addedeth-json-rpc-errors@2.0.2(transitive)
- Removedeth-json-rpc-errors@1.1.1(transitive)
Updatedeth-json-rpc-errors@^2.0.0