browser-storage-adapter
v1.1.2
Published
Browser storage adapter to crud 1-n different stores simultaneously
Downloads
55
Maintainers
Readme
Browser Storage Adapter 💾
This is a library to save key-value pairs to one or multiple storages (e.g. SessionStorage, LocalStorage, Cookie, ...).
Table of Contents
Installation
npm install browser-storage-adapter --save
Usage
Create an instance of the Adapter
and specify the driver
s,
which should be enabled. By default, all drivers are disabled, expect of the in-memory driver, which is always enabled.
Besides, it is also possible to specify a custom namespace
, so different instances of the Adapter don't interfere with each other, when they use the same key.
import { Adapter } from 'browser-storage-adapter';
const warehouse = new Adapter({
driver: {
cookie: {
path: '/',
},
localStorage: true,
sessionStorage: true,
},
namespace: 'auth'
});
// Set a key-value pair for the following drivers:
// cookie, localStorage & sessionStorage.
warehouse.set('token', 'xxx');
// Ensure that value is still the same for all drivers.
warehouse.sync('token', 'xxx');
// Get a key-value pair.
const token = warehouse.get('token');
console.log(token);
// xxx
Options
The Adapter accepts an OptionsInput
object as input parameter, to modify the default behaviour.
import { CookieSerializeOptions } from 'cookie';
declare type OptionsInput = {
/**
* Specify a key prefix.
* e.g.
* namespace: auth
* key: token
* keyWithNamespace: auth_token
*/
namespace?: string,
/**
* Enable or disable some available drivers.
*/
driver?: {
localStorage?: boolean,
sessionStorage?: boolean,
cookie?: boolean | CookieSerializeOptions
},
/**
* Check if the application is server rendered.
*/
isServer?: () => boolean,
/**
* Set cookie.
*
* @param key
* @param value
*/
setCookie?: (key: string, value: unknown) => void,
/**
* Get cookie.
*
* @param key
*/
getCookie?: (key: string) => unknown,
/**
* Append serialized cookie.
*
* @param value
*/
setServerCookie?: (value: string) => void,
/**
* Ger serialized cookie(s).
*/
getServerCookies?: () => string
}