| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import _ from "lodash";
- const versionPattern = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([0-9A-Za-z\.]+))?/;
- export class SemVersion {
- major: number;
- minor: number;
- patch: number;
- meta: string;
- constructor(version: string) {
- let match = versionPattern.exec(version);
- if (match) {
- this.major = Number(match[1]);
- this.minor = Number(match[2] || 0);
- this.patch = Number(match[3] || 0);
- this.meta = match[4];
- }
- }
- isGtOrEq(version: string): boolean {
- let compared = new SemVersion(version);
- return !(
- this.major < compared.major ||
- this.minor < compared.minor ||
- this.patch < compared.patch
- );
- }
- isValid(): boolean {
- return _.isNumber(this.major);
- }
- }
- export function isVersionGtOrEq(a: string, b: string): boolean {
- let a_semver = new SemVersion(a);
- return a_semver.isGtOrEq(b);
- }
|