@@ -48,7 +48,7 @@ import Servant.API.ContentTypes
48
48
import Servant.API.Stream
49
49
(FromSourceIO (.. ))
50
50
import Servant.Types.SourceT
51
- (SourceT , StepT (.. ), foreachYieldStep , mapStepT ,
51
+ (SourceT ( unSourceT ) , StepT (.. ), foreachYieldStep , mapStepT ,
52
52
transformStepWithAtto )
53
53
54
54
-- | Line (or frame) of an event stream
@@ -249,7 +249,7 @@ eventsFromMessages =
249
249
-- See <https://www.w3.org/TR/2009/WD-eventsource-20090421/> for more details.
250
250
--
251
251
newtype EventMessageStreamT m = EventMessageStreamT
252
- { unEventMessageStreamT :: SourceT m EventMessage }
252
+ { unEventMessageStreamT :: StepT m EventMessage }
253
253
deriving (Show , Semigroup , Monoid )
254
254
255
255
-- | Server-sent event messages
@@ -260,23 +260,27 @@ newtype EventMessageStreamT m = EventMessageStreamT
260
260
instance MonadIO m => FromSourceIO EventStreamChunk (EventMessageStreamT m ) where
261
261
fromSourceIO =
262
262
EventMessageStreamT
263
- . mapStepT (eventMessagesFromLines . eventLinesFromChunks)
263
+ . eventMessagesFromLines
264
+ . eventLinesFromChunks
265
+ . Effect
266
+ . ($ pure )
267
+ . unSourceT
264
268
. fromSourceIO
265
269
266
270
-- | Server-sent event stream (SSE)
267
271
--
268
272
-- See <https://www.w3.org/TR/2009/WD-eventsource-20090421/> for more details.
269
273
--
270
274
newtype EventStreamT m = EventStreamT
271
- { unEventStreamT :: SourceT m (Event ByteString. ByteString ) }
275
+ { unEventStreamT :: StepT m (Event ByteString. ByteString ) }
272
276
deriving (Show , Semigroup , Monoid )
273
277
274
278
-- | Server-sent events
275
279
instance MonadIO m => FromSourceIO EventStreamChunk (EventStreamT m ) where
276
280
fromSourceIO input =
277
281
-- 'coerce' is used in place of unpacking and repacking 'EventStreamT'
278
282
coerce
279
- (mapStepT eventsFromMessages)
283
+ eventsFromMessages
280
284
(fromSourceIO input :: EventMessageStreamT m )
281
285
282
286
-- | Try to parse event data to JSON.
@@ -293,7 +297,7 @@ jsonEventsFromEvents =
293
297
294
298
-- | Server-sent event stream (SSE) for JSON values
295
299
newtype JsonEventStreamT m a = JsonEventStreamT
296
- { unJsonEventStreamT :: SourceT m (Event a ) }
300
+ { unJsonEventStreamT :: StepT m (Event a ) }
297
301
deriving (Show , Functor , Semigroup , Monoid )
298
302
299
303
-- | Server-sent JSON event stream
@@ -302,5 +306,5 @@ instance (MonadIO m, Aeson.FromJSON a) => FromSourceIO EventStreamChunk (JsonEve
302
306
-- The 'coerce' efficiently unwraps the 'EventStreamT' and wraps the
303
307
-- JsonEventStreamT.
304
308
coerce
305
- (mapStepT jsonEventsFromEvents)
309
+ jsonEventsFromEvents
306
310
(fromSourceIO input :: EventStreamT m )
0 commit comments