This is an automated email from the ASF dual-hosted git repository. glynnbird pushed a commit to branch issue98 in repository https://gitbox.apache.org/repos/asf/couchdb-nano.git
commit 11c616831ebe75bbff3342e9fc167f493845fb0a Author: Glynn Bird <[email protected]> AuthorDate: Wed Jul 18 14:43:35 2018 +0100 added central getCallback function to remove code duplication --- lib/nano.js | 242 ++++++++++++++++++++++-------------------------------------- 1 file changed, 87 insertions(+), 155 deletions(-) diff --git a/lib/nano.js b/lib/nano.js index 4e41a5f..1bf2d17 100644 --- a/lib/nano.js +++ b/lib/nano.js @@ -23,6 +23,17 @@ const logger = require('./logger'); let nano; +function getCallback (opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return { + opts, + callback + }; +} + module.exports = exports = nano = function dbScope(cfg) { let serverScope = {}; @@ -297,14 +308,11 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates - function updates(qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } + function updates(qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: '_db_updates', - qs: qs + qs: opts }, callback); } @@ -352,35 +360,23 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes - function changesDb(dbName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - return relax({db: dbName, path: '_changes', qs: qs}, callback); + function changesDb(dbName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + return relax({db: dbName, path: '_changes', qs: opts}, callback); } - function changesDbAsStream(dbName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - return relax({db: dbName, path: '_changes', stream: true, qs: qs}, callback); + function changesDbAsStream(dbName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + return relax({db: dbName, path: '_changes', stream: true, qs: opts}, callback); } - function followDb(dbName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - - qs = qs || {}; - qs.db = urlResolveFix(cfg.url, encodeURIComponent(dbName)); - + function followDb(dbName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + opts.db = urlResolveFix(cfg.url, encodeURIComponent(dbName)); if (typeof callback === 'function') { - return followAgent(qs, callback); + return followAgent(opts, callback); } else { - return new followAgent.Feed(qs); + return new followAgent.Feed(opts); } } @@ -393,11 +389,9 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate - function replicateDb(source, target, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } + function replicateDb(source, target, opts0, callback0) { + const {opts, callback} = getCallback(opts0, callback0); + // _replicate opts.source = _serializeAsUrl(source); opts.target = _serializeAsUrl(target); @@ -411,16 +405,13 @@ module.exports = exports = nano = function dbScope(cfg) { callback = count; count = 1; } - return relax({ method: 'GET', path: '_uuids', qs: {count: count}}, callback); } // http://guide.couchdb.org/draft/replication.html - function enableReplication(source, target, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } + function enableReplication(source, target, opts0, callback0) { + const {opts, callback} = getCallback(opts0, callback0); + // _replicator opts.source = _serializeAsUrl(source); opts.target = _serializeAsUrl(target); @@ -429,20 +420,14 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://guide.couchdb.org/draft/replication.html - function queryReplication(id, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } + function queryReplication(id, opts0, callback0) { + const {opts, callback} = getCallback(opts0, callback0); return relax({db: '_replicator', method: 'GET', path: id}, callback); } // http://guide.couchdb.org/draft/replication.html - function disableReplication(id, rev, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } + function disableReplication(id, rev, opts0, callback0) { + const {opts, callback} = getCallback(opts0, callback0); return relax({db: '_replicator', method: 'DELETE', path: id, qs: {rev: rev}}, callback); } @@ -452,28 +437,25 @@ module.exports = exports = nano = function dbScope(cfg) { // http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid // http://docs.couchdb.org/en/latest/api/database/common.html#post--db - function insertDoc(doc, qs, callback) { - const opts = {db: dbName, body: doc, method: 'POST'}; + function insertDoc(doc, qs0, callback0) { + const req = {db: dbName, body: doc, method: 'POST'}; - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } + let {opts, callback} = getCallback(qs0, callback0); - if (typeof qs === 'string') { - qs = {docName: qs}; + if (typeof opts === 'string') { + opts = {docName: opts}; } - if (qs) { - if (qs.docName) { - opts.doc = qs.docName; - opts.method = 'PUT'; - delete qs.docName; + if (opts) { + if (opts.docName) { + req.doc = opts.docName; + req.method = 'PUT'; + delete opts.docName; } - opts.qs = qs; + req.qs = opts; } - return relax(opts, callback); + return relax(req, callback); } // http://docs.couchdb.org/en/latest/api/document/common.html#delete--db-docid @@ -498,18 +480,15 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid - function getDoc(docName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } + function getDoc(docName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); if(!docName) { if(callback) callback("Invalid doc id", null); } else { - return relax({db: dbName, doc: docName, qs: qs}, callback); + return relax({db: dbName, doc: docName, qs: opts}, callback); } } @@ -537,11 +516,8 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/document/common.html#copy--db-docid - function copyDoc(docSrc, docDest, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } + function copyDoc(docSrc, docDest, opts0, callback0) { + const {opts, callback} = getCallback(opts0, callback0); const qs = { db: dbName, @@ -567,70 +543,51 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs - function listDoc(qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - - return relax({db: dbName, path: '_all_docs', qs: qs}, callback); + function listDoc(qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + return relax({db: dbName, path: '_all_docs', qs: opts}, callback); } // http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs - function listDocAsStream(qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - - return relax({db: dbName, path: '_all_docs', qs: qs, stream: true}, callback); + function listDocAsStream(qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + return relax({db: dbName, path: '_all_docs', qs: opts, stream: true}, callback); } // http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs - function fetchDocs(docNames, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - - qs = qs || {}; - qs['include_docs'] = true; + function fetchDocs(docNames, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + opts['include_docs'] = true; return relax({ db: dbName, path: '_all_docs', method: 'POST', - qs: qs, + qs: opts, body: docNames }, callback); } - function fetchRevs(docNames, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } + function fetchRevs(docNames, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: dbName, path: '_all_docs', method: 'POST', - qs: qs, + qs: opts, body: docNames }, callback); } - function view(ddoc, viewName, meta, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } + function view(ddoc, viewName, meta, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); if (typeof meta.stream !== 'boolean') { meta.stream = false; } // prevent mutation of the client qs object by using a clone - const qs1 = Object.assign({}, qs); + const qs1 = Object.assign({}, opts); const viewPath = '_design/' + ddoc + '/_' + meta.type + '/' + viewName; @@ -733,18 +690,14 @@ module.exports = exports = nano = function dbScope(cfg) { } // http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_bulksDoc - function bulksDoc(docs, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - + function bulksDoc(docs, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: dbName, path: '_bulk_docs', body: docs, method: 'POST', - qs: qs + qs: opts }, callback); } @@ -788,88 +741,67 @@ module.exports = exports = nano = function dbScope(cfg) { }, callback); } - function getMultipart(docName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - qs = qs || {}; - - qs.attachments = true; + function getMultipart(docName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); + opts.attachments = true; return relax({ db: dbName, doc: docName, encoding: null, accept: 'multipart/related', - qs: qs + qs: opts }, callback); } - function insertAtt(docName, attName, att, contentType, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - + function insertAtt(docName, attName, att, contentType, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: dbName, att: attName, method: 'PUT', contentType: contentType, doc: docName, - qs: qs, + qs: opts, body: att, dontStringify: true }, callback); } - function insertAttAsStream(docName, attName, att, contentType, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - + function insertAttAsStream(docName, attName, att, contentType, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: dbName, att: attName, method: 'PUT', contentType: contentType, doc: docName, - qs: qs, + qs: opts, body: att, stream: true, dontStringify: true }, callback); } - function getAtt(docName, attName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - + function getAtt(docName, attName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: dbName, att: attName, doc: docName, - qs: qs, + qs: opts, encoding: null, dontParse: true }, callback); } - function getAttAsStream(docName, attName, qs, callback) { - if (typeof qs === 'function') { - callback = qs; - qs = {}; - } - + function getAttAsStream(docName, attName, qs0, callback0) { + const {opts, callback} = getCallback(qs0, callback0); return relax({ db: dbName, att: attName, doc: docName, - qs: qs, + qs: opts, stream: true, encoding: null, dontParse: true
