bower-json-1.1.0.0: Read bower.json from Haskell
Safe HaskellSafe-Inferred
LanguageHaskell2010

Web.Bower.PackageMeta

Description

A data type representing the Bower.json package description file, together with a parser and related functions.

This code is based on the specification at https://github.com/bower/bower.json-spec.

Synopsis

Data types

data PackageMeta Source #

A data type representing the data stored in a bower.json package manifest file.

Note that the ToJSON / FromJSON instances don't exactly match; for example, it is not always the case that decoding from JSON and then encoding to JSON will give you the exact same JSON that you started with. However, if you start with a PackageMeta value, encode to JSON, and then decode, you should always get the same value back.

Instances

Instances details
FromJSON PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser PackageMeta

parseJSONList :: Value -> Parser [PackageMeta]

ToJSON PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: PackageMeta -> Value

toEncoding :: PackageMeta -> Encoding

toJSONList :: [PackageMeta] -> Value

toEncodingList :: [PackageMeta] -> Encoding

Generic PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep PackageMeta :: Type -> Type

Methods

from :: PackageMeta -> Rep PackageMeta x

to :: Rep PackageMeta x -> PackageMeta

Show PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> PackageMeta -> ShowS

show :: PackageMeta -> String

showList :: [PackageMeta] -> ShowS

NFData PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: PackageMeta -> ()

Eq PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: PackageMeta -> PackageMeta -> Bool

(/=) :: PackageMeta -> PackageMeta -> Bool

