Skip to content
This repository has been archived by the owner on Nov 9, 2023. It is now read-only.

Migrate to TypeScript #69

Merged
merged 11 commits into from
Nov 18, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@ workflows:
build-test:
jobs:
- prep-deps
- prep-build:
requires:
- prep-deps
- test-lint:
requires:
- prep-deps
- test-unit:
requires:
- prep-deps
- prep-build
- all-tests-pass:
requires:
- test-lint
Expand Down Expand Up @@ -46,6 +50,21 @@ jobs:
name: Lint
command: yarn lint

prep-build:
docker:
- image: circleci/node:10
steps:
- checkout
- attach_workspace:
at: .
- run:
name: Build project
command: yarn build
- persist_to_workspace:
root: .
paths:
- dist

test-unit:
docker:
- image: circleci/node:10
Expand Down
17 changes: 15 additions & 2 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ module.exports = {
'@metamask/eslint-config',
'@metamask/eslint-config/config/mocha',
'@metamask/eslint-config/config/nodejs',
'@metamask/eslint-config/config/typescript',
],

rules: {
Expand All @@ -22,10 +23,22 @@ module.exports = {

overrides: [{
files: [
'.eslintrc.js',
'*.js',
'*.json',
],
parserOptions: {
sourceType: 'script',
},
rules: {
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/no-var-requires': 'off',
},
}],
}

ignorePatterns: [
'!.eslintrc.js',
'.nyc*',
'coverage/',
'dist/',
],
};
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ dist

### misc ###
.nyc*
coverage

# Created by https://www.gitignore.io/api/osx,node

Expand Down
20 changes: 9 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ A tool for processing JSON-RPC requests and responses.
## Usage

```js
const RpcEngine = require('json-rpc-engine')
const { JsonRpcEngine } = require('json-rpc-engine')

let engine = new RpcEngine()
let engine = new JsonRpcEngine()
```

Build a stack of JSON-RPC processors by pushing middleware to the engine.
Expand All @@ -25,10 +25,10 @@ Requests are handled asynchronously, stepping down the stack until complete.
let request = { id: 1, jsonrpc: '2.0', method: 'hello' }

engine.handle(request, function(err, response){
// do something with response.result
// Do something with response.result, or handle response.error
})

// there is also a Promise signature
// There is also a Promise signature
const response = await engine.handle(request)
```

Expand All @@ -53,22 +53,20 @@ engine.push(function(req, res, next, end){
})
```

RpcEngines can be nested by converting them to middleware using `asMiddleware(engine)`:
Engines can be nested by converting them to middleware using `JsonRpcEngine.asMiddleware()`:

```js
const asMiddleware = require('json-rpc-engine/src/asMiddleware')

let engine = new RpcEngine()
let subengine = new RpcEngine()
engine.push(asMiddleware(subengine))
const engine = new JsonRpcEngine()
const subengine = new JsonRpcEngine()
engine.push(subengine.asMiddleware())
```

### `async` Middleware

If you require your middleware function to be `async`, use `createAsyncMiddleware`:

```js
const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')
const { createAsyncMiddleware } = require('json-rpc-engine')

let engine = new RpcEngine()
engine.push(createAsyncMiddleware(async (req, res, next) => {
Expand Down
2 changes: 1 addition & 1 deletion nyc.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ module.exports = {
lines: 100,
functions: 100,
statements: 100,
}
};
35 changes: 22 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,41 @@
{
"name": "json-rpc-engine",
"version": "5.4.0",
"description": "a tool for processing JSON RPC",
"description": "A tool for processing JSON-RPC messages.",
"license": "ISC",
"author": "kumavis",
"main": "src/index.js",
"types": "src/index.d.ts",
"main": "dist/index.js",
"engines": {
"node": ">=10.0.0"
},
Comment on lines +8 to +10
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TypeScript complains without it.

"files": [
"src"
"dist"
],
"scripts": {
"lint": "eslint . --ext js,json",
"lint:fix": "eslint . --ext js,json --fix",
"build": "tsc --project .",
"lint": "eslint . --ext ts,js,json",
"lint:fix": "eslint . --ext ts,js,json --fix",
"test": "mocha ./test",
"coverage": "nyc --check-coverage yarn test"
},
"dependencies": {
"eth-rpc-errors": "^3.0.0",
"safe-event-emitter": "^1.0.1"
"@metamask/safe-event-emitter": "^2.0.0",
"eth-rpc-errors": "^4.0.2"
},
"devDependencies": {
"@metamask/eslint-config": "^2.1.0",
"eslint": "^6.8.0",
"@metamask/eslint-config": "^4.1.0",
"@types/node": "^14.14.7",
"@typescript-eslint/eslint-plugin": "^4.8.0",
"@typescript-eslint/parser": "^4.8.0",
"eslint": "^7.13.0",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-json": "^2.1.0",
"eslint-plugin-mocha": "^6.3.0",
"eslint-plugin-node": "^11.1.0",
"mocha": "^7.1.1",
"nyc": "^15.0.0",
"sinon": "^9.0.2"
"nyc": "^15.1.0",
"sinon": "^9.0.2",
"typescript": "^4.0.5"
},
"repository": {
"type": "git",
Expand All @@ -41,6 +49,7 @@
"test": "test"
},
"contributors": [
"kumavis <[email protected]>"
"kumavis <[email protected]>",
"Erik Marks <[email protected]>"
]
}
Loading