UNPKG

@serenity-js/core

Version:

The core Serenity/JS framework, providing the Screenplay Pattern interfaces, as well as the test reporting and integration infrastructure

51 lines 1.41 kB
import semver from 'semver'; import { ensure, isDefined, isString, Predicate, TinyType } from 'tiny-types'; /** * A tiny type describing a version number, like `1.2.3` */ export class Version extends TinyType { version; static fromJSON(version) { return new Version(version); } constructor(version) { super(); this.version = version; ensure('version', version, isDefined(), isString(), isValid()); } isLowerThan(other) { return semver.lt(this.version, other.version, { loose: false }); } isAtMost(other) { return semver.lte(this.version, other.version, { loose: false }); } /** * @param other */ isAtLeast(other) { return semver.gte(this.version, other.version, { loose: false }); } isHigherThan(other) { return semver.gt(this.version, other.version, { loose: false }); } /** * @returns * Major version number of a given package version, i.e. `1` in `1.2.3` */ major() { return Number(this.version.split('.')[0]); } satisfies(range) { return semver.satisfies(this.version, range, { loose: false }); } toString() { return `${this.version}`; } } /** * @package */ function isValid() { return Predicate.to(`be a valid version number`, (version) => !!semver.valid(version)); } //# sourceMappingURL=Version.js.map