Ord PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep PackageMeta Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep PackageMeta = D1 ('MetaData "PackageMeta" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'False) (C1 ('MetaCons "PackageMeta" 'PrefixI 'True) (((S1 ('MetaSel ('Just "bowerName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageName) :*: (S1 ('MetaSel ('Just "bowerDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "bowerMain") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]))) :*: ((S1 ('MetaSel ('Just "bowerModuleType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ModuleType]) :*: S1 ('MetaSel ('Just "bowerLicense") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])) :*: (S1 ('MetaSel ('Just "bowerIgnore") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text]) :*: S1 ('MetaSel ('Just "bowerKeywords") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Text])))) :*: ((S1 ('MetaSel ('Just "bowerAuthors") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Author]) :*: (S1 ('MetaSel ('Just "bowerHomepage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "bowerRepository") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Repository)))) :*: ((S1 ('MetaSel ('Just "bowerDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PackageName, VersionRange)]) :*: S1 ('MetaSel ('Just "bowerDevDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PackageName, VersionRange)])) :*: (S1 ('MetaSel ('Just "bowerResolutions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(PackageName, Version)]) :*: S1 ('MetaSel ('Just "bowerPrivate") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))))

data PackageName Source #

A valid package name for a Bower package.

Instances

Instances details
FromJSON PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser PackageName

parseJSONList :: Value -> Parser [PackageName]

ToJSON PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: PackageName -> Value

toEncoding :: PackageName -> Encoding

toJSONList :: [PackageName] -> Value

toEncodingList :: [PackageName] -> Encoding

Generic PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep PackageName :: Type -> Type

Methods

from :: PackageName -> Rep PackageName x

to :: Rep PackageName x -> PackageName

Show PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> PackageName -> ShowS

show :: PackageName -> String

showList :: [PackageName] -> ShowS

NFData PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: PackageName -> ()

Eq PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: PackageName -> PackageName -> Bool

(/=) :: PackageName -> PackageName -> Bool

Ord PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep PackageName Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep PackageName = D1 ('MetaData "PackageName" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'True) (C1 ('MetaCons "PackageName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

mkPackageName :: Text -> Either PackageNameError PackageName Source #

A smart constructor for a PackageName. It ensures that the package name satisfies the restrictions described at https://github.com/bower/bower.json-spec#name.

data Author Source #

Constructors

Author 

Fields

Instances

Instances details
FromJSON Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser Author

parseJSONList :: Value -> Parser [Author]

ToJSON Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: Author -> Value

toEncoding :: Author -> Encoding

toJSONList :: [Author] -> Value

toEncodingList :: [Author] -> Encoding

Generic Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep Author :: Type -> Type

Methods

from :: Author -> Rep Author x

to :: Rep Author x -> Author

Show Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> Author -> ShowS

show :: Author -> String

showList :: [Author] -> ShowS

NFData Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: Author -> ()

Eq Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: Author -> Author -> Bool

(/=) :: Author -> Author -> Bool

Ord Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

compare :: Author -> Author -> Ordering

(<) :: Author -> Author -> Bool

(<=) :: Author -> Author -> Bool

(>) :: Author -> Author -> Bool

(>=) :: Author -> Author -> Bool

max :: Author -> Author -> Author

min :: Author -> Author -> Author

type Rep Author Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep Author = D1 ('MetaData "Author" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'False) (C1 ('MetaCons "Author" 'PrefixI 'True) (S1 ('MetaSel ('Just "authorName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "authorEmail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "authorHomepage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))

data ModuleType Source #

Constructors

Globals 
AMD 
Node 
ES6 
YUI 

Instances

Instances details
FromJSON ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser ModuleType

parseJSONList :: Value -> Parser [ModuleType]

ToJSON ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: ModuleType -> Value

toEncoding :: ModuleType -> Encoding

toJSONList :: [ModuleType] -> Value

toEncodingList :: [ModuleType] -> Encoding

Bounded ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Enum ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Generic ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep ModuleType :: Type -> Type

Methods

from :: ModuleType -> Rep ModuleType x

to :: Rep ModuleType x -> ModuleType

Show ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> ModuleType -> ShowS

show :: ModuleType -> String

showList :: [ModuleType] -> ShowS

NFData ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: ModuleType -> ()

Eq ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: ModuleType -> ModuleType -> Bool

(/=) :: ModuleType -> ModuleType -> Bool

Ord ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep ModuleType Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep ModuleType = D1 ('MetaData "ModuleType" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'False) ((C1 ('MetaCons "Globals" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AMD" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Node" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ES6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YUI" 'PrefixI 'False) (U1 :: Type -> Type))))

data Repository Source #

Constructors

Repository 

Fields

Instances

Instances details
FromJSON Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser Repository

parseJSONList :: Value -> Parser [Repository]

ToJSON Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: Repository -> Value

toEncoding :: Repository -> Encoding

toJSONList :: [Repository] -> Value

toEncodingList :: [Repository] -> Encoding

Generic Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep Repository :: Type -> Type

Methods

from :: Repository -> Rep Repository x

to :: Rep Repository x -> Repository

Show Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> Repository -> ShowS

show :: Repository -> String

showList :: [Repository] -> ShowS

NFData Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: Repository -> ()

Eq Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: Repository -> Repository -> Bool

(/=) :: Repository -> Repository -> Bool

Ord Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep Repository Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep Repository = D1 ('MetaData "Repository" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'False) (C1 ('MetaCons "Repository" 'PrefixI 'True) (S1 ('MetaSel ('Just "repositoryUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "repositoryType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

newtype Version Source #

Constructors

Version 

Fields

Instances

Instances details
FromJSON Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser Version

parseJSONList :: Value -> Parser [Version]

ToJSON Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: Version -> Value

toEncoding :: Version -> Encoding

toJSONList :: [Version] -> Value

toEncodingList :: [Version] -> Encoding

Generic Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep Version :: Type -> Type

Methods

from :: Version -> Rep Version x

to :: Rep Version x -> Version

Show Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> Version -> ShowS

show :: Version -> String

showList :: [Version] -> ShowS

NFData Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: Version -> ()

Eq Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: Version -> Version -> Bool

(/=) :: Version -> Version -> Bool

Ord Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

compare :: Version -> Version -> Ordering

(<) :: Version -> Version -> Bool

(<=) :: Version -> Version -> Bool

(>) :: Version -> Version -> Bool

(>=) :: Version -> Version -> Bool

max :: Version -> Version -> Version

min :: Version -> Version -> Version

type Rep Version Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep Version = D1 ('MetaData "Version" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'True) (C1 ('MetaCons "Version" 'PrefixI 'True) (S1 ('MetaSel ('Just "runVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

newtype VersionRange Source #

Constructors

VersionRange 

Fields

Instances

Instances details
FromJSON VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

parseJSON :: Value -> Parser VersionRange

parseJSONList :: Value -> Parser [VersionRange]

ToJSON VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

toJSON :: VersionRange -> Value

toEncoding :: VersionRange -> Encoding

toJSONList :: [VersionRange] -> Value

toEncodingList :: [VersionRange] -> Encoding

Generic VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep VersionRange :: Type -> Type

Show VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> VersionRange -> ShowS

show :: VersionRange -> String

showList :: [VersionRange] -> ShowS

NFData VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: VersionRange -> ()

Eq VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: VersionRange -> VersionRange -> Bool

(/=) :: VersionRange -> VersionRange -> Bool

Ord VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep VersionRange Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep VersionRange = D1 ('MetaData "VersionRange" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'True) (C1 ('MetaCons "VersionRange" 'PrefixI 'True) (S1 ('MetaSel ('Just "runVersionRange") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data BowerError Source #

Instances

Instances details
Generic BowerError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep BowerError :: Type -> Type

Methods

from :: BowerError -> Rep BowerError x

to :: Rep BowerError x -> BowerError

Show BowerError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> BowerError -> ShowS

show :: BowerError -> String

showList :: [BowerError] -> ShowS

NFData BowerError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: BowerError -> ()

Eq BowerError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

(==) :: BowerError -> BowerError -> Bool

(/=) :: BowerError -> BowerError -> Bool

Ord BowerError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep BowerError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep BowerError = D1 ('MetaData "BowerError" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'False) (C1 ('MetaCons "InvalidPackageName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageNameError)) :+: C1 ('MetaCons "InvalidModuleType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data PackageNameError Source #

Instances

Instances details
Generic PackageNameError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Associated Types

type Rep PackageNameError :: Type -> Type

Show PackageNameError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

showsPrec :: Int -> PackageNameError -> ShowS

show :: PackageNameError -> String

showList :: [PackageNameError] -> ShowS

NFData PackageNameError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Methods

rnf :: PackageNameError -> ()

Eq PackageNameError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

Ord PackageNameError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep PackageNameError Source # 
Instance details

Defined in Web.Bower.PackageMeta.Internal

type Rep PackageNameError = D1 ('MetaData "PackageNameError" "Web.Bower.PackageMeta.Internal" "bower-json-1.1.0.0-9XkthHGLDMYJgzJvzHCe35" 'False) ((C1 ('MetaCons "NotEmpty" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TooLong" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "InvalidChars" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Char])))) :+: (C1 ('MetaCons "RepeatedSeparators" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MustNotBeginSeparator" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MustNotEndSeparator" 'PrefixI 'False) (U1 :: Type -> Type))))

Parsing

decodeFile :: FilePath -> IO (Either (ParseError BowerError) PackageMeta) Source #

Read and attempt to decode a bower.json file.

displayError :: ParseError BowerError -> Text Source #

asPackageMeta :: Parse BowerError PackageMeta Source #

A parser for bower.json files, using the aeson-better-errors package.

asAuthor :: Parse e Author Source #