UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

77 lines (76 loc) 2.92 kB
import { regEx } from "../../../util/regex.js"; import { GenericVersioningApi } from "../generic.js"; const epochPattern = regEx(/^\d+$/); const upstreamVersionPattern = regEx(/^[-+.:~A-Za-z\d]+$/); const debianRevisionPattern = regEx(/^[+.~A-Za-z\d]*$/); const numericPattern = regEx(/\d+/g); const characterOrder = "~ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-.:"; const numericChars = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ]; var DebVersioningApi = class extends GenericVersioningApi { _parse(version) { const epochSplit = version.split(":"); const epochStr = epochSplit.length > 1 ? epochSplit.shift() : "0"; const remainingVersion = epochSplit.join(":"); if (remainingVersion.endsWith("-")) return null; const debianSplit = remainingVersion.split("-"); const debianRevision = debianSplit.length > 1 ? debianSplit.pop() : ""; const upstreamVersion = debianSplit.join("-"); if (!epochPattern.test(epochStr) || !upstreamVersionPattern.test(upstreamVersion) || !debianRevisionPattern.test(debianRevision)) return null; const release = [...remainingVersion.matchAll(numericPattern)].map((m) => parseInt(m[0], 10)); return { epoch: parseInt(epochStr, 10), upstreamVersion, debianRevision, release, suffix: debianRevision }; } _compare_string(a, b) { let charPos = 0; while (charPos < a.length || charPos < b.length) { const aChar = a.charAt(charPos); const bChar = b.charAt(charPos); if (numericChars.includes(aChar) && numericChars.includes(bChar)) { let aNumericEnd = charPos + 1; while (numericChars.includes(a.charAt(aNumericEnd))) aNumericEnd += 1; let bNumericEnd = charPos + 1; while (numericChars.includes(b.charAt(bNumericEnd))) bNumericEnd += 1; const numericCmp = a.substring(charPos, aNumericEnd).localeCompare(b.substring(charPos, bNumericEnd), void 0, { numeric: true }); if (numericCmp !== 0) return numericCmp; charPos = aNumericEnd; continue; } if (aChar !== bChar) { const aPriority = characterOrder.indexOf(numericChars.includes(aChar) || aChar === "" ? " " : aChar); const bPriority = characterOrder.indexOf(numericChars.includes(bChar) || bChar === "" ? " " : bChar); return Math.sign(aPriority - bPriority); } charPos += 1; } return 0; } _compare(version, other) { const parsed1 = this._parse(version); const parsed2 = this._parse(other); if (!(parsed1 && parsed2)) return 1; if (parsed1.epoch !== parsed2.epoch) return Math.sign(parsed1.epoch - parsed2.epoch); const upstreamVersionDifference = this._compare_string(parsed1.upstreamVersion, parsed2.upstreamVersion); if (upstreamVersionDifference !== 0) return upstreamVersionDifference; return this._compare_string(parsed1.debianRevision, parsed2.debianRevision); } }; const api = new DebVersioningApi(); //#endregion export { api as default }; //# sourceMappingURL=index.js.map