@vovkasm/redux-persist
Version:
persist and rehydrate redux stores
72 lines (63 loc) • 2.05 kB
Flow
// @flow
// redux dependent typing
declare type Action = Object
declare type Dispatch = Function
declare type Store = Object
declare type StoreEnhancer = (next: Function) => Function
// redux-persist typing
type Whitelist = Array<$Subtype<string>>
type Blacklist = Array<$Subtype<string>>
declare type Storage = {
setItem: Function,
getItem: Function,
removeItem: Function,
getAllKeys: Function,
}
declare type Config = {
blacklist?: Blacklist,
whitelist?: Whitelist,
storage?: Storage,
transforms?: Array<Object>,
debounce?: number,
serialize?: boolean,
keyPrefix?: string,
}
declare type Purge = (keys?: Array<string>) => void
declare type Rehydrate = (incoming: Object, options: { serial: boolean }) => void
declare type Persistor = {
purge: Purge,
rehydrate: Rehydrate,
pause: () => void,
resume: () => void,
}
declare type OnComplete = (err?: any, result?: Object) => void
declare type Transformer = (substate: any, key: string) => any
declare type TransformConfig = {| whitelist?: Whitelist, blacklist?: Blacklist |}
declare type Transform = {
in: Transformer,
out: Transformer,
}
type StoredStateCallback = (state: Object, err: any) => void
type StateReconciler = (prevState: any, inboundState: any, nextState: any, log: bool) => any
type AutoRehydrateConfig = {
log?: boolean,
stateReconciler?: StateReconciler,
}
declare function createPersistor(store: Store, config: Config): Persistor
declare function createTransform(in: Transformer, out: Transformer, config?: TransformConfig): Transform
declare function getStoredState(config: Config, ?StoredStateCallback): ?Promise<Object>
declare function persistStore(store: Store, config?: Config, onComplete?: OnComplete): Persistor
declare function purgeStoredState(config: Config, keys?: Array<string>): Promise<void>
declare function autoRehydrate(config: ?AutoRehydrateConfig): StoreEnhancer
export {
createPersistor,
createTransform,
getStoredState,
persistStore,
purgeStoredState,
autoRehydrate,
}
export type {
Persistor,
Config,
}