Skip to content

Commit e35c9a2

Browse files
committed
feat(semver): introduce new domain!
1 parent ca34e9d commit e35c9a2

File tree

9 files changed

+1877
-0
lines changed

9 files changed

+1877
-0
lines changed

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
"#ts/ts": "./build/utils/ts/$$.js",
5555
"#rec": "./build/domains/rec/$.js",
5656
"#rec/rec": "./build/domains/rec/$$.js",
57+
"#semver": "./build/domains/semver/$.js",
58+
"#semver/semver": "./build/domains/semver/$$.js",
5759
"#lang": "./build/utils/lang/$.js",
5860
"#lang/lang": "./build/utils/lang/$$.js",
5961
"#mask": "./build/utils/mask/$.js",
@@ -175,6 +177,7 @@
175177
"./rec": "./build/domains/rec/$$.js",
176178
"./resource": "./build/utils/resource/$$.js",
177179
"./sch": "./build/utils/sch/$$.js",
180+
"./semver": "./build/domains/semver/$$.js",
178181
"./str": "./build/domains/str/$$.js",
179182
"./test": "./build/utils/test/$.js",
180183
"./traitor": "./build/utils/traitor/$$.js",
@@ -240,6 +243,7 @@
240243
"dependencies": {
241244
"@types/node": "^24.6.1",
242245
"@types/object-inspect": "^1.13.0",
246+
"@vltpkg/semver": "0.0.0-30",
243247
"ansis": "^4.2.0",
244248
"consola": "^3.4.2",
245249
"es-toolkit": "^1.39.10",

pnpm-lock.yaml

Lines changed: 696 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/domains/semver/$$.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * as OfficialRelease from './official-release.js'
2+
export * as PreRelease from './pre-release.js'
3+
export * from './semver.js'

src/domains/semver/$.test.ts

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import { S } from '#deps/effect'
2+
import { Test } from '#test'
3+
import { Semver } from './$.js'
4+
5+
const decodeSync = S.decodeSync(Semver.Semver)
6+
7+
Test
8+
.describe('decodeSync')
9+
.on(decodeSync)
10+
.casesInput(
11+
['1.2.3'],
12+
['1.2.3-beta.1+build.123'],
13+
['invalid'],
14+
)
15+
.describeInputs('discriminated union', [
16+
['1.2.3'],
17+
['1.2.3+build.123'],
18+
['1.2.3-beta'],
19+
['1.2.3-beta+build.123'],
20+
])
21+
.test()
22+
23+
Test
24+
.on(Semver.order)
25+
.cases(
26+
[[decodeSync('1.0.0'), decodeSync('2.0.0')], -1],
27+
[[decodeSync('2.0.0'), decodeSync('1.0.0')], 1],
28+
[[decodeSync('1.0.0'), decodeSync('1.0.0')], 0],
29+
)
30+
.test()
31+
32+
Test
33+
.on(Semver.equivalence)
34+
.cases(
35+
[[decodeSync('1.0.0'), decodeSync('1.0.0')], true],
36+
[[decodeSync('1.0.0'), decodeSync('2.0.0')], false],
37+
)
38+
.test()
39+
40+
Test
41+
.on(Semver.is)
42+
.cases(
43+
[[decodeSync('1.2.3')], true],
44+
[[{ major: 1, minor: 2, patch: 3 }], false],
45+
[['1.2.3'], false],
46+
)
47+
.test()
48+
49+
Test
50+
.on(Semver.increment)
51+
.casesInput(
52+
[decodeSync('1.2.3'), 'major'],
53+
[decodeSync('1.2.3'), 'minor'],
54+
[decodeSync('1.2.3'), 'patch'],
55+
)
56+
.test()
57+
58+
Test
59+
.on(Semver.min)
60+
.casesInput(
61+
[decodeSync('1.0.0'), decodeSync('2.0.0')],
62+
[decodeSync('2.0.0'), decodeSync('1.0.0')],
63+
)
64+
.test()
65+
66+
Test
67+
.on(Semver.max)
68+
.casesInput(
69+
[decodeSync('1.0.0'), decodeSync('2.0.0')],
70+
[decodeSync('2.0.0'), decodeSync('1.0.0')],
71+
)
72+
.test()
73+
74+
Test
75+
.on(Semver.make)
76+
.casesInput(
77+
[1, 2, 3],
78+
[1, 2, 3, 'beta.1'],
79+
[1, 2, 3, 'beta.1', 'build.123'],
80+
[1, 2, 3, undefined, 'build.123'],
81+
)
82+
.test()
83+
84+
Test
85+
.on(Semver.satisfies)
86+
.onSetup(() => ({
87+
v: decodeSync('1.2.3'),
88+
}))
89+
.casesInput(
90+
// todo: this should work:
91+
// ({ v }) => [v, '>=1.0.0'],
92+
[decodeSync('1.2.3'), '>=1.0.0'],
93+
[decodeSync('1.2.3'), '^1.0.0'],
94+
[decodeSync('1.2.3'), '~1.2.0'],
95+
[decodeSync('1.2.3'), '2.x'],
96+
[decodeSync('1.2.3'), 'invalid'],
97+
)
98+
.test()

src/domains/semver/$.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * as Semver from './$$.js'

0 commit comments

Comments
 (0)