storage
Provides a convenient api over the browser's window.localStorage and window.sessionStorage objects. If
a browser doesn't support web storage, a warning is logged to the
console (if available) and a non-persistent in-memory store will be used instead. Note that this can for
example also happen when using Mozilla Firefox with cookies disabled and as such isn't limited to older
browsers.
Additionally, in contrast to plain web storage access, non-string values will be automatically passed through JSON (de-) serialization on storage or retrieval. All keys will be prepended with a combination of an arbitrary and a configured namespace to prevent naming clashes with other web applications running on the same host and port. All StorageApi accessor methods should then be called without any namespace since adding and removing it, is done automatically.
When requiring laxar, it is available as laxar.storage.
Contents
Module Members
Types
Module Members
create( localStorageBackend, sessionStorageBackend )
Creates a new storage module. In most cases this module will be called without arguments, but having the ability to provide them is useful e.g. for mocking purposes within tests. If the arguments are omitted, an attempt is made to access the native browser WebStorage api. If that fails, storage is only mocked by an in memory map (thus actually unavailable).
Developers are free to use polyfills to support cases where local- or session-storage may not be available. Just make sure to initialize the polyfills before this module.
Parameters
| Property | Type | Description |
|---|---|---|
| localStorageBackend | Object |
the backend for local storage, Default is window.localStorage |
| sessionStorageBackend | Object |
the backend for session storage, Default is window.sessionStorage |
Returns
| Type | Description |
|---|---|
Object |
a new storage module |
getLocalStorage( namespace )
Returns a local storage object for a specific local namespace.
Parameters
| Property | Type | Description |
|---|---|---|
| namespace | String |
the namespace to prepend to keys |
Returns
| Type | Description |
|---|---|
StorageApi |
the local storage object |
getSessionStorage( namespace )
Returns a session storage object for a specific local namespace.
Parameters
| Property | Type | Description |
|---|---|---|
| namespace | String |
the namespace to prepend to keys |
Returns
| Type | Description |
|---|---|
StorageApi |
the session storage object |
getApplicationLocalStorage()
Returns the local storage object for application scoped keys. This is equivalent to
storage.getLocalStorage( 'app' ).
Returns
| Type | Description |
|---|---|
StorageApi |
the application local storage object |
getApplicationSessionStorage()
Returns the session storage object for application scoped keys. This is equivalent to
storage.getSessionStorage( 'app' ).
Returns
| Type | Description |
|---|---|
StorageApi |
the application session storage object |
Types
StorageApi
The api returned by one of the get*Storage functions of the storage module.
StorageApi#getItem( key )
Retrieves a value by key from the store. JSON deserialization will automatically be applied.
Parameters
| Property | Type | Description |
|---|---|---|
| key | String |
the key of the item to retrieve (without namespace prefix) |
Returns
| Type | Description |
|---|---|
* |
the value or null if it doesn't exist in the store |
StorageApi#setItem( key, value )
Sets a value for a key. The value should be JSON serializable. An existing value will be
overwritten.
Parameters
| Property | Type | Description |
|---|---|---|
| key | String |
the key of the item to set (without namespace prefix) |
| value | * |
the new value to set |
StorageApi#for( key )
Removes the value associated with key from the store.
Parameters
| Property | Type | Description |
|---|---|---|
| key | String |
the key of the item to remove (without namespace prefix) |