@azure-tools/codegen
Version:
Autorest Code generator common and base classes
104 lines (103 loc) • 4.06 kB
JavaScript
;
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