| 'use strict'; |
| |
| var md5 = require('../deps/md5'); |
| |
| // TODO: check CouchDB's replication id generation |
| // Generate a unique id particular to this replication |
| function genReplicationId(src, target, opts) { |
| var filterFun = opts.filter ? opts.filter.toString() : ''; |
| return src.id().then(function (src_id) { |
| return target.id().then(function (target_id) { |
| var queryData = src_id + target_id + filterFun + |
| JSON.stringify(opts.query_params) + opts.doc_ids; |
| return md5(queryData).then(function (md5sum) { |
| // can't use straight-up md5 alphabet, because |
| // the char '/' is interpreted as being for attachments, |
| // and + is also not url-safe |
| md5sum = md5sum.replace(/\//g, '.').replace(/\+/g, '_'); |
| return '_local/' + md5sum; |
| }); |
| }); |
| }); |
| } |
| |
| module.exports = genReplicationId; |