{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ReadableStreamBYOBRequest
       (newReadableStreamBYOBRequest, respond, respondWithNewView,
        getView, ReadableStreamBYOBRequest(..),
        gTypeReadableStreamBYOBRequest)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest Mozilla ReadableStreamBYOBRequest documentation> 
newReadableStreamBYOBRequest ::
                             (MonadDOM m, IsRawTypedArray view) =>
                               ReadableByteStreamController -> view -> m ReadableStreamBYOBRequest
newReadableStreamBYOBRequest :: ReadableByteStreamController -> view -> m ReadableStreamBYOBRequest
newReadableStreamBYOBRequest ReadableByteStreamController
controller view
view
  = DOM ReadableStreamBYOBRequest -> m ReadableStreamBYOBRequest
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> ReadableStreamBYOBRequest
ReadableStreamBYOBRequest (JSVal -> ReadableStreamBYOBRequest)
-> JSM JSVal -> DOM ReadableStreamBYOBRequest
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"ReadableStreamBYOBRequest")
           [ReadableByteStreamController -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ReadableByteStreamController
controller, view -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal view
view])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respond Mozilla ReadableStreamBYOBRequest.respond documentation> 
respond ::
        (MonadDOM m, ToJSVal bytesWritten) =>
          ReadableStreamBYOBRequest -> Maybe bytesWritten -> m ()
respond :: ReadableStreamBYOBRequest -> Maybe bytesWritten -> m ()
respond ReadableStreamBYOBRequest
self Maybe bytesWritten
bytesWritten
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ReadableStreamBYOBRequest
self ReadableStreamBYOBRequest
-> Getting (JSM JSVal) ReadableStreamBYOBRequest (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"respond" [Maybe bytesWritten -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe bytesWritten
bytesWritten]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respondWithNewView Mozilla ReadableStreamBYOBRequest.respondWithNewView documentation> 
respondWithNewView ::
                   (MonadDOM m, ToJSVal view) =>
                     ReadableStreamBYOBRequest -> Maybe view -> m ()
respondWithNewView :: ReadableStreamBYOBRequest -> Maybe view -> m ()
respondWithNewView ReadableStreamBYOBRequest
self Maybe view
view
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ReadableStreamBYOBRequest
self ReadableStreamBYOBRequest
-> Getting (JSM JSVal) ReadableStreamBYOBRequest (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"respondWithNewView" [Maybe view -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe view
view]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.view Mozilla ReadableStreamBYOBRequest.view documentation> 
getView ::
        (MonadDOM m) => ReadableStreamBYOBRequest -> m RawTypedArray
getView :: ReadableStreamBYOBRequest -> m RawTypedArray
getView ReadableStreamBYOBRequest
self = DOM RawTypedArray -> m RawTypedArray
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ReadableStreamBYOBRequest
self ReadableStreamBYOBRequest
-> Getting (JSM JSVal) ReadableStreamBYOBRequest (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char]
-> IndexPreservingGetter ReadableStreamBYOBRequest (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"view") JSM JSVal -> (JSVal -> DOM RawTypedArray) -> DOM RawTypedArray
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM RawTypedArray
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)