json-rpc-engine
Advanced tools
Comparing version 5.1.1 to 5.1.3
{ | ||
"name": "json-rpc-engine", | ||
"version": "5.1.1", | ||
"version": "5.1.3", | ||
"description": "a tool for processing JSON RPC", | ||
"license": "ISC", | ||
"author": "kumavis", | ||
"main": "src/index.js", | ||
@@ -19,25 +21,13 @@ "types": "src/index.d.ts", | ||
}, | ||
"author": "kumavis", | ||
"license": "ISC", | ||
"dependencies": { | ||
"@babel/preset-env": "^7.3.4", | ||
"async": "^2.0.1", | ||
"babelify": "^10.0.0", | ||
"eth-json-rpc-errors": "^1.0.1", | ||
"promise-to-callback": "^1.0.0", | ||
"safe-event-emitter": "^1.0.1" | ||
}, | ||
"browserify": { | ||
"transform": [ | ||
[ | ||
"babelify", | ||
{ | ||
"presets": [ | ||
"@babel/preset-env" | ||
] | ||
} | ||
] | ||
] | ||
}, | ||
"devDependencies": { | ||
"aegir": "^18.2.1", | ||
"@babel/core": "^7.5.5", | ||
"@babel/preset-env": "^7.5.5", | ||
"aegir": "^20.0.0", | ||
"babelify": "^10.0.0", | ||
"browserify": "^16.2.3" | ||
@@ -44,0 +34,0 @@ }, |
@@ -78,1 +78,4 @@ # RpcEngine | ||
``` | ||
That said, `next()` will detect errors on the RPC response, and cause | ||
`end(res.error)` to be called. |
@@ -5,3 +5,2 @@ const promiseToCallback = require('promise-to-callback') | ||
function createAsyncMiddleware(asyncMiddleware) { | ||
@@ -8,0 +7,0 @@ return (req, res, next, end) => { |
@@ -0,1 +1,4 @@ | ||
import { IJsonRpcError } from 'eth-json-rpc-errors/@types' | ||
/** A String specifying the version of the JSON-RPC protocol. MUST be exactly "2.0". */ | ||
@@ -15,2 +18,4 @@ export type JsonRpcVersion = "2.0"; | ||
interface JsonRpcError<T> extends IJsonRpcError<T> {} | ||
interface JsonRpcRequest<T> { | ||
@@ -43,9 +48,2 @@ jsonrpc: JsonRpcVersion; | ||
interface JsonRpcError<T> { | ||
/** Must be an integer */ | ||
code: number; | ||
message: string; | ||
data?: T; | ||
} | ||
type JsonRpcEngineEndCallback = (error?: JsonRpcError<any>) => void; | ||
@@ -52,0 +50,0 @@ type JsonRpcEngineNextCallback = (returnFlightCallback?: (done: () => void) => void) => void; |
'use strict' | ||
const async = require('async') | ||
const SafeEventEmitter = require('safe-event-emitter') | ||
const { serializeError } = require('eth-json-rpc-errors') | ||
@@ -79,6 +80,2 @@ class RpcEngine extends SafeEventEmitter { | ||
} | ||
function runReturnHandlers (returnHandlers, cb) { | ||
async.eachSeries(returnHandlers, (handler, next) => handler(next), onDone) | ||
} | ||
} | ||
@@ -104,11 +101,18 @@ | ||
function next (returnHandler) { | ||
// add return handler | ||
allReturnHandlers.push(returnHandler) | ||
cb() | ||
if (res.error) { | ||
end(res.error) | ||
} else { | ||
// add return handler | ||
allReturnHandlers.push(returnHandler) | ||
cb() | ||
} | ||
} | ||
function end (err) { | ||
// if errored, set the error but dont pass to callback | ||
if (err) { | ||
res.error = serializeError(err) | ||
res._originalError = err | ||
const _err = err || (res && res.error) | ||
// const _err = err | ||
if (_err) { | ||
res.error = serializeError(_err) | ||
res._originalError = _err | ||
} | ||
@@ -127,2 +131,4 @@ // mark as completed | ||
res.error = serializeError(err) | ||
// remove result if present | ||
delete res.result | ||
// return error-first and res with err | ||
@@ -142,9 +148,2 @@ return onDone(err, res) | ||
function serializeError(err) { | ||
return { | ||
code: err.code || -32603, | ||
message: err.stack, | ||
} | ||
} | ||
module.exports = RpcEngine |
@@ -87,3 +87,3 @@ /* eslint-env mocha */ | ||
it('erroring middleware test', function (done) { | ||
it('erroring middleware test: end(error)', function (done) { | ||
let engine = new RpcEngine() | ||
@@ -101,2 +101,3 @@ | ||
assert(res.error, 'does have error on response') | ||
assert(!res.result, 'does not have result on response') | ||
done() | ||
@@ -106,2 +107,40 @@ }) | ||
it('erroring middleware test: res.error -> next()', function (done) { | ||
let engine = new RpcEngine() | ||
engine.push(function (req, res, next, end) { | ||
res.error = new Error('no bueno') | ||
next() | ||
}) | ||
let payload = { id: 1, jsonrpc: '2.0', method: 'hello' } | ||
engine.handle(payload, function (err, res) { | ||
assert(err, 'did error') | ||
assert(res, 'does have response') | ||
assert(res.error, 'does have error on response') | ||
assert(!res.result, 'does not have result on response') | ||
done() | ||
}) | ||
}) | ||
it('erroring middleware test: res.error -> end()', function (done) { | ||
let engine = new RpcEngine() | ||
engine.push(function (req, res, next, end) { | ||
res.error = new Error('no bueno') | ||
end() | ||
}) | ||
let payload = { id: 1, jsonrpc: '2.0', method: 'hello' } | ||
engine.handle(payload, function (err, res) { | ||
assert(err, 'did error') | ||
assert(res, 'does have response') | ||
assert(res.error, 'does have error on response') | ||
assert(!res.result, 'does not have result on response') | ||
done() | ||
}) | ||
}) | ||
it('empty middleware test', function (done) { | ||
@@ -241,3 +280,2 @@ let engine = new RpcEngine() | ||
}) | ||
}) |
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
32312
4
18
890
81
5
+ Addedeth-json-rpc-errors@^1.0.1
+ Addedeth-json-rpc-errors@1.1.1(transitive)
+ Addedfast-safe-stringify@2.1.1(transitive)
- Removed@babel/preset-env@^7.3.4
- Removedbabelify@^10.0.0
- Removed@ampproject/remapping@2.3.0(transitive)
- Removed@babel/code-frame@7.24.7(transitive)
- Removed@babel/compat-data@7.25.4(transitive)
- Removed@babel/core@7.25.2(transitive)
- Removed@babel/generator@7.25.6(transitive)
- Removed@babel/helper-annotate-as-pure@7.24.7(transitive)
- Removed@babel/helper-builder-binary-assignment-operator-visitor@7.24.7(transitive)
- Removed@babel/helper-compilation-targets@7.25.2(transitive)
- Removed@babel/helper-create-class-features-plugin@7.25.4(transitive)
- Removed@babel/helper-create-regexp-features-plugin@7.25.2(transitive)
- Removed@babel/helper-define-polyfill-provider@0.6.2(transitive)
- Removed@babel/helper-member-expression-to-functions@7.24.8(transitive)
- Removed@babel/helper-module-imports@7.24.7(transitive)
- Removed@babel/helper-module-transforms@7.25.2(transitive)
- Removed@babel/helper-optimise-call-expression@7.24.7(transitive)
- Removed@babel/helper-plugin-utils@7.24.8(transitive)
- Removed@babel/helper-remap-async-to-generator@7.25.0(transitive)
- Removed@babel/helper-replace-supers@7.25.0(transitive)
- Removed@babel/helper-simple-access@7.24.7(transitive)
- Removed@babel/helper-skip-transparent-expression-wrappers@7.24.7(transitive)
- Removed@babel/helper-string-parser@7.24.8(transitive)
- Removed@babel/helper-validator-identifier@7.24.7(transitive)
- Removed@babel/helper-validator-option@7.24.8(transitive)
- Removed@babel/helper-wrap-function@7.25.0(transitive)
- Removed@babel/helpers@7.25.6(transitive)
- Removed@babel/highlight@7.24.7(transitive)
- Removed@babel/parser@7.25.6(transitive)
- Removed@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(transitive)
- Removed@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(transitive)
- Removed@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(transitive)
- Removed@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(transitive)
- Removed@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(transitive)
- Removed@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(transitive)
- Removed@babel/plugin-syntax-async-generators@7.8.4(transitive)
- Removed@babel/plugin-syntax-class-properties@7.12.13(transitive)
- Removed@babel/plugin-syntax-class-static-block@7.14.5(transitive)
- Removed@babel/plugin-syntax-dynamic-import@7.8.3(transitive)
- Removed@babel/plugin-syntax-export-namespace-from@7.8.3(transitive)
- Removed@babel/plugin-syntax-import-assertions@7.25.6(transitive)
- Removed@babel/plugin-syntax-import-attributes@7.25.6(transitive)
- Removed@babel/plugin-syntax-import-meta@7.10.4(transitive)
- Removed@babel/plugin-syntax-json-strings@7.8.3(transitive)
- Removed@babel/plugin-syntax-logical-assignment-operators@7.10.4(transitive)
- Removed@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(transitive)
- Removed@babel/plugin-syntax-numeric-separator@7.10.4(transitive)
- Removed@babel/plugin-syntax-object-rest-spread@7.8.3(transitive)
- Removed@babel/plugin-syntax-optional-catch-binding@7.8.3(transitive)
- Removed@babel/plugin-syntax-optional-chaining@7.8.3(transitive)
- Removed@babel/plugin-syntax-private-property-in-object@7.14.5(transitive)
- Removed@babel/plugin-syntax-top-level-await@7.14.5(transitive)
- Removed@babel/plugin-syntax-unicode-sets-regex@7.18.6(transitive)
- Removed@babel/plugin-transform-arrow-functions@7.24.7(transitive)
- Removed@babel/plugin-transform-async-generator-functions@7.25.4(transitive)
- Removed@babel/plugin-transform-async-to-generator@7.24.7(transitive)
- Removed@babel/plugin-transform-block-scoped-functions@7.24.7(transitive)
- Removed@babel/plugin-transform-block-scoping@7.25.0(transitive)
- Removed@babel/plugin-transform-class-properties@7.25.4(transitive)
- Removed@babel/plugin-transform-class-static-block@7.24.7(transitive)
- Removed@babel/plugin-transform-classes@7.25.4(transitive)
- Removed@babel/plugin-transform-computed-properties@7.24.7(transitive)
- Removed@babel/plugin-transform-destructuring@7.24.8(transitive)
- Removed@babel/plugin-transform-dotall-regex@7.24.7(transitive)
- Removed@babel/plugin-transform-duplicate-keys@7.24.7(transitive)
- Removed@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(transitive)
- Removed@babel/plugin-transform-dynamic-import@7.24.7(transitive)
- Removed@babel/plugin-transform-exponentiation-operator@7.24.7(transitive)
- Removed@babel/plugin-transform-export-namespace-from@7.24.7(transitive)
- Removed@babel/plugin-transform-for-of@7.24.7(transitive)
- Removed@babel/plugin-transform-function-name@7.25.1(transitive)
- Removed@babel/plugin-transform-json-strings@7.24.7(transitive)
- Removed@babel/plugin-transform-literals@7.25.2(transitive)
- Removed@babel/plugin-transform-logical-assignment-operators@7.24.7(transitive)
- Removed@babel/plugin-transform-member-expression-literals@7.24.7(transitive)
- Removed@babel/plugin-transform-modules-amd@7.24.7(transitive)
- Removed@babel/plugin-transform-modules-commonjs@7.24.8(transitive)
- Removed@babel/plugin-transform-modules-systemjs@7.25.0(transitive)
- Removed@babel/plugin-transform-modules-umd@7.24.7(transitive)
- Removed@babel/plugin-transform-named-capturing-groups-regex@7.24.7(transitive)
- Removed@babel/plugin-transform-new-target@7.24.7(transitive)
- Removed@babel/plugin-transform-nullish-coalescing-operator@7.24.7(transitive)
- Removed@babel/plugin-transform-numeric-separator@7.24.7(transitive)
- Removed@babel/plugin-transform-object-rest-spread@7.24.7(transitive)
- Removed@babel/plugin-transform-object-super@7.24.7(transitive)
- Removed@babel/plugin-transform-optional-catch-binding@7.24.7(transitive)
- Removed@babel/plugin-transform-optional-chaining@7.24.8(transitive)
- Removed@babel/plugin-transform-parameters@7.24.7(transitive)
- Removed@babel/plugin-transform-private-methods@7.25.4(transitive)
- Removed@babel/plugin-transform-private-property-in-object@7.24.7(transitive)
- Removed@babel/plugin-transform-property-literals@7.24.7(transitive)
- Removed@babel/plugin-transform-regenerator@7.24.7(transitive)
- Removed@babel/plugin-transform-reserved-words@7.24.7(transitive)
- Removed@babel/plugin-transform-shorthand-properties@7.24.7(transitive)
- Removed@babel/plugin-transform-spread@7.24.7(transitive)
- Removed@babel/plugin-transform-sticky-regex@7.24.7(transitive)
- Removed@babel/plugin-transform-template-literals@7.24.7(transitive)
- Removed@babel/plugin-transform-typeof-symbol@7.24.8(transitive)
- Removed@babel/plugin-transform-unicode-escapes@7.24.7(transitive)
- Removed@babel/plugin-transform-unicode-property-regex@7.24.7(transitive)
- Removed@babel/plugin-transform-unicode-regex@7.24.7(transitive)
- Removed@babel/plugin-transform-unicode-sets-regex@7.25.4(transitive)
- Removed@babel/preset-env@7.25.4(transitive)
- Removed@babel/preset-modules@0.1.6-no-external-plugins(transitive)
- Removed@babel/regjsgen@0.8.0(transitive)
- Removed@babel/runtime@7.25.6(transitive)
- Removed@babel/template@7.25.0(transitive)
- Removed@babel/traverse@7.25.6(transitive)
- Removed@babel/types@7.25.6(transitive)
- Removed@jridgewell/gen-mapping@0.3.5(transitive)
- Removed@jridgewell/resolve-uri@3.1.2(transitive)
- Removed@jridgewell/set-array@1.2.1(transitive)
- Removed@jridgewell/sourcemap-codec@1.5.0(transitive)
- Removed@jridgewell/trace-mapping@0.3.25(transitive)
- Removedansi-styles@3.2.1(transitive)
- Removedbabel-plugin-polyfill-corejs2@0.4.11(transitive)
- Removedbabel-plugin-polyfill-corejs3@0.10.6(transitive)
- Removedbabel-plugin-polyfill-regenerator@0.6.2(transitive)
- Removedbabelify@10.0.0(transitive)
- Removedbrowserslist@4.23.3(transitive)
- Removedcaniuse-lite@1.0.30001660(transitive)
- Removedchalk@2.4.2(transitive)
- Removedcolor-convert@1.9.3(transitive)
- Removedcolor-name@1.1.3(transitive)
- Removedconvert-source-map@2.0.0(transitive)
- Removedcore-js-compat@3.38.1(transitive)
- Removeddebug@4.3.7(transitive)
- Removedelectron-to-chromium@1.5.22(transitive)
- Removedescalade@3.2.0(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedesutils@2.0.3(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedgensync@1.0.0-beta.2(transitive)
- Removedglobals@11.12.0(transitive)
- Removedhas-flag@3.0.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedis-core-module@2.15.1(transitive)
- Removedjs-tokens@4.0.0(transitive)
- Removedjsesc@0.5.02.5.2(transitive)
- Removedjson5@2.2.3(transitive)
- Removedlodash.debounce@4.0.8(transitive)
- Removedlru-cache@5.1.1(transitive)
- Removedms@2.1.3(transitive)
- Removednode-releases@2.0.18(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedpicocolors@1.1.0(transitive)
- Removedregenerate@1.4.2(transitive)
- Removedregenerate-unicode-properties@10.2.0(transitive)
- Removedregenerator-runtime@0.14.1(transitive)
- Removedregenerator-transform@0.15.2(transitive)
- Removedregexpu-core@5.3.2(transitive)
- Removedregjsparser@0.9.1(transitive)
- Removedresolve@1.22.8(transitive)
- Removedsemver@6.3.1(transitive)
- Removedsupports-color@5.5.0(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedto-fast-properties@2.0.0(transitive)
- Removedunicode-canonical-property-names-ecmascript@2.0.1(transitive)
- Removedunicode-match-property-ecmascript@2.0.0(transitive)
- Removedunicode-match-property-value-ecmascript@2.2.0(transitive)
- Removedunicode-property-aliases-ecmascript@2.1.0(transitive)
- Removedupdate-browserslist-db@1.1.0(transitive)
- Removedyallist@3.1.1(transitive)