| name | order |
|---|---|
Change the serialization functions |
6 |
The library allow different serialization functions to use to transform input data into string before saving then in the storage.
- The default serialization library since version
2.0.0is@macfja/serializer. - In the version
1.3.0the serializer wasesserializer. - In versions before
1.3.0the serializer was the Native JSON serialization.
To change the serialization, you need to use setSerialization from @macfja/svelte-persistent-store.
declare function setSerialization(
serializer: (data: any) => string,
deserializer: (input: string) => any,
addSerializableClass?: (classConstructor: FunctionConstructor) => void
): void- The
serializerparameter MUST be a function that take one parameter which is the data to transform, and MUST return a string. - The
deserializerparameter MUST be a function that take one parameter which is the serialized data to revert, and MUST return tha original data. - The
addSerializableClassparameter is optional. It's a function that take one parameter which is a class.
import { setSerialization } from "@macfja/svelte-persistent-store"
setSerialization(JSON.stringify, JSON.parse)import { setSerialization } from "@macfja/svelte-persistent-store"
import ESSerializer from "esserializer"
const allowed = []
setSerialization(
ESSerializer.serialize,
(data) => ESSerializer.deserialize(data, allowed),
(aClass) => allowed.push(aClass)
)import { setSerialization } from "@macfja/svelte-persistent-store"
import ESSerializer from "esserializer"
const allowedClasses = []
setSerialization(
ESSerializer.serialize,
(value) => {
if (value === "undefined") {
return undefined
}
if (value !== null && value !== undefined) {
try {
return ESSerializer.deserialize(value, allowedClasses)
} catch (e) {
// Do nothing
// use the value "as is"
}
try {
return JSON.parse(value)
} catch (e) {
// Do nothing
// use the value "as is"
}
}
return value
},
(classDef) => {
allowedClasses.push(classDef)
}
)import { setSerialization } from "@macfja/svelte-persistent-store"
import { serialize, deserialize, addGlobalAllowedClass } from "@macfja/serializer"
setSerialization(serialize, deserialize, addGlobalAllowedClass)