π― Use case
This file lives under βutils/β, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, β¦). On the API surface it exposes gt, gte, lt, lte, and satisfies (and more) β mainly functions, hooks, or classes. What the file header says: Semver comparison utilities that use Bun.semver when available and fall back to the npm `semver` package in Node.js environments. Bun.semver.order() is ~20x faster than npm semver comparisons. The npm semver fallback always uses { loose: true }.
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
Semver comparison utilities that use Bun.semver when available and fall back to the npm `semver` package in Node.js environments. Bun.semver.order() is ~20x faster than npm semver comparisons. The npm semver fallback always uses { loose: true }.
π€ Exports (heuristic)
gtgteltltesatisfiesorder
π₯οΈ Source preview
/**
* Semver comparison utilities that use Bun.semver when available
* and fall back to the npm `semver` package in Node.js environments.
*
* Bun.semver.order() is ~20x faster than npm semver comparisons.
* The npm semver fallback always uses { loose: true }.
*/
let _npmSemver: typeof import('semver') | undefined
function getNpmSemver(): typeof import('semver') {
if (!_npmSemver) {
// eslint-disable-next-line @typescript-eslint/no-require-imports
_npmSemver = require('semver') as typeof import('semver')
}
return _npmSemver
}
export function gt(a: string, b: string): boolean {
if (typeof Bun !== 'undefined') {
return Bun.semver.order(a, b) === 1
}
return getNpmSemver().gt(a, b, { loose: true })
}
export function gte(a: string, b: string): boolean {
if (typeof Bun !== 'undefined') {
return Bun.semver.order(a, b) >= 0
}
return getNpmSemver().gte(a, b, { loose: true })
}
export function lt(a: string, b: string): boolean {
if (typeof Bun !== 'undefined') {
return Bun.semver.order(a, b) === -1
}
return getNpmSemver().lt(a, b, { loose: true })
}
export function lte(a: string, b: string): boolean {
if (typeof Bun !== 'undefined') {
return Bun.semver.order(a, b) <= 0
}
return getNpmSemver().lte(a, b, { loose: true })
}
export function satisfies(version: string, range: string): boolean {
if (typeof Bun !== 'undefined') {
return Bun.semver.satisfies(version, range)
}
return getNpmSemver().satisfies(version, range, { loose: true })
}
export function order(a: string, b: string): -1 | 0 | 1 {
if (typeof Bun !== 'undefined') {
return Bun.semver.order(a, b)
}
return getNpmSemver().compare(a, b, { loose: true })
}