All Projects → kitten → pessimism

kitten / pessimism

Licence: MIT License
A fast HAMT Map intended for KV caching and optimistic updates

Programming Languages

ocaml
1615 projects
javascript
184084 projects - #8 most used programming language

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).

yarn add pessimism
# or
npm install --save pessimism

The basic methods support making a map and setting, getting, and removing entries:

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:

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].