Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tofu-tf/tofu
Functional programming toolbox
https://github.com/tofu-tf/tofu
concurrent config effects functional-programming hacktoberfest logging optics reader-monad tagless-final typeclasses
Last synced: about 1 month ago
JSON representation
Functional programming toolbox
- Host: GitHub
- URL: https://github.com/tofu-tf/tofu
- Owner: tofu-tf
- License: apache-2.0
- Created: 2019-04-04T16:44:51.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-12-12T08:45:16.000Z (about 1 month ago)
- Last Synced: 2024-12-12T09:34:31.595Z (about 1 month ago)
- Topics: concurrent, config, effects, functional-programming, hacktoberfest, logging, optics, reader-monad, tagless-final, typeclasses
- Language: Scala
- Homepage: https://tofu-tf.github.io/tofu/
- Size: 20.5 MB
- Stars: 537
- Watchers: 24
- Forks: 94
- Open Issues: 37
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# ToFu
[![Build & Release](https://github.com/tofu-tf/tofu/workflows/Scala%20CI/badge.svg)](https://github.com/tofu-tf/tofu/actions?query=workflow%3A%22Scala+CI%22)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/tf.tofu/tofu-core-ce3_2.13/badge.svg)](https://maven-badges.herokuapp.com/maven-central/tf.tofu/tofu-core-ce3_2.13)
[![Sonatype Nexus (Snapshots) badge](https://img.shields.io/nexus/s/https/oss.sonatype.org/tf.tofu/tofu-core-ce3_2.13.svg)](https://oss.sonatype.org/content/repositories/snapshots/tf/tofu/tofu-core-ce3_2.13/)
[![Discord Chat](https://img.shields.io/discord/657318688025739283.svg)](https://discord.gg/qPD5GGH)
[![Zulip](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://tofu-tf.zulipchat.com)
[![Scala Steward badge](https://img.shields.io/badge/Scala_Steward-helping-blue.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAMAAAARSr4IAAAAVFBMVEUAAACHjojlOy5NWlrKzcYRKjGFjIbp293YycuLa3pYY2LSqql4f3pCUFTgSjNodYRmcXUsPD/NTTbjRS+2jomhgnzNc223cGvZS0HaSD0XLjbaSjElhIr+AAAAAXRSTlMAQObYZgAAAHlJREFUCNdNyosOwyAIhWHAQS1Vt7a77/3fcxxdmv0xwmckutAR1nkm4ggbyEcg/wWmlGLDAA3oL50xi6fk5ffZ3E2E3QfZDCcCN2YtbEWZt+Drc6u6rlqv7Uk0LdKqqr5rk2UCRXOk0vmQKGfc94nOJyQjouF9H/wCc9gECEYfONoAAAAASUVORK5CYII=)](https://scala-steward.org)**Functional programming toolkit aimed at taming the complexity of Tagless Final approach.**
# Quick Start
## see [the docs on the microsite](https://tofu-tf.github.io/tofu)
## see the [examples in the `examples` directory](https://github.com/tofu-tf/tofu/tree/master/examples)
To use the whole utils pack just add to your `build.sbt`:
```scala
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](https://github.com/typelevel/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 utils
* `tofu-concurrent` for concurrent utils
* `tofu-config` for config utils
* `tofu-data` for data utils
* `tofu-derivation` for derivation utils and [derevo](https://github.com/tofu-tf/derevo) annotations
* `tofu-doobie` for [Doobie](https://github.com/tpolecat/doobie) utils
* `tofu-enums` for [Enumeratum](https://github.com/lloydmeta/enumeratum) utils
* `tofu-env` for `Env` (a variation of a Reader Monad based on [Monix](https://github.com/monix/monix) Task)
* `tofu-fs2-interop` for interop with [fs2](https://github.com/functional-streams-for-scala/fs2)
* `tofu-streams` for streaming utils
* `tofu-logging` for the whole set of logging utils (derivation, layout, structured, util, interop)
* `tofu-logging-derivation` for logging derivation only
* `tofu-logging-layout` for logging layout only
* `tofu-logging-structured` for logging structured only
* `tofu-logging-util` for logging util only
* `tofu-logging-refined` for interop between tofu-logging and [Refined](https://github.com/fthomas/refined)
* `tofu-logging-shapeless` for interop between tofu-logging and [Shapeless](https://github.com/milessabin/shapeless) tag
* `tofu-logging-log4cats` for interop with [Log4Cats](https://github.com/typelevel/log4cats)
* `tofu-memo` for caching utils
* `tofu-observable` for `monix.reactive.Observable` utils
* `tofu-zio-interop` for interop with [ZIO](https://zio.dev) (core, logging)
* `tofu-zio-core` for ZIO instances only
* `tofu-zio-logging` for ZIO logging only# Adopters
Proud user of ToFu? Feel free to [add your company!](https://github.com/tofu-tf/tofu/edit/master/README.md)
# Contributing
Please note we use the following labels for automated release descriptions:
* `chore` if your PR does not change any types and runtime semantics
* `fix` 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-2024Logos made with love by [@impurepics](https://twitter.com/impurepics)