{-# LANGUAGE ScopedTypeVariables,
FlexibleContexts,
FlexibleInstances,
OverloadedStrings,
TupleSections,
LambdaCase #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module GHCJS.Marshal ( FromJSVal(..)
, ToJSVal(..)
, toJSVal_aeson
, toJSVal_pure
) where
import Control.Monad (join)
import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
import qualified Data.Aeson as AE
import Data.Int (Int8, Int16, Int32)
import Data.Text (Text)
import Data.Word (Word8, Word16, Word32, Word)
import GHC.Prim
import Language.Javascript.JSaddle.Types (JSM, JSVal, SomeJSArray(..), ghcjsPure)
import Language.Javascript.JSaddle.Native.Internal
(valueToJSONValue, jsonValueToValue, valueToNumber)
import GHCJS.Types (JSString, isUndefined, isNull)
import GHCJS.Foreign.Internal (isTruthy)
import GHCJS.Marshal.Pure ()
import JavaScript.Array (fromListIO)
import qualified JavaScript.Array as A (read)
import GHCJS.Marshal.Internal
instance FromJSVal JSVal where
fromJSValUnchecked :: JSVal -> JSM JSVal
fromJSValUnchecked JSVal
x = forall (m :: * -> *) a. Monad m => a -> m a
return JSVal
x
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe JSVal)
fromJSVal = forall (m :: * -> *) a. Monad m => a -> m a
return forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a
Just
{-# INLINE fromJSVal #-}
instance FromJSVal () where
fromJSValUnchecked :: JSVal -> JSM ()
fromJSValUnchecked = forall a. PFromJSVal a => JSVal -> JSM a
fromJSValUnchecked_pure
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe ())
fromJSVal = forall a. PFromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal_pure
instance FromJSVal Bool where
fromJSValUnchecked :: JSVal -> JSM Bool
fromJSValUnchecked = forall a. GHCJSPure a -> JSM a
ghcjsPure forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> GHCJSPure Bool
isTruthy
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Bool)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. GHCJSPure a -> JSM a
ghcjsPure forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> GHCJSPure Bool
isTruthy
{-# INLINE fromJSVal #-}
instance FromJSVal Int where
fromJSValUnchecked :: JSVal -> JSM Int
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Int)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Int8 where
fromJSValUnchecked :: JSVal -> JSM Int8
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Int8)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Int16 where
fromJSValUnchecked :: JSVal -> JSM Int16
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Int16)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Int32 where
fromJSValUnchecked :: JSVal -> JSM Int32
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Int32)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Word where
fromJSValUnchecked :: JSVal -> JSM Word
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Word)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Word8 where
fromJSValUnchecked :: JSVal -> JSM Word8
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Word8)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Word16 where
fromJSValUnchecked :: JSVal -> JSM Word16
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Word16)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Word32 where
fromJSValUnchecked :: JSVal -> JSM Word32
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (RealFrac a, Integral b) => a -> b
round forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Word32)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (RealFrac a, Integral b) => a -> b
round) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Float where
fromJSValUnchecked :: JSVal -> JSM Float
fromJSValUnchecked = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. (Real a, Fractional b) => a -> b
realToFrac forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Float)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac) forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal Double where
fromJSValUnchecked :: JSVal -> JSM Double
fromJSValUnchecked = JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSValUnchecked #-}
fromJSVal :: JSVal -> JSM (Maybe Double)
fromJSVal = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> JSM Double
valueToNumber
{-# INLINE fromJSVal #-}
instance FromJSVal AE.Value where
fromJSVal :: JSVal -> JSM (Maybe Value)
fromJSVal JSVal
r = forall a. a -> Maybe a
Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> JSVal -> JSM Value
valueToJSONValue JSVal
r
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b) => FromJSVal (a,b) where
fromJSVal :: JSVal -> JSM (Maybe (a, b))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b, FromJSVal c) => FromJSVal (a,b,c) where
fromJSVal :: JSVal -> JSM (Maybe (a, b, c))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
2
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b, FromJSVal c, FromJSVal d) => FromJSVal (a,b,c,d) where
fromJSVal :: JSVal -> JSM (Maybe (a, b, c, d))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
2 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
3
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b, FromJSVal c, FromJSVal d, FromJSVal e) => FromJSVal (a,b,c,d,e) where
fromJSVal :: JSVal -> JSM (Maybe (a, b, c, d, e))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,,,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
2 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
3 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
4
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b, FromJSVal c, FromJSVal d, FromJSVal e, FromJSVal f) => FromJSVal (a,b,c,d,e,f) where
fromJSVal :: JSVal -> JSM (Maybe (a, b, c, d, e, f))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,,,,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
2 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
3 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
4 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
5
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b, FromJSVal c, FromJSVal d, FromJSVal e, FromJSVal f, FromJSVal g) => FromJSVal (a,b,c,d,e,f,g) where
fromJSVal :: JSVal -> JSM (Maybe (a, b, c, d, e, f, g))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,,,,,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
2 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
3 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
4 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
5 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
6
{-# INLINE fromJSVal #-}
instance (FromJSVal a, FromJSVal b, FromJSVal c, FromJSVal d, FromJSVal e, FromJSVal f, FromJSVal g, FromJSVal h) => FromJSVal (a,b,c,d,e,f,g,h) where
fromJSVal :: JSVal -> JSM (Maybe (a, b, c, d, e, f, g, h))
fromJSVal JSVal
r = forall (m :: * -> *) a. MaybeT m a -> m (Maybe a)
runMaybeT forall a b. (a -> b) -> a -> b
$ (,,,,,,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
0 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
1 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
2 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
3 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
4 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
5 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
6 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
7
{-# INLINE fromJSVal #-}
jf :: FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf :: forall a. FromJSVal a => JSVal -> Int -> MaybeT JSM a
jf JSVal
r Int
n = forall (m :: * -> *) a. m (Maybe a) -> MaybeT m a
MaybeT forall a b. (a -> b) -> a -> b
$ do
JSVal
r' <- forall (m :: MutabilityType (*)). Int -> SomeJSArray m -> JSM JSVal
A.read Int
n (forall s (m :: MutabilityType s). JSVal -> SomeJSArray m
SomeJSArray JSVal
r)
forall a. GHCJSPure a -> JSM a
ghcjsPure (JSVal -> GHCJSPure Bool
isUndefined JSVal
r) forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
True -> forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Maybe a
Nothing
Bool
False -> forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal JSVal
r'
instance (ToJSVal a, ToJSVal b) => ToJSVal (a,b) where
toJSVal :: (a, b) -> JSM JSVal
toJSVal (a
a,b
b) = forall (m :: * -> *) a. Monad m => m (m a) -> m a
join forall a b. (a -> b) -> a -> b
$ JSVal -> JSVal -> JSM JSVal
arr2 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. ToJSVal a => a -> JSM JSVal
toJSVal a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal b
b
{-# INLINE toJSVal #-}
instance (ToJSVal a, ToJSVal b, ToJSVal c) => ToJSVal (a,b,c) where
toJSVal :: (a, b, c) -> JSM JSVal
toJSVal (a
a,b
b,c
c) = forall (m :: * -> *) a. Monad m => m (m a) -> m a
join forall a b. (a -> b) -> a -> b
$ JSVal -> JSVal -> JSVal -> JSM JSVal
arr3 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. ToJSVal a => a -> JSM JSVal
toJSVal a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal b
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal c
c
{-# INLINE toJSVal #-}
instance (ToJSVal a, ToJSVal b, ToJSVal c, ToJSVal d) => ToJSVal (a,b,c,d) where
toJSVal :: (a, b, c, d) -> JSM JSVal
toJSVal (a
a,b
b,c
c,d
d) = forall (m :: * -> *) a. Monad m => m (m a) -> m a
join forall a b. (a -> b) -> a -> b
$ JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr4 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. ToJSVal a => a -> JSM JSVal
toJSVal a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal b
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal c
c forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal d
d
{-# INLINE toJSVal #-}
instance (ToJSVal a, ToJSVal b, ToJSVal c, ToJSVal d, ToJSVal e) => ToJSVal (a,b,c,d,e) where
toJSVal :: (a, b, c, d, e) -> JSM JSVal
toJSVal (a
a,b
b,c
c,d
d,e
e) = forall (m :: * -> *) a. Monad m => m (m a) -> m a
join forall a b. (a -> b) -> a -> b
$ JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr5 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. ToJSVal a => a -> JSM JSVal
toJSVal a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal b
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal c
c forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal d
d forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal e
e
{-# INLINE toJSVal #-}
instance (ToJSVal a, ToJSVal b, ToJSVal c, ToJSVal d, ToJSVal e, ToJSVal f) => ToJSVal (a,b,c,d,e,f) where
toJSVal :: (a, b, c, d, e, f) -> JSM JSVal
toJSVal (a
a,b
b,c
c,d
d,e
e,f
f) = forall (m :: * -> *) a. Monad m => m (m a) -> m a
join forall a b. (a -> b) -> a -> b
$ JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr6 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. ToJSVal a => a -> JSM JSVal
toJSVal a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal b
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal c
c forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal d
d forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal e
e forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal f
f
{-# INLINE toJSVal #-}
instance (ToJSVal a, ToJSVal b, ToJSVal c, ToJSVal d, ToJSVal e, ToJSVal f, ToJSVal g) => ToJSVal (a,b,c,d,e,f,g) where
toJSVal :: (a, b, c, d, e, f, g) -> JSM JSVal
toJSVal (a
a,b
b,c
c,d
d,e
e,f
f,g
g) = forall (m :: * -> *) a. Monad m => m (m a) -> m a
join forall a b. (a -> b) -> a -> b
$ JSVal
-> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr7 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. ToJSVal a => a -> JSM JSVal
toJSVal a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal b
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal c
c forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal d
d forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal e
e forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal f
f forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. ToJSVal a => a -> JSM JSVal
toJSVal g
g
{-# INLINE toJSVal #-}
arr2 :: JSVal -> JSVal -> JSM JSVal
arr2 :: JSVal -> JSVal -> JSM JSVal
arr2 JSVal
a JSVal
b = coerce :: forall a b. Coercible a b => a -> b
coerce forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: MutabilityType (*)). [JSVal] -> JSM (SomeJSArray m)
fromListIO [JSVal
a,JSVal
b]
arr3 :: JSVal -> JSVal -> JSVal -> JSM JSVal
arr3 :: JSVal -> JSVal -> JSVal -> JSM JSVal
arr3 JSVal
a JSVal
b JSVal
c = coerce :: forall a b. Coercible a b => a -> b
coerce forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: MutabilityType (*)). [JSVal] -> JSM (SomeJSArray m)
fromListIO [JSVal
a,JSVal
b,JSVal
c]
arr4 :: JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr4 :: JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr4 JSVal
a JSVal
b JSVal
c JSVal
d = coerce :: forall a b. Coercible a b => a -> b
coerce forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: MutabilityType (*)). [JSVal] -> JSM (SomeJSArray m)
fromListIO [JSVal
a,JSVal
b,JSVal
c,JSVal
d]
arr5 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr5 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr5 JSVal
a JSVal
b JSVal
c JSVal
d JSVal
e = coerce :: forall a b. Coercible a b => a -> b
coerce forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: MutabilityType (*)). [JSVal] -> JSM (SomeJSArray m)
fromListIO [JSVal
a,JSVal
b,JSVal
c,JSVal
d,JSVal
e]
arr6 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr6 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr6 JSVal
a JSVal
b JSVal
c JSVal
d JSVal
e JSVal
f = coerce :: forall a b. Coercible a b => a -> b
coerce forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: MutabilityType (*)). [JSVal] -> JSM (SomeJSArray m)
fromListIO [JSVal
a,JSVal
b,JSVal
c,JSVal
d,JSVal
e,JSVal
f]
arr7 :: JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr7 :: JSVal
-> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSVal -> JSM JSVal
arr7 JSVal
a JSVal
b JSVal
c JSVal
d JSVal
e JSVal
f JSVal
g = coerce :: forall a b. Coercible a b => a -> b
coerce forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: MutabilityType (*)). [JSVal] -> JSM (SomeJSArray m)
fromListIO [JSVal
a,JSVal
b,JSVal
c,JSVal
d,JSVal
e,JSVal
f,JSVal
g]
toJSVal_aeson :: AE.ToJSON a => a -> JSM JSVal
toJSVal_aeson :: forall a. ToJSON a => a -> JSM JSVal
toJSVal_aeson = Value -> JSM JSVal
jsonValueToValue forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> Value
AE.toJSON