all files / lib/deps/merge/ revExists.js

100% Statements 16/16
100% Branches 4/4
100% Functions 1/1
100% Lines 16/16
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          8531× 8531× 8531× 8531×   8531× 8531× 252461× 32×   252429× 252429× 155249×     8499×    
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
// return true if a rev exists in the rev tree, false otherwise
function revExists(revs, rev) {
  var toVisit = revs.slice();
  var splitRev = rev.split('-');
  var targetPos = parseInt(splitRev[0], 10);
  var targetId = splitRev[1];
 
  var node;
  while (node = toVisit.pop()) {
    if (node.pos === targetPos && node.ids[0] === targetId) {
      return true;
    }
    var branches = node.ids[2];
    for (var i = 0, len = branches.length; i < len; i++) {
      toVisit.push({ pos: node.pos + 1, ids: branches[i] });
    }
  }
  return false;
}
 
exports.default = revExists;
module.exports = exports['default'];