jsaddle-warp 0.8.2.0 → 0.8.3.0
raw patch · 3 files changed
+104/−72 lines, 3 filesdep +networkdep +webdriverdep ~aesondep ~containersdep ~http-typesPVP ok
version bump matches the API change (PVP)
Dependencies added: network, webdriver
Dependency ranges changed: aeson, containers, http-types, stm, text, time, transformers, wai, wai-websockets, warp, websockets
API changes (from Hackage documentation)
Files
- jsaddle-warp.cabal +18/−5
- src/Language/Javascript/JSaddle/WebSockets.hs +18/−2
- tests/DocTest.hs +68/−65
jsaddle-warp.cabal view
@@ -1,5 +1,5 @@ name: jsaddle-warp-version: 0.8.2.0+version: 0.8.3.0 cabal-version: >=1.10 build-type: Simple license: MIT@@ -25,18 +25,18 @@ exposed-modules: Language.Javascript.JSaddle.WebSockets build-depends:- aeson >=0.8.0.2 && <1.1,+ aeson >=0.8.0.2 && <1.2, containers >=0.5.6.2 && <0.6, http-types >=0.8.6 && <0.10, jsaddle >=0.8.0.0 && <0.9, stm >=2.4.4 && <2.5, text >=1.2.1.3 && <1.3,- time >=1.5.0.1 && <1.7,+ time >=1.5.0.1 && <1.8, transformers >=0.4.2.0 && <0.6, wai >=3.0.3.0 && <3.3, wai-websockets >=3.0.0.6 && <3.1, warp >=3.1.2 && <3.3,- websockets >=0.9.5.0 && <0.10+ websockets >=0.9.5.0 && <0.11 exposed-modules: Language.Javascript.JSaddle.Warp build-depends:@@ -51,17 +51,30 @@ build-depends: QuickCheck -any,+ aeson -any, bytestring -any,+ containers -any, deepseq -any, doctest >=0.10.1 && <0.12, filepath >=1.4.0.0 && <1.5, ghc-prim -any,+ http-types -any, jsaddle -any, jsaddle-warp -any, lens -any,+ network -any, ref-tf -any, primitive -any,- process >=1.2.3.0 && <1.5+ process >=1.2.3.0 && <1.5,+ stm -any,+ text -any,+ time -any,+ transformers -any,+ wai -any,+ wai-websockets -any,+ warp -any,+ webdriver >=0.8.4 && <0.9,+ websockets -any type: exitcode-stdio-1.0 main-is: DocTest.hs build-depends:
src/Language/Javascript/JSaddle/WebSockets.hs view
@@ -19,7 +19,8 @@ ) where import Control.Monad (forever)-import Control.Concurrent (forkIO)+import Control.Concurrent (forkIO, threadDelay)+import Control.Exception (handle, AsyncException, throwIO, fromException) import Data.Monoid ((<>)) import Data.Aeson (encode, decode)@@ -27,7 +28,7 @@ import Network.Wai (Application) import Network.WebSockets (ConnectionOptions(..), sendTextData, receiveDataMessage,- acceptRequest, ServerApp)+ acceptRequest, ServerApp, sendPing) import qualified Network.WebSockets as WS (DataMessage(..)) import Network.Wai.Handler.WebSockets (websocketsOr) @@ -35,6 +36,7 @@ import qualified Network.Wai as W (responseLBS, requestMethod, Application, pathInfo) import Data.Text (Text)+import qualified Data.Text as T (pack) import qualified Network.HTTP.Types as H (status403, status200, status405) import Language.Javascript.JSaddle.Run (runJavaScript)@@ -55,6 +57,20 @@ Just r -> processResult r _ -> error "jsaddle WebSocket unexpected binary data" start+ waitTillClosed conn++ -- Based on Network.WebSocket.forkPingThread+ waitTillClosed conn = ignore `handle` go 1+ where+ go :: Int -> IO ()+ go i = do+ threadDelay (1 * 1000 * 1000)+ sendPing conn (T.pack $ show i)+ go (i + 1)++ ignore e = case fromException e of+ Just async -> throwIO (async :: AsyncException)+ Nothing -> return () jsaddleApp :: Application jsaddleApp req = jsaddleAppPieces (W.pathInfo req) req
tests/DocTest.hs view
@@ -13,13 +13,16 @@ import System.Process (readProcess, system) import Control.Concurrent (forkIO) import Control.Monad (void)+import Control.Monad.IO.Class (MonadIO(..)) import Data.Monoid ((<>)) import System.Environment (getArgs) import Language.Javascript.JSaddle.Run.Files (jsaddleJs) import qualified Data.ByteString.Lazy.Char8 as BS (unpack)+import Test.WebDriver (runSession, defaultConfig, openPage, closeSession) main :: IO () main = do+ putStrLn "Hello" jsaddlePath <- getArgs >>= \case [arg] -> return arg _ -> do@@ -27,70 +30,70 @@ exitFailure hSetBuffering stdout LineBuffering hSetBuffering stderr LineBuffering- node <- system "nodejs --version" >>= \case- ExitSuccess -> return "nodejs"- _ -> return "node"- system (node <> " --version") >>= \case- ExitSuccess -> putStrLn "Node.js found"+ node <- system "phantomjs --version" >>= \case+ ExitSuccess -> return () e -> do- putStrLn "Node.js not found"+ putStrLn "phantomjs not found" exitWith e- forkIO . void $ readProcess node ["--harmony"] (BS.unpack jsaddleJs) >>= putStr- doctest [- "-hide-all-packages",- "-package=base-" ++ VERSION_base,- "-package=lens-" ++ VERSION_lens,- "-package=text-" ++ VERSION_text,- "-package=bytestring-" ++ VERSION_bytestring,- "-package=transformers-" ++ VERSION_transformers,- "-package=websockets-" ++ VERSION_websockets,- "-package=primitive-" ++ VERSION_primitive,- "-package=aeson-" ++ VERSION_aeson,- "-package=websockets-" ++ VERSION_websockets,- "-package=wai-" ++ VERSION_wai,- "-package=wai-websockets-" ++ VERSION_wai_websockets,- "-package=warp-" ++ VERSION_warp,- "-package=http-types-" ++ VERSION_http_types,- "-package=stm-" ++ VERSION_stm,- "-package=time-" ++ VERSION_time,- "-package=containers-" ++ VERSION_containers,- "-package=process-" ++ VERSION_process,- "-package=filepath-" ++ VERSION_filepath,- "-package=ref-tf-" ++ VERSION_ref_tf,- "-package=deepseq-" ++ VERSION_deepseq,- "-package=ghc-prim-" ++ VERSION_ghc_prim,- "-i" <> jsaddlePath </> "jsaddle-warp/src",- "-i" <> jsaddlePath </> "jsaddle-warp/src-ghc",- jsaddlePath </> "jsaddle-warp/src/Language/Javascript/JSaddle/Test.hs",- "-i" <> jsaddlePath </> "jsaddle",- jsaddlePath </> "jsaddle/src-ghc/Data/JSString/Text.hs",- jsaddlePath </> "jsaddle/src-ghc/Data/JSString/Internal/Type.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Foreign.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Foreign/Internal.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Internal/Types.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Marshal.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Marshal/Pure.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Marshal/Internal.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Prim.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Prim/Internal.hs",- jsaddlePath </> "jsaddle/src-ghc/GHCJS/Types.hs",- jsaddlePath </> "jsaddle/src-ghc/JavaScript/Array.hs",- jsaddlePath </> "jsaddle/src-ghc/JavaScript/Array/Internal.hs",- jsaddlePath </> "jsaddle/src-ghc/JavaScript/Object/Internal.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Arguments.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Classes.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Classes/Internal.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Evaluate.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Exception.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Monad.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Marshal/String.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Native.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Native/Internal.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Object.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Properties.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Run.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Run/Files.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/String.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Types.hs",- jsaddlePath </> "jsaddle/src/Language/Javascript/JSaddle/Value.hs" ]+ forkIO . void $ readProcess "phantomjs" ["--webdriver=4444"] (BS.unpack jsaddleJs) >>= putStr+ runSession defaultConfig $ do+ openPage "http://localhost:3709"+ liftIO $ doctest [+ "-hide-all-packages",+ "-package=base-" ++ VERSION_base,+ "-package=lens-" ++ VERSION_lens,+ "-package=text-" ++ VERSION_text,+ "-package=bytestring-" ++ VERSION_bytestring,+ "-package=transformers-" ++ VERSION_transformers,+ "-package=websockets-" ++ VERSION_websockets,+ "-package=primitive-" ++ VERSION_primitive,+ "-package=aeson-" ++ VERSION_aeson,+ "-package=websockets-" ++ VERSION_websockets,+ "-package=wai-" ++ VERSION_wai,+ "-package=wai-websockets-" ++ VERSION_wai_websockets,+ "-package=warp-" ++ VERSION_warp,+ "-package=http-types-" ++ VERSION_http_types,+ "-package=stm-" ++ VERSION_stm,+ "-package=time-" ++ VERSION_time,+ "-package=containers-" ++ VERSION_containers,+ "-package=process-" ++ VERSION_process,+ "-package=filepath-" ++ VERSION_filepath,+ "-package=ref-tf-" ++ VERSION_ref_tf,+ "-package=deepseq-" ++ VERSION_deepseq,+ "-package=ghc-prim-" ++ VERSION_ghc_prim,+ "-i" <> "src",+ "-i" <> "src-ghc",+ "src/Language/Javascript/JSaddle/Test.hs",+ "-i" <> jsaddlePath,+ jsaddlePath </> "src-ghc/Data/JSString/Text.hs",+ jsaddlePath </> "src-ghc/Data/JSString/Internal/Type.hs",+ jsaddlePath </> "src-ghc/GHCJS/Foreign.hs",+ jsaddlePath </> "src-ghc/GHCJS/Foreign/Internal.hs",+ jsaddlePath </> "src-ghc/GHCJS/Internal/Types.hs",+ jsaddlePath </> "src-ghc/GHCJS/Marshal.hs",+ jsaddlePath </> "src-ghc/GHCJS/Marshal/Pure.hs",+ jsaddlePath </> "src-ghc/GHCJS/Marshal/Internal.hs",+ jsaddlePath </> "src-ghc/GHCJS/Prim.hs",+ jsaddlePath </> "src-ghc/GHCJS/Prim/Internal.hs",+ jsaddlePath </> "src-ghc/GHCJS/Types.hs",+ jsaddlePath </> "src-ghc/JavaScript/Array.hs",+ jsaddlePath </> "src-ghc/JavaScript/Array/Internal.hs",+ jsaddlePath </> "src-ghc/JavaScript/Object/Internal.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Arguments.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Classes.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Classes/Internal.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Evaluate.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Exception.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Monad.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Marshal/String.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Native.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Native/Internal.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Object.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Properties.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Run.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Run/Files.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/String.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Types.hs",+ jsaddlePath </> "src/Language/Javascript/JSaddle/Value.hs" ]+ closeSession