diff options
Diffstat (limited to 'shared/core-utils/common/version.ts')
-rw-r--r-- | shared/core-utils/common/version.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/shared/core-utils/common/version.ts b/shared/core-utils/common/version.ts new file mode 100644 index 000000000..8a64f8c4d --- /dev/null +++ b/shared/core-utils/common/version.ts | |||
@@ -0,0 +1,20 @@ | |||
1 | // Thanks https://stackoverflow.com/a/16187766 | ||
2 | function compareSemVer (a: string, b: string) { | ||
3 | const regExStrip0 = /(\.0+)+$/ | ||
4 | const segmentsA = a.replace(regExStrip0, '').split('.') | ||
5 | const segmentsB = b.replace(regExStrip0, '').split('.') | ||
6 | |||
7 | const l = Math.min(segmentsA.length, segmentsB.length) | ||
8 | |||
9 | for (let i = 0; i < l; i++) { | ||
10 | const diff = parseInt(segmentsA[i], 10) - parseInt(segmentsB[i], 10) | ||
11 | |||
12 | if (diff) return diff | ||
13 | } | ||
14 | |||
15 | return segmentsA.length - segmentsB.length | ||
16 | } | ||
17 | |||
18 | export { | ||
19 | compareSemVer | ||
20 | } | ||