On this page

Serialization API

History

The serialization API provides means of serializing JavaScript values in a way that is compatible with the HTML structured clone algorithm.

The format is backward-compatible (i.e. safe to store to disk). Equal JavaScript values may result in different serialized output.

M

v8.serialize

History
v8.serialize(value): Buffer
Attributes
value:any
Returns:Buffer

Uses a DefaultSerializer to serialize value into a buffer.

ERR_BUFFER_TOO_LARGE will be thrown when trying to serialize a huge object which requires buffer larger than buffer.constants.MAX_LENGTH.

M

v8.deserialize

History
v8.deserialize(buffer): void
Attributes
A buffer returned by serialize().

Uses a DefaultDeserializer with default options to read a JS value from a buffer.

C

v8.Serializer

History
new Serializer(): Serializer

Creates a new Serializer object.

serializer.writeHeader(): void

Writes out a header, which includes the serialization format version.

serializer.writeValue(value): void
Attributes
value:any

Serializes a JavaScript value and adds the serialized representation to the internal buffer.

This throws an error if value cannot be serialized.

serializer.releaseBuffer(): Buffer
Returns:Buffer

Returns the stored internal buffer. This serializer should not be used once the buffer is released. Calling this method results in undefined behavior if a previous write has failed.

serializer.transferArrayBuffer(id, arrayBuffer): void
Attributes
A 32-bit unsigned integer.
arrayBuffer:ArrayBuffer
An ArrayBuffer instance.

Marks an ArrayBuffer as having its contents transferred out of band. Pass the corresponding ArrayBuffer in the deserializing context to deserializer.transferArrayBuffer().

serializer.writeUint32(value): void
Attributes
value:integer

Write a raw 32-bit unsigned integer. For use inside of a custom serializer._writeHostObject().

serializer.writeUint64(hi, lo): void
Attributes

Write a raw 64-bit unsigned integer, split into high and low 32-bit parts. For use inside of a custom serializer._writeHostObject().

serializer.writeDouble(value): void
Attributes
value:number

Write a JS number value. For use inside of a custom serializer._writeHostObject().

serializer.writeRawBytes(buffer): void
Attributes

Write raw bytes into the serializer's internal buffer. The deserializer will require a way to compute the length of the buffer. For use inside of a custom serializer._writeHostObject().

serializer._writeHostObject(object): void
Attributes
object:Object

This method is called to write some kind of host object, i.e. an object created by native C++ bindings. If it is not possible to serialize object, a suitable exception should be thrown.

This method is not present on the Serializer class itself but can be provided by subclasses.

serializer._getDataCloneError(message): void
Attributes
message:string

This method is called to generate error objects that will be thrown when an object can not be cloned.

This method defaults to the Error constructor and can be overridden on subclasses.

serializer._getSharedArrayBufferId(sharedArrayBuffer): void
Attributes
sharedArrayBuffer:SharedArrayBuffer

This method is called when the serializer is going to serialize a SharedArrayBuffer object. It must return an unsigned 32-bit integer ID for the object, using the same ID if this SharedArrayBuffer has already been serialized. When deserializing, this ID will be passed to deserializer.transferArrayBuffer().

If the object cannot be serialized, an exception should be thrown.

This method is not present on the Serializer class itself but can be provided by subclasses.

serializer._setTreatArrayBufferViewsAsHostObjects(flag?): void
Attributes
flag?:boolean
Default: false

Indicate whether to treat TypedArray and DataView objects as host objects, i.e. pass them to serializer._writeHostObject().

C

v8.Deserializer

History
new Deserializer(buffer): Deserializer
Attributes
A buffer returned by serializer.releaseBuffer().

Creates a new Deserializer object.

deserializer.readHeader(): void

Reads and validates a header (including the format version). May, for example, reject an invalid or unsupported wire format. In that case, an Error is thrown.

deserializer.readValue(): void

Deserializes a JavaScript value from the buffer and returns it.

deserializer.transferArrayBuffer(id, arrayBuffer): void
Attributes
A 32-bit unsigned integer.
An ArrayBuffer instance.

Marks an ArrayBuffer as having its contents transferred out of band. Pass the corresponding ArrayBuffer in the serializing context to serializer.transferArrayBuffer() (or return the id from serializer._getSharedArrayBufferId() in the case of SharedArrayBuffers).

deserializer.getWireFormatVersion(): integer
Returns:integer

Reads the underlying wire format version. Likely mostly to be useful to legacy code reading old wire format versions. May not be called before .readHeader().

deserializer.readUint32(): integer
Returns:integer

Read a raw 32-bit unsigned integer and return it. For use inside of a custom deserializer._readHostObject().

deserializer.readUint64(): integer[]
Returns:integer[]

Read a raw 64-bit unsigned integer and return it as an array [hi, lo] with two 32-bit unsigned integer entries. For use inside of a custom deserializer._readHostObject().

deserializer.readDouble(): number
Returns:number

Read a JS number value. For use inside of a custom deserializer._readHostObject().

deserializer.readRawBytes(length): Buffer
Attributes
length:integer
Returns:Buffer

Read raw bytes from the deserializer's internal buffer. The length parameter must correspond to the length of the buffer that was passed to serializer.writeRawBytes(). For use inside of a custom deserializer._readHostObject().

deserializer._readHostObject(): void

This method is called to read some kind of host object, i.e. an object that is created by native C++ bindings. If it is not possible to deserialize the data, a suitable exception should be thrown.

This method is not present on the Deserializer class itself but can be provided by subclasses.

C

v8.DefaultSerializer

History

A subclass of Serializer that serializes TypedArray (in particular Buffer) and DataView objects as host objects, and only stores the part of their underlying ArrayBuffers that they are referring to.

C

v8.DefaultDeserializer

History

A subclass of Deserializer corresponding to the format written by DefaultSerializer.