UNPKG

simple-git

Version:

Simple GIT interface for node.js

54 lines 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class TagList { constructor(all, latest) { this.all = all; this.latest = latest; } } exports.TagList = TagList; exports.parseTagList = function (data, customSort = false) { const tags = data .split('\n') .map(trimmed) .filter(Boolean); if (!customSort) { tags.sort(function (tagA, tagB) { const partsA = tagA.split('.'); const partsB = tagB.split('.'); if (partsA.length === 1 || partsB.length === 1) { return singleSorted(toNumber(partsA[0]), toNumber(partsB[0])); } for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) { const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i])); if (diff) { return diff; } } return 0; }); } const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf('.') >= 0); return new TagList(tags, latest); }; function singleSorted(a, b) { const aIsNum = isNaN(a); const bIsNum = isNaN(b); if (aIsNum !== bIsNum) { return aIsNum ? 1 : -1; } return aIsNum ? sorted(a, b) : 0; } function sorted(a, b) { return a === b ? 0 : a > b ? 1 : -1; } function trimmed(input) { return input.trim(); } function toNumber(input) { if (typeof input === 'string') { return parseInt(input.replace(/^\D+/g, ''), 10) || 0; } return 0; } //# sourceMappingURL=TagList.js.map