README.md

# glorage

[![Package Version](https://img.shields.io/hexpm/v/glorage)](https://hex.pm/packages/glorage)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/glorage/)
![Erlang-compatible](https://img.shields.io/badge/target-erlang-a2003e)
![JavaScript-compatible](https://img.shields.io/badge/target-javascript-f1e05a)

Gleam thread local storage

```sh
gleam add glorage
```
```gleam
import glorage

pub fn main() {
  use <- glorage.run // init thread local storage

  inc(1) // 2

  inc(7) // 2, because it's cached inside thread local storage

  use n <- glorage.with(inc) // ability to get thread local storage cached value, n is 2
}

fn inc(n) {
  use <- glorage.once(inc) // make function cachable inside thread local storage
  n + 1
}
```

Further documentation can be found at <https://hexdocs.pm/glorage>.

## Development

```sh
gleam run   # Run the project
gleam test  # Run the tests
```