UNPKG

reduxed-chrome-storage

Version:

Redux interface to chrome.storage (browser.storage). A unified way to use Redux in all modern browser extensions. The only way to get Redux working in Manifest V3 Chrome extensions

65 lines (64 loc) 1.85 kB
export declare enum StorageAreaName { local = "local", sync = "sync" } interface StorageChange { newValue?: any; oldValue?: any; } interface StorageChanges { [key: string]: StorageChange; } export interface StorageListener { (changes: StorageChanges, area: StorageAreaName): void; } export interface StorageAddListener { (listener: StorageListener): void; } export interface StorageData { [key: string]: any; } export declare type StorageGetCallback = (data: StorageData) => void; export declare type StorageGetKeys = string | string[] | StorageData | null; export interface StorageAreaQuotas { QUOTA_BYTES: number; QUOTA_BYTES_PER_ITEM?: number; } export interface StorageAreaCallbacked extends StorageAreaQuotas { get(callback: StorageGetCallback): void; get(keys: StorageGetKeys, callback: StorageGetCallback): void; set(data: StorageData, callback?: () => void): void; clear(): void; } export interface StorageAreaPromised extends StorageAreaQuotas { get(keys?: StorageGetKeys): Promise<StorageData>; set(data: StorageData): Promise<void>; clear(): void; } export interface ApisNamespace { storage: { onChanged: { addListener: StorageAddListener; }; }; runtime: { lastError?: { message?: string; }; }; } export interface ChromeNamespace extends ApisNamespace { storage: { local: StorageAreaCallbacked; sync: StorageAreaCallbacked; onChanged: ApisNamespace['storage']['onChanged']; }; } export interface BrowserNamespace extends ApisNamespace { storage: { local: StorageAreaPromised; sync: StorageAreaPromised; onChanged: ApisNamespace['storage']['onChanged']; }; } export {};