Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import { Maybe } from '../common'
 
 
// TYPES
export type SemVer = {
  major: number
  minor: number
  patch: number
}
 
 
// FUNCTIONS
export const encode = (major: number, minor: number, patch: number): SemVer => {
  return {
    major,
    minor,
    patch
  }
}
 
export const fromString = (str: string): Maybe<SemVer> => {
  const parts = str.split('.').map(x => parseInt(x)) // dont shorten this because parseInt has a second param
  if (parts.length !== 3 || parts.some(p => typeof p !== 'number')) {
    return null
  }
  return {
    major: parts[0],
    minor: parts[1],
    patch: parts[2]
  }
}
 
export const toString = (version: SemVer): string => {
  const { major, minor, patch } = version
  return `${major}.${minor}.${patch}`
}
 
 
// VERSIONS
export const v0 = encode(0, 0, 0)
export const v1 = encode(1, 0, 0)
export const latest = encode(1, 0, 0)
  |