UNPKG

@azure-tools/codegen

Version:
104 lines (103 loc) 4.06 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.maximum = exports.minimum = exports.highest = exports.lowest = exports.gt = exports.lt = exports.toSemver = void 0; const semver = __importStar(require("semver")); /* Handling: yyyy-mm n(yyyy).n(mm).0 yyyy-mm-preview n(yyyy).n(mm).0-preview yyyy-mm-dd n(yyyy).n(mm).n(dd) yyyy-mm-dd-preview n(yyyy).n(mm).n(dd)-preview yyyy-mm-dd.x1.x2 (miliseconds since 1970-01-01).x1.x2 x1.x2.x3.x4 x1.x2.x3 x.x x.x.0 vx.x x.x.0 vx.x-preview x.x.0-preview */ function toSemver(apiversion) { // let result = ''; // strip off leading "v" or "=" character apiversion = apiversion.replace(/^v|^=/gi, ""); // eslint-disable-next-line no-useless-escape const versionedDateRegex = new RegExp(/(^\d{4}\-\d{2}\-\d{2})(\.\d+\.\d+$)/gi); if (apiversion.match(versionedDateRegex)) { // convert yyyy-mm-dd.x1.x2 ---> (miliseconds since 1970-01-01).x1.x2 const date = apiversion.replace(versionedDateRegex, "$1"); const miliseconds = new Date(date).getTime(); const lastNumbers = apiversion.replace(versionedDateRegex, "$2"); return `${miliseconds}${lastNumbers}`; } const [whole, major, minor, revision, tag] = /^(\d+)-(\d+)(?:-(\d+))?(.*)/.exec(apiversion) || /(\d*)\.(\d*)\.(\d*)(.*)/.exec(apiversion) || /(\d*)\.(\d*)()(.*)/.exec(apiversion) || /(\d*)()()(.*)/.exec(apiversion) || []; return `${Number.parseInt(major || "0") || 0}.${Number.parseInt(minor || "0") || 0}.${Number.parseInt(revision || "0") || 0}${(tag === null || tag === void 0 ? void 0 : tag.startsWith("-")) ? tag : ""}`; } exports.toSemver = toSemver; function lt(apiVersion1, apiVersion2) { const v1 = toSemver(apiVersion1); const v2 = toSemver(apiVersion2); return semver.lt(v1, v2); } exports.lt = lt; function gt(apiVersion1, apiVersion2) { const v1 = toSemver(apiVersion1); const v2 = toSemver(apiVersion2); return semver.gt(v1, v2); } exports.gt = gt; function lowest(apiVersion1, apiVersion2) { return lt(apiVersion1, apiVersion2) ? apiVersion1 : apiVersion2; } exports.lowest = lowest; function highest(apiVersion1, apiVersion2) { return gt(apiVersion1, apiVersion2) ? apiVersion1 : apiVersion2; } exports.highest = highest; function minimum(apiversions) { if (apiversions.length === 0) { return ""; } let result = apiversions[0]; for (const each of apiversions) { result = lowest(result, each); } return result; } exports.minimum = minimum; function maximum(apiversions) { if (apiversions.length === 0) { return ""; } let result = apiversions[0]; for (const each of apiversions) { result = highest(result, each); } return result; } exports.maximum = maximum; //# sourceMappingURL=apiversion.js.map