Skip to content

Commit a94f291

Browse files
committed
add customizing serializer/deserializer config
1 parent 1a46791 commit a94f291

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

src/createPersistoid.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ export default function createPersistoid(config: PersistConfig): Persistoid {
1616
config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX
1717
}${config.key}`
1818
const storage = config.storage
19-
const serialize = config.serialize === false ? x => x : defaultSerialize
19+
let serialize = config.serialize === false ? x => x : defaultSerialize
20+
if (typeof config.serialize === 'function') {
21+
serialize = config.serialize
22+
}
2023
const writeFailHandler = config.writeFailHandler || null
2124

2225
// initialize stateful values

src/getStoredState.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ export default function getStoredState(
1313
}${config.key}`
1414
const storage = config.storage
1515
const debug = config.debug
16-
const deserialize = config.serialize === false ? x => x : defaultDeserialize
16+
let deserialize = config.serialize === false ? x => x : defaultDeserialize
17+
if (typeof config.deserialize === 'function') {
18+
deserialize = config.deserialize
19+
}
1720
return storage.getItem(storageKey).then(serialized => {
1821
if (!serialized) return undefined
1922
else {

src/types.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ export type PersistConfig = {
2323
stateReconciler?: false | Function,
2424
getStoredState?: PersistConfig => Promise<PersistedState>, // used for migrations
2525
debug?: boolean,
26-
serialize?: boolean,
26+
serialize?: boolean | Function,
27+
deserialize?: Function | null,
2728
timeout?: number,
2829
writeFailHandler?: Function,
2930
}

0 commit comments

Comments
 (0)