firmwareVersion.ts 569 B

12345678910111213141516
  1. /**
  2. * Compare two Bambu Lab firmware version strings (format: "XX.XX.XX.XX").
  3. *
  4. * Returns a negative number if `a` < `b`, zero if equal, positive if `a` > `b`.
  5. * Missing trailing segments are treated as 0.
  6. */
  7. export function compareFwVersions(a: string, b: string): number {
  8. const pa = a.split('.').map((n) => parseInt(n, 10) || 0);
  9. const pb = b.split('.').map((n) => parseInt(n, 10) || 0);
  10. while (pa.length < 4) pa.push(0);
  11. while (pb.length < 4) pb.push(0);
  12. for (let i = 0; i < 4; i++) {
  13. if (pa[i] !== pb[i]) return pa[i] - pb[i];
  14. }
  15. return 0;
  16. }