https://github.com/kitten/pessimism
A fast HAMT Map intended for KV caching and optimistic updates
https://github.com/kitten/pessimism
Last synced: 8 months ago
JSON representation
A fast HAMT Map intended for KV caching and optimistic updates
- Host: GitHub
- URL: https://github.com/kitten/pessimism
- Owner: kitten
- License: mit
- Archived: true
- Created: 2019-08-14T16:38:19.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-06T22:08:27.000Z (over 5 years ago)
- Last Synced: 2024-08-10T09:15:11.890Z (over 1 year ago)
- Language: OCaml
- Size: 400 KB
- Stars: 15
- Watchers: 2
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-list - pessimism
README
pessimism
A fast and compact HAMT-based KV-Cache with optimistic entries
`pessimism` is a fast and compact KV-Cache primarily built for `@urql/exchange-graphcache`.
It's a functional and immutable HAMT structure, which increases structural sharing, while
keeping memory usage compact. It supports optimistic entries, which can be invalidated in a single go.
## Usage
This library works with both TypeScript and BuckleScript (Reason/OCaml).
```sh
yarn add pessimism
# or
npm install --save pessimism
```
The basic methods support making a map and setting, getting, and removing entries:
```js
import * as Map from 'pessimism';
let map = Map.set(Map.make(), "key", "value");
Map.get(map, "key"); // "value"
map = Map.remove(map, "key");
Map.get(map, "key"); // undefined
```
Optimistic entries can be set using `setOptimistic` and cleared using `clearOptimistic`:
```js
import * as Map from 'pessimism';
let map = Map.set(Map.make(), "key", "value");
// Set an optimistic entry with the ID 1
map = Map.setOptimistic("key", "temp", 1);
Map.get(map, "key"); // "temp" which is the optimistic value
// Clear all optimistic entries with ID 1
map = Map.clearOptimistic(map, 1);
Map.get(map, "key"); // "value" which was the original value
```