| Copyright | (C) 2016-2026 David M. Johnson |
|---|---|
| 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.Runtime.Internal
Description
Overview
Miso.Runtime.Internal is a testing-only facade that re-exports the miso runtime's global mutable state from Miso.Runtime.
Do not import this module in application code. Mutating any of
the exported IORef values will corrupt the component
lifecycle and produce undefined behaviour. The module exists solely to
give the miso-tests integration-test package direct access to
component state for assertions.
Exported names
components— globalIORefmappingComponentIdtoComponentStatefor every mounted component.componentIds— monotonically increasingIORefused to assign fresh component identifiers.rootComponentId— the well-known identifier of the top-level app component.ComponentState— record holding the live model, scheduler mailbox, and other per-component runtime fields.schedulerThread—IORefholding theThreadIdof the event-loop scheduler thread.
See also
- Miso.Runtime — the authoritative definitions of everything exported here
- Miso.Reload — uses these internals to kill and restart the scheduler on
:r
Synopsis
- components :: IORef (IntMap (ComponentState context props model action))
- componentIds :: IORef Int
- rootComponentId :: ComponentId
- data ComponentState context props model action = ComponentState {
- _componentId :: ComponentId
- _componentKey :: Maybe Key
- _componentParentId :: ComponentId
- _componentProps :: props
- _prevComponentProps :: props
- _componentSubThreads :: IORef (Map MisoString ThreadId)
- _componentDOMRef :: DOMRef
- _componentVTree :: IORef VTree
- _componentSink :: action -> IO ()
- _componentModel :: model
- _componentScripts :: [DOMRef]
- _componentEvents :: Events
- _componentUseContext :: Bool
- _componentMailbox :: Value -> Maybe action
- _componentDraw :: model -> IO ()
- _componentPropsPhase :: props -> props -> IO ()
- _componentModelDirty :: model -> model -> Bool
- _componentApplyActions :: Seq action -> model -> props -> context -> (model, [Schedule context action])
- _componentTopics :: Map MisoString (Value -> IO ())
- _componentChildren :: ComponentIds
- schedulerThread :: IORef ThreadId
- asyncCallback :: IO () -> IO JSVal
- asyncCallback1 :: (JSVal -> IO ()) -> IO JSVal
- asyncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal
- syncCallback :: IO () -> IO JSVal
- syncCallback1 :: (JSVal -> IO ()) -> IO JSVal
- syncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal
- addEventListener :: JSVal -> MisoString -> (JSVal -> IO ()) -> IO Function
- addScript :: Bool -> MisoString -> IO JSVal
- addScriptImportMap :: MisoString -> IO JSVal
- addSrc :: MisoString -> Bool -> IO JSVal
- addStyle :: MisoString -> IO JSVal
- addStyleSheet :: MisoString -> Bool -> IO JSVal
- alert :: MisoString -> IO ()
- blur :: MisoString -> IO ()
- callFunction :: ToArgs args => JSVal -> MisoString -> args -> IO JSVal
- castJSVal :: FromJSVal a => JSVal -> IO (Maybe a)
- click :: () -> JSVal -> IO ()
- consoleError :: MisoString -> IO ()
- consoleLog :: MisoString -> IO ()
- consoleLog' :: ToArgs a => a -> IO ()
- consoleWarn :: MisoString -> IO ()
- cookieDelete :: MisoString -> IO () -> (MisoString -> IO ()) -> IO ()
- cookieDeleteWith :: JSVal -> IO () -> (MisoString -> IO ()) -> IO ()
- cookieGet :: MisoString -> (JSVal -> IO ()) -> (MisoString -> IO ()) -> IO ()
- cookieGetAll :: (JSVal -> IO ()) -> (MisoString -> IO ()) -> IO ()
- cookieSet :: JSVal -> IO () -> (MisoString -> IO ()) -> IO ()
- cookieStoreAddEventListener :: (JSVal -> IO ()) -> IO Function
- cookieStoreRemoveEventListener :: Function -> IO ()
- copyClipboard :: MisoString -> IO () -> (JSVal -> IO ()) -> IO ()
- delegator :: JSVal -> JSVal -> Bool -> IO JSVal -> IO ()
- diff :: Object -> Object -> JSVal -> IO ()
- dispatchEvent :: Event -> IO ()
- eventJSON :: JSVal -> JSVal -> IO JSVal
- eventPreventDefault :: JSVal -> IO ()
- eventSourceClose :: JSVal -> IO ()
- eventSourceConnect :: MisoString -> IO () -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> (JSVal -> IO ()) -> Bool -> IO JSVal
- eventStopPropagation :: JSVal -> IO ()
- fetch :: (FromJSVal success, FromJSVal error) => MisoString -> MisoString -> Maybe JSVal -> [(MisoString, MisoString)] -> (Response success -> IO ()) -> (Response error -> IO ()) -> CONTENT_TYPE -> IO ()
- files :: JSVal -> IO [JSVal]
- flush :: IO ()
- focus :: MisoString -> IO ()
- geolocation :: (JSVal -> IO ()) -> (JSVal -> IO ()) -> IO ()
- getBody :: IO JSVal
- getComponentContext :: IO JSVal
- getDocument :: IO JSVal
- getDrawingContext :: IO JSVal
- getElementById :: MisoString -> IO JSVal
- getEventContext :: IO JSVal
- getHead :: IO JSVal
- getHydrationContext :: IO JSVal
- getMilliseconds :: Date -> IO Double
- getProperty :: JSVal -> MisoString -> IO JSVal
- getRandomValue :: IO Double
- getSeconds :: Date -> IO Double
- getThreads :: IO (Bool, Bool, Bool)
- getUserMedia :: Bool -> Bool -> (JSVal -> IO ()) -> (JSVal -> IO ()) -> IO ()
- hydrate :: Bool -> JSVal -> JSVal -> IO JSVal
- inline :: (FromJSVal return, ToObject object) => MisoString -> object -> IO return
- isOnLine :: IO Bool
- locationReload :: IO ()
- mathRandom :: IO Double
- modelHydration :: Int -> Object -> IO ()
- mountComponent :: Int -> Object -> IO ()
- newCustomEvent :: ToArgs args => args -> IO Event
- newDate :: IO Date
- newEvent :: ToArgs args => args -> IO Event
- newFileReader :: IO FileReader
- newImage :: MisoString -> IO Image
- nextSibling :: JSVal -> IO JSVal
- now :: IO Double
- onBTS :: IO Bool
- onMTS :: IO Bool
- populateClass :: JSVal -> [MisoString] -> IO ()
- previousSibling :: JSVal -> IO JSVal
- removeChild :: JSVal -> JSVal -> IO ()
- removeEventListener :: JSVal -> MisoString -> Function -> IO ()
- requestFullscreen :: IO ()
- scrollIntoView :: MisoString -> IO ()
- select :: MisoString -> IO ()
- set :: ToJSVal v => MisoString -> v -> Object -> IO ()
- setDrawingContext :: MisoString -> IO ()
- setSelectionRange :: MisoString -> Int -> Int -> IO ()
- setValue :: JSVal -> MisoString -> IO ()
- splitmix32 :: Double -> IO JSVal
- toLocaleString :: Date -> IO MisoString
- unmountComponent :: Int -> IO ()
- updateRef :: ToJSVal val => val -> val -> IO ()
- websocketClose :: JSVal -> IO ()
- websocketConnect :: MisoString -> IO () -> (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> (JSVal -> IO ()) -> Bool -> IO JSVal
- websocketSend :: JSVal -> JSVal -> IO ()
- windowAddEventListener :: MisoString -> (JSVal -> IO ()) -> IO Function
- windowInnerHeight :: IO Int
- windowInnerWidth :: IO Int
- windowRemoveEventListener :: MisoString -> Function -> IO ()
- newtype ArrayBuffer = ArrayBuffer JSVal
- newtype Blob = Blob JSVal
- data CONTENT_TYPE
- newtype Date = Date JSVal
- newtype Event = Event JSVal
- newtype File = File JSVal
- newtype FileReader = FileReader JSVal
- newtype FormData = FormData JSVal
- newtype Image = Image JSVal
- data Response body = Response {
- status :: Maybe Int
- headers :: Map MisoString MisoString
- errorMessage :: Maybe MisoString
- body :: body
- newtype URLSearchParams = URLSearchParams JSVal
- newtype Uint8Array = Uint8Array JSVal
Documentation
components :: IORef (IntMap (ComponentState context props model action)) Source #
componentIds :: IORef Int Source #
The global store of ComponentId, for internal-use only.
Used internally freshComponentId to allocate new ComponentId on
mount.
rootComponentId :: ComponentId Source #
This is used to demarcate the ROOT of a page. This ID will *never*
exist in the components map.
data ComponentState context props model action Source #
Constructors
| ComponentState | |
Fields
| |
schedulerThread :: IORef ThreadId Source #
Global variable to hold the scheduler thread
N.B. undefined is safe here, it will always get populated.
Also, we use this in cleanup when interactive mode (GHCi) is detected
in that circumstance schedulerThread will always be populated. It's an
invariant.
asyncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal Source #
A asynchronous callback with two arguments
syncCallback2 :: (JSVal -> JSVal -> IO ()) -> IO JSVal Source #
A synchronous callback with two arguments
Arguments
| :: JSVal | Event target on which we want to register event listener |
| -> MisoString | Type of event to listen to (e.g. "click") |
| -> (JSVal -> IO ()) | Callback which will be called when the event occurs, the event will be passed to it as a parameter. |
| -> IO Function |
Register an event listener on given target.
addScriptImportMap :: MisoString -> IO JSVal Source #
Appends a script_ element containing a JS import map.
addScript "{ \"import\" : { \"three\" : \"url\" } }"addSrc :: MisoString -> Bool -> IO JSVal Source #
Appends a <script> element to head_
addSrc "https://example.com/script.js"
addStyleSheet :: MisoString -> Bool -> IO JSVal Source #
alert :: MisoString -> IO () Source #
Calls the alert() function.
blur :: MisoString -> IO () Source #
Fails silently if the element is not found.
Analogous to document.getElementById(id).blur()
callFunction :: ToArgs args => JSVal -> MisoString -> args -> IO JSVal Source #
Calls a function on a JSVal
Example usage:
callFunction domRef "focus" () callFunction domRef "setSelectionRange" (0, 3, "none")
castJSVal :: FromJSVal a => JSVal -> IO (Maybe a) Source #
Marshalling of JSVal, useful for getProperty
consoleError :: MisoString -> IO () Source #
Outputs an error message to the web console
See https://developer.mozilla.org/en-US/docs/Web/API/Console/error
Console logging of JavaScript strings.
consoleLog :: MisoString -> IO () Source #
Outputs a message to the web console
See https://developer.mozilla.org/en-US/docs/Web/API/Console/log
Console logging of JavaScript strings.
consoleLog' :: ToArgs a => a -> IO () Source #
Console-logging of JSVal
consoleWarn :: MisoString -> IO () Source #
Outputs a warning message to the web console
See https://developer.mozilla.org/en-US/docs/Web/API/Console/warn
Console logging of JavaScript strings.
Arguments
| :: MisoString | Cookie name |
| -> IO () | Successful callback |
| -> (MisoString -> IO ()) | Errorful callback |
| -> IO () |
Delete a cookie by name via the CookieStore API.
See https://developer.mozilla.org/en-US/docs/Web/API/CookieStore/delete
Arguments
| :: JSVal | Cookie options object (name, path, domain, partitioned) |
| -> IO () | Successful callback |
| -> (MisoString -> IO ()) | Errorful callback |
| -> IO () |
Delete a cookie by options object via the CookieStore API.
See https://developer.mozilla.org/en-US/docs/Web/API/CookieStore/delete
Arguments
| :: MisoString | Cookie name |
| -> (JSVal -> IO ()) | Successful callback |
| -> (MisoString -> IO ()) | Errorful callback |
| -> IO () |
Retrieve a single cookie by name from the CookieStore API.
The successful callback receives a null JSVal when no cookie with
that name exists. The errorful callback receives the error message string.
See https://developer.mozilla.org/en-US/docs/Web/API/CookieStore/get
Arguments
| :: (JSVal -> IO ()) | Successful callback (receives a JS array of cookie objects) |
| -> (MisoString -> IO ()) | Errorful callback |
| -> IO () |
Retrieve all cookies from the CookieStore API.
See https://developer.mozilla.org/en-US/docs/Web/API/CookieStore/getAll
Arguments
| :: JSVal | Cookie options object (serialised |
| -> IO () | Successful callback |
| -> (MisoString -> IO ()) | Errorful callback |
| -> IO () |
Set a cookie via the CookieStore API.
See https://developer.mozilla.org/en-US/docs/Web/API/CookieStore/set
cookieStoreAddEventListener :: (JSVal -> IO ()) -> IO Function Source #
Register a listener for
cookieStore change
events. Returns the Function handle needed to remove the listener later.
cookieStoreRemoveEventListener :: Function -> IO () Source #
Remove a previously registered cookieStore change listener.
Arguments
| :: MisoString | Text to copy |
| -> IO () | successful |
| -> (JSVal -> IO ()) | errorful |
| -> IO () |
delegator :: JSVal -> JSVal -> Bool -> IO JSVal -> IO () Source #
Initialize event delegation from a mount point.
Diff two virtual DOMs
dispatchEvent :: Event -> IO () Source #
Invokes document.dispatchEvent
update ChangeTheme = io_ $ do
themeEvent <- newEvent "basecoat:theme"
dispatchEvent themeEvent
Convert a JavaScript object to JSON JSONified representation of events
eventPreventDefault :: JSVal -> IO () Source #
Prevent default event behavior
eventSourceClose :: JSVal -> IO () Source #
eventSourceConnect :: MisoString -> IO () -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> (JSVal -> IO ()) -> Bool -> IO JSVal Source #
eventStopPropagation :: JSVal -> IO () Source #
Stop propagation of events
Arguments
| :: (FromJSVal success, FromJSVal error) | |
| => MisoString | url |
| -> MisoString | method |
| -> Maybe JSVal | body |
| -> [(MisoString, MisoString)] | headers |
| -> (Response success -> IO ()) | successful callback |
| -> (Response error -> IO ()) | errorful callback |
| -> CONTENT_TYPE | content type |
| -> IO () |
Retrieve JSON via Fetch API
Basic GET of JSON using Fetch API, will be expanded upon.
See https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
files :: JSVal -> IO [JSVal] Source #
When working with <input type="file">, this is useful for
extracting out the selected files.
update (InputClicked inputElement) = withSink $ \sink -> do
files_ <- files inputElement
forM_ files_ $ \file -> sink (Upload file)
update (Upload file) = do
fetch "https://localhost:8080/upload" "POST" (Just file) []
Successful Errorful
Since: 1.9.0.0
Flush is used to force a draw of the render tree. This is currently only used when targeting platforms other than the browser (like mobile).
focus :: MisoString -> IO () Source #
Fails silently if the element is not found.
Analogous to document.getElementById(id).focus().
Retrieves a reference to document body.
See https://developer.mozilla.org/en-US/docs/Web/API/Document/body
getComponentContext :: IO JSVal Source #
Retrieves a reference to the Component context.
This is a miso specific construct used to provide an identical interface for both native (iOS / Android, etc.) and browser environments.
getDocument :: IO JSVal Source #
Retrieves a reference to the document.
See https://developer.mozilla.org/en-US/docs/Web/API/Document
getDrawingContext :: IO JSVal Source #
Retrieves a reference to the drawing context.
This is a miso specific construct used to provide an identical interface for both native (iOS / Android, etc.) and browser environments.
getElementById :: MisoString -> IO JSVal Source #
Returns an Element object representing the element whose id property matches the specified string.
See https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById
getEventContext :: IO JSVal Source #
Retrieves a reference to the event context.
This is a miso specific construct used to provide an identical interface for both native (iOS / Android, etc.) and browser environments.
Retrieves a reference to the renderer's "head" mount.
Calls miso.drawingContext.getHead().
Note: custom renderers should implement this method.
Since: 1.9.0.0
getHydrationContext :: IO JSVal Source #
Retrieves a reference to the hydration context.
This is a miso specific construct used to provide an identical interface for both native (iOS / Android, etc.) and browser environments.
Arguments
| :: JSVal | JavaScript object to read from |
| -> MisoString | Property name to retrieve |
| -> IO JSVal |
Get a property of a JSVal
Example usage:
Just (value :: String) <- fromJSVal =<< getProperty domRef "value"
getRandomValue :: IO Double Source #
Uses the first element of 'crypto.getRandomValues()'.
getThreads :: IO (Bool, Bool, Bool) Source #
Returns (mts, bts, web): whether the current execution context is the
Lynx main thread, Lynx background thread, or a plain web build.
Get Camera on user's device
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
hydrate :: Bool -> JSVal -> JSVal -> IO JSVal Source #
Copies DOM pointers into virtual dom entry point into isomorphic javascript
See hydration)
inline :: (FromJSVal return, ToObject object) => MisoString -> object -> IO return Source #
Convenience function to write inline javascript.
Prefer this function over the use of eval.
This function takes as arguments a JavaScript object and makes the keys available in the function body.
data Person = Person { name :: MisoString, age :: Int }
deriving stock (Generic)
deriving anyclass (ToJSVal, ToObject)
logNameGetAge :: Person -> IO Int
logNameGetAge = inline
"""
console.log(name, name);
return age;
"""
Navigator function to query the current online status of the user's computer
See navigator.onLine
locationReload :: IO () Source #
Calls the location.reload() function.
mathRandom :: IO Double Source #
Uses the 'Math.random()' function.
newCustomEvent :: ToArgs args => args -> IO Event Source #
Creates a new Event
update ToggleSidebar = io_ $ do
themeEvent <- newCustomEvent "basecoat:sidebar"
dispatchEvent themeEvent
newEvent :: ToArgs args => args -> IO Event Source #
Creates a new Event
update ChangeTheme = io_ $ do
themeEvent <- newEvent "basecoat:theme"
dispatchEvent themeEvent
newFileReader :: IO FileReader Source #
Smart constructor for building a FileReader
Retrieve high resolution time stamp
See https://developer.mozilla.org/en-US/docs/Web/API/Performance/now
Arguments
| :: JSVal | Node |
| -> [MisoString] | classes |
| -> IO () |
Populate the classList Set on the virtual DOM.
removeChild :: JSVal -> JSVal -> IO () Source #
Removes a child node from a parent node.
Calls miso.drawingContext.removeChild(parent, child).
Since: 1.9.0.0
Arguments
| :: JSVal | Event target from which we want to remove event listener |
| -> MisoString | Type of event to listen to (e.g. "click") |
| -> Function | Callback which will be called when the event occurs, the event will be passed to it as a parameter. |
| -> IO () |
Removes an event listener from given target.
requestFullscreen :: IO () Source #
Calls document.documentElement.requestFullscreen(), falling back to
webkitRequestFullscreen for Safari.
scrollIntoView :: MisoString -> IO () Source #
Calls document.getElementById(id).scrollIntoView()
select :: MisoString -> IO () Source #
Fails silently if the element is not found.
Analogous to document.querySelector(.# + id).select()
Arguments
| :: ToJSVal v | |
| => MisoString | Property name to set |
| -> v | Value to assign |
| -> Object | JavaScript object to mutate |
| -> IO () |
Set property on object
setDrawingContext :: MisoString -> IO () Source #
Used to select a drawing context. Users can override the default DOM renderer by implementing their own Context, and exporting it to the global scope. This opens the door to different rendering engines, ala miso-lynx.
Arguments
| :: MisoString | DOM element |
| -> Int | Selection start index (inclusive) |
| -> Int | Selection end index (exclusive) |
| -> IO () |
Fails silently if the element is not found.
Analogous to document.querySelector(.# + id).setSelectionRange(start, end, 'none')
setValue :: JSVal -> MisoString -> IO () Source #
Sets the .value property on a DOMRef.
Useful for resetting the value property on an input element.
setValue domRef ("" :: MisoString)
toLocaleString :: Date -> IO MisoString Source #
Date conversion function to produce a locale
unmountComponent :: Int -> IO () Source #
Abstract over Component unmounting
updateRef :: ToJSVal val => val -> val -> IO () Source #
Used to update the JavaScript reference post-diff.
websocketClose :: JSVal -> IO () Source #
websocketConnect :: MisoString -> IO () -> (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> Maybe (JSVal -> IO ()) -> (JSVal -> IO ()) -> Bool -> IO JSVal Source #
Establishes a WebSocket connection
windowAddEventListener Source #
Arguments
| :: MisoString | Type of event to listen to (e.g. "click") |
| -> (JSVal -> IO ()) | Callback which will be called when the event occurs, the event will be passed to it as a parameter. |
| -> IO Function |
Registers an event listener on window
windowInnerHeight :: IO Int Source #
Retrieves the height (in pixels) of the browser window viewport including, if rendered, the horizontal scrollbar.
See https://developer.mozilla.org/en-US/docs/Web/API/Window/innerHeight
windowInnerWidth :: IO Int Source #
Retrieves the width (in pixels) of the browser window viewport including if rendered, the vertical scrollbar.
See https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth
windowRemoveEventListener Source #
Arguments
| :: MisoString | Type of event to listen to (e.g. "click") |
| -> Function | Callback which will be called when the event occurs, the event will be passed to it as a parameter. |
| -> IO () |
Removes an event listener from window
newtype ArrayBuffer Source #
Constructors
| ArrayBuffer JSVal |
Instances
| Eq ArrayBuffer Source # | |
Defined in Miso.FFI.Internal | |
| FromJSVal ArrayBuffer Source # | |
Defined in Miso.FFI.Internal Methods fromJSVal :: JSVal -> IO (Maybe ArrayBuffer) Source # fromJSValUnchecked :: JSVal -> IO ArrayBuffer Source # | |
| ToJSVal ArrayBuffer Source # | |
Defined in Miso.FFI.Internal | |
data CONTENT_TYPE Source #
List of possible content types that are available for use with the fetch API
Instances
| Show CONTENT_TYPE Source # | |
Defined in Miso.FFI.Internal Methods showsPrec :: Int -> CONTENT_TYPE -> ShowS # show :: CONTENT_TYPE -> String # showList :: [CONTENT_TYPE] -> ShowS # | |
| Eq CONTENT_TYPE Source # | |
Defined in Miso.FFI.Internal | |
| ToJSVal CONTENT_TYPE Source # | |
Defined in Miso.FFI.Internal | |
newtype FileReader Source #
Constructors
| FileReader JSVal |
Instances
| Eq FileReader Source # | |
Defined in Miso.FFI.Internal | |
| FromJSVal FileReader Source # | |
Defined in Miso.FFI.Internal Methods fromJSVal :: JSVal -> IO (Maybe FileReader) Source # fromJSValUnchecked :: JSVal -> IO FileReader Source # | |
| ToJSVal FileReader Source # | |
Defined in Miso.FFI.Internal | |
| ToObject FileReader Source # | |
Defined in Miso.FFI.Internal | |
Type that holds an Image.
Type returned from a fetch request
Constructors
| Response | |
Fields
| |
newtype URLSearchParams Source #
Constructors
| URLSearchParams JSVal |
Instances
| Eq URLSearchParams Source # | |
Defined in Miso.FFI.Internal Methods (==) :: URLSearchParams -> URLSearchParams -> Bool # (/=) :: URLSearchParams -> URLSearchParams -> Bool # | |
| FromJSVal URLSearchParams Source # | |
Defined in Miso.FFI.Internal | |
| ToJSVal URLSearchParams Source # | |
Defined in Miso.FFI.Internal | |
| ToObject URLSearchParams Source # | |
Defined in Miso.FFI.Internal | |
newtype Uint8Array Source #
Constructors
| Uint8Array JSVal |
Instances
| FromJSVal Uint8Array Source # | |
Defined in Miso.FFI.Internal Methods fromJSVal :: JSVal -> IO (Maybe Uint8Array) Source # fromJSValUnchecked :: JSVal -> IO Uint8Array Source # | |
| ToJSVal Uint8Array Source # | |
Defined in Miso.FFI.Internal | |