{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SQLTransactionErrorCallback
       (newSQLTransactionErrorCallback,
        newSQLTransactionErrorCallbackSync,
        newSQLTransactionErrorCallbackAsync, SQLTransactionErrorCallback)
       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/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
newSQLTransactionErrorCallback ::
                               (MonadDOM m) =>
                                 (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
newSQLTransactionErrorCallback :: (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
newSQLTransactionErrorCallback SQLError -> JSM ()
callback
  = DOM SQLTransactionErrorCallback -> m SQLTransactionErrorCallback
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Callback (JSVal -> IO ()) -> SQLTransactionErrorCallback
SQLTransactionErrorCallback (Callback (JSVal -> IO ()) -> SQLTransactionErrorCallback)
-> (Function -> Callback (JSVal -> IO ()))
-> Function
-> SQLTransactionErrorCallback
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Function -> Callback (JSVal -> IO ())
forall a. Function -> Callback a
Callback (Function -> SQLTransactionErrorCallback)
-> JSM Function -> DOM SQLTransactionErrorCallback
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSCallAsFunction -> JSM Function
function
           (\ JSVal
_ JSVal
_ [JSVal
error] ->
              JSVal -> JSM SQLError
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked JSVal
error JSM SQLError -> (SQLError -> JSM ()) -> JSM ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \ SQLError
error' -> SQLError -> JSM ()
callback SQLError
error'))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
newSQLTransactionErrorCallbackSync ::
                                   (MonadDOM m) =>
                                     (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
newSQLTransactionErrorCallbackSync :: (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
newSQLTransactionErrorCallbackSync SQLError -> JSM ()
callback
  = DOM SQLTransactionErrorCallback -> m SQLTransactionErrorCallback
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Callback (JSVal -> IO ()) -> SQLTransactionErrorCallback
SQLTransactionErrorCallback (Callback (JSVal -> IO ()) -> SQLTransactionErrorCallback)
-> (Function -> Callback (JSVal -> IO ()))
-> Function
-> SQLTransactionErrorCallback
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Function -> Callback (JSVal -> IO ())
forall a. Function -> Callback a
Callback (Function -> SQLTransactionErrorCallback)
-> JSM Function -> DOM SQLTransactionErrorCallback
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSCallAsFunction -> JSM Function
function
           (\ JSVal
_ JSVal
_ [JSVal
error] ->
              JSVal -> JSM SQLError
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked JSVal
error JSM SQLError -> (SQLError -> JSM ()) -> JSM ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \ SQLError
error' -> SQLError -> JSM ()
callback SQLError
error'))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
newSQLTransactionErrorCallbackAsync ::
                                    (MonadDOM m) =>
                                      (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
newSQLTransactionErrorCallbackAsync :: (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
newSQLTransactionErrorCallbackAsync SQLError -> JSM ()
callback
  = DOM SQLTransactionErrorCallback -> m SQLTransactionErrorCallback
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Callback (JSVal -> IO ()) -> SQLTransactionErrorCallback
SQLTransactionErrorCallback (Callback (JSVal -> IO ()) -> SQLTransactionErrorCallback)
-> (Function -> Callback (JSVal -> IO ()))
-> Function
-> SQLTransactionErrorCallback
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Function -> Callback (JSVal -> IO ())
forall a. Function -> Callback a
Callback (Function -> SQLTransactionErrorCallback)
-> JSM Function -> DOM SQLTransactionErrorCallback
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSCallAsFunction -> JSM Function
asyncFunction
           (\ JSVal
_ JSVal
_ [JSVal
error] ->
              JSVal -> JSM SQLError
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked JSVal
error JSM SQLError -> (SQLError -> JSM ()) -> JSM ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \ SQLError
error' -> SQLError -> JSM ()
callback SQLError
error'))