@@ -66,7 +66,8 @@ incoming tipe =
66 Aliased _ t -> incoming t
66 Aliased _ t -> incoming t
68 App (Type v) [t]
68 App (Type v) [t]
69− | Var.isSignal v -> obj ["_P","incomingSignal"] <| incoming t
70+ obj ["_P","incomingSignal"] <| incoming t
71 _ -> ["v"] ==> inc tipe (ref "v")
72 _ -> ["v"] ==> inc tipe (ref "v")
@@ -124,10 +125,10 @@ inc tipe x =
125 Record fields Nothing ->
126 Record fields Nothing ->
126 check x (JSObject (map fst fields)) object
127 check x (JSObject (map fst fields)) object
128− object = ObjectLit () $ (prop "_", ObjectLit () []) : keys
129+ object = ObjectLit () $ (prop "_", ObjectLit () []) : keys
129− keys = map convert fields
130+ keys = map convert fields
130− convert (f,t) = (prop f, inc t (DotRef () x (var f)))
131+ convert (f,t) = (prop f, inc t (DotRef () x (var f)))
133incomingTuple :: [CanonicalType] -> Expression () -> Expression ()
134incomingTuple :: [CanonicalType] -> Expression () -> Expression ()
@@ -146,11 +147,25 @@ incomingTuple types x =
147outgoing :: CanonicalType -> Expression ()
148outgoing :: CanonicalType -> Expression ()
148outgoing tipe =
149outgoing tipe =
149− case tipe of
150+ case T.dealias tipe of
150− Aliased _ t -> outgoing t
151+ App (Type signal) [ App (Type promise) [_,_] ]
152+ | Var.isSignal signal && Var.isPromise promise ->
153+ obj ["_P","promiseStream"]
155+ App (Type promise) [_,_]
156+ | Var.isPromise promise ->
157+ obj ["_P","promise"]
163+outgoingFunc :: CanonicalType -> Expression ()
152 App (Type v) [t]
166 App (Type v) [t]
153− | Var.isSignal v -> obj ["_P","outgoingSignal"] <| outgoing t
168+ obj ["_P","outgoingSignal"] <| outgoingFunc t
155 _ -> ["v"] ==> out tipe (ref "v")
170 _ -> ["v"] ==> out tipe (ref "v")
@@ -195,10 +210,10 @@ out tipe x =
195 (out t (DotRef () x (var "_0")))
210 (out t (DotRef () x (var "_0")))
197 | Var.isArray name ->
212 | Var.isArray name ->
198− DotRef () (_Array "toJSArray" <| x) (var "map") <| outgoing t
213+ DotRef () (_Array "toJSArray" <| x) (var "map") <| outgoingFunc t
200 | Var.isList name ->
215 | Var.isList name ->
201− DotRef () (_List "toArray" <| x) (var "map") <| outgoing t
216+ DotRef () (_List "toArray" <| x) (var "map") <| outgoingFunc t
203 Type name : ts
218 Type name : ts
204 | Var.isTuple name ->
219 | Var.isTuple name ->