ToFu
Functional programming toolkit aimed at taming the complexity of Tagless Final approach.
Quick Start
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 utils
tofu-kernel-cats-mtl
for interop between tofu-kernel
and Cats MTL
tofu-core-*
for core utils (replace suffix *
with ce2
or ce3
depends on which cats-effect version you use)tofu-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
for Env
(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
for monix.reactive.Observable
utilstofu-zio-interop
for interop with ZIO (core, logging)
tofu-zio-core
for ZIO instances onlytofu-zio-logging
for ZIO logging only
Adopters
Proud user of ToFu? Feel free to add your company!
Contributing
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
Formatting
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
Copyright the maintainers, 2019-2024
Logos made with love by @impurepics