@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
| Name | Type | Description |
|---|---|---|
§operator | RangeOperator | The comparison operator |
§version | SemVer | The version to compare against |
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.0Returns
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')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.1Returns
booleanExample
Check if version has prerelease identifiers
isPrerelease(parseVersionStrict('1.0.0-beta.1')) // => true
isPrerelease(parseVersionStrict('1.0.0')) // => falseReturns
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)Returns
booleanExample
Check if a range represents a wildcard
isWildcard(parseRangeStrict('*')) // => true
isWildcard(parseRangeStrict('^1.0.0')) // => falseReturns
SemVerExample
Strip build metadata from version
const v = parseVersionStrict('1.0.0+build.123')
format(stripBuild(v)) // => '1.0.0'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 } }
Properties
Example: ">=1.0.0 <2.0.0" -> two comparators in one set
Properties
Example: "^1.0.0 || ^2.0.0" -> two comparator sets
Properties
A version number in the format MAJOR.MINOR.PATCH with optional prerelease and build metadata.
Properties
◆ Types
type BumpType = "major" | "minor" | "patch" | "premajor" | "preminor" | "prepatch" | "prerelease" | "none"type RangeOperator = "=" | ">" | ">=" | "<" | "<=" | "^" | "~"