| 'use strict'; |
| |
| var utils = require('../utils'); |
| var replicate = require('./replicate'); |
| var Replication = require('./replication'); |
| |
| function toPouch(db, opts) { |
| var PouchConstructor = opts.PouchConstructor; |
| if (typeof db === 'string') { |
| return new PouchConstructor(db, opts); |
| } else { |
| return db; |
| } |
| } |
| |
| function replicateWrapper(src, target, opts, callback) { |
| if (typeof opts === 'function') { |
| callback = opts; |
| opts = {}; |
| } |
| if (typeof opts === 'undefined') { |
| opts = {}; |
| } |
| if (!opts.complete) { |
| opts.complete = callback || function () {}; |
| } |
| opts = utils.clone(opts); |
| opts.continuous = opts.continuous || opts.live; |
| opts.retry = ('retry' in opts) ? opts.retry : false; |
| /*jshint validthis:true */ |
| opts.PouchConstructor = opts.PouchConstructor || this; |
| var replicateRet = new Replication(opts); |
| var srcPouch = toPouch(src, opts); |
| var targetPouch = toPouch(target, opts); |
| replicate(srcPouch, targetPouch, opts, replicateRet); |
| return replicateRet; |
| } |
| |
| module.exports = { |
| replicate : replicateWrapper, |
| toPouch: toPouch |
| }; |