aeson-flowtyped-0.7.0: Create Flow type definitions from Haskell data types.

Safe HaskellNone
LanguageHaskell2010

Data.Aeson.Flow

Contents

Description

Derive Flow types using aeson Options.

Synopsis

AST types

class Typeable a => FlowTyped a where Source #

Instances

FlowTyped Bool Source # 
FlowTyped Char Source # 
FlowTyped Double Source # 
FlowTyped Float Source # 
FlowTyped Int Source # 
FlowTyped Int8 Source # 
FlowTyped Int16 Source # 
FlowTyped Int32 Source # 
FlowTyped Int64 Source # 
FlowTyped Word Source # 
FlowTyped Word8 Source # 
FlowTyped Word16 Source # 
FlowTyped Word32 Source # 
FlowTyped Word64 Source # 
FlowTyped Scientific Source # 
FlowTyped String Source # 
FlowTyped Text Source # 
FlowTyped UTCTime Source # 
FlowTyped Value Source # 
FlowTyped Text Source # 
FlowTyped Void Source # 
FlowTyped a => FlowTyped [a] Source # 
FlowTyped a => FlowTyped (Maybe a) Source # 
Typeable * a => FlowTyped (Fixed a) Source # 
FlowTyped a => FlowTyped (Vector a) Source # 
FlowTyped a => FlowTyped (Vector a) Source # 
FlowTyped a => FlowTyped (Vector a) Source # 
(FlowTyped a, FlowTyped b) => FlowTyped (Either a b) Source # 
(FlowTyped a, FlowTyped b) => FlowTyped (a, b) Source # 

Methods

flowType :: Proxy * (a, b) -> FlowType Source #

flowTypeName :: Proxy * (a, b) -> Maybe Text Source #

flowOptions :: Proxy * (a, b) -> Options Source #

isPrim :: Proxy * (a, b) -> Bool Source #

(FlowTyped a, FlowTyped b, FlowTyped c) => FlowTyped (a, b, c) Source # 

Methods

flowType :: Proxy * (a, b, c) -> FlowType Source #

flowTypeName :: Proxy * (a, b, c) -> Maybe Text Source #

flowOptions :: Proxy * (a, b, c) -> Options Source #

isPrim :: Proxy * (a, b, c) -> Bool Source #

data FlowTypeF a Source #

The main AST for flowtypes.

Constructors

Object !(HashMap Text a) 
ExactObject !(HashMap Text a) 
Map !(Vector (Text, a)) 
Array a 
Tuple !(Vector a) 
Fun !(Vector (Text, a)) a 
Alt a a 
Prim !PrimType 
Nullable a 
Literal !Value 
Tag !Text 
Name !FlowName 
Poly !Var !(Vector a) 
PolyVar !Var 

Instances

Functor FlowTypeF Source # 

Methods

fmap :: (a -> b) -> FlowTypeF a -> FlowTypeF b #

(<$) :: a -> FlowTypeF b -> FlowTypeF a #

Foldable FlowTypeF Source # 

Methods

fold :: Monoid m => FlowTypeF m -> m #

foldMap :: Monoid m => (a -> m) -> FlowTypeF a -> m #

foldr :: (a -> b -> b) -> b -> FlowTypeF a -> b #

foldr' :: (a -> b -> b) -> b -> FlowTypeF a -> b #

foldl :: (b -> a -> b) -> b -> FlowTypeF a -> b #

foldl' :: (b -> a -> b) -> b -> FlowTypeF a -> b #

foldr1 :: (a -> a -> a) -> FlowTypeF a -> a #

foldl1 :: (a -> a -> a) -> FlowTypeF a -> a #

toList :: FlowTypeF a -> [a] #

null :: FlowTypeF a -> Bool #

length :: FlowTypeF a -> Int #

elem :: Eq a => a -> FlowTypeF a -> Bool #

maximum :: Ord a => FlowTypeF a -> a #

minimum :: Ord a => FlowTypeF a -> a #

sum :: Num a => FlowTypeF a -> a #

product :: Num a => FlowTypeF a -> a #

Traversable FlowTypeF Source # 

Methods

traverse :: Applicative f => (a -> f b) -> FlowTypeF a -> f (FlowTypeF b) #

