redux-persist
Version: 
persist and rehydrate redux stores
86 lines (70 loc) • 1.94 kB
Flow
// @flow
import { REHYDRATE, REGISTER } from './constants'
export type PersistState = {
  version: number,
  rehydrated: boolean,
}
export type PersistedState = {
  _persist: PersistState,
} | void
export type PersistConfig = {
  version?: number,
  storage: Object,
  key: string,
  keyPrefix?: string, // @TODO remove in v6
  blacklist?: Array<string>,
  whitelist?: Array<string>,
  transforms?: Array<Transform>,
  throttle?: number,
  migrate?: (PersistedState, number) => Promise<PersistedState>,
  stateReconciler?: false | Function,
  getStoredState?: PersistConfig => Promise<PersistedState>, // used for migrations
  debug?: boolean,
  serialize?: boolean,
}
export type PersistorOptions = {
  enhancer?: Function,
}
export type Storage = {
  getItem: (string, ?(string) => any) => any,
  setItem: (string, string, ?() => any) => any,
  removeItem: (string, ?() => any) => any,
}
export type MigrationManifest = {
  [number | string]: (PersistedState) => PersistedState,
}
export type Transform = {
  in: (Object | string, string, Object | string) => Object,
  out: (Object | string, string, Object | string) => Object,
  config?: PersistConfig,
}
export type RehydrateErrorType = any
export type RehydrateAction = {
  type: typeof REHYDRATE,
  key: string,
  payload: ?Object,
  err: ?RehydrateErrorType,
}
export type Persistoid = {
  update: Object => void,
  flush: () => Promise<any>,
}
type RegisterAction = {
  type: typeof REGISTER,
  key: string,
}
type PersistorAction = RehydrateAction | RegisterAction
export type PersistorState = {
  registry: Array<string>,
  bootstrapped: boolean,
}
type PersistorSubscribeCallback = () => any
export type Persistor = {
  pause: () => void,
  persist: () => void,
  purge: () => Promise<any>,
  flush: () => Promise<any>,
  +dispatch: PersistorAction => PersistorAction,
  +getState: () => PersistorState,
  +subscribe: PersistorSubscribeCallback => () => any,
}