1{-# LANGUAGE RankNTypes #-}
2{-# LANGUAGE DeriveFunctor #-}
3{-# LANGUAGE FlexibleContexts #-}
4-- | If this is your first time with conduit, you should probably start with
5-- the tutorial:
6-- <https://github.com/snoyberg/conduit#readme>.
7module Data.Conduit
8    ( -- * Core interface
9      -- ** Types
10      ConduitT
11      -- *** Deprecated
12    , Source
13    , Conduit
14    , Sink
15    , ConduitM
16      -- ** Connect/fuse operators
17    , (.|)
18    , connect
19    , fuse
20      -- *** Deprecated
21    , ($$)
22    , ($=)
23    , (=$)
24    , (=$=)
25
26      -- *** Fuse with upstream results
27    , fuseBoth
28    , fuseBothMaybe
29    , fuseUpstream
30
31      -- ** Primitives
32    , await
33    , yield
34    , yieldM
35    , leftover
36    , runConduit
37    , runConduitPure
38    , runConduitRes
39
40      -- ** Finalization
41    , bracketP
42
43      -- ** Exception handling
44    , catchC
45    , handleC
46    , tryC
47
48      -- * Generalized conduit types
49    , Producer
50    , Consumer
51    , toProducer
52    , toConsumer
53
54      -- * Utility functions
55    , awaitForever
56    , transPipe
57    , mapOutput
58    , mapOutputMaybe
59    , mapInput
60    , mapInputM
61    , mergeSource
62    , passthroughSink
63    , sourceToList
64
65      -- * Connect-and-resume
66    , SealedConduitT
67    , sealConduitT
68    , unsealConduitT
69    , ($$+)
70    , ($$++)
71    , ($$+-)
72    , ($=+)
73
74      -- ** For @Conduit@s
75    , (=$$+)
76    , (=$$++)
77    , (=$$+-)
78
79      -- * Fusion with leftovers
80    , fuseLeftovers
81    , fuseReturnLeftovers
82
83      -- * Flushing
84    , Flush (..)
85
86      -- * Newtype wrappers
87      -- ** ZipSource
88    , ZipSource (..)
89    , sequenceSources
90
91      -- ** ZipSink
92    , ZipSink (..)
93    , sequenceSinks
94
95      -- ** ZipConduit
96    , ZipConduit (..)
97    , sequenceConduits
98
99      -- * Convenience reexports
100    , Void -- FIXME consider instead relaxing type of runConduit
101    ) where
102
103import Data.Conduit.Internal.Conduit
104import Data.Void (Void)
105import Data.Functor.Identity (Identity, runIdentity)
106import Control.Monad.Trans.Resource (ResourceT, runResourceT)
107import Control.Monad.IO.Unlift (MonadUnliftIO)
108