UNPKG

auri

Version:

Organize package changes and releases

63 lines (62 loc) 1.5 kB
import { convertPositiveIntegerString } from "./int.js"; export function parseSemver(version) { let parts = version.split("-"); if (parts.length > 2) { throw new Error("Invalid version format"); } const mainParts = parts[0].split("."); if (mainParts.length !== 3) { throw new Error("Invalid version format"); } let major; try { major = convertPositiveIntegerString(mainParts[0]); } catch { throw new Error("Invalid version format"); } let minor; try { minor = convertPositiveIntegerString(mainParts[1]); } catch { throw new Error("Invalid version format"); } let patch; try { patch = convertPositiveIntegerString(mainParts[2]); } catch { throw new Error("Invalid version format"); } if (parts.length === 1) { const semver = { major, minor, patch, next: null }; return semver; } const nextParts = parts[1].split("."); if (nextParts.length !== 2) { throw new Error("Invalid version format"); } if (nextParts[0] !== "next") { throw new Error("Invalid version format"); } let next; try { next = convertPositiveIntegerString(nextParts[1]); } catch { throw new Error("Invalid version format"); } const semver = { major, minor, patch, next }; return semver; }