UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

145 lines 5.07 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileVersion = void 0; const guard_1 = __importDefault(require("./guard")); /** * Represents the file version of an assembly */ class FileVersion { constructor(major, minor, patch = 0, revision = 0) { this.major = major; this.minor = minor; this.patch = patch; this.revision = revision; } /** * Parses a file version string (format: `<major>.<minor>.<patch>.<revision>`) to an instance. * * @remarks * Throws an error when parsing fails. * * @param fileVersion - The file version string to parse * @returns A file version instance. */ static parse(fileVersion) { guard_1.default.stringNotNullOrEmpty(fileVersion); try { if (!/^(\d+\.){3}\d+$/.test(fileVersion)) { throw 0; } const parts = fileVersion.split("."); if (parts.length !== 4) throw 0; const major = parseInt(parts[0]); const minor = parseInt(parts[1]); const patch = parseInt(parts[2]); const revision = parseInt(parts[3]); if (isNaN(major + minor + patch + revision)) throw 0; return new FileVersion(major, minor, patch, revision); } catch (ex) { throw "Invalid version format. (Format: <major>.<minor>.<patch>.<revision>)"; } } /** * Tries to parse a file version string (see {@link FileVersion.parse}) and returns `null` or the specified default * value when it fails. * * @param fileVersion - The file version string to parse * @param defaultValue - The value to return when parsing fails * @returns A file version instance or `null`. */ static tryParse(fileVersion, defaultValue = null) { try { return FileVersion.parse(fileVersion); } catch (ex) { return defaultValue; } } /** * Compares if the current instance is smaller than the specified version. * * @param otherVersion - The version to compare the current instance to * @returns A boolean with the result. */ smallerThan(otherVersion) { return this.compareTo(otherVersion) === -1; } /** * Compares if the current instance is smaller or equal than the specified version. * * @param otherVersion - The version to compare the current instance to * @returns A boolean with the result. */ smallerThanOrEqual(otherVersion) { return this.compareTo(otherVersion) !== 1; } /** * Compares if the current instance is greater than the specified version. * * @param otherVersion - The version to compare the current instance to * @returns A boolean with the result. */ greaterThan(otherVersion) { return this.compareTo(otherVersion) === 1; } /** * Compares if the current instance is greater or equal than the specified version. * * @param otherVersion - The version to compare the current instance to * @returns A boolean with the result. */ greaterThanOrEqual(otherVersion) { return this.compareTo(otherVersion) !== -1; } /** * Compares if the current instance equals (by values) the specified file. * * @param otherVersion - The version to compare the current instance to * @returns A boolean with the result. */ equals(otherVersion) { return this.compareTo(otherVersion) === 0; } /** * Compare the current instance with the specified file. * * @param otherVersion - The version to compare the current instance to * @returns 0 when the versions are equal,. * 1 when the current instance is greater, * -1 when the current instance is smaller */ compareTo(otherVersion) { if (otherVersion == null) { return 1; } else if (this.major !== otherVersion.major) { return this.major < otherVersion.major ? -1 : 1; } else if (this.minor !== otherVersion.minor) { return this.minor < otherVersion.minor ? -1 : 1; } else if (this.patch !== otherVersion.patch) { return this.patch < otherVersion.patch ? -1 : 1; } else if (this.revision !== otherVersion.revision) { return this.revision < otherVersion.revision ? -1 : 1; } return 0; } /** * Gets the file version string representation for this instance. */ toString() { if (isNaN(this.major + this.minor + this.patch + this.revision)) return ""; return `${this.major}.${this.minor}.${this.patch}.${this.revision}`; } } exports.FileVersion = FileVersion; //# sourceMappingURL=fileversion.js.map