Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
5.1 KiB
Plaintext
1 line
5.1 KiB
Plaintext
{"version":3,"sources":["../../../src/utilities/dependencies/versionUtils.ts"],"sourcesContent":["import type { CustomVersionParser } from './dependencyChecker.js'\n\nexport function parseVersion(version: string): { parts: number[]; preReleases: string[] } {\n const [mainVersion, ...preReleases] = version.split('-')\n const parts = mainVersion!.split('.').map(Number)\n return { parts, preReleases }\n}\n\nfunction extractNumbers(str: string): number[] {\n const matches = str.match(/\\d+/g) || []\n return matches.map(Number)\n}\n\nfunction comparePreRelease(v1: string, v2: string): number {\n const num1 = extractNumbers(v1)\n const num2 = extractNumbers(v2)\n\n for (let i = 0; i < Math.max(num1.length, num2.length); i++) {\n if ((num1[i] || 0) < (num2[i] || 0)) {\n return -1\n }\n if ((num1[i] || 0) > (num2[i] || 0)) {\n return 1\n }\n }\n\n // If numeric parts are equal, compare the whole string\n if (v1 < v2) {\n return -1\n }\n if (v1 > v2) {\n return 1\n }\n return 0\n}\n\n/**\n * Compares two semantic version strings, including handling pre-release identifiers.\n *\n * This function first compares the major, minor, and patch components as integers.\n * If these components are equal, it then moves on to compare pre-release versions.\n * Pre-release versions are compared first by extracting and comparing any numerical values.\n * If numerical values are equal, it compares the whole pre-release string lexicographically.\n *\n * @param {string} compare - The first version string to compare.\n * @param {string} to - The second version string to compare.\n * @param {function} [customVersionParser] - An optional function to parse version strings into parts and pre-releases.\n * @returns {string} - Returns greater if compare is greater than to, lower if compare is less than to, and equal if they are equal.\n */\nexport function compareVersions(\n compare: string,\n to: string,\n customVersionParser?: CustomVersionParser,\n): 'equal' | 'greater' | 'lower' {\n const { parts: parts1, preReleases: preReleases1 } = customVersionParser\n ? customVersionParser(compare)\n : parseVersion(compare)\n const { parts: parts2, preReleases: preReleases2 } = customVersionParser\n ? customVersionParser(to)\n : parseVersion(to)\n\n // Compare main version parts\n for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {\n if ((parts1[i] || 0) > (parts2[i] || 0)) {\n return 'greater'\n }\n if ((parts1[i] || 0) < (parts2[i] || 0)) {\n return 'lower'\n }\n }\n\n // Compare pre-release parts if main versions are equal\n if (preReleases1?.length || preReleases2?.length) {\n for (let i = 0; i < Math.max(preReleases1.length, preReleases2.length); i++) {\n if (!preReleases1[i]) {\n return 'greater'\n }\n if (!preReleases2[i]) {\n return 'lower'\n }\n\n const result = comparePreRelease(preReleases1[i]!, preReleases2[i]!)\n if (result !== 0) {\n return result === 1 ? 'greater' : 'lower'\n }\n // Equal => continue for loop to check for next pre-release part\n }\n }\n\n return 'equal'\n}\n"],"names":["parseVersion","version","mainVersion","preReleases","split","parts","map","Number","extractNumbers","str","matches","match","comparePreRelease","v1","v2","num1","num2","i","Math","max","length","compareVersions","compare","to","customVersionParser","parts1","preReleases1","parts2","preReleases2","result"],"mappings":"AAEA,OAAO,SAASA,aAAaC,OAAe;IAC1C,MAAM,CAACC,aAAa,GAAGC,YAAY,GAAGF,QAAQG,KAAK,CAAC;IACpD,MAAMC,QAAQH,YAAaE,KAAK,CAAC,KAAKE,GAAG,CAACC;IAC1C,OAAO;QAAEF;QAAOF;IAAY;AAC9B;AAEA,SAASK,eAAeC,GAAW;IACjC,MAAMC,UAAUD,IAAIE,KAAK,CAAC,WAAW,EAAE;IACvC,OAAOD,QAAQJ,GAAG,CAACC;AACrB;AAEA,SAASK,kBAAkBC,EAAU,EAAEC,EAAU;IAC/C,MAAMC,OAAOP,eAAeK;IAC5B,MAAMG,OAAOR,eAAeM;IAE5B,IAAK,IAAIG,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACJ,KAAKK,MAAM,EAAEJ,KAAKI,MAAM,GAAGH,IAAK;QAC3D,IAAI,AAACF,CAAAA,IAAI,CAACE,EAAE,IAAI,CAAA,IAAMD,CAAAA,IAAI,CAACC,EAAE,IAAI,CAAA,GAAI;YACnC,OAAO,CAAC;QACV;QACA,IAAI,AAACF,CAAAA,IAAI,CAACE,EAAE,IAAI,CAAA,IAAMD,CAAAA,IAAI,CAACC,EAAE,IAAI,CAAA,GAAI;YACnC,OAAO;QACT;IACF;IAEA,uDAAuD;IACvD,IAAIJ,KAAKC,IAAI;QACX,OAAO,CAAC;IACV;IACA,IAAID,KAAKC,IAAI;QACX,OAAO;IACT;IACA,OAAO;AACT;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASO,gBACdC,OAAe,EACfC,EAAU,EACVC,mBAAyC;IAEzC,MAAM,EAAEnB,OAAOoB,MAAM,EAAEtB,aAAauB,YAAY,EAAE,GAAGF,sBACjDA,oBAAoBF,WACpBtB,aAAasB;IACjB,MAAM,EAAEjB,OAAOsB,MAAM,EAAExB,aAAayB,YAAY,EAAE,GAAGJ,sBACjDA,oBAAoBD,MACpBvB,aAAauB;IAEjB,6BAA6B;IAC7B,IAAK,IAAIN,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACM,OAAOL,MAAM,EAAEO,OAAOP,MAAM,GAAGH,IAAK;QAC/D,IAAI,AAACQ,CAAAA,MAAM,CAACR,EAAE,IAAI,CAAA,IAAMU,CAAAA,MAAM,CAACV,EAAE,IAAI,CAAA,GAAI;YACvC,OAAO;QACT;QACA,IAAI,AAACQ,CAAAA,MAAM,CAACR,EAAE,IAAI,CAAA,IAAMU,CAAAA,MAAM,CAACV,EAAE,IAAI,CAAA,GAAI;YACvC,OAAO;QACT;IACF;IAEA,uDAAuD;IACvD,IAAIS,cAAcN,UAAUQ,cAAcR,QAAQ;QAChD,IAAK,IAAIH,IAAI,GAAGA,IAAIC,KAAKC,GAAG,CAACO,aAAaN,MAAM,EAAEQ,aAAaR,MAAM,GAAGH,IAAK;YAC3E,IAAI,CAACS,YAAY,CAACT,EAAE,EAAE;gBACpB,OAAO;YACT;YACA,IAAI,CAACW,YAAY,CAACX,EAAE,EAAE;gBACpB,OAAO;YACT;YAEA,MAAMY,SAASjB,kBAAkBc,YAAY,CAACT,EAAE,EAAGW,YAAY,CAACX,EAAE;YAClE,IAAIY,WAAW,GAAG;gBAChB,OAAOA,WAAW,IAAI,YAAY;YACpC;QACA,gEAAgE;QAClE;IACF;IAEA,OAAO;AACT"} |