UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

54 lines (53 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fixVersionToDots = exports.versionCompare = exports.firmwareVersionCompare = exports.isVersionAtLeast = exports.isFirmwareVersionAtLeast = exports.assertVersionString = void 0; const assertVersionString = (s, msg) => { if (!s.match(/^[0-9]+(\.[0-9]+){1,3}$/)) { throw new Error(msg ?? `${s} is not a version`); } }; exports.assertVersionString = assertVersionString; const isFirmwareVersionAtLeast = (version, compareVersion) => { return (0, exports.firmwareVersionCompare)(version, compareVersion) >= 0; }; exports.isFirmwareVersionAtLeast = isFirmwareVersionAtLeast; const isVersionAtLeast = (version, compareVersion) => { return (0, exports.versionCompare)(version, compareVersion) >= 0; }; exports.isVersionAtLeast = isVersionAtLeast; const firmwareVersionCompare = (a, b) => { const versions = [a, b]; const matchBetaFirmwareVersion = (x) => /^CVP-/.test(x) || /^[0-9]+.*beta/.test(x); if (versions.every(matchBetaFirmwareVersion)) { return 0; } if (matchBetaFirmwareVersion(a)) { return -1; } if (matchBetaFirmwareVersion(b)) { return 1; } return (0, exports.versionCompare)(a, b); }; exports.firmwareVersionCompare = firmwareVersionCompare; const versionCompare = (a, b) => { (0, exports.assertVersionString)(a); (0, exports.assertVersionString)(b); const aSplit = parseVersion(a); const bSplit = parseVersion(b); for (let i = 0; i < aSplit.length; i++) { if (aSplit[i] !== bSplit[i]) { return aSplit[i] < bSplit[i] ? -1 : 1; } } return 0; }; exports.versionCompare = versionCompare; const fixVersionToDots = (version) => version.replaceAll('-', '.'); exports.fixVersionToDots = fixVersionToDots; const parseVersion = (version) => { (0, exports.assertVersionString)(version); const parsed = version.split('.').map((s) => parseInt(s)); parsed.push(...Array(4 - parsed.length).fill(0)); return parsed; };