1.1.1Updated a month ago
import { Sort } from "./sort_utils.ts";

export const LatestVersionNumber = (versions: string[]) => {
  return versions?.sort(Sort.Version.Descending)?.[0] || null;
}

export const IsSameVersionNumber = (a?: string | null, b?: string | null) => {
  if(!a || !b) return false;

  return SerializeVersionNumber(a) == SerializeVersionNumber(b);
}

export const IsValidVersionNumber = (version: unknown) => {
  if(typeof version !== 'string') return false;

  if(!version.match(/^(?:\d+\.){1,3}\d+$/)) return false;

  return true;
}

export const SerializeVersionNumber = (version: string) =>
  version
    .split('.')
    .map(Number)
    .map((d, i) => d * 100000**(4-i-1))
    .reduce((running, current) => running + current, 0);

export const ListIncludesVersion = (list: string[], version: string) => {
  return list.map(SerializeVersionNumber).includes(SerializeVersionNumber(version));
}