Skip to content

Commit 596c364

Browse files
authored
fix: semver version check (#4988)
1 parent f58c0b4 commit 596c364

File tree

4 files changed

+38
-4
lines changed

4 files changed

+38
-4
lines changed

.changeset/fancy-llamas-brake.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@reown/appkit-utils': patch
3+
'@reown/appkit': patch
4+
---
5+
6+
Fixes SemVer util's extractVersion logic to handle special char fixes on package version

packages/appkit-utils/src/SemVerUtils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ export const SemVerUtils = {
1010
}
1111

1212
/*
13-
* Match semantic version patterns with optional pre-release suffixes
14-
* Examples: 1.7.1, 1.7.1-canary.3, 1.7.1-beta.1, 1.7, 1, etc.
13+
* Match semantic version patterns with optional pre-release suffixes and version range operators
14+
* Examples: 1.7.1, 1.7.1-canary.3, 1.7.1-beta.1, 1.7, 1, ^1.8.3, >=1.x.x, <=1.x.x, etc.
1515
*/
16-
const versionRegex = /(?<version>\d+(?:\.\d+){0,2})(?:-[a-zA-Z]+\.\d+)?/u
16+
const versionRegex = /(?:[~^>=<]+\s*)?(?<version>\d+(?:\.\d+){0,2})(?:-[a-zA-Z]+\.\d+)?/u
1717
const match = version.match(versionRegex)
1818

1919
return match?.groups?.['version'] || null

packages/appkit-utils/tests/SemVerUtil.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,34 @@ describe('SemVerUtils', () => {
2727
expect(SemVerUtils.extractVersion('3.1.0-beta.5')).toBe('3.1.0')
2828
})
2929

30+
it('should extract version from strings with version range operators', () => {
31+
expect(SemVerUtils.extractVersion('^1.8.3')).toBe('1.8.3')
32+
expect(SemVerUtils.extractVersion('~1.7.1')).toBe('1.7.1')
33+
expect(SemVerUtils.extractVersion('>=1.5.0')).toBe('1.5.0')
34+
expect(SemVerUtils.extractVersion('<=2.0.0')).toBe('2.0.0')
35+
expect(SemVerUtils.extractVersion('<1.9.0')).toBe('1.9.0')
36+
expect(SemVerUtils.extractVersion('>1.6.5')).toBe('1.6.5')
37+
expect(SemVerUtils.extractVersion('>=1.x.x')).toBe('1')
38+
expect(SemVerUtils.extractVersion('<=2.x.x')).toBe('2')
39+
expect(SemVerUtils.extractVersion('^1.7')).toBe('1.7')
40+
expect(SemVerUtils.extractVersion('~2')).toBe('2')
41+
})
42+
43+
it('should extract version from strings with multiple operators and whitespace', () => {
44+
expect(SemVerUtils.extractVersion('^ 1.8.3')).toBe('1.8.3')
45+
expect(SemVerUtils.extractVersion('>= 1.5.0')).toBe('1.5.0')
46+
expect(SemVerUtils.extractVersion('<= 2.0.0')).toBe('2.0.0')
47+
expect(SemVerUtils.extractVersion('< 1.9.0')).toBe('1.9.0')
48+
expect(SemVerUtils.extractVersion('> 1.6.5')).toBe('1.6.5')
49+
})
50+
51+
it('should extract version from strings with operators and pre-release suffixes', () => {
52+
expect(SemVerUtils.extractVersion('^1.8.3-beta.1')).toBe('1.8.3')
53+
expect(SemVerUtils.extractVersion('~1.7.1-canary.5')).toBe('1.7.1')
54+
expect(SemVerUtils.extractVersion('>=1.5.0-alpha.2')).toBe('1.5.0')
55+
expect(SemVerUtils.extractVersion('<=2.0.0-rc.1')).toBe('2.0.0')
56+
})
57+
3058
it('should handle edge cases', () => {
3159
expect(SemVerUtils.extractVersion('')).toBe(null)
3260
expect(SemVerUtils.extractVersion('no-version-here')).toBe(null)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const PACKAGE_VERSION = '1.8.2'
1+
export const PACKAGE_VERSION = '1.8.3'

0 commit comments

Comments
 (0)