camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
54 lines (53 loc) • 2.05 kB
JavaScript
;
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;
};