File size: 657 Bytes
5a81b95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export class WidgetVersioning {
  static isCompatible(required: string, installed: string): boolean {
    const [req] = required.split('.');
    const [inst] = installed.split('.');
    return parseInt(inst) >= parseInt(req);
  }

  static isSemVer(version: string): boolean {
    return /^\d+\.\d+\.\d+(-\w+)?$/.test(version);
  }

  static compareVersions(v1: string, v2: string): number {
    const [major1, minor1, patch1] = v1.split('.').map(Number);
    const [major2, minor2, patch2] = v2.split('.').map(Number);

    if (major1 !== major2) return major1 - major2;
    if (minor1 !== minor2) return minor1 - minor2;
    return patch1 - patch2;
  }
}