on master help sign in
Fix GHCJS build and warnings
bfb639eHamish Mackenzie
jsaddle-warp/jsaddle-warp.cabal+1−1
@@ -1,5 +1,5 @@
1name: jsaddle-warp
1name: jsaddle-warp
2−version: 0.6.0.0
2+version: 0.6.0.1
3cabal-version: >=1.10
3cabal-version: >=1.10
4build-type: Simple
4build-type: Simple
5license: MIT
5license: MIT
jsaddle-warp/src/Language/Javascript/JSaddle/Warp.hs+4−2
@@ -18,25 +18,27 @@ module Language.Javascript.JSaddle.Warp (
18 run
18 run
19#ifndef ghcjs_HOST_OS
19#ifndef ghcjs_HOST_OS
20 , jsaddleOr
20 , jsaddleOr
21+ , jsaddleApp
21#endif
22#endif
22) where
23) where
23
24
24−import Language.Javascript.JSaddle.Types (JSM)
25#ifndef ghcjs_HOST_OS
25#ifndef ghcjs_HOST_OS
26import Network.Wai.Handler.Warp
26import Network.Wai.Handler.Warp
27 (defaultSettings, setTimeout, setPort, runSettings)
27 (defaultSettings, setTimeout, setPort, runSettings)
28import Network.WebSockets (defaultConnectionOptions)
28import Network.WebSockets (defaultConnectionOptions)
29
29
30+import Language.Javascript.JSaddle.Types (JSM)
30import Language.Javascript.JSaddle.Run (syncPoint)
31import Language.Javascript.JSaddle.Run (syncPoint)
31import Language.Javascript.JSaddle.WebSockets (jsaddleOr, jsaddleApp)
32import Language.Javascript.JSaddle.WebSockets (jsaddleOr, jsaddleApp)
32#endif
33#endif
33
34
34-- | Run the given 'JSM' action as the main entry point. Either directly
35-- | Run the given 'JSM' action as the main entry point. Either directly
35-- in GHCJS or as a Warp server on the given port on GHC.
36-- in GHCJS or as a Warp server on the given port on GHC.
36−run :: Int -> JSM () -> IO ()
37#ifdef ghcjs_HOST_OS
37#ifdef ghcjs_HOST_OS
38+run :: Int -> IO () -> IO ()
38run _port = id
39run _port = id
39#else
40#else
41+run :: Int -> JSM () -> IO ()
40run port f =
42run port f =
41 runSettings (setPort port (setTimeout 3600 defaultSettings)) $
43 runSettings (setPort port (setTimeout 3600 defaultSettings)) $
42 jsaddleOr defaultConnectionOptions (f >> syncPoint) jsaddleApp
44 jsaddleOr defaultConnectionOptions (f >> syncPoint) jsaddleApp
jsaddle/jsaddle.cabal+2−2
@@ -1,5 +1,5 @@
1name: jsaddle
1name: jsaddle
2−version: 0.6.0.0
2+version: 0.6.0.1
3cabal-version: >=1.10
3cabal-version: >=1.10
4build-type: Simple
4build-type: Simple
5license: MIT
5license: MIT
@@ -27,7 +27,6 @@ library
27 else
27 else
28 build-depends:
28 build-depends:
29 aeson >=0.8.0.2 && <1.1,
29 aeson >=0.8.0.2 && <1.1,
30− bytestring >=0.10.6.0 && <0.11,
31 containers >=0.5.6.2 && <0.6,
30 containers >=0.5.6.2 && <0.6,
32 filepath >=1.4.0.0 && <1.5,
31 filepath >=1.4.0.0 && <1.5,
33 http-types >=0.8.6 && <0.10,
32 http-types >=0.8.6 && <0.10,
@@ -52,6 +51,7 @@ library
52 Language.Javascript.JSaddle.Types
51 Language.Javascript.JSaddle.Types
53 build-depends:
52 build-depends:
54 base <5,
53 base <5,
54+ bytestring >=0.10.6.0 && <0.11,
55 lens >=3.8.5 && <4.16,
55 lens >=3.8.5 && <4.16,
56 primitive >=0.6.1.0 && <0.7,
56 primitive >=0.6.1.0 && <0.7,
57 template-haskell -any,
57 template-haskell -any,
jsaddle/src/Language/Javascript/JSaddle/Evaluate.hs+1−2
@@ -2,6 +2,7 @@
2{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE FlexibleInstances #-}
3#ifdef ghcjs_HOST_OS
3#ifdef ghcjs_HOST_OS
4{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
4{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
5+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
5#endif
6#endif
6-----------------------------------------------------------------------------
7-----------------------------------------------------------------------------
7--
8--
@@ -23,8 +24,6 @@ module Language.Javascript.JSaddle.Evaluate (
23import Language.Javascript.JSaddle.Types (JSVal)
24import Language.Javascript.JSaddle.Types (JSVal)
24#ifdef ghcjs_HOST_OS
25#ifdef ghcjs_HOST_OS
25import Control.Monad.IO.Class (MonadIO(..))
26import Control.Monad.IO.Class (MonadIO(..))
26−import GHCJS.Types (nullRef)
27−import GHCJS.Marshal.Pure (pFromJSVal)
28import Language.Javascript.JSaddle.Types (JSString)
27import Language.Javascript.JSaddle.Types (JSString)
29#else
28#else
30import Language.Javascript.JSaddle.Native
29import Language.Javascript.JSaddle.Native
jsaddle/src/Language/Javascript/JSaddle/Monad.hs+5
@@ -1,5 +1,8 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE PatternSynonyms #-}
2{-# LANGUAGE PatternSynonyms #-}
3+#ifdef ghcjs_HOST_OS
4+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
5+#endif
3-----------------------------------------------------------------------------
6-----------------------------------------------------------------------------
4--
7--
5-- Module : Language.Javascript.JSaddle.Monad
8-- Module : Language.Javascript.JSaddle.Monad
@@ -36,7 +39,9 @@ module Language.Javascript.JSaddle.Monad (
36) where
39) where
37
40
38import Prelude hiding (read)
41import Prelude hiding (read)
42+#ifndef ghcjs_HOST_OS
39import Control.Monad.Trans.Reader (runReaderT, ask, ReaderT(..))
43import Control.Monad.Trans.Reader (runReaderT, ask, ReaderT(..))
44+#endif
40import Control.Monad.IO.Class (MonadIO(..))
45import Control.Monad.IO.Class (MonadIO(..))
41import qualified Control.Exception as E (Exception, catch, bracket)
46import qualified Control.Exception as E (Exception, catch, bracket)
42import Language.Javascript.JSaddle.Types (JSM(..), MonadJSM, liftJSM, JSContextRef(..))
47import Language.Javascript.JSaddle.Types (JSM(..), MonadJSM, liftJSM, JSContextRef(..))
jsaddle/src/Language/Javascript/JSaddle/Object.hs+9−6
@@ -6,6 +6,7 @@
6#ifdef ghcjs_HOST_OS
6#ifdef ghcjs_HOST_OS
7{-# LANGUAGE ForeignFunctionInterface #-}
7{-# LANGUAGE ForeignFunctionInterface #-}
8{-# LANGUAGE JavaScriptFFI #-}
8{-# LANGUAGE JavaScriptFFI #-}
9+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
9#endif
10#endif
10{-# OPTIONS_GHC -fno-warn-orphans #-}
11{-# OPTIONS_GHC -fno-warn-orphans #-}
11-----------------------------------------------------------------------------
12-----------------------------------------------------------------------------
@@ -91,11 +92,7 @@ module Language.Javascript.JSaddle.Object (
91
92
92import Control.Applicative
93import Control.Applicative
93import Prelude hiding ((!!))
94import Prelude hiding ((!!))
94−import Language.Javascript.JSaddle.Types
95− (JSString, Object(..),
96− JSVal(..), JSCallAsFunction, JSContextRef(..))
97#ifdef ghcjs_HOST_OS
95#ifdef ghcjs_HOST_OS
98−import Control.Monad.Trans.Reader (runReaderT)
99import GHCJS.Types (nullRef, jsval)
96import GHCJS.Types (nullRef, jsval)
100import GHCJS.Foreign.Callback
97import GHCJS.Foreign.Callback
101 (releaseCallback, syncCallback2, OnBlocked(..), Callback)
98 (releaseCallback, syncCallback2, OnBlocked(..), Callback)
@@ -104,19 +101,25 @@ import JavaScript.Array (JSArray, MutableJSArray)
104import qualified JavaScript.Array as Array (toListIO, fromListIO)
101import qualified JavaScript.Array as Array (toListIO, fromListIO)
105import JavaScript.Array.Internal (SomeJSArray(..))
102import JavaScript.Array.Internal (SomeJSArray(..))
106import qualified JavaScript.Object as Object (create)
103import qualified JavaScript.Object as Object (create)
107−import Control.Monad (liftM)
108import Data.Coerce (coerce)
104import Data.Coerce (coerce)
105+import Language.Javascript.JSaddle.Monad (JSM)
106+import Language.Javascript.JSaddle.Types
107+ (JSString, Object(..),
108+ JSVal(..), JSCallAsFunction)
109#else
109#else
110import Language.Javascript.JSaddle.Native
110import Language.Javascript.JSaddle.Native
111 (wrapJSString, withJSVals, withObject)
111 (wrapJSString, withJSVals, withObject)
112import Language.Javascript.JSaddle.Run
112import Language.Javascript.JSaddle.Run
113 (Command(..), AsyncCommand(..), Result(..), sendCommand, sendLazyCommand)
113 (Command(..), AsyncCommand(..), Result(..), sendCommand, sendLazyCommand)
114+import Language.Javascript.JSaddle.Monad (askJSM, JSM)
115+import Language.Javascript.JSaddle.Types
116+ (JSString, Object(..),
117+ JSVal(..), JSCallAsFunction, JSContextRef(..))
114#endif
118#endif
115import Language.Javascript.JSaddle.Value (valToObject)
119import Language.Javascript.JSaddle.Value (valToObject)
116import Language.Javascript.JSaddle.Classes
120import Language.Javascript.JSaddle.Classes
117 (ToJSVal(..), ToJSString(..), MakeObject(..))
121 (ToJSVal(..), ToJSString(..), MakeObject(..))
118import Language.Javascript.JSaddle.Arguments (MakeArgs(..))
122import Language.Javascript.JSaddle.Arguments (MakeArgs(..))
119−import Language.Javascript.JSaddle.Monad (askJSM, JSM)
120import Control.Monad.IO.Class (MonadIO(..))
123import Control.Monad.IO.Class (MonadIO(..))
121import Language.Javascript.JSaddle.Properties
124import Language.Javascript.JSaddle.Properties
122import Control.Lens (IndexPreservingGetter, to)
125import Control.Lens (IndexPreservingGetter, to)
jsaddle/src/Language/Javascript/JSaddle/Run.hs+2−2
@@ -15,13 +15,13 @@
15
15
16module Language.Javascript.JSaddle.Run (
16module Language.Javascript.JSaddle.Run (
17 -- * Running JSM
17 -- * Running JSM
18− runJavaScript
19− , syncPoint
18+ syncPoint
20 , syncAfter
19 , syncAfter
21 , waitForAnimationFrame
20 , waitForAnimationFrame
22 , nextAnimationFrame
21 , nextAnimationFrame
23#ifndef ghcjs_HOST_OS
22#ifndef ghcjs_HOST_OS
24 -- * Functions used to implement JSaddle using JSON messaging
23 -- * Functions used to implement JSaddle using JSON messaging
24+ , runJavaScript
25 , AsyncCommand(..)
25 , AsyncCommand(..)
26 , Command(..)
26 , Command(..)
27 , Result(..)
27 , Result(..)
jsaddle/src/Language/Javascript/JSaddle/String.hs+3−2
@@ -1,6 +1,9 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE TypeSynonymInstances #-}
3{-# LANGUAGE TypeSynonymInstances #-}
4+#ifdef ghcjs_HOST_OS
5+{-# OPTIONS_GHC -Wno-dodgy-imports #-}
6+#endif
4-----------------------------------------------------------------------------
7-----------------------------------------------------------------------------
5--
8--
6-- Module : Language.Javascript.JSaddle.String
9-- Module : Language.Javascript.JSaddle.String
@@ -26,8 +29,6 @@ import Data.Text (Text)
26import Language.Javascript.JSaddle.Types (JSString(..))
29import Language.Javascript.JSaddle.Types (JSString(..))
27#ifdef ghcjs_HOST_OS
30#ifdef ghcjs_HOST_OS
28import Data.JSString.Text (textFromJSString, textToJSString)
31import Data.JSString.Text (textFromJSString, textToJSString)
29−import GHCJS.Marshal.Internal (PFromJSVal(..))
30−import GHCJS.Types (nullRef)
31#endif
32#endif
32import Language.Javascript.JSaddle.Classes (ToJSString(..))
33import Language.Javascript.JSaddle.Classes (ToJSString(..))
33
34
jsaddle/src/Language/Javascript/JSaddle/Types.hs+1−3
@@ -1,6 +1,7 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2#ifdef ghcjs_HOST_OS
2#ifdef ghcjs_HOST_OS
3{-# LANGUAGE ConstraintKinds #-}
3{-# LANGUAGE ConstraintKinds #-}
4+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
4#else
5#else
5{-# LANGUAGE TypeFamilies #-}
6{-# LANGUAGE TypeFamilies #-}
6{-# LANGUAGE UndecidableInstances #-}
7{-# LANGUAGE UndecidableInstances #-}
@@ -55,7 +56,6 @@ import Control.Monad.IO.Class (MonadIO(..))
55import GHCJS.Types
56import GHCJS.Types
56import JavaScript.Object.Internal (Object(..))
57import JavaScript.Object.Internal (Object(..))
57import JavaScript.Array (MutableJSArray)
58import JavaScript.Array (MutableJSArray)
58−import Data.Word (Word(..))
59import GHCJS.Nullable (Nullable(..))
59import GHCJS.Nullable (Nullable(..))
60#else
60#else
61import Control.Monad.Trans.Reader (ReaderT(..))
61import Control.Monad.Trans.Reader (ReaderT(..))
@@ -101,8 +101,6 @@ data JSContextRef = JSContextRef {
101-- > runJSM jsmFunction javaScriptContext
101-- > runJSM jsmFunction javaScriptContext
102#ifdef ghcjs_HOST_OS
102#ifdef ghcjs_HOST_OS
103type JSM = IO
103type JSM = IO
104−runJSM :: JSM a -> JSContextRef -> IO a
105−runJSM f = const f
106#else
104#else
107newtype JSM a = JSM { unJSM :: ReaderT JSContextRef IO a }
105newtype JSM a = JSM { unJSM :: ReaderT JSContextRef IO a }
108 deriving (Functor, Applicative, Monad, MonadIO, MonadFix)
106 deriving (Functor, Applicative, Monad, MonadIO, MonadFix)
jsaddle/src/Language/Javascript/JSaddle/Value.hs+5−4
@@ -5,6 +5,7 @@
5{-# LANGUAGE LambdaCase #-}
5{-# LANGUAGE LambdaCase #-}
6#ifdef ghcjs_HOST_OS
6#ifdef ghcjs_HOST_OS
7{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
7{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
8+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
8#endif
9#endif
9{-# OPTIONS_GHC -fno-warn-orphans #-}
10{-# OPTIONS_GHC -fno-warn-orphans #-}
10-----------------------------------------------------------------------------
11-----------------------------------------------------------------------------
@@ -74,14 +75,14 @@ import Language.Javascript.JSaddle.Types
74 (Object(..), JSString(..), JSVal(..))
75 (Object(..), JSString(..), JSVal(..))
75#ifdef ghcjs_HOST_OS
76#ifdef ghcjs_HOST_OS
76import Control.Monad.IO.Class (MonadIO(..))
77import Control.Monad.IO.Class (MonadIO(..))
77−import Language.Javascript.JSaddle.Types
78− (MutableJSArray)
79−import GHCJS.Types (JSVal(..), isNull, isUndefined)
78+import GHCJS.Types (isNull, isUndefined)
80import GHCJS.Foreign (toJSBool, isTruthy, jsNull, jsUndefined)
79import GHCJS.Foreign (toJSBool, isTruthy, jsNull, jsUndefined)
81import qualified GHCJS.Marshal as GHCJS (toJSVal)
80import qualified GHCJS.Marshal as GHCJS (toJSVal)
82import GHCJS.Marshal.Pure (pToJSVal)
81import GHCJS.Marshal.Pure (pToJSVal)
83import Data.JSString.Text (textToJSString)
82import Data.JSString.Text (textToJSString)
83+import qualified Data.Text as T (pack)
84#else
84#else
85+import qualified Data.Text as T (pack, unpack)
85import Language.Javascript.JSaddle.Native
86import Language.Javascript.JSaddle.Native
86 (wrapJSString, withJSVal, withObject, withJSString,
87 (wrapJSString, withJSVal, withObject, withJSString,
87 withToJSVal)
88 withToJSVal)
@@ -91,7 +92,6 @@ import Language.Javascript.JSaddle.Run
91#endif
92#endif
92import Language.Javascript.JSaddle.Monad (JSM)
93import Language.Javascript.JSaddle.Monad (JSM)
93import Data.Text (Text)
94import Data.Text (Text)
94−import qualified Data.Text as T (pack, unpack)
95import Language.Javascript.JSaddle.Classes
95import Language.Javascript.JSaddle.Classes
96 (MakeObject(..), ToJSString(..), ToJSVal(..))
96 (MakeObject(..), ToJSString(..), ToJSVal(..))
97import Language.Javascript.JSaddle.String (strToText, textToStr)
97import Language.Javascript.JSaddle.String (strToText, textToStr)
@@ -550,6 +550,7 @@ deRefVal value = do
550 3 -> ValNumber <$> valToNumber valref
550 3 -> ValNumber <$> valToNumber valref
551 4 -> ValString <$> valToText valref
551 4 -> ValString <$> valToText valref
552 5 -> ValObject <$> valToObject valref
552 5 -> ValObject <$> valToObject valref
553+ _ -> error "Unexpected result dereferencing JSaddle value"
553foreign import javascript unsafe "$r = ($1 === undefined)?0:\
554foreign import javascript unsafe "$r = ($1 === undefined)?0:\
554 ($1===null)?1:\
555 ($1===null)?1:\
555 (typeof $1===\"boolean\")?2:\
556 (typeof $1===\"boolean\")?2:\