diso.storage
Client side storage supporting AsyncStorage, LocalForage, LocalStorage as well as an in-memory store.
API
Methods are named-arg/keyword based. They all accept an optional callback. If the callback is passed, that is used to pass error/value otherwise an ES6 Promise is returned.
- constructor({backend, ttl?, namespace?})
- get({key, namespace?, callback?})
- set({key, data, ttl?, namespace?, callback?})
- remove(key, namespace?, callback?)
- clear(callback?)
- length(callback?)
- keys(callback?)
Example
var Storage = ;var LocalForage = ;var AsyncStorage = AsyncStorage; var memoryStore = Storage; var forageStore = Storage; var asyncStore = backend : AsyncStorage; memoryStorage;
Comparing the underlying APIs
Both AsyncStorage and LocalForage APIs are async and support both callback and promise APIs.
Both have the same 4 core API methods, all with identical signatures: getItem, setItem, removeItem, clear.
These are exposed as: get, set, remove, and clear.
Additionally they have keys (array of keys) and length (number of keys) methods that delegate to the supporting backends.
MemoryStorage and LocalStorage are both sync, but are wrapped as promise/callback apis using cbop and support the same methods as above.
AsyncStorage has multi functions that operate on arrays of values, but those aren't currently supported.
LocalForage
- getItem(key, callback?)
- setItem(key, value, callback?)
- removeItem(key, callback?)
- clear(callback?)
- keys(callback?)
- length(callback?)
- key(keyIndex, callback?)
- iterate(iteratorCallback, successCallback?)
AsyncStorage
- getItem(key, callback?)
- setItem(key, value, callback?)
- removeItem(key, callback?)
- clear(callback?)
- getAllKeys(callback?)
- mergeItem(key, value, callback?)
- flushGetRequests()
- multiGet(keys, callback?)
- multiSet(keyValuePairs, callback?)
- multiRemove(keys, callback?)
- multiMerge(keyValuePairs, callback?)
Notes
https://blog.mozilla.org/tglek/2012/02/22/psa-dom-local-storage-considered-harmful/