diff --git a/src/createPersistoid.js b/src/createPersistoid.js index c4423af60..701170326 100644 --- a/src/createPersistoid.js +++ b/src/createPersistoid.js @@ -16,7 +16,10 @@ export default function createPersistoid(config: PersistConfig): Persistoid { config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX }${config.key}` const storage = config.storage - const serialize = config.serialize === false ? x => x : defaultSerialize + let serialize = config.serialize === false ? x => x : defaultSerialize + if (typeof config.serialize === 'function') { + serialize = config.serialize + } const writeFailHandler = config.writeFailHandler || null // initialize stateful values diff --git a/src/getStoredState.js b/src/getStoredState.js index bcf78553c..d30981e8a 100644 --- a/src/getStoredState.js +++ b/src/getStoredState.js @@ -13,7 +13,10 @@ export default function getStoredState( }${config.key}` const storage = config.storage const debug = config.debug - const deserialize = config.serialize === false ? x => x : defaultDeserialize + let deserialize = config.serialize === false ? x => x : defaultDeserialize + if (typeof config.deserialize === 'function') { + deserialize = config.deserialize + } return storage.getItem(storageKey).then(serialized => { if (!serialized) return undefined else { diff --git a/src/types.js b/src/types.js index 13549104b..a0a76120b 100644 --- a/src/types.js +++ b/src/types.js @@ -23,7 +23,8 @@ export type PersistConfig = { stateReconciler?: false | Function, getStoredState?: PersistConfig => Promise, // used for migrations debug?: boolean, - serialize?: boolean, + serialize?: boolean | Function, + deserialize?: Function | null, timeout?: number, writeFailHandler?: Function, }