@@ -0,0 +1,26 @@
1+module Yoga.SSE.EventSource
2+ ( EventSource
3+ , newEventSource
4+ , onMessage
5+ , close
6+ ) where
7+
8+import Prelude
9+
10+import Effect (Effect)
11+import Effect.Uncurried (EffectFn1, EffectFn2, mkEffectFn1, runEffectFn1, runEffectFn2)
12+
13+foreign import data EventSource :: Type
14+
15+foreign import newEventSourceImpl :: EffectFn1 String EventSource
16+foreign import onMessageImpl :: EffectFn2 EventSource (EffectFn1 String Unit) Unit
17+foreign import closeImpl :: EffectFn1 EventSource Unit
18+
19+newEventSource :: String -> Effect EventSource
20+newEventSource = runEffectFn1 newEventSourceImpl
21+
22+onMessage :: EventSource -> (String -> Effect Unit) -> Effect Unit
23+onMessage es cb = runEffectFn2 onMessageImpl es (mkEffectFn1 cb)
24+
25+close :: EventSource -> Effect Unit
26+close = runEffectFn1 closeImpl