0.3.2 • Published 2 months ago
siero v0.3.2
Siero
A serialization library that can handle functions, promises and symbols too.
In general arbitrary functions/promises/symbols can't be transferred between workers/processes/VMs, but this library enables you to do the next best thing: by having the two execution contexts communicate with each other you can write code as if functions/promises/symbols got actually transferred between them.
Check out siero-worker
for an opinionated way to spawn a worker that you can talk to via Siero.
Limitations
- Symbols that are created independently in two realms, without
Symbol.for
, won't be equal to each other. - Symbol properties are only preserved if attached to plain objects.
- Arbitrary custom properties are also only preserved if attached to plain objects.
- Prevent-extension/sealed/frozen flags are also only preserved for plain objects.
- Custom configurable/enumerable/writable flags for properties are not preserved at all.
- Getter/setter properties are not preserved as functions, they will instead be resolved.
- For error objects only the
name
,message
,stack
,cause
anderrors
properties are preserved. - The specific type of function constructor (regular, arrow, async etc.) is not preserved.
- Deserialized functions will always return a Promise, even if the original function didn't.
- Generators and async generators are not currently serializable.
Install
npm install --save siero
Supported Types
Usage
import {serialize, deserialize} from 'siero';
// Let's serialize a supported value
const value = { whatever: 123 }; // Any supported value
const serialized = serialize ( value );
// Let's deserialize it
const deserialized = deserialize ( serialized );
License
MIT © Fabio Spampinato