vuex-persist
Version:
A Vuex persistence plugin in Typescript
82 lines (81 loc) • 2.54 kB
TypeScript
/**
* Options to be used to construct a {@link VuexPersistence} object
*/
import { Payload } from 'vuex';
import { AsyncStorage } from './AsyncStorage';
import { MergeOptionType } from './utils';
export interface PersistOptions<S> {
/**
* Window.Storage type object. Default is localStorage
*/
storage?: Storage | AsyncStorage;
/**
* Method to retrieve state from persistence
* @param key
* @param [storage]
*/
restoreState?: (key: string, storage?: Storage) => Promise<S> | S;
/**
* Method to save state into persistence
* @param key
* @param state
* @param [storage]
*/
saveState?: (key: string, state: {}, storage?: Storage) => Promise<void> | void;
/**
* Function to reduce state to the object you want to save.
* Be default, we save the entire state.
* You can use this if you want to save only a portion of it.
* @param state
*/
reducer?: (state: S) => {};
/**
* Key to use to save the state into the storage
*/
key?: string;
/**
* Method to filter which mutations will trigger state saving
* Be default returns true for all mutations.
* Check mutations using <code>mutation.type</code>
* @param mutation object of type {@link Payload}
*/
filter?: (mutation: Payload) => boolean;
/**
* Names of modules that you want to persist.
* If you create your custom {@link PersistOptions.reducer} function,
* then that will override filter behaviour, not this argument
*/
modules?: string[];
/**
* Set this to true to support
* <a href="https://vuex.vuejs.org/en/strict.html">Vuex Strict Mode</a>
* @default false
*/
strictMode?: boolean;
/**
* If your storage is async
* i.e., if setItem(), getItem() etc return Promises
* (Must be used for asynchronous storages like LocalForage)
* @default false
*/
asyncStorage?: boolean;
/**
* Support serializing circular json objects
* <pre>
* let x = {a: 10}
* x.b = x
* console.log(x.a) // 10
* console.log(x.b.a) // 10
* console.log(x.b.b.a) // 10
* </pre>
* @default false
*
*/
supportCircular?: boolean;
/**
* Whether to replace or concat arrays when merging
* saved state with restored state
* defaults to replacing arrays
*/
mergeOption?: MergeOptionType;
}