@hyperfrontend/versioning/semver/models

models

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

§function

createAnyRange(): Range

Creates a range that matches any version.
Returns
Range
A Range matching any version (*)
Example

Create a range that matches any version

const anyRange = createAnyRange()
satisfies(parseVersionStrict('999.999.999'), anyRange) // => true
§function

createComparator(operator: RangeOperator, version: SemVer): Comparator

Creates a new Comparator.
Parameters
NameTypeDescription
§operator
RangeOperatorThe comparison operator
§version
SemVerThe version to compare against
Returns
Comparator
A new Comparator
Example

Create a comparator for version comparison

createComparator('>=', parseVersionStrict('1.0.0'))
// => { operator: '>=', version: { major: 1, minor: 0, patch: 0, ... } }
§function

createComparatorSet(comparators: unknown): ComparatorSet

Creates a new ComparatorSet.
Parameters
NameTypeDescription
§comparators
unknownArray of comparators (AND logic)
Returns
ComparatorSet
A new ComparatorSet
Example

Create a comparator set with AND logic

createComparatorSet([gte100, lt200]) // AND: >=1.0.0 AND <2.0.0
§function

createExactRange(version: SemVer): Range

Creates a range that matches exactly one version.
Parameters
NameTypeDescription
§version
SemVerThe exact version to match
Returns
Range
A Range matching exactly the specified version
Example

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) // => false
§function

createFirstRelease(): SemVer

Creates a SemVer representing version 1.0.0.
Returns
SemVer
A SemVer at version 1.0.0
Example

Create first 1.0.0 release version

const first = createFirstRelease()
format(first) // => '1.0.0'
§function

createInitialVersion(): SemVer

Creates a SemVer representing version 0.0.0.
Returns
SemVer
A SemVer at version 0.0.0
Example

Create initial 0.0.0 version

const initial = createInitialVersion()
format(initial) // => '0.0.0'
§function

createRange(sets: unknown, raw?: string): Range

Creates a new Range.
Parameters
NameTypeDescription
§sets
unknownArray of comparator sets (OR logic)
§raw?
stringOriginal raw string
Returns
Range
A new Range
Example

Create a range with OR logic between sets

createRange([set1, set2], '>=1.0.0 || >=2.0.0 <3.0.0')
§function

createSemVer(options: Partial<SemVer> & RequiredVersionComponents): SemVer

Creates a new SemVer object.
Parameters
NameTypeDescription
§options
Partial<SemVer> & RequiredVersionComponentsVersion components
Returns
SemVer
A new SemVer object
Example

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.1
§function

isPrerelease(version: SemVer): boolean

Checks if the version has prerelease identifiers.
Parameters
NameTypeDescription
§version
SemVerThe version to check
Returns
boolean
True if version has prerelease identifiers
Example

Check if version has prerelease identifiers

isPrerelease(parseVersionStrict('1.0.0-beta.1')) // => true
isPrerelease(parseVersionStrict('1.0.0')) // => false
§function

isStable(version: SemVer): boolean

Checks if the version is a stable release (>= 1.0.0 with no prerelease).
Parameters
NameTypeDescription
§version
SemVerThe version to check
Returns
boolean
True if version is stable
Example

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)
§function

isWildcard(range: Range): boolean

Checks if a range represents a wildcard/any match.
Parameters
NameTypeDescription
§range
RangeThe range to check
Returns
boolean
True if the range matches any version
Example

Check if a range represents a wildcard

isWildcard(parseRangeStrict('*')) // => true
isWildcard(parseRangeStrict('^1.0.0')) // => false
§function

stripBuild(version: SemVer): SemVer

Returns a new version with build metadata stripped.
Parameters
NameTypeDescription
§version
SemVerThe version to strip
Returns
SemVer
A new SemVer without build metadata
Example

Strip build metadata from version

const v = parseVersionStrict('1.0.0+build.123')
format(stripBuild(v)) // => '1.0.0'
§function

stripPrerelease(version: SemVer): SemVer

Returns a new version with prerelease identifiers stripped.
Parameters
NameTypeDescription
§version
SemVerThe version to strip
Returns
SemVer
A new SemVer without prerelease identifiers
Example

Strip prerelease identifiers from version

const v = parseVersionStrict('1.0.0-beta.1')
format(stripPrerelease(v)) // => '1.0.0'

◈ Interfaces

§interface

Comparator

A single comparator in a range set.
Examples:
  • >=1.2.3 -> { operator: '>=', version: { major: 1, minor: 2, patch: 3 } }
  • ^1.2.0 -> { operator: '^', version: { major: 1, minor: 2, patch: 0 } }
Properties
§readonly operator:RangeOperatorThe comparison operator
§readonly version:SemVerThe version to compare against
§interface

ComparatorSet

A set of comparators that must all be satisfied. Represents the space-separated part of a range (AND logic).
Example: ">=1.0.0 <2.0.0" -> two comparators in one set
Properties
§readonly comparators:unknownArray of comparators that must all be satisfied (AND logic).
§interface

Range

A version range that can contain multiple comparator sets. Represents the || separated parts (OR logic).
Example: "^1.0.0 || ^2.0.0" -> two comparator sets
Properties
§readonly sets:unknownComparator sets (OR logic between sets, AND logic within)
§readonly raw?:stringOriginal raw string if parsed
§interface

SemVer

Semantic Version
A version number in the format MAJOR.MINOR.PATCH with optional prerelease and build metadata.
Properties
§readonly major:numberMajor version - incremented for breaking changes
§readonly minor:numberMinor version - incremented for new features
§readonly patch:numberPatch version - incremented for bug fixes
§readonly prerelease:unknownPrerelease identifiers (e.g., ["alpha", "1"])
§readonly build:unknownBuild metadata identifiers (e.g., ["build", "123"])
§readonly raw?:stringOriginal raw string if parsed

◆ Types

§type

BumpType

Bump type for version increments.
type BumpType = "major" | "minor" | "patch" | "premajor" | "preminor" | "prepatch" | "prerelease" | "none"
§type

RangeOperator

Comparison operator for version ranges.
type RangeOperator = "=" | ">" | ">=" | "<" | "<=" | "^" | "~"