Name: reflex
Version: 0.5
Synopsis: Higher-order Functional Reactive Programming
Description: Reflex is a high-performance, deterministic, higher-order Functional Reactive Programming system
License: BSD3
License-file: LICENSE
Author: Ryan Trinkle
Maintainer: ryan.trinkle@gmail.com
Stability: Experimental
Category: FRP
Build-type: Simple
Cabal-version: >=1.9.2
homepage: https://reflex-frp.org
bug-reports: https://github.com/reflex-frp/reflex/issues
extra-source-files:
  README.md
  Quickref.md

flag use-reflex-optimizer
  description: Use the GHC plugin Reflex.Optimizer on some of the modules in the package.  This is still experimental.
  default: False
  manual: True

flag use-template-haskell
  description: Use template haskell to generate lenses
  default: True
  manual: True

flag debug-trace-events
  description: Add instrumentation that outputs the stack trace of the definition of an event whenever it is subscribed to. Warning: It is very slow!
  default: False
  manual: True

flag fast-weak
  description: Use the primitive implementation of FastWeak in GHCJS; note that this requires GHCJS to be built with FastWeak and FastWeakBag present in the RTS, which is not the default
  default: False
  manual: True

library
  hs-source-dirs: src
  build-depends:
    MemoTrie == 0.6.*,
    base >= 4.9 && < 4.13,
    bifunctors >= 5.2 && < 5.6,
    comonad,
    containers >= 0.5 && < 0.7,
    data-default >= 0.5 && < 0.8,
    dependent-map >= 0.2.4 && < 0.3,
    exception-transformers == 0.4.*,
    lens >= 4.7 && < 5,
    monad-control >= 1.0.1 && < 1.1,
    monoidal-containers == 0.4.*,
    mtl >= 2.1 && < 2.3,
    prim-uniq >= 0.1.0.1 && < 0.2,
    primitive >= 0.5 && < 0.7,
    random == 1.1.*,
    ref-tf == 0.4.*,
    reflection == 2.1.*,
    semigroupoids >= 4.0 && < 6,
    semigroups >= 0.16 && < 0.19,
    stm >= 2.4 && < 2.6,
    syb >= 0.5 && < 0.8,
    these >= 0.4 && < 0.8,
    time >= 1.4 && < 1.9,
    transformers >= 0.2,
    transformers-compat >= 0.3,
    unbounded-delays >= 0.1.0.0 && < 0.2

  exposed-modules:
    Data.AppendMap,
    Data.FastMutableIntMap,
    Data.FastWeakBag,
    Data.Functor.Misc,
    Data.Map.Misc,
    Data.WeakBag,
    Reflex,
    Reflex.Class,
    Reflex.Adjustable.Class,
    Reflex.BehaviorWriter.Base,
    Reflex.BehaviorWriter.Class,
    Reflex.Collection,
    Reflex.Dynamic,
    Reflex.Dynamic.Uniq,
    Reflex.DynamicWriter,
    Reflex.DynamicWriter.Base,
    Reflex.DynamicWriter.Class,
    Reflex.EventWriter,
    Reflex.EventWriter.Base,
    Reflex.EventWriter.Class,
    Reflex.FastWeak,
    Reflex.FunctorMaybe,
    Reflex.Host.Class,
    Reflex.Network,
    Reflex.NotReady.Class,
    Reflex.Patch,
    Reflex.Patch.Class,
    Reflex.Patch.DMap,
    Reflex.Patch.DMapWithMove,
    Reflex.Patch.IntMap,
    Reflex.Patch.Map,
    Reflex.Patch.MapWithMove,
    Reflex.PerformEvent.Base,
    Reflex.PerformEvent.Class,
    Reflex.PostBuild.Base,
    Reflex.PostBuild.Class,
    Reflex.Profiled,
    Reflex.Pure,
    Reflex.Query.Base,
    Reflex.Query.Class,
    Reflex.Requester.Base,
    Reflex.Requester.Class,
    Reflex.Spider,
    Reflex.Spider.Internal,
    Reflex.Time,
    Reflex.TriggerEvent.Base,
    Reflex.TriggerEvent.Class,
    Reflex.Widget.Basic,
    Reflex.Workflow

  ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs -funbox-strict-fields -O2 -fspecialise-aggressively

  if flag(debug-trace-events)
    cpp-options: -DDEBUG_TRACE_EVENTS
    build-depends: bytestring

  if flag(use-reflex-optimizer)
    cpp-options: -DUSE_REFLEX_OPTIMIZER
    build-depends: ghc
    exposed-modules: Reflex.Optimizer

  if flag(use-template-haskell)
    cpp-options: -DUSE_TEMPLATE_HASKELL
    build-depends:
      dependent-sum >= 0.3 && < 0.5,
      haskell-src-exts >= 1.16 && < 1.21,
      haskell-src-meta >= 0.6 && < 0.9,
      template-haskell >= 2.9 && < 2.15
    exposed-modules:
      Reflex.Dynamic.TH
    other-extensions: TemplateHaskell
  else
    build-depends:
      dependent-sum == 0.4.*

  if flag(fast-weak) && impl(ghcjs)
    cpp-options: -DGHCJS_FAST_WEAK

  if impl(ghcjs)
    build-depends: ghcjs-base

