UNPKG

unissist

Version:

A persistance library for unistore

104 lines (71 loc) 3.47 kB
<a href="https://www.npmjs.org/package/unissist"><img src="https://img.shields.io/npm/v/unissist.svg?style=flat" alt="npm"></a> <a href="https://travis-ci.org/DonnieWest/unissist"><img src="https://api.travis-ci.org/DonnieWest/unissist.svg?branch=master" alt="travis"></a> # unissist > A tiny ~300b unistore persistence helper library state container with various storage adapters. ## Table of Contents - [Install](#install) - [Usage](#usage) - [API](#api) - [License](#license) ## Install This project uses [node](http://nodejs.org) and [npm](https://npmjs.com). Go check them out if you don't have them locally installed. ```sh npm install --save unissist ``` Then with a module bundler like [webpack](https://webpack.js.org) or [rollup](http://rollupjs.org), use as you would anything else: ```js // The helper: import persistStore from 'unissist'; // localStorage Adapter import localStorageAdapter from 'unissist/integrations/localStorageAdapter'; // indexedDB Adapter import indexedDBAdapter from 'unissist/integrations/indexdbAdapter'; // AsyncStorage Adapter import asyncStorageAdapter from 'unissist/integrations/asyncStorageAdapter'; ``` The [UMD](https://github.com/umdjs/umd) build is also available on [unpkg](https://unpkg.com): ```html <script src="//unpkg.com/unistore/dist/unissist.umd.js"></script> ``` You can find the library on `window.unissist`. ### Usage ```js // use unistore like you always would, but use the unissist helper to persist state import createStore from 'unistore' import persistStore from 'unissist' import localStorageAdapter from 'unissist/integrations/localStorageAdapter'; const store = createStore({ count: 0 }) const adapter = localStorageAdapter(); persistStore(store, adapter); // store state now includes a `hydrated` that tells you whether or not the state has been rehydrated from the store ``` Unissist also takes a third parameter that allows you to configure how your peristence works ```js import createStore from 'unistore' import persistStore from 'unissist' import localStorageAdapter from 'unissist/integrations/localStorageAdapter'; const store = createStore({ count: 0 }) const adapter = localStorageAdapter(); // Default values except migration let config = { version: 1, debounceTime: 100, // called when version is updated. Accepts promises. Defaults to dropping the store migration: (oldState, oldversion) => ({ /* new state */ }), // takes in the current state and returns the state to be persisted map: state => ({ /* new persisted state shape */ }) // takes in state that will be hydrated and returns the new state shape hydration: state => ({ /* new state shape */ }) } persistStore(store, adapter, config); ``` ### Reporting Issues Found a problem? Want a new feature? First of all, see if your issue or idea has [already been reported](../../issues). If not, just open a [new clear and descriptive issue](../../issues/new). ### Credits [Jason Miller](https://github.com/developit) for [unistore](https://github.com/developit/unistore), `assign` util function, and a lot of the tooling that I ~stole~ used </br> [Jake Archibald](https://github.com/jakearchibald) for [idb-keyval](https://github.com/jakearchibald/idb-keyval) where much of the code for the indexdbAdapter was ~stolen~ borrowed </br> [Sean Groff](https://github.com/seangroff) for the name ### License [MIT License](https://oss.ninja/mit/donniewest) © [Donnie West](https://donniewest.com)