Skip to content

Commit 4f7105a

Browse files
committed
fix: support comparing partial version strings (missing tag,patch,minor)
1 parent 822e358 commit 4f7105a

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

packages/vite-plugin-svelte/__tests__/svelte-version.spec.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,51 @@ describe('gte', () => {
55
it('returns false for smaller tag', () => {
66
expect(gte('1.2.3-next.1', '1.2.3-next.2')).toBe(false);
77
});
8+
it('returns false for tag vs no tag', () => {
9+
expect(gte('1.2.3-next.0', '1.2.3')).toBe(false);
10+
});
811
it('returns false for smaller patch', () => {
12+
expect(gte('1.2.2-next.0', '1.2.3')).toBe(false);
913
expect(gte('1.2.2', '1.2.3')).toBe(false);
1014
});
1115
it('returns false for smaller minor', () => {
16+
expect(gte('1.1.4-next.0', '1.2.3')).toBe(false);
1217
expect(gte('1.1.4', '1.2.3')).toBe(false);
18+
expect(gte('1.1', '1.2.3')).toBe(false);
1319
});
1420
it('returns false for smaller major', () => {
21+
expect(gte('0.3.4-next.0', '1.2.3')).toBe(false);
1522
expect(gte('0.3.4', '1.2.3')).toBe(false);
23+
expect(gte('0.3', '1.2.3')).toBe(false);
24+
expect(gte('0', '1.2.3')).toBe(false);
1625
});
1726
it('returns true for equal', () => {
1827
expect(gte('1.2.3-next.1', '1.2.3-next.1')).toBe(true);
1928
});
20-
it('returns false for larger tag', () => {
29+
it('returns true for equal without tag', () => {
30+
expect(gte('1.2.3', '1.2.3')).toBe(true);
31+
expect(gte('1.2', '1.2.0')).toBe(true);
32+
expect(gte('1.2', '1.2')).toBe(true);
33+
expect(gte('1', '1.0')).toBe(true);
34+
expect(gte('1', '1.0.0')).toBe(true);
35+
});
36+
it('returns true for larger tag', () => {
2137
expect(gte('1.2.3-next.2', '1.2.3-next.1')).toBe(true);
2238
});
39+
it('returns true for no tag vs tag', () => {
40+
expect(gte('1.2.3', '1.2.3-next.0')).toBe(true);
41+
});
2342
it('returns true for larger patch', () => {
2443
expect(gte('1.2.4', '1.2.3')).toBe(true);
44+
expect(gte('1.2.4-next.0', '1.2.3')).toBe(true);
2545
});
2646
it('returns true for larger minor', () => {
2747
expect(gte('1.3.1', '1.2.3')).toBe(true);
48+
expect(gte('1.3', '1.2.3')).toBe(true);
2849
});
2950
it('returns true for larger major', () => {
3051
expect(gte('2.0.0', '1.2.3')).toBe(true);
52+
expect(gte('2.0', '1.2.3')).toBe(true);
53+
expect(gte('2', '1.2.3')).toBe(true);
3154
});
3255
});

packages/vite-plugin-svelte/src/utils/svelte-version.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,17 @@ export const isSvelteWithAsync = gte(VERSION, '5.36.0');
1111
* @return {number[]} [major,minor,patch,tag]
1212
*/
1313
function splitToNumbers(semver) {
14-
return semver
14+
const num = semver
1515
.replace(/[^\d.-]/g, '')
1616
.split(/[.-]+/, 4)
1717
.map(Number);
18+
while (num.length < 3) {
19+
num.push(0);
20+
}
21+
if (num.length < 4) {
22+
num.push(Infinity);
23+
}
24+
return num;
1825
}
1926

2027
/**

0 commit comments

Comments
 (0)