summaryrefslogtreecommitdiff
path: root/shared/utils/node_modules/@amp/runtime-detect/dist/version.js
diff options
context:
space:
mode:
Diffstat (limited to 'shared/utils/node_modules/@amp/runtime-detect/dist/version.js')
-rw-r--r--shared/utils/node_modules/@amp/runtime-detect/dist/version.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/shared/utils/node_modules/@amp/runtime-detect/dist/version.js b/shared/utils/node_modules/@amp/runtime-detect/dist/version.js
new file mode 100644
index 0000000..eba858c
--- /dev/null
+++ b/shared/utils/node_modules/@amp/runtime-detect/dist/version.js
@@ -0,0 +1,99 @@
+function parseVersion(input) {
+ const data = {
+ version: input.toLowerCase()
+ };
+ const parts = input.toLowerCase().split('.').filter((p)=>!!p);
+ // Only parse single parts that are actual numbers.
+ // This check will prevent `parseInt` from pasing the leading chars if they are
+ // valid numbers.
+ if (parts.length <= 1 && !/^\d+$/.test(parts[0])) {
+ return data;
+ }
+ const major = parseInt(parts[0], 10);
+ const minor = parseInt(parts[1], 10);
+ const patch = parseInt(parts[2], 10);
+ // Only add converted versions if `major` part was valid
+ if (!Number.isNaN(major)) {
+ data.major = major;
+ if (!Number.isNaN(minor)) data.minor = minor;
+ if (!Number.isNaN(patch)) data.patch = patch;
+ }
+ return data;
+}
+/**
+ * Check if the given value is a complete Version struct.
+ */ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+function isVersion(value) {
+ var _value, _value1;
+ return typeof ((_value = value) === null || _value === void 0 ? void 0 : _value.major) === 'number' && typeof ((_value1 = value) === null || _value1 === void 0 ? void 0 : _value1.minor) === 'number';
+}
+/**
+ * Compare two version numbers together.
+ *
+ * NOTE: This only supports the first 3 segments (major, minor, patch) and does not
+ * do a full SemVer compare.
+ *
+ * @example
+ * ```javascript
+ * compareVersion('1.2.3', '1.2.4');
+ * // => -1
+ * ```
+ */ function compareVersion(base, comp) {
+ let baseList = toNumbers(base);
+ let compList = toNumbers(comp);
+ // Right pad versions with zeros to make them equal length
+ const versionLength = Math.max(baseList.length, compList.length);
+ baseList = baseList.concat(Array(versionLength).fill(0)).slice(0, versionLength);
+ compList = compList.concat(Array(versionLength).fill(0)).slice(0, versionLength);
+ /** Constrain the given value to the output range of this function. */ const constrain = (value)=>{
+ if (value <= -1) return -1;
+ else if (value >= 1) return 1;
+ else return 0;
+ };
+ for(let index = 0; index < versionLength; index++){
+ const aValue = baseList[index];
+ const bValue = compList[index];
+ if (aValue !== bValue) {
+ return constrain(aValue - bValue);
+ }
+ }
+ return 0;
+}
+function eq(base, comp) {
+ return compareVersion(base, comp) === 0;
+}
+function gt(base, comp) {
+ return compareVersion(base, comp) > 0;
+}
+function gte(base, comp) {
+ const result = compareVersion(base, comp);
+ return result > 0 || result === 0;
+}
+function lt(base, comp) {
+ return compareVersion(base, comp) < 0;
+}
+function lte(base, comp) {
+ const result = compareVersion(base, comp);
+ return result < 0 || result === 0;
+}
+function toNumbers(value) {
+ if (Array.isArray(value)) {
+ return value;
+ } else if (typeof value === 'number') {
+ return [
+ value
+ ];
+ } else if (typeof value === 'string') {
+ return toNumbers(parseVersion(value));
+ } else {
+ const values = [
+ value.major,
+ value.minor,
+ value.patch
+ ];
+ const uidx = values.indexOf(undefined);
+ return uidx === -1 ? values : values.slice(0, uidx);
+ }
+}
+
+export { compareVersion, eq, gt, gte, isVersion, lt, lte, parseVersion };