conduit-1.3.6.1: src/Data/Conduit.hs
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE FlexibleContexts #-}
-- | If this is your first time with conduit, you should probably start with
-- the tutorial:
-- <https://github.com/snoyberg/conduit#readme>.
module Data.Conduit
( -- * Core interface
-- ** Types
ConduitT
-- *** Deprecated
, Source
, Conduit
, Sink
, ConduitM
-- ** Connect/fuse operators
, (.|)
, connect
, fuse
-- *** Deprecated
, ($$)
, ($=)
, (=$)
, (=$=)
-- *** Fuse with upstream results
, fuseBoth
, fuseBothMaybe
, fuseUpstream
-- ** Primitives
, await
, yield
, yieldM
, leftover
, runConduit
, runConduitPure
, runConduitRes
-- ** Finalization
, bracketP
-- ** Exception handling
, catchC
, handleC
, tryC
-- * Generalized conduit types
, Producer
, Consumer
, toProducer
, toConsumer
-- * Utility functions
, awaitForever
, transPipe
, mapOutput
, mapOutputMaybe
, mapInput
, mapInputM
, mergeSource
, passthroughSink
, sourceToList
-- * Connect-and-resume
, SealedConduitT
, sealConduitT
, unsealConduitT
, ($$+)
, ($$++)
, ($$+-)
, ($=+)
-- ** For @Conduit@s
, (=$$+)
, (=$$++)
, (=$$+-)
-- * Fusion with leftovers
, fuseLeftovers
, fuseReturnLeftovers
-- * Flushing
, Flush (..)
-- * Newtype wrappers
-- ** ZipSource
, ZipSource (..)
, sequenceSources
-- ** ZipSink
, ZipSink (..)
, sequenceSinks
-- ** ZipConduit
, ZipConduit (..)
, sequenceConduits
-- * Convenience reexports
, Void -- FIXME consider instead relaxing type of runConduit
) where
import Data.Conduit.Internal.Conduit
import Data.Void (Void)
import Data.Functor.Identity (Identity, runIdentity)
import Control.Monad.Trans.Resource (ResourceT, runResourceT)
import Control.Monad.IO.Unlift (MonadUnliftIO)