camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
45 lines (44 loc) • 1.45 kB
JavaScript
export const assertVersionString = (s, msg) => {
if (!s.match(/^[0-9]+(\.[0-9]+){1,3}$/)) {
throw new Error(msg ?? `${s} is not a version`);
}
};
export const isFirmwareVersionAtLeast = (version, compareVersion) => {
return firmwareVersionCompare(version, compareVersion) >= 0;
};
export const isVersionAtLeast = (version, compareVersion) => {
return versionCompare(version, compareVersion) >= 0;
};
export 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 versionCompare(a, b);
};
export const versionCompare = (a, b) => {
assertVersionString(a);
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;
};
export const fixVersionToDots = (version) => version.replaceAll('-', '.');
const parseVersion = (version) => {
assertVersionString(version);
const parsed = version.split('.').map((s) => parseInt(s));
parsed.push(...Array(4 - parsed.length).fill(0));
return parsed;
};