{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.Performance
       (now, now_, getEntries, getEntries_, getEntriesByType,
        getEntriesByType_, getEntriesByName, getEntriesByName_,
        clearResourceTimings, setResourceTimingBufferSize, mark,
        clearMarks, measure, clearMeasures, getNavigation, getTiming,
        resourceTimingBufferFull, Performance(..), gTypePerformance)
       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/Performance.now Mozilla Performance.now documentation> 
now :: (MonadDOM m) => Performance -> m DOMHighResTimeStamp
now :: Performance -> m DOMHighResTimeStamp
now Performance
self = DOM DOMHighResTimeStamp -> m DOMHighResTimeStamp
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((Performance
self Performance
-> Getting (JSM JSVal) Performance (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"now" ()) JSM JSVal
-> (JSVal -> DOM DOMHighResTimeStamp) -> DOM DOMHighResTimeStamp
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM DOMHighResTimeStamp
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
now_ :: (MonadDOM m) => Performance -> m ()
now_ :: Performance -> m ()
now_ Performance
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 (Performance
self Performance
-> Getting (JSM JSVal) Performance (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"now" ()))

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
getEntries_ :: (MonadDOM m) => Performance -> m ()
getEntries_ :: Performance -> m ()
getEntries_ Performance
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 (Performance
self Performance
-> Getting (JSM JSVal) Performance (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getEntries" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
getEntriesByType ::
                 (MonadDOM m, ToJSString entryType) =>
                   Performance -> entryType -> m PerformanceEntryList
getEntriesByType :: Performance -> entryType -> m PerformanceEntryList
getEntriesByType Performance
self entryType
entryType
  = DOM PerformanceEntryList -> m PerformanceEntryList
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"getEntriesByType" [entryType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal entryType
entryType]) JSM JSVal
-> (JSVal -> DOM PerformanceEntryList) -> DOM PerformanceEntryList
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM PerformanceEntryList
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
getEntriesByType_ ::
                  (MonadDOM m, ToJSString entryType) =>
                    Performance -> entryType -> m ()
getEntriesByType_ :: Performance -> entryType -> m ()
getEntriesByType_ Performance
self entryType
entryType
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"getEntriesByType" [entryType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal entryType
entryType]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
getEntriesByName ::
                 (MonadDOM m, ToJSString name, ToJSString entryType) =>
                   Performance -> name -> Maybe entryType -> m PerformanceEntryList
getEntriesByName :: Performance -> name -> Maybe entryType -> m PerformanceEntryList
getEntriesByName Performance
self name
name Maybe entryType
entryType
  = DOM PerformanceEntryList -> m PerformanceEntryList
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"getEntriesByName" [name -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal name
name, Maybe entryType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe entryType
entryType])
         JSM JSVal
-> (JSVal -> DOM PerformanceEntryList) -> DOM PerformanceEntryList
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM PerformanceEntryList
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
getEntriesByName_ ::
                  (MonadDOM m, ToJSString name, ToJSString entryType) =>
                    Performance -> name -> Maybe entryType -> m ()
getEntriesByName_ :: Performance -> name -> Maybe entryType -> m ()
getEntriesByName_ Performance
self name
name Maybe entryType
entryType
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"getEntriesByName" [name -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal name
name, Maybe entryType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe entryType
entryType]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearResourceTimings Mozilla Performance.clearResourceTimings documentation> 
clearResourceTimings :: (MonadDOM m) => Performance -> m ()
clearResourceTimings :: Performance -> m ()
clearResourceTimings Performance
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 (Performance
self Performance
-> Getting (JSM JSVal) Performance (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"clearResourceTimings" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.setResourceTimingBufferSize Mozilla Performance.setResourceTimingBufferSize documentation> 
setResourceTimingBufferSize ::
                            (MonadDOM m) => Performance -> Word -> m ()
setResourceTimingBufferSize :: Performance -> Word -> m ()
setResourceTimingBufferSize Performance
self Word
maxSize
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"setResourceTimingBufferSize" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
maxSize]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.mark Mozilla Performance.mark documentation> 
mark ::
     (MonadDOM m, ToJSString markName) =>
       Performance -> markName -> m ()
mark :: Performance -> markName -> m ()
mark Performance
self markName
markName
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"mark" [markName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal markName
markName]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMarks Mozilla Performance.clearMarks documentation> 
clearMarks ::
           (MonadDOM m, ToJSString markName) =>
             Performance -> Maybe markName -> m ()
clearMarks :: Performance -> Maybe markName -> m ()
clearMarks Performance
self Maybe markName
markName
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"clearMarks" [Maybe markName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe markName
markName]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.measure Mozilla Performance.measure documentation> 
measure ::
        (MonadDOM m, ToJSString measureName, ToJSString startMark,
         ToJSString endMark) =>
          Performance ->
            measureName -> Maybe startMark -> Maybe endMark -> m ()
measure :: Performance
-> measureName -> Maybe startMark -> Maybe endMark -> m ()
measure Performance
self measureName
measureName Maybe startMark
startMark Maybe endMark
endMark
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"measure"
            [measureName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal measureName
measureName, Maybe startMark -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe startMark
startMark, Maybe endMark -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe endMark
endMark]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMeasures Mozilla Performance.clearMeasures documentation> 
clearMeasures ::
              (MonadDOM m, ToJSString measureName) =>
                Performance -> Maybe measureName -> m ()
clearMeasures :: Performance -> Maybe measureName -> m ()
clearMeasures Performance
self Maybe measureName
measureName
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Performance
self Performance
-> Getting (JSM JSVal) Performance (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]
"clearMeasures" [Maybe measureName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe measureName
measureName]))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.onresourcetimingbufferfull Mozilla Performance.onresourcetimingbufferfull documentation> 
resourceTimingBufferFull ::
                           EventName Performance onresourcetimingbufferfull
resourceTimingBufferFull :: EventName Performance onresourcetimingbufferfull
resourceTimingBufferFull
  = DOMString -> EventName Performance onresourcetimingbufferfull
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"resourcetimingbufferfull")