siero
v0.3.2
Published
A serialization library that can handle functions, promises and symbols too.
Downloads
8
Maintainers
Readme
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,causeanderrorsproperties 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 sieroSupported Types
| Primitives | Boxed Primitives | Errors | Typed Arrays | Others |
| ---------------- | ---------------- | ---------------------- | ------------------------- | ------------------- |
| BigInt | BigInt | Error | BigInt64Array | Array |
| Boolean | Boolean | EvalError | BigUint64Array | ArrayBuffer |
| Null | Number | RangeError | Float32Array | DataView |
| Number | String | ReferenceError | Float64Array | Date |
| String | Symbol | SyntaxError | Int8Array | Function |
| Symbol | | TypeError | Int16Array | Promise |
| Undefined | | URIError | Int32Array | RegExp |
| | | AggregateError | Uint8Array | Map |
| | | | Uint16Array | Set |
| | | | Uint32Array | PlainObject |
| | | | Uint8ClampedArray | |
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
