all files / lib/deps/docs/ isDeleted.js

100% Statements 19/19
87.5% Branches 7/8
100% Functions 3/3
100% Lines 18/18
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                411810×           42384× 4841×   42384× 42384×   42384× 42384× 334623× 42384×   292239×      
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
 
var _winningRev = require('../../deps/merge/winningRev');
 
var _winningRev2 = _interopRequireDefault(_winningRev);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
function getTrees(node) {
  return node.ids;
}
 
// check if a specific revision of a doc has been deleted
//  - metadata: the metadata object from the doc store
//  - rev: (optional) the revision to check. defaults to winning revision
function isDeleted(metadata, rev) {
  if (!rev) {
    rev = (0, _winningRev2.default)(metadata);
  }
  var id = rev.substring(rev.indexOf('-') + 1);
  var toVisit = metadata.rev_tree.map(getTrees);
 
  var tree;
  while (tree = toVisit.pop()) {
    if (tree[0] === id) {
      return !!tree[1].deleted;
    }
    toVisit = toVisit.concat(tree[2]);
  }
}
 
exports.default = isDeleted;
module.exports = exports['default'];