@inconcept-labs/fallback-storage
Some browsers don't support specific types of storages (localStorage, sessionStorage, etc.) or they may be disabled from browser settings. This library, lets you specify a fallback order, and it will check which storage type is available from the list, and use it.
For example, if you specify ['localStorage', 'sessionStorage', 'cookieStorage', 'memoryStorage']
,
it will use localStorage if it is supported, otherwise it will try the next one and so on.
For avoiding item key collisions, you can also specify which prefix you want for the storage name.
Installation
Using npm:
$ npm i @inconcept-labs/fallback-storage
Using yarn:
$ yarn add @inconcept-labs/fallback-storage
Usage
import StorageFallback from '@inconcept-labs/fallback-storage';
const prefix = 'cs';
export const cookieStorage = new StorageFallback(prefix, [
'cookieStorage',
'memoryStorage',
]);
cookieStorage.setItem('cookie_key', 'cookie_value');
cookieStorage.getItem('cookie_key');
cookieStorage.removeItem('cookie_key');
cookieStorage.removeItem('cookie_key');
cookieStorage.hasItem('cookie_key');
cookieStorage.clear();
Documentation
Types
StorageType = 'localStorage' | 'sessionStorage' | 'cookieStorage' | 'memoryStorage'
Constructor
StorageFallback(storageOrders, prefix)
Create a storage that stores items with prefix
prepended and fallback order of storageOrders
.
Parameters
storageOrders: StorageType[]
prefix: string
Return values
StorageFallback
Instance methods
setItem
Store an item by key
Parameters
key: string
value: string
Return values
None
getItem
Retrieve an item by key
Parameters
key: string
Return values
string | null
removeItem
Remove an item by key
Parameters
key: string
Return values
None
hasItem
Determine if the key is present in the storage
Parameters
key: string
Return values
boolean
clear
Remove all items from the storage
Parameters
None
Return values
None
Gotchas
-
CookieStorage
has storage capacity limitations. Also, if browser is closed cookies will be removed. -
MemoryStorage
does not persist between page loads. This is more or less a stop-gap to prevent page crashes, but may be sufficient for websites that don't do full page reloads. - Using browser native storage clear functions will remove your storage data.
Thanks
local-storage-fallback for inspiration