sequenceA :: Applicative f => FlowTypeF (f a) -> f (FlowTypeF a) #

mapM :: Monad m => (a -> m b) -> FlowTypeF a -> m (FlowTypeF b) #

sequence :: Monad m => FlowTypeF (m a) -> m (FlowTypeF a) #

Show1 FlowTypeF Source # 

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> FlowTypeF a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [FlowTypeF a] -> ShowS #

Eq a => Eq (FlowTypeF a) Source # 

Methods

(==) :: FlowTypeF a -> FlowTypeF a -> Bool #

(/=) :: FlowTypeF a -> FlowTypeF a -> Bool #

Show a => Show (FlowTypeF a) Source # 

Code generation

Wholesale ES6/flow modules

data Export where Source #

Constructors

Export :: FlowTyped a => Proxy a -> Export 

exportFlowTypeAs :: Text -> FlowType -> Text Source #

Generate a export type declaration.

Utility functions

showFlowType :: FlowType -> Text Source #

Pretty-print a flowtype in flowtype syntax

dependencies :: FlowTyped a => Proxy a -> Set FlowName Source #

Compute all the dependencies of a FlowTyped thing, including itself.

Internals

defaultFlowTypeName :: (Generic a, Rep a ~ D1 (MetaData name mod pkg t) c, KnownSymbol name) => Proxy a -> Maybe Text Source #

data FlowName where Source #

A name for a flowtyped data-type. These are returned by dependencies.

Constructors

FlowName :: (Typeable a, FlowTyped a) => Proxy a -> Text -> FlowName 

class GFlowTyped g Source #

Minimal complete definition

gflowType

Instances

(KnownSymbol name, GFlowVal * * c) => GFlowTyped (D1 (MetaData name mod pkg t) c) Source # 

Methods

gflowType :: Options -> Proxy * (D1 (MetaData name mod pkg t) c x) -> FlowType

data Info a Source #

Constructors

Constr !Text FlowTypeI a 
NoInfo a 

Instances

Functor Info Source # 

Methods

fmap :: (a -> b) -> Info a -> Info b #

(<$) :: a -> Info b -> Info a #

Foldable Info Source # 

Methods

fold :: Monoid m => Info m -> m #

foldMap :: Monoid m => (a -> m) -> Info a -> m #

foldr :: (a -> b -> b) -> b -> Info a -> b #

foldr' :: (a -> b -> b) -> b -> Info a -> b #

foldl :: (b -> a -> b) -> b -> Info a -> b #

foldl' :: (b -> a -> b) -> b -> Info a -> b #

foldr1 :: (a -> a -> a) -> Info a -> a #

foldl1 :: (a -> a -> a) -> Info a -> a #

toList :: Info a -> [a] #

null :: Info a -> Bool #

length :: Info a -> Int #

elem :: Eq a => a -> Info a -> Bool #

maximum :: Ord a => Info a -> a #

minimum :: Ord a => Info a -> a #

sum :: Num a => Info a -> a #

product :: Num a => Info a -> a #

Traversable Info Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Info a -> f (Info b) #

sequenceA :: Applicative f => Info (f a) -> f (Info a) #

mapM :: Monad m => (a -> m b) -> Info a -> m (Info b) #

sequence :: Monad m => Info (m a) -> m (Info a) #

Show1 Info Source # 

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Info a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Info a] -> ShowS #

Show a => Show (Info a) Source # 

Methods

showsPrec :: Int -> Info a -> ShowS #

show :: Info a -> String #

showList :: [Info a] -> ShowS #

newtype Var Source #

Constructors

Var 

Fields

Instances

Eq Var Source # 

Methods

(==) :: Var -> Var -> Bool #

(/=) :: Var -> Var -> Bool #

Ord Var Source # 

Methods

compare :: Var -> Var -> Ordering #

(<) :: Var -> Var -> Bool #

(<=) :: Var -> Var -> Bool #

(>) :: Var -> Var -> Bool #

(>=) :: Var -> Var -> Bool #

max :: Var -> Var -> Var #

min :: Var -> Var -> Var #

Read Var Source # 
Show Var Source # 

Methods

showsPrec :: Int -> Var -> ShowS #

show :: Var -> String #

showList :: [Var] -> ShowS #