'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']; |