| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /**
- * 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 })
- }
|