@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
RangeOperator
The comparison operator
§version
SemVer
The 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
unknown
Array 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
SemVer
The 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
unknown
Array of comparator sets (OR logic)
§raw?
string
Original 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> & RequiredVersionComponents
Version 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
SemVer
The 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
SemVer
The 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
Range
The 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
SemVer
The 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
SemVer
The 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:RangeOperator
The comparison operator
§readonly version:SemVer
The 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:unknown
Array 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 raw?:string
Original raw string if parsed
§readonly sets:unknown
Comparator sets (OR logic between sets, AND logic within)
§interface

SemVer

Semantic Version
A version number in the format MAJOR.MINOR.PATCH with optional prerelease and build metadata.

Properties

§readonly build:unknown
Build metadata identifiers (e.g., ["build", "123"])
§readonly major:number
Major version - incremented for breaking changes
§readonly minor:number
Minor version - incremented for new features
§readonly patch:number
Patch version - incremented for bug fixes
§readonly prerelease:unknown
Prerelease identifiers (e.g., ["alpha", "1"])
§readonly raw?:string
Original 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 = "=" | ">" | ">=" | "<" | "<=" | "^" | "~"