{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.GlobalCrypto
       (getCrypto, GlobalCrypto(..), gTypeGlobalCrypto, IsGlobalCrypto,
        toGlobalCrypto)
       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/GlobalCrypto.crypto Mozilla GlobalCrypto.crypto documentation> 
getCrypto :: (MonadDOM m, IsGlobalCrypto self) => self -> m Crypto
getCrypto :: forall (m :: * -> *) self.
(MonadDOM m, IsGlobalCrypto self) =>
self -> m Crypto
getCrypto self
self
  = DOM Crypto -> m Crypto
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> GlobalCrypto
forall o. IsGlobalCrypto o => o -> GlobalCrypto
toGlobalCrypto self
self) GlobalCrypto
-> Getting (JSM JSVal) GlobalCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter GlobalCrypto (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"crypto") JSM JSVal -> (JSVal -> DOM Crypto) -> DOM Crypto
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 Crypto
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)