Padloc Logo Docs & Resources

Class: Serializable

encoding.Serializable

Base class for "serializable" classes, i.e. classes that can be serialized into a plain javascript object, JSON string or byte sequence which can be used for storage or data transfer. Subclasses will generally want to overwrite the toRaw, fromRaw and validate methods to account for their specific class structure.

example

class MyClass extends Serializable {
    name: string;
    parent?: MyClass;
    bytes: Uint8Array;

    toRaw() {
        return {
            ...super.toRaw(),
            bytes: bytesToBase64(this.bytes),
        };
    }

    fromRaw({ bytes, parent, ...rest }) {
        return super.fromRaw({
            bytes: base64ToBytes(bytes),
            parent: parent && new MyClass().fromRaw(parent),
            ...rest,
        });
    }

    validate() {
        return (
            super.validate() &&
            typeof this.name === "string" &&
            this.bytes instanceof Uint8Array &&
            (typeof this.parent === "undefined" ||
                this.parent instanceof MyClass)
        );
    }
}

Hierarchy

Constructors

constructor

new Serializable()

Properties

_propertySerializationOptions

_propertySerializationOptions: SerializationOptions[]

Defined in

core/src/encoding.ts:163

Accessors

kind

get kind(): string

A string representing the objects "type", useful for segmenting storage, among other things. Defaults to the lowercase class name, but can be overwritten by subclasses

Returns

string

Defined in

core/src/encoding.ts:159

Methods

_fromRaw

Protected _fromRaw(raw): void

Restore values from a raw object. The default implementation simply copies over all iterable properties from the base object. Overwrite this method for properties that require special treatment

Parameters

Name Type
raw any

Returns

void

Defined in

core/src/encoding.ts:286


_toRaw

Protected _toRaw(version): any

Transform this object into a raw javascript object used for serialization. The default implementation simply copies all iterable properties not included in the [[exlude]] array and calls toRaw on any properties that are themselfes instances of Serializable. This method should be overwritten by subclasses if certain properties require special treatment.

Parameters

Name Type
version undefined | string

Returns

any

Defined in

core/src/encoding.ts:257


clone

clone(): Serializable

Creates a deep clone of the object

Returns

Serializable

Defined in

core/src/encoding.ts:244


fromBytes

fromBytes(bytes): Serializable

Deserializes the object from a byte array

Parameters

Name Type
bytes Uint8Array

Returns

Serializable

Defined in

core/src/encoding.ts:237


fromJSON

fromJSON(json): Serializable

Deserializes the object from a JSON string

Parameters

Name Type
json string

Returns

Serializable

Defined in

core/src/encoding.ts:223


fromRaw

fromRaw(raw): Serializable

Restores propertiers from a raw object of the same form generated by toRaw. The base implementation blindly copies over values from the raw object via Object.assign so subclasses should explictly process any propertyies that need special treatment.

Also takes are of validation and "upgrading" in case the raw object has an old version. Use the protected _fromRaw method to implement subclass-specific behavior.

Parameters

Name Type
raw any

Returns

Serializable

Defined in

core/src/encoding.ts:196


toBytes

toBytes(): Uint8Array

Returns a serialization of the object in form of a byte array

Returns

Uint8Array

Defined in

core/src/encoding.ts:230


toJSON

toJSON(): string

Returns a JSON serialization of the object

Returns

string

Defined in

core/src/encoding.ts:216


toRaw

toRaw(version?): any

Creates a raw javascript object representation of the class, which can be used for storage or data transmission. Also handles "downgrading" to previous versions. Use _toRaw for subclass-specific behavior.

Parameters

Name Type
version? string

Returns

any

Defined in

core/src/encoding.ts:179


validate

validate(): boolean

This is called during deserialization and should verify that all properties have been populated with values of the correct type. Subclasses should implement this method based on their class structure.

Returns

boolean

Defined in

core/src/encoding.ts:170