Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rksm/node-nrepl-client
node.js client for a Clojure nrepl server.
https://github.com/rksm/node-nrepl-client
Last synced: 2 months ago
JSON representation
node.js client for a Clojure nrepl server.
- Host: GitHub
- URL: https://github.com/rksm/node-nrepl-client
- Owner: rksm
- Created: 2013-08-06T08:09:50.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2019-03-06T10:28:53.000Z (almost 6 years ago)
- Last Synced: 2024-10-13T10:25:23.057Z (3 months ago)
- Language: JavaScript
- Size: 40 KB
- Stars: 28
- Watchers: 7
- Forks: 10
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# node.js nREPL client [![Build Status](https://travis-ci.org/rksm/node-nrepl-client.png?branch=master)](https://travis-ci.org/rksm/node-nrepl-client)
Connects node.js as a nrepl client to a [Clojure nrepl server](https://github.com/clojure/tools.nrepl).
This is different from [cljs-noderepl](https://github.com/bodil/cljs-noderepl)
and similar projects as it *does not connect node.js as the repl "target"* (so
that a nrepl Clojure client can eval code in a JS context) *but the other way
around* ;)## Usage
To connect to a running nREPL server and send and receive an eval request do:
```js
var client = require('nrepl-client').connect({port: 7889});client.once('connect', function() {
var expr = '(+ 3 4)';
client.eval(expr, function(err, result) {
console.log('%s => ', expr, err || result);
client.end();
});
});
```For a more detailed example and to use node.js also to start an nREPL Clojure
process see [examples/simple-connect.js](examples/simple-connect.js).## API
### `nrepl-client`
* `connect(options)`
* Creates a [`net.Socket`](http://nodejs.org/api/net.html#net_class_net_socket)
connection to an nREPL server. The connection object itself will have added
methods, see below.
* `options`: options from the [`net.connect`](http://nodejs.org/api/net.html#net_net_connect_options_connectionlistener) call.
* returns a `net.Socket` clojure connection* clojure connection
* Wraps [nREPL messages](https://github.com/clojure/tools.nrepl#messages).
* `clone([session,] callback)`
* `close([session,] callback)`
* `describe([verbose,] callback)`
* `eval(code, [session, id, evalFunc,] callback)`
* `interrupt(session, id, callback)`
* `loadFile(fileContent, [fileName, filePath,] callback)`
* `lsSessions(callback)`
* `stdin(stdin, callback)`
* `send(msgObj, callback)` sends a custom message### `nrepl-client/nrepl-server`
* `start(options, callback)`
* `options` options for configuring the nREPL server. Optional. `options == {startTimeout: NUMBER, verbose: BOOL, projectPath: STRING, hostname: STRING, port: NUMBER}`. See [nrepl-server.js](src/nrepl-server.js) for defaults.
* `callback(err, serverState)` function called when the server is started. `serverState == {proc: PROCESS, hostname: STRING, port: NUMBER, started: BOOL, exited: BOOL, timedout: BOOL}`* `stop(serverState, callback)`
* `serverState` serverState returned from start
* `callback(err)` function called when the server is stopped