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-kernelfor core independent utilstofu-kernel-cats-mtlfor interop betweentofu-kerneland Cats MTL
tofu-core-*for core utils (replace suffix*withce2orce3depends on which cats-effect version you use)tofu-core-higher-kindfor higher kinded utilstofu-concurrentfor concurrent utilstofu-configfor config utilstofu-datafor data utilstofu-derivationfor derivation utils and derevo annotationstofu-doobiefor Doobie utilstofu-enumsfor Enumeratum utilstofu-envforEnv(a variation of a Reader Monad based on Monix Task)tofu-fs2-interopfor interop with fs2tofu-streamsfor streaming utilstofu-loggingfor the whole set of logging utils (derivation, layout, structured, util, interop)tofu-logging-derivationfor logging derivation onlytofu-logging-layoutfor logging layout onlytofu-logging-structuredfor logging structured onlytofu-logging-utilfor logging util onlytofu-logging-refinedfor interop between tofu-logging and Refinedtofu-logging-shapelessfor interop between tofu-logging and Shapeless tagtofu-logging-log4catsfor interop with Log4Cats
tofu-memofor caching utilstofu-observableformonix.reactive.Observableutilstofu-zio-interopfor interop with ZIO (core, logging)tofu-zio-corefor ZIO instances onlytofu-zio-loggingfor ZIO logging only
Proud user of ToFu? Feel free to add your company!
Please note we use the following labels for automated release descriptions:
choreif your PR does not change any types and runtime semanticsfixif 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-2024
Logos made with love by @impurepics