11package chrome .interop
22
33import _root_ .fs2 ._
4- import _root_ .fs2 .util ._
5- import _root_ .fs2 .util .syntax ._
64import _root_ .fs2 .async .mutable .Queue
5+ import cats .effect .{Async , Effect , IO }
6+ import cats .effect .implicits ._
7+ import cats .implicits ._
78import chrome .events .bindings .Event
89
10+ import scala .concurrent .ExecutionContext
911import scala .language .higherKinds
10-
1112import scala .scalajs .js
1213
1314package object fs2 {
1415
1516 implicit class Event1FS2Ops [T1 ](val event : Event [js.Function1 [T1 , _]])
1617 extends AnyVal {
1718
18- def single [F [_]: Async : Suspendable ]: F [T1 ] =
19- Async [F ].async[T1 ] { callback =>
20- Suspendable [F ].delay {
19+ def single [F [_]: Effect ]: F [T1 ] =
20+ Effect [F ].async[T1 ] { callback =>
21+ Effect [F ].delay {
2122 var fn = (t : T1 ) => ()
2223 fn = t => {
2324 event.removeListener(fn)
@@ -27,15 +28,15 @@ package object fs2 {
2728 }
2829 }
2930
30- def toStream [F [_]: Async ] : Stream [F , T1 ] =
31+ def toStream [F [_]: Effect ]( implicit EC : ExecutionContext ) : Stream [F , T1 ] =
3132 toStream(async.unboundedQueue[F , T1 ])
3233
33- def toStream [F [_]: Async ](queue : F [Queue [F , T1 ]]): Stream [F , T1 ] = {
34- Stream .bracket{
34+ def toStream [F [_]: Effect ](queue : F [Queue [F , T1 ]]): Stream [F , T1 ] = {
35+ Stream .bracket {
3536 queue.map { q =>
36- val callback = (t : T1 ) => q.offer1(t).unsafeRunAsync(_ => ())
37+ val callback = (t : T1 ) => q.offer1(t).runAsync(_ => IO .unit). unsafeRunAsync(_ => ())
3738 event.addListener(callback)
38- val release = Suspendable [F ].delay(event.removeListener(callback))
39+ val release = Async [F ].delay(event.removeListener(callback))
3940 (q, release)
4041 }
4142 }(_._1.dequeue, _._2)
@@ -46,9 +47,9 @@ package object fs2 {
4647 implicit class Event2FS2Ops [T1 , T2 ](val event : Event [js.Function2 [T1 , T2 , _]])
4748 extends AnyVal {
4849
49- def single [F [_]: Async : Suspendable ]: F [(T1 , T2 )] =
50- Async [F ].async[(T1 , T2 )] { callback =>
51- Suspendable [F ].delay {
50+ def single [F [_]: Effect ]: F [(T1 , T2 )] =
51+ Effect [F ].async[(T1 , T2 )] { callback =>
52+ Effect [F ].delay {
5253 var fn = (t1 : T1 , t2 : T2 ) => ()
5354 fn = (t1, t2) => {
5455 event.removeListener(fn)
@@ -58,15 +59,15 @@ package object fs2 {
5859 }
5960 }
6061
61- def toStream [F [_]: Async ] : Stream [F , (T1 , T2 )] =
62+ def toStream [F [_]: Effect ]( implicit EC : ExecutionContext ) : Stream [F , (T1 , T2 )] =
6263 toStream(async.unboundedQueue[F , (T1 , T2 )])
6364
64- def toStream [F [_]: Async ](queue : F [Queue [F , (T1 , T2 )]]): Stream [F , (T1 , T2 )] = {
65- Stream .bracket{
65+ def toStream [F [_]: Effect ](queue : F [Queue [F , (T1 , T2 )]]): Stream [F , (T1 , T2 )] = {
66+ Stream .bracket {
6667 queue.map { q =>
67- val callback = (t1 : T1 , t2 : T2 ) => q.offer1((t1, t2)).unsafeRunAsync(_ => ())
68+ val callback = (t1 : T1 , t2 : T2 ) => q.offer1((t1, t2)).runAsync(_ => IO .unit). unsafeRunAsync(_ => ())
6869 event.addListener(callback)
69- val release = Suspendable [F ].delay(event.removeListener(callback))
70+ val release = Async [F ].delay(event.removeListener(callback))
7071 (q, release)
7172 }
7273 }(_._1.dequeue, _._2)
@@ -77,9 +78,9 @@ package object fs2 {
7778 implicit class Event3FS2Ops [T1 , T2 , T3 ](val event : Event [js.Function3 [T1 , T2 , T3 , _]])
7879 extends AnyVal {
7980
80- def single [F [_]: Async : Suspendable ]: F [(T1 , T2 , T3 )] =
81- Async [F ].async[(T1 , T2 , T3 )] { callback =>
82- Suspendable [F ].delay {
81+ def single [F [_]: Effect ]: F [(T1 , T2 , T3 )] =
82+ Effect [F ].async[(T1 , T2 , T3 )] { callback =>
83+ Effect [F ].delay {
8384 var fn = (t1 : T1 , t2 : T2 , t3 : T3 ) => ()
8485 fn = (t1, t2, t3) => {
8586 event.removeListener(fn)
@@ -89,15 +90,15 @@ package object fs2 {
8990 }
9091 }
9192
92- def toStream [F [_]: Async ] : Stream [F , (T1 , T2 , T3 )] =
93+ def toStream [F [_]: Effect ]( implicit EC : ExecutionContext ) : Stream [F , (T1 , T2 , T3 )] =
9394 toStream(async.unboundedQueue[F , (T1 , T2 , T3 )])
9495
95- def toStream [F [_]: Async ](queue : F [Queue [F , (T1 , T2 , T3 )]]): Stream [F , (T1 , T2 , T3 )] = {
96- Stream .bracket{
96+ def toStream [F [_]: Effect ](queue : F [Queue [F , (T1 , T2 , T3 )]]): Stream [F , (T1 , T2 , T3 )] = {
97+ Stream .bracket {
9798 queue.map { q =>
98- val callback = (t1 : T1 , t2 : T2 , t3 : T3 ) => q.offer1((t1, t2, t3)).unsafeRunAsync(_ => ())
99+ val callback = (t1 : T1 , t2 : T2 , t3 : T3 ) => q.offer1((t1, t2, t3)).runAsync(_ => IO .unit). unsafeRunAsync(_ => ())
99100 event.addListener(callback)
100- val release = Suspendable [F ].delay(event.removeListener(callback))
101+ val release = Async [F ].delay(event.removeListener(callback))
101102 (q, release)
102103 }
103104 }(_._1.dequeue, _._2)
0 commit comments