{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ReadableStream
       (newReadableStream, cancel, cancel_, getReader, getReader_, pipeTo,
        pipeTo_, pipeThrough, pipeThrough_, tee, tee_, getLocked,
        ReadableStream(..), gTypeReadableStream)
       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/ReadableStream Mozilla ReadableStream documentation> 
newReadableStream ::
                  (MonadDOM m, ToJSVal underlyingSource, ToJSVal options) =>
                    Maybe underlyingSource -> Maybe options -> m ReadableStream
newReadableStream :: forall (m :: * -> *) underlyingSource options.
(MonadDOM m, ToJSVal underlyingSource, ToJSVal options) =>
Maybe underlyingSource -> Maybe options -> m ReadableStream
newReadableStream Maybe underlyingSource
underlyingSource Maybe options
options
  = DOM ReadableStream -> m ReadableStream
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> ReadableStream
ReadableStream (JSVal -> ReadableStream) -> JSM JSVal -> DOM ReadableStream
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 (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"ReadableStream")
           [Maybe underlyingSource -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe underlyingSource
underlyingSource, Maybe options -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe options
options])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
cancel ::
       (MonadDOM m, ToJSVal reason) =>
         ReadableStream -> Maybe reason -> m JSVal
cancel :: forall (m :: * -> *) reason.
(MonadDOM m, ToJSVal reason) =>
ReadableStream -> Maybe reason -> m JSVal
cancel ReadableStream
self Maybe reason
reason
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"cancel" [Maybe reason -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe reason
reason]) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
getReader ::
          (MonadDOM m, ToJSVal options) =>
            ReadableStream -> Maybe options -> m GObject
getReader :: forall (m :: * -> *) options.
(MonadDOM m, ToJSVal options) =>
ReadableStream -> Maybe options -> m GObject
getReader ReadableStream
self Maybe options
options
  = DOM GObject -> m GObject
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getReader" [Maybe options -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe options
options]) JSM JSVal -> (JSVal -> DOM GObject) -> DOM GObject
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM GObject
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
pipeTo ::
       (MonadDOM m, ToJSVal streams, ToJSVal options) =>
         ReadableStream -> streams -> Maybe options -> m JSVal
pipeTo :: forall (m :: * -> *) streams options.
(MonadDOM m, ToJSVal streams, ToJSVal options) =>
ReadableStream -> streams -> Maybe options -> m JSVal
pipeTo ReadableStream
self streams
streams Maybe options
options
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"pipeTo" [streams -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal streams
streams, Maybe options -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe options
options]) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
pipeThrough ::
            (MonadDOM m, ToJSVal dest, ToJSVal options) =>
              ReadableStream -> dest -> options -> m GObject
pipeThrough :: forall (m :: * -> *) dest options.
(MonadDOM m, ToJSVal dest, ToJSVal options) =>
ReadableStream -> dest -> options -> m GObject
pipeThrough ReadableStream
self dest
dest options
options
  = DOM GObject -> m GObject
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"pipeThrough" [dest -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal dest
dest, options -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal options
options]) JSM JSVal -> (JSVal -> DOM GObject) -> DOM GObject
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM GObject
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
tee :: (MonadDOM m) => ReadableStream -> m GObject
tee :: forall (m :: * -> *). MonadDOM m => ReadableStream -> m GObject
tee ReadableStream
self = DOM GObject -> m GObject
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"tee" ()) JSM JSVal -> (JSVal -> DOM GObject) -> DOM GObject
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM GObject
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
tee_ :: (MonadDOM m) => ReadableStream -> m ()
tee_ :: forall (m :: * -> *). MonadDOM m => ReadableStream -> m ()
tee_ ReadableStream
self = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"tee" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.locked Mozilla ReadableStream.locked documentation> 
getLocked :: (MonadDOM m) => ReadableStream -> m Bool
getLocked :: forall (m :: * -> *). MonadDOM m => ReadableStream -> m Bool
getLocked ReadableStream
self = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ReadableStream
self ReadableStream
-> Getting (JSM JSVal) ReadableStream (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter ReadableStream (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"locked") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)