0.3.2 • Published 2 months ago

siero v0.3.2

Weekly downloads
-
License
-
Repository
github
Last release
2 months ago

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 and errors 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

PrimitivesBoxed PrimitivesErrorsTyped ArraysOthers
BigIntBigIntErrorBigInt64ArrayArray
BooleanBooleanEvalErrorBigUint64ArrayArrayBuffer
NullNumberRangeErrorFloat32ArrayDataView
NumberStringReferenceErrorFloat64ArrayDate
StringSymbolSyntaxErrorInt8ArrayFunction
SymbolTypeErrorInt16ArrayPromise
UndefinedURIErrorInt32ArrayRegExp
AggregateErrorUint8ArrayMap
Uint16ArraySet
Uint32ArrayPlainObject
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

0.3.2

2 months ago

0.3.1

2 months ago

0.3.0

3 months ago

0.2.1

4 months ago

0.2.0

4 months ago

0.1.1

4 months ago

0.1.0

4 months ago