Skip to main content
import * as CompilerVersion from 'voltaire-effect/CompilerVersion'
import * as Schema from 'effect/Schema'
import { Effect } from 'effect'

// Parse version
const v = Schema.decodeSync(CompilerVersion.CompilerVersionSchema)('0.8.20')
const withCommit = Schema.decodeSync(CompilerVersion.CompilerVersionSchema)('0.8.20+commit.a1b2c3d4')

// Parse to components
const parsed = Effect.runSync(CompilerVersion.parse('0.8.20'))
// { major: 0, minor: 8, patch: 20 }

// Compare versions
Effect.runSync(CompilerVersion.compare('0.8.20', '0.8.19')) // 1 (newer)
Effect.runSync(CompilerVersion.compare('0.8.19', '0.8.20')) // -1 (older)
Effect.runSync(CompilerVersion.compare('0.8.20', '0.8.20')) // 0 (equal)

// Check semver compatibility
Effect.runSync(CompilerVersion.isCompatible('0.8.20', '^0.8.0')) // true
Effect.runSync(CompilerVersion.isCompatible('0.7.6', '^0.8.0'))  // false

API

FunctionType
from(version: string) => Effect<CompilerVersionType, CompilerVersionError>
parse(version: string) => Effect<{ major, minor, patch, commit? }>
compare(a: string, b: string) => Effect<-1 | 0 | 1>
isCompatible(version: string, range: string) => Effect<boolean>
getMajor(version: string) => Effect<number>
getMinor(version: string) => Effect<number>
getPatch(version: string) => Effect<number>