@hyperfrontend/versioning/semver/modelsmodels
Core semver data model: versions, ranges, comparators, and bump types with their factories and predicates.
SemVer is the parsed-version shape; BumpType is the 'major' | 'minor' | 'patch' | ... enum that drives the increment logic. Version factories (createSemVer, createInitialVersion, createFirstRelease) and predicates (isPrerelease, isStable, stripBuild, stripPrerelease) cover the common construction and projection cases. Range, Comparator, ComparatorSet, and RangeOperator are the npm-style range shapes; createRange, createAnyRange, createExactRange, createComparator, createComparatorSet, and isWildcard are the corresponding builders and tests.
API Reference
ƒ Functions
Returns
RangeExample
Create a range that matches any version
const anyRange = createAnyRange()
satisfies(parseVersionStrict('999.999.999'), anyRange) // => trueParameters
Returns
ComparatorExample
Create a comparator for version comparison
createComparator('>=', parseVersionStrict('1.0.0'))
// => { operator: '>=', version: { major: 1, minor: 0, patch: 0, ... } }Parameters
| Name | Type | Description |
|---|---|---|
§comparators | unknown | Array of comparators (AND logic) |
Returns
ComparatorSetExample
Create a comparator set with AND logic
createComparatorSet([gte100, lt200]) // AND: >=1.0.0 AND <2.0.0Parameters
| Name | Type | Description |
|---|---|---|
§version | SemVer | The exact version to match |
Returns
RangeExample
Create a range that matches exactly one version
const exact = createExactRange(parseVersionStrict('1.2.3'))
satisfies(parseVersionStrict('1.2.3'), exact) // => true
satisfies(parseVersionStrict('1.2.4'), exact) // => falseReturns
SemVerExample
Create first 1.0.0 release version
const first = createFirstRelease()
format(first) // => '1.0.0'Returns
SemVerExample
Create initial 0.0.0 version
const initial = createInitialVersion()
format(initial) // => '0.0.0'Parameters
Returns
RangeExample
Create a range with OR logic between sets
createRange([set1, set2], '>=1.0.0 || >=2.0.0 <3.0.0')Parameters
| Name | Type | Description |
|---|---|---|
§options | Partial<SemVer> & RequiredVersionComponents | Version components |
Returns
SemVerExample
Create a SemVer object from components
createSemVer({ major: 1, minor: 2, patch: 3 })
// => { major: 1, minor: 2, patch: 3, prerelease: [], build: [] }
createSemVer({ major: 1, minor: 0, patch: 0, prerelease: ['beta', '1'] })
// => 1.0.0-beta.1Parameters
| Name | Type | Description |
|---|---|---|
§version | SemVer | The version to check |
Returns
booleanExample
Check if version has prerelease identifiers
isPrerelease(parseVersionStrict('1.0.0-beta.1')) // => true
isPrerelease(parseVersionStrict('1.0.0')) // => falseParameters
| Name | Type | Description |
|---|---|---|
§version | SemVer | The version to check |
Returns
booleanExample
Check if version is a stable release
isStable(parseVersionStrict('1.0.0')) // => true
isStable(parseVersionStrict('0.9.0')) // => false (< 1.0.0)
isStable(parseVersionStrict('1.0.0-beta')) // => false (prerelease)Parameters
| Name | Type | Description |
|---|---|---|
§range | Range | The range to check |
Returns
booleanExample
Check if a range represents a wildcard
isWildcard(parseRangeStrict('*')) // => true
isWildcard(parseRangeStrict('^1.0.0')) // => falseParameters
| Name | Type | Description |
|---|---|---|
§version | SemVer | The version to strip |
Returns
SemVerExample
Strip build metadata from version
const v = parseVersionStrict('1.0.0+build.123')
format(stripBuild(v)) // => '1.0.0'Parameters
| Name | Type | Description |
|---|---|---|
§version | SemVer | The version to strip |
Returns
SemVerExample
Strip prerelease identifiers from version
const v = parseVersionStrict('1.0.0-beta.1')
format(stripPrerelease(v)) // => '1.0.0'◈ Interfaces
Examples:
- >=1.2.3 -> { operator: '>=', version: { major: 1, minor: 2, patch: 3 } }
- ^1.2.0 -> { operator: '^', version: { major: 1, minor: 2, patch: 0 } }
Example: ">=1.0.0 <2.0.0" -> two comparators in one set
Properties
Example: "^1.0.0 || ^2.0.0" -> two comparator sets
A version number in the format MAJOR.MINOR.PATCH with optional prerelease and build metadata.