all files / lib/deps/ adapterFun.js

100% Statements 39/39
92.86% Branches 13/14
100% Functions 7/7
100% Lines 38/38
10 statements, 1 function, 3 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70                                68229×               32655× 68231×   68229× 68229× 68229× 6514× 6514× 6514×   6510×         61715×      
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
 
var _promise = require('./promise');
 
var _promise2 = _interopRequireDefault(_promise);
 
var _toPromise = require('./toPromise');
 
var _toPromise2 = _interopRequireDefault(_toPromise);
 
var _argsarray = require('argsarray');
 
var _argsarray2 = _interopRequireDefault(_argsarray);
 
var _debug = require('debug');
 
var _debug2 = _interopRequireDefault(_debug);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
var log = (0, _debug2.default)('pouchdb:api');
 
function adapterFun(name, callback) {
  function logApiCall(self, name, args) {
    /* istanbul ignore if */
    Iif (log.enabled) {
      var logArgs = [self._db_name, name];
      for (var i = 0; i < args.length - 1; i++) {
        logArgs.push(args[i]);
      }
      log.apply(null, logArgs);
 
      // override the callback itself to log the response
      var origCallback = args[args.length - 1];
      args[args.length - 1] = function (err, res) {
        var responseArgs = [self._db_name, name];
        responseArgs = responseArgs.concat(err ? ['error', err] : ['success', res]);
        log.apply(null, responseArgs);
        origCallback(err, res);
      };
    }
  }
 
  return (0, _toPromise2.default)((0, _argsarray2.default)(function (args) {
    if (this._closed) {
      return _promise2.default.reject(new Error('database is closed'));
    }
    var self = this;
    logApiCall(self, name, args);
    if (!this.taskqueue.isReady) {
      return new _promise2.default(function (fulfill, reject) {
        self.taskqueue.addTask(function (failed) {
          if (failed) {
            reject(failed);
          } else {
            fulfill(self[name].apply(self, args));
          }
        });
      });
    }
    return callback.apply(this, args);
  }));
}
 
exports.default = adapterFun;
module.exports = exports['default'];