{-# LANGUAGE OverloadedStrings #-} {-| Module : Npm.Latest Description : Fetch the latest version of an npm module. Copyright : (c) Pascal Hartig, 2014 License : MIT Maintainer : phartig@rdrei.net Stability : experimental Portability : POSIX This is just an experiment of me porting a node module to Haskell and learning about Lenses and Pipes along the way. Use on your own risk. -} module Npm.Latest ( fetchLatestVersion, extractVersion, GenericNpmException(..) ) where import Control.Exception (SomeException) import Data.Text.Format (Format) import Npm.Latest.Internal (buildRequest, makeVersionRequest, extractVersion, GenericNpmException(..)) import qualified Data.Text as T latestUrl :: Format latestUrl = "https://registry.npmjs.org/{}/latest" -- |Fetch the latest version for the given module name. fetchLatestVersion :: String -> IO (Either SomeException T.Text) fetchLatestVersion name = do req <- buildRequest name latestUrl resp <- makeVersionRequest req return $ extractVersion resp