Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jo/roy-replicator

Node implementation of CouchDB replicator. For educational purposes.
https://github.com/jo/roy-replicator

Last synced: 26 days ago
JSON representation

Node implementation of CouchDB replicator. For educational purposes.

Awesome Lists containing this project

README

        

roy-replicator [![Build Status](https://secure.travis-ci.org/jo/roy-replicator.png?branch=master)](http://travis-ci.org/jo/roy-replicator)
==============
Node implementation of the CouchDB replication protocol.

Usage
-----
```js
var adapter = require('roy-request');
var roy = require('roy-replicator');

roy.replicate({
source: adapter('http://localhost:5984/my-source'),
target: adapter('http://localhost:5984/my-target')
}, function(err, resp) {
// Oh Pris!
});
```

This should also be possible (but I haven't tested yet):
```js
var adapter = require('pouchdb');
```

Goals
-----

* Gain deeper understanding of CouchDB replication
* Good readability and testability
* CouchDB replicator compatibility
* Be nearly as fast as CouchDB
* Small browserified footprint
* PouchDB compatibility (replace `roy-request` with `pouchdb`)

Resources
---------
* [CouchDB Replication Protocol by Alexander Shorin](http://kxepal.iriscouch.com/docs/dev/replication/protocol.html)
* [Jens Alfkes description of the replication algorithm](https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm)
* [CouchDB Replication Protocol on Data Protocols](http://www.dataprotocols.org/en/latest/couchdb_replication.html)
* [RCouchs Replication Algorithm in pseudo code](https://github.com/refuge/rcouch/wiki/Replication-Algorithm)

Development
-----------
* Lint the code with `npm run jshint`
* Run the tests with `npm test`
* Browserify with `npm run build`
* List TODOS with `npm run todos`
* Run performance tests with `npm run perf`

License
-------
Copyright (c) 2013 Johannes J. Schmidt, TF

Licensed under the MIT license.