test-suite semantics
  type: exitcode-stdio-1.0
  main-is: semantics.hs
  hs-source-dirs: test
  ghc-options: -O2 -Wall -rtsopts
  build-depends:
    base,
    bifunctors,
    containers,
    deepseq >= 1.3 && < 1.5,
    dependent-map,
    dependent-sum,
    mtl,
    ref-tf,
    reflex,
    split,
    transformers >= 0.3
  other-modules:
    Reflex.Bench.Focused
    Reflex.Plan.Pure
    Reflex.Plan.Reflex
    Reflex.Test
    Reflex.Test.Micro
    Reflex.TestPlan

test-suite CrossImpl
  type: exitcode-stdio-1.0
  main-is: Reflex/Test/CrossImpl.hs
  hs-source-dirs: test
  ghc-options: -O2 -Wall -rtsopts
  build-depends:
    base,
    containers,
    dependent-map,
    dependent-sum,
    deepseq >= 1.3 && < 1.5,
    mtl,
    transformers,
    ref-tf,
    reflex
  other-modules:
    Reflex.Test
    Reflex.TestPlan
    Reflex.Plan.Reflex
    Reflex.Plan.Pure

test-suite hlint
  type: exitcode-stdio-1.0
  main-is: hlint.hs
  hs-source-dirs: test
  build-depends: base
               , directory
               , filepath
               , filemanip
               , hlint
  if impl(ghcjs)
    buildable: False

test-suite EventWriterT
  type: exitcode-stdio-1.0
  main-is: EventWriterT.hs
  hs-source-dirs: test
  build-depends: base
               , containers
               , deepseq >= 1.3 && < 1.5
               , dependent-map
               , dependent-sum
               , lens
               , mtl
               , these
               , transformers
               , reflex
               , ref-tf
  other-modules:
    Reflex.Test
    Reflex.TestPlan
    Reflex.Plan.Reflex
    Reflex.Plan.Pure
    Test.Run

test-suite RequesterT
  type: exitcode-stdio-1.0
  main-is: RequesterT.hs
  hs-source-dirs: test
  build-depends: base
               , dependent-sum
               , dependent-map
               , lens
               , these
               , transformers
               , reflex
               , ref-tf
  buildable: False
  other-modules:
    Reflex.TestPlan
    Reflex.Plan.Pure

test-suite QueryT
  type: exitcode-stdio-1.0
  main-is: QueryT.hs
  hs-source-dirs: test
  build-depends: base
               , containers
               , dependent-map
               , dependent-sum
               , deepseq >= 1.3 && < 1.5
               , lens
               , monoidal-containers
               , mtl
               , ref-tf
               , reflex
               , semigroups
               , these
               , transformers
  other-modules:
    Test.Run
    Reflex.TestPlan
    Reflex.Plan.Reflex
    Reflex.Plan.Pure

test-suite GC-Semantics
  type: exitcode-stdio-1.0
  main-is: GC.hs
  hs-source-dirs: test
  build-depends: base
               , containers
               , dependent-sum
               , dependent-map
               , deepseq >= 1.3 && < 1.5
               , mtl
               , these
               , transformers
               , reflex
               , ref-tf
  if impl(ghc < 8)
    build-depends: semigroups
  other-modules:
    Reflex.Plan.Pure
    Reflex.Plan.Reflex
    Reflex.TestPlan
    Test.Run

test-suite rootCleanup
  type: exitcode-stdio-1.0
  main-is: rootCleanup.hs
  hs-source-dirs: test
  build-depends: base
               , containers
               , deepseq >= 1.3 && < 1.5
               , dependent-sum
               , mtl
               , reflex
               , ref-tf
               , these
  other-modules:
    Reflex.Plan.Pure
    Reflex.TestPlan
    Test.Run

benchmark spider-bench
  type: exitcode-stdio-1.0
  hs-source-dirs: bench test
  main-is: Main.hs
  ghc-options: -Wall -O2 -rtsopts
  build-depends:
    base,
    containers,
    criterion >= 1.1 && < 1.6,
    deepseq >= 1.3 && < 1.5,
    dependent-map,
    dependent-sum,
    ref-tf,
    mtl,
    primitive,
    reflex,
    split,
    stm,
    transformers >= 0.3
  other-modules:
    Reflex.TestPlan
    Reflex.Plan.Reflex
    Reflex.Bench.Focused

benchmark saulzar-bench
  type: exitcode-stdio-1.0
  hs-source-dirs: bench test
  c-sources: bench-cbits/checkCapability.c
  main-is: RunAll.hs
  ghc-options: -Wall -O2 -rtsopts -threaded
  build-depends:
    base,
    containers >= 0.5 && < 0.7,
    criterion >= 1.1 && < 1.6,
    deepseq >= 1.3 && < 1.5,
    dependent-map,
    dependent-sum,
    loch-th,
    mtl,
    primitive,
    process,
    ref-tf,
    reflex,
    split,
    stm,
    time,
    transformers >= 0.3
  other-modules:
    Reflex.TestPlan
    Reflex.Plan.Reflex
    Reflex.Bench.Focused

source-repository head
  type: git
  location: https://github.com/reflex-frp/reflex