Functional programming toolkit aimed at taming the complexity of Tagless Final approach.
To use the whole utils pack just add to your build.sbt
:
libraryDependencies += "tf.tofu" %% "tofu" % "latest version in badge"
Of course, you can also specify an exact list of tofu
modules that you want to add to your dependencies (used in place
of "tofu"
):
tofu-kernel
for core independent utilstofu-kernel-cats-mtl
for interop betweentofu-kernel
and Cats MTL
tofu-core
for core utilstofu-core-higher-kind
for higher kinded utilstofu-concurrent
for concurrent utilstofu-config
for config utilstofu-data
for data utilstofu-derivation
for derivation utils and derevo annotationstofu-doobie
for Doobie utilstofu-enums
for Enumeratum utilstofu-env
forEnv
(a variation of a Reader Monad based on Monix Task)tofu-fs2-interop
for interop with fs2tofu-streams
for streaming utilstofu-logging
for the whole set of logging utils (derivation, layout, structured, util, interop)tofu-logging-derivation
for logging derivation onlytofu-logging-layout
for logging layout onlytofu-logging-structured
for logging structured onlytofu-logging-util
for logging util onlytofu-logging-refined
for interop between tofu-logging and Refinedtofu-logging-shapeless
for interop between tofu-logging and Shapeless tagtofu-logging-log4cats
for interop with Log4Cats
tofu-memo
for caching utilstofu-observable
formonix.reactive.Observable
utilstofu-optics-core
for optics core (Optics typeclasses)tofu-optics-interop
for optics interop with Monocletofu-optics-macro
for macro optics generatorstofu-zio-interop
for interop with ZIO (core, logging)tofu-zio-core
for ZIO instances onlytofu-zio-logging
for ZIO logging only
Proud user of ToFu? Feel free to add your company!
Please note we use the following labels for automated release descriptions:
chore
if your PR does not change any types and runtime semanticsfix
if your PR merely fixes incorrect behavior
We have an automated check for style conformance. You can run sbt checkfmt
before PR.
If you have any trouble during this check, just run sbt fmt
and commit again.
Copyright the maintainers, 2019-2021
Logos made with love by @impurepics