jsaddle-dom 0.9.1.0 → 0.9.2.0
raw patch · 4 files changed
+22/−110 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- JSDOM.Custom.RTCPeerConnection: createAnswer :: MonadDOM m => RTCPeerConnection -> Maybe RTCAnswerOptions -> m RTCSessionDescription
- JSDOM.Custom.RTCPeerConnection: createOffer :: MonadDOM m => RTCPeerConnection -> Maybe RTCOfferOptions -> m RTCSessionDescription
+ JSDOM.Types: PromiseRejected :: JSVal -> PromiseRejected
+ JSDOM.Types: [rejectionReason] :: PromiseRejected -> JSVal
+ JSDOM.Types: newtype PromiseRejected
+ JSDOM.Types: noPromiseRejected :: Maybe PromiseRejected
Files
- jsaddle-dom.cabal +2/−3
- src/JSDOM.hs +19/−5
- src/JSDOM/Custom/RTCPeerConnection.hs +0/−101
- src/JSDOM/Types.hs +1/−1
jsaddle-dom.cabal view
@@ -1,5 +1,5 @@ name: jsaddle-dom-version: 0.9.1.0+version: 0.9.2.0 cabal-version: >=1.22 build-type: Simple license: MIT@@ -31,7 +31,6 @@ JSDOM.Custom.Navigator JSDOM.Custom.NavigatorUserMediaError JSDOM.Custom.PositionError- JSDOM.Custom.RTCPeerConnection JSDOM.Custom.RTCPeerConnectionError JSDOM.Custom.SQLError JSDOM.Custom.SQLTransaction@@ -632,7 +631,6 @@ JSDOM.Custom.Navigator as JSDOM.Navigator, JSDOM.Custom.NavigatorUserMediaError as JSDOM.NavigatorUserMediaError, JSDOM.Custom.PositionError as JSDOM.PositionError,- JSDOM.Custom.RTCPeerConnection as JSDOM.RTCPeerConnection, JSDOM.Custom.RTCPeerConnectionError as JSDOM.RTCPeerConnectionError, JSDOM.Custom.SQLError as JSDOM.SQLError, JSDOM.Custom.SQLTransaction as JSDOM.SQLTransaction,@@ -952,6 +950,7 @@ JSDOM.Generated.RTCIceCandidate as JSDOM.RTCIceCandidate, JSDOM.Generated.RTCIceCandidateEvent as JSDOM.RTCIceCandidateEvent, JSDOM.Generated.RTCIceTransport as JSDOM.RTCIceTransport,+ JSDOM.Generated.RTCPeerConnection as JSDOM.RTCPeerConnection, JSDOM.Generated.RTCPeerConnectionIceEvent as JSDOM.RTCPeerConnectionIceEvent, JSDOM.Generated.RTCRtpReceiver as JSDOM.RTCRtpReceiver, JSDOM.Generated.RTCRtpSender as JSDOM.RTCRtpSender,
src/JSDOM.hs view
@@ -1,4 +1,7 @@-{-# LANGUAGE OverloadedStrings, PatternSynonyms, RecursiveDo #-}+{-# LANGUAGE CPP, OverloadedStrings, PatternSynonyms #-}+#ifndef ghcjs_HOST_OS+{-# LANGUAGE RecursiveDo #-}+#endif module JSDOM ( currentWindow , currentWindowUnchecked@@ -15,13 +18,15 @@ , bracket ) where +#ifdef ghcjs_HOST_OS+import JSDOM.Types+ (FromJSVal(..), MonadDOM, liftDOM, Document(..), Window(..), JSM)+import Language.Javascript.JSaddle.Object (jsg)+import JavaScript.Web.AnimationFrame (AnimationFrameHandle, inAnimationFrame)+#else import Control.Monad (void, forM_, when) import Control.Monad.IO.Class (MonadIO(..)) import Control.Concurrent.MVar (putMVar, takeMVar)-import GHCJS.Concurrent (OnBlocked(..))-import Language.Javascript.JSaddle- (syncPoint, syncAfter, waitForAnimationFrame,- nextAnimationFrame, catch, bracket) import Language.Javascript.JSaddle.Types (JSContextRef(..)) import Language.Javascript.JSaddle.Object (freeFunction, jsg) import Language.Javascript.JSaddle.Monad (askJSM)@@ -31,6 +36,11 @@ import JSDOM.Generated.RequestAnimationFrameCallback (newRequestAnimationFrameCallbackSync) import JSDOM.Generated.Window (requestAnimationFrame)+#endif+import GHCJS.Concurrent (OnBlocked(..))+import Language.Javascript.JSaddle+ (syncPoint, syncAfter, waitForAnimationFrame,+ nextAnimationFrame, catch, bracket) currentWindow :: MonadDOM m => m (Maybe Window) currentWindow = liftDOM $ jsg ("window" :: String) >>= fromJSVal@@ -44,6 +54,8 @@ currentDocumentUnchecked :: MonadDOM m => m Document currentDocumentUnchecked = liftDOM $ jsg ("document" :: String) >>= fromJSValUnchecked +#ifndef ghcjs_HOST_OS+ data AnimationFrameHandle = AnimationFrameHandle {- |@@ -67,6 +79,8 @@ void $ requestAnimationFrame win cb liftIO $ putMVar handlersMVar (f : handlers) return AnimationFrameHandle++#endif {- | Run the action in an animationframe callback. The action runs in a
− src/JSDOM/Custom/RTCPeerConnection.hs
@@ -1,101 +0,0 @@-module JSDOM.Custom.RTCPeerConnection (- module GeneratedExport- , createOffer- , createAnswer-) where--import Data.Maybe (fromJust)--import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)-import Control.Monad.IO.Class (MonadIO(..))--import JSDOM.Types- (RTCIceCandidate(..),- withCallback, Callback(..), RTCSessionDescription(..), DOMError(..),- Dictionary(..), RTCPeerConnection(..), MonadDOM,- RTCSessionDescriptionCallback(..),- RTCPeerConnectionErrorCallback(..),- RTCStatsCallback(..), VoidCallback(..), RTCOfferOptions, RTCAnswerOptions)--import JSDOM.Custom.DOMError (throwDOMErrorException)----import JSDOM.Generated.RTCSessionDescriptionCallback--- (newRTCSessionDescriptionCallback)---import JSDOM.Generated.RTCPeerConnectionErrorCallback--- (newRTCPeerConnectionErrorCallback)---import JSDOM.Generated.VoidCallback--- (newVoidCallback)---import JSDOM.Generated.RTCStatsCallback--- (newRTCStatsCallback)--import JSDOM.Generated.RTCSessionDescription- (newRTCSessionDescription)-import qualified- JSDOM.Generated.RTCPeerConnection- as Generated- (createAnswer, createOffer)-import JSDOM.Generated.RTCPeerConnection- as GeneratedExport hiding- (createAnswer, createOffer)------ | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#createOffer Mozilla webkitRTCPeerConnection.createOffer documentation>---createOffer' :: MonadDOM m => RTCPeerConnection -> Maybe Dictionary -> m (Either DOMError RTCSessionDescription)---createOffer' self offerOptions = do--- result <- liftIO newEmptyMVar--- withCallback (newRTCSessionDescriptionCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->--- withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do--- Generated.createOffer self (Just success) (Just error) offerOptions--- liftIO $ takeMVar result--createOffer :: MonadDOM m => RTCPeerConnection -> Maybe RTCOfferOptions -> m RTCSessionDescription-createOffer self offerOptions = Generated.createOffer self offerOptions >>= newRTCSessionDescription------ | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation>---createAnswer' :: MonadDOM m => RTCPeerConnection -> Maybe Dictionary -> m (Either DOMError RTCSessionDescription)---createAnswer' self answerOptions = do--- result <- liftIO newEmptyMVar--- withCallback (newRTCSessionDescriptionCallback (liftIO . putMVar result . Right . fromJust)) $ \success ->--- withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result . Left . fromJust)) $ \error -> do--- Generated.createAnswer self (Just success) (Just error) answerOptions--- liftIO $ takeMVar result--createAnswer :: MonadDOM m => RTCPeerConnection -> Maybe RTCAnswerOptions -> m RTCSessionDescription-createAnswer self answerOptions = Generated.createAnswer self answerOptions >>= newRTCSessionDescription------ | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation>---setLocalDescription' :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m (Maybe DOMError)---setLocalDescription' self description = do--- result <- liftIO newEmptyMVar--- withCallback (newVoidCallback (liftIO $ putMVar result Nothing)) $ \success ->--- withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result)) $ \error -> do--- Generated.setLocalDescription self (Just description) (Just success) (Just error)--- liftIO $ takeMVar result------setLocalDescription :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m ()---setLocalDescription self description = setLocalDescription' self description >>= maybe (return ()) throwDOMErrorException-------- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation>---setRemoteDescription' :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m (Maybe DOMError)---setRemoteDescription' self description = do--- result <- liftIO newEmptyMVar--- withCallback (newVoidCallback (liftIO $ putMVar result Nothing)) $ \success ->--- withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result)) $ \error -> do--- Generated.setRemoteDescription self (Just description) (Just success) (Just error)--- liftIO $ takeMVar result------setRemoteDescription :: MonadDOM m => RTCPeerConnection -> RTCSessionDescription -> m ()---setRemoteDescription self description = setRemoteDescription' self description >>= maybe (return ()) throwDOMErrorException-------- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation>---addIceCandidate' :: MonadDOM m => RTCPeerConnection -> RTCIceCandidate -> m (Maybe DOMError)---addIceCandidate' self candidate = do--- result <- liftIO newEmptyMVar--- withCallback (newVoidCallback (liftIO $ putMVar result Nothing)) $ \success ->--- withCallback (newRTCPeerConnectionErrorCallback (liftIO . putMVar result)) $ \error -> do--- Generated.addIceCandidate self (Just candidate) (Just success) (Just error)--- liftIO $ takeMVar result------addIceCandidate :: MonadDOM m => RTCPeerConnection -> RTCIceCandidate -> m ()---addIceCandidate self candidate = addIceCandidate' self candidate >>= maybe (return ()) throwDOMErrorException----
src/JSDOM/Types.hs view
@@ -52,7 +52,7 @@ , Function(Function), unFunction, IsFunction, toFunction, noFunction -- * Promise- , readPromise+ , PromiseRejected(..), noPromiseRejected, readPromise -- * Callbacks , Callback(..)