eval-slave
Version:
Slave stdio node js evaluator
90 lines (70 loc) • 1.49 kB
Markdown
# eval-slave
Dead simple node.js evaluator controlled via standart input
## Install
With [npm](https://www.npmjs.com/) do:
```
npm install eval-slave
```
Or install globally if you want to add the `node-eval-slave` executable:
```
npm install -g eval-slave
```
## Usage
Check out the [https://github.com/futpib/eval-slave/tree/master/examples](exapmles) dir
### Abstract
1. Start `node-eval-slave` or `node ./cli.js`
2. Write JSON array of "tasks" to the process's standard input
3. Results will be printed as a JSON array to the standard output
You can even try it from shell!
### Bash
```
echo '[{"source":"() => \"test\""}]' | node-eval-slave
```
### Python
See [https://github.com/futpib/eval-slave/tree/master/examples/foo.py](example.py)
### Emacs Lisp
(probably) Coming soon at [https://github.com/futpib/emacs-nodejs-slave](emacs-nodejs-slave)
## Example
input (js, because real json is a bit too hairy):
```js
[{
id: 0,
source: (function (input) {
return new Promise(resolve => {
setTimeout(() => {
resolve(`Hello, ${input}`)
}, 1000)
})
}).toString(),
arguments: ["world"]
}, {
id: 1,
source: "() => \"foobar\"",
}]
```
output (json):
```json
[{
"type": "queued",
"data": {
"id": 0
}
}, {
"type": "queued",
"data": {
"id": 1
}
}, {
"type": "fulfilled",
"data": {
"id": 1,
"value": "foobar"
}
}, {
"type": "fulfilled",
"data": {
"id": 0,
"value": "Hello, world"
}
}]
```