A typed, persistent store for values of arbitrary types
Go to file
2023-03-18 16:20:48 -07:00
.github Introduce purs-tidy. 2023-03-09 17:50:30 -07:00
docs Update to contrib standards. 2023-03-09 07:50:15 -07:00
src/Data Updated implementation that doesn't depend directly on FFI. (#3) 2023-03-09 17:40:58 -07:00
test Improved test suite, bugfix, and new adjust function 2023-03-09 13:10:24 -07:00
.editorconfig Update to contrib standards. 2023-03-09 07:50:15 -07:00
.gitignore Update to contrib standards. 2023-03-09 07:50:15 -07:00
.tidyrc.json Introduce purs-tidy. 2023-03-09 17:50:30 -07:00
bower.json Updates for Rowtype Yoga organization. 2023-03-13 06:04:15 -07:00
CHANGELOG.md Changelog entry for Rowtype Yoga related updates. 2023-03-13 06:05:08 -07:00
CONTRIBUTING.md Updates for Rowtype Yoga organization. 2023-03-13 06:04:15 -07:00
LICENSE add licesnse 2017-10-30 19:48:25 +07:00
packages.dhall Updated implementation that doesn't depend directly on FFI. (#3) 2023-03-09 17:40:58 -07:00
README.md Clean up description a bit. 2023-03-18 16:20:48 -07:00
shell.nix Updated implementation that doesn't depend directly on FFI. (#3) 2023-03-09 17:40:58 -07:00
spago.dhall Updated implementation that doesn't depend directly on FFI. (#3) 2023-03-09 17:40:58 -07:00
test.dhall Updated implementation that doesn't depend directly on FFI. (#3) 2023-03-09 17:40:58 -07:00

Vault

CI Release Pursuit Maintainer: nsaunders

A typed, persistent store for values of arbitrary types, ported from the Haskell Vault library by Heinrich Apfelmus.

Think of a vault like a map that can store any value in a type-safe manner. The first step is to generate a new Key a value using the newKey function. Then, use insert, lookup, delete, etc., just like their Data.Map analogs.

data Vault
data Key a

newKey :: forall a. Effect (Key a)
empty  :: Vault
insert :: forall a. Key a -> a -> Vault -> Vault
lookup :: forall a. Key a -> Vault -> Maybe a
delete :: forall a. Key a -> Vault -> Vault
adjust :: forall a. (a -> a) -> Key a -> Vault -> Vault

Installation

Install vault with Spago:

spago install vault

If vault is not included in your package set, include it in packages.dhall, e.g.

let upstream = -- <package set URL here>
in  upstream
  with vault =
    { dependencies =
        [ "effect"
        , "maybe"
        , "ordered-collections"
        , "prelude"
        , "refs"
        , "unique"
        ]
    , repo =
        "https://github.com/rowtype-yoga/purescript-vault.git"
    , version =
        "v1.0.0"
    }

Quick start

The quick start hasn't been written yet (contributions are welcome!). The quick start covers a common, minimal use case for the library, whereas longer examples and tutorials are kept in the docs directory.

Documentation

Vault documentation is stored in a few places:

  1. Module documentation is published on Pursuit.
  2. Written documentation is kept in the docs directory.
  3. Usage examples can be found in the test suite.

If you get stuck, there are several ways to get help:

Contributing

You can contribute to Vault in several ways:

  1. If you encounter a problem or have a question, please open an issue. We'll do our best to work with you to resolve or answer it.

  2. If you would like to contribute code, tests, or documentation, please read the contributor guide. It's a short, helpful introduction to contributing to this library, including development instructions.

  3. If you have written a library, tutorial, guide, or other resource based on this package, please share it on the PureScript Discourse! Writing libraries and learning resources are a great way to help this library succeed.