| import replicate from './replicate'; |
| import Replication from './replication'; |
| import clone from '../deps/clone'; |
| import { createError, BAD_REQUEST } from '../deps/errors'; |
| |
| 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.doc_ids && !Array.isArray(opts.doc_ids)) { |
| throw createError(BAD_REQUEST, |
| "`doc_ids` filter parameter is not a list."); |
| } |
| |
| opts.complete = callback; |
| opts = 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; |
| } |
| |
| export default { |
| replicate: replicateWrapper, |
| toPouch: toPouch |
| }; |