UNPKG

@vitorluizc/persistence

Version:

Persistence provides a pretty easy API to handle Storage's implementations.

55 lines (54 loc) 1.7 kB
interface IStorage { getItem(key: string): string | null; setItem(key: string, value: string): void; removeItem(key: string): void; } /** * Persistence options to set timeout, storage and placeholder value. */ export interface PersistenceOptions<T = any> { storage?: IStorage; timeout?: number; placeholder?: T; } /** * An object to easily get and set values to a persistent storages like * `SessionStorage` and `LocalStorage`. */ export interface Persistence<T = any, U = (T | undefined)> { /** * Set a value to a persistent storage. * @param value - Any JSON parseable value can be setted. */ set(value: T): void; /** * Get value from persistent storage. */ get(): T | U; /** * Delete value from persistent storage. */ delete(): void; } /** * Creates a Persistence, an object to easily get and set values to a persistent * storage like `SessionStorage` or `LocalStorage`. * @example ```js * const state = createPersistence('state@name', { * placeholder: 'Unknown' * }); * * // This creates a persistent field's value. * const el = document.querySelector('input[name="name"]'); * el.value = state.get(); * el.addEventListener('input', () => state.set(el.value));``` * @param name - Persistence uses the name as storage's key. * @param options - Options to set timeout, storage and placeholder value. */ declare const createPersistence: { <T = any, U = T>(name: string, options: PersistenceOptions & { placeholder: U; }): Persistence<T, U>; <T = any, U = (T | undefined)>(name: string, options?: PersistenceOptions<U>): Persistence<T, U>; }; export default createPersistence;