| Copyright | (C) 2016-2025 David M. Johnson (@dmjio) |
|---|---|
| License | BSD3-style (see the file LICENSE) |
| Maintainer | David M. Johnson <code@dmj.io> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Miso.DSL
Description
A JavaScript DSL for interacting with the browser or JS runtime environments.
Synopsis
- class ToJSVal a where
- class FromJSVal a where
- class ToArgs args where
- class ToObject a where
- data JSVal
- newtype Object = Object {}
- newtype Function = Function {
- unFunction :: JSVal
- jsg :: MisoString -> IO JSVal
- jsg0 :: MisoString -> IO JSVal
- jsg1 :: ToJSVal arg => MisoString -> arg -> IO JSVal
- jsg2 :: (ToJSVal arg1, ToJSVal arg2) => MisoString -> arg1 -> arg2 -> IO JSVal
- jsg3 :: (ToJSVal arg1, ToJSVal arg2, ToJSVal arg3) => MisoString -> arg1 -> arg2 -> arg3 -> IO JSVal
- jsg4 :: (ToJSVal arg1, ToJSVal arg2, ToJSVal arg3, ToJSVal arg4) => MisoString -> arg1 -> arg2 -> arg3 -> arg4 -> IO JSVal
- jsg5 :: (ToJSVal arg1, ToJSVal arg2, ToJSVal arg3, ToJSVal arg4, ToJSVal arg5) => MisoString -> arg1 -> arg2 -> arg3 -> arg4 -> arg5 -> IO JSVal
- jsgf :: ToArgs args => MisoString -> args -> IO JSVal
- global :: JSVal
- (#) :: (ToObject object, ToArgs args) => object -> MisoString -> args -> IO JSVal
- setField :: (ToObject o, ToJSVal v) => o -> MisoString -> v -> IO ()
- (<##) :: (ToObject o, ToJSVal v) => o -> Int -> v -> IO ()
- (!) :: ToObject o => o -> MisoString -> IO JSVal
- listProps :: Object -> IO [MisoString]
- call :: (ToObject obj, ToObject this, ToArgs args) => obj -> this -> args -> IO JSVal
- new :: (ToObject constructor, ToArgs args) => constructor -> args -> IO JSVal
- create :: IO Object
- setProp :: ToJSVal val => MisoString -> val -> Object -> IO ()
- getProp :: ToObject o => MisoString -> o -> IO JSVal
- eval :: MisoString -> IO JSVal
- requestAnimationFrame :: JSVal -> IO Int
- cancelAnimationFrame :: Int -> IO ()
- freeFunction :: Function -> IO ()
- (!!) :: ToObject object => object -> Int -> IO JSVal
- isUndefined :: ToJSVal val => val -> IO Bool
- isNull :: ToJSVal val => val -> IO Bool
- jsNull :: JSVal
- syncCallback :: IO () -> IO JSVal
- syncCallback1 :: (JSVal -> IO ()) -> IO JSVal
- syncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal
- syncCallback3 :: (JSVal -> JSVal -> JSVal -> IO ()) -> IO JSVal
- syncCallback' :: IO JSVal -> IO JSVal
- syncCallback1' :: (JSVal -> IO JSVal) -> IO JSVal
- syncCallback2' :: (JSVal -> JSVal -> IO JSVal) -> IO JSVal
- syncCallback3' :: (JSVal -> JSVal -> JSVal -> IO JSVal) -> IO JSVal
- asyncCallback :: IO () -> IO JSVal
- asyncCallback1 :: (JSVal -> IO ()) -> IO JSVal
- asyncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal
- asyncCallback3 :: (JSVal -> JSVal -> JSVal -> IO ()) -> IO JSVal
Classes
class ToJSVal a where Source #
A class for marshaling Haskell values into JS
Minimal complete definition
Nothing
Methods
Instances
class FromJSVal a where Source #
A class for marshaling JS values into Haskell
Minimal complete definition
Nothing
Instances
class ToArgs args where Source #
A class for creating arguments to a JS function
Instances
class ToObject a where Source #
A class for creating JS objects.
Minimal complete definition
Nothing
Methods
Instances
| ToObject ImageData Source # | |
| ToObject Object Source # | |
| ToObject JSVal Source # | |
| ToObject Date Source # | |
| ToObject File Source # | |
| ToObject FileReader Source # | |
Defined in Miso.FFI.Internal | |
| ToObject Image Source # | |
| ToObject URLSearchParams Source # | |
Defined in Miso.FFI.Internal | |
| ToObject VTree Source # | |
| ToJSVal a => ToObject (IO a) Source # | |
Types
A type that represents any JS value
A JS Object
A JS Functionn
Constructors
| Function | |
Fields
| |
Utils
jsg2 :: (ToJSVal arg1, ToJSVal arg2) => MisoString -> arg1 -> arg2 -> IO JSVal Source #
Invokes a function with 2 arguments
jsg3 :: (ToJSVal arg1, ToJSVal arg2, ToJSVal arg3) => MisoString -> arg1 -> arg2 -> arg3 -> IO JSVal Source #
Invokes a function with 3 arguments
jsg4 :: (ToJSVal arg1, ToJSVal arg2, ToJSVal arg3, ToJSVal arg4) => MisoString -> arg1 -> arg2 -> arg3 -> arg4 -> IO JSVal Source #
Invokes a function with 4 arguments
jsg5 :: (ToJSVal arg1, ToJSVal arg2, ToJSVal arg3, ToJSVal arg4, ToJSVal arg5) => MisoString -> arg1 -> arg2 -> arg3 -> arg4 -> arg5 -> IO JSVal Source #
Invokes a function with 5 arguments
jsgf :: ToArgs args => MisoString -> args -> IO JSVal Source #
Invokes a function with a specified argument list
(#) :: (ToObject object, ToArgs args) => object -> MisoString -> args -> IO JSVal infixr 2 Source #
Calls a JS function on an Object at a field with specified arguments.
setField :: (ToObject o, ToJSVal v) => o -> MisoString -> v -> IO () Source #
Sets a field on an Object at a specified field
(<##) :: (ToObject o, ToJSVal v) => o -> Int -> v -> IO () infixr 1 Source #
Sets a field on an Object at a specified index
call :: (ToObject obj, ToObject this, ToArgs args) => obj -> this -> args -> IO JSVal Source #
Calls a JS function on an Object at a field with specified arguments.
new :: (ToObject constructor, ToArgs args) => constructor -> args -> IO JSVal Source #
Instantiates a new JS Object.
setProp :: ToJSVal val => MisoString -> val -> Object -> IO () Source #
Sets a property on a JS Object
eval :: MisoString -> IO JSVal Source #
Dynamically evaluates a JS string. See eval
`eval()` is slower (not subject to JS engine optimizations) and also has security vulnerabilities (can alter other local variables).
Consider using the more performant and secure (isolated) inline function.
cancelAnimationFrame :: Int -> IO () Source #
freeFunction :: Function -> IO () Source #
Frees references to a callback
syncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal Source #
A synchronous callback with two arguments
syncCallback3 :: (JSVal -> JSVal -> JSVal -> IO ()) -> IO JSVal Source #
A synchronous callback with three arguments
syncCallback1' :: (JSVal -> IO JSVal) -> IO JSVal Source #
A synchronous callback that takes a single argument and returns a value
syncCallback2' :: (JSVal -> JSVal -> IO JSVal) -> IO JSVal Source #
A synchronous callback that takes two arguments and returns a value
syncCallback3' :: (JSVal -> JSVal -> JSVal -> IO JSVal) -> IO JSVal Source #
A synchronous callback that takes three arguments and returns a value