ngx-webstorage-service
Version:
Angular service wrappers for the webstorage API
63 lines • 7.36 kB
JavaScript
import { BaseStorageService } from './base-storage.service';
import { StorageTranscoders } from './storage-transcoders';
/**
* A volatile `StorageService` implementation. This service guarantees that data stored will remain available as long as the application
* instance is active. After the application is terminated all data will be lost.
*/
export class InMemoryStorageService extends BaseStorageService {
/**
* Creates a new `InMemoryStorageService` instance.
*/
constructor() {
super(StorageTranscoders.JSON);
/** A map that serves as the underlying backing storage for this service. */
this.storage = new Map();
}
/**
* Checks whether an entry with the specified key exists in the storage.
*
* @param key Identifier of the entry for which its presence in the storage is to be checked.
* @returns `true` if an entry with the specified key exists in the storage, `false` if not.
*/
has(key) {
return this.storage.has(key);
}
/**
* Removes the entry that is identified by the specified key. Attempting to remove an entry for an unknown key will have no effect.
* Attempting to retrieve an entry via the `get` method after it has been removed will result in `undefined`.
*
* @param key Identifier of the entry which is to be removed.
*/
remove(key) {
this.storage.delete(key);
}
/**
* Clears the storage by removing all entries. Subsequent `get(x)` calls for a key *x* will return `undefined`, until a new value is set
* for key *x*.
*/
clear() {
this.storage.clear();
}
/**
* Performs the actual retrieval of a value from storage.
*
* @param key Identifier of the entry whose value is to be retrieved.
* @returns The value that is stored for the specified entry or `undefined` if no entry exists for the specified key.
*/
getItem(key) {
if (!this.storage.has(key)) {
return undefined;
}
return this.storage.get(key);
}
/**
* Stores the provided value using specified key in the storage.
*
* @param key Identifier of the entry for which the value is to be stored.
* @param value The value that is to be stored.
*/
setItem(key, value) {
this.storage.set(key, value);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zcmMvaW4tbWVtb3J5LXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQXVCO0lBSy9EOztPQUVHO0lBQ0g7UUFDSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFQbkMsNEVBQTRFO1FBQzNELFlBQU8sR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFPMUUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksR0FBRyxDQUFDLEdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBVztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSztRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sT0FBTyxDQUFDLEdBQVc7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vYmFzZS1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVRyYW5zY29kZXJzIH0gZnJvbSAnLi9zdG9yYWdlLXRyYW5zY29kZXJzJztcblxuLyoqXG4gKiBBIHZvbGF0aWxlIGBTdG9yYWdlU2VydmljZWAgaW1wbGVtZW50YXRpb24uIFRoaXMgc2VydmljZSBndWFyYW50ZWVzIHRoYXQgZGF0YSBzdG9yZWQgd2lsbCByZW1haW4gYXZhaWxhYmxlIGFzIGxvbmcgYXMgdGhlIGFwcGxpY2F0aW9uXG4gKiBpbnN0YW5jZSBpcyBhY3RpdmUuIEFmdGVyIHRoZSBhcHBsaWNhdGlvbiBpcyB0ZXJtaW5hdGVkIGFsbCBkYXRhIHdpbGwgYmUgbG9zdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEluTWVtb3J5U3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBCYXNlU3RvcmFnZVNlcnZpY2U8YW55PiB7XG5cbiAgICAvKiogQSBtYXAgdGhhdCBzZXJ2ZXMgYXMgdGhlIHVuZGVybHlpbmcgYmFja2luZyBzdG9yYWdlIGZvciB0aGlzIHNlcnZpY2UuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYEluTWVtb3J5U3RvcmFnZVNlcnZpY2VgIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihTdG9yYWdlVHJhbnNjb2RlcnMuSlNPTik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgYW4gZW50cnkgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBleGlzdHMgaW4gdGhlIHN0b3JhZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gICBrZXkgSWRlbnRpZmllciBvZiB0aGUgZW50cnkgZm9yIHdoaWNoIGl0cyBwcmVzZW5jZSBpbiB0aGUgc3RvcmFnZSBpcyB0byBiZSBjaGVja2VkLlxuICAgICAqIEByZXR1cm5zICAgICBgdHJ1ZWAgaWYgYW4gZW50cnkgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBleGlzdHMgaW4gdGhlIHN0b3JhZ2UsIGBmYWxzZWAgaWYgbm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBlbnRyeSB0aGF0IGlzIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBrZXkuIEF0dGVtcHRpbmcgdG8gcmVtb3ZlIGFuIGVudHJ5IGZvciBhbiB1bmtub3duIGtleSB3aWxsIGhhdmUgbm8gZWZmZWN0LlxuICAgICAqIEF0dGVtcHRpbmcgdG8gcmV0cmlldmUgYW4gZW50cnkgdmlhIHRoZSBgZ2V0YCBtZXRob2QgYWZ0ZXIgaXQgaGFzIGJlZW4gcmVtb3ZlZCB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgSWRlbnRpZmllciBvZiB0aGUgZW50cnkgd2hpY2ggaXMgdG8gYmUgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIHN0b3JhZ2UgYnkgcmVtb3ZpbmcgYWxsIGVudHJpZXMuIFN1YnNlcXVlbnQgYGdldCh4KWAgY2FsbHMgZm9yIGEga2V5ICp4KiB3aWxsIHJldHVybiBgdW5kZWZpbmVkYCwgdW50aWwgYSBuZXcgdmFsdWUgaXMgc2V0XG4gICAgICogZm9yIGtleSAqeCouXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JhZ2UuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0dWFsIHJldHJpZXZhbCBvZiBhIHZhbHVlIGZyb20gc3RvcmFnZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAgIGtleSBJZGVudGlmaWVyIG9mIHRoZSBlbnRyeSB3aG9zZSB2YWx1ZSBpcyB0byBiZSByZXRyaWV2ZWQuXG4gICAgICogQHJldHVybnMgICAgIFRoZSB2YWx1ZSB0aGF0IGlzIHN0b3JlZCBmb3IgdGhlIHNwZWNpZmllZCBlbnRyeSBvciBgdW5kZWZpbmVkYCBpZiBubyBlbnRyeSBleGlzdHMgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldChrZXkpITtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZXMgdGhlIHByb3ZpZGVkIHZhbHVlIHVzaW5nIHNwZWNpZmllZCBrZXkgaW4gdGhlIHN0b3JhZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ga2V5ICAgSWRlbnRpZmllciBvZiB0aGUgZW50cnkgZm9yIHdoaWNoIHRoZSB2YWx1ZSBpcyB0byBiZSBzdG9yZWQuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0aGF0IGlzIHRvIGJlIHN0b3JlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cblxufVxuIl19