github
DocsBlog
fontcolor_theme
package

API @deepkit/bson

npm install @deepkit/bson

Providers encoder/decoder functions to convert between BSON and JavaScript objects.

Classes

ObjectId [source]
export class ObjectId {
    static index: number;
    static generate(time?: number): string;
}

Thin wrapper around the native type to allow to serialize it correctly in types like t.any.

ValueWithBSONSerializer [source]
export class ValueWithBSONSerializer {
    constructor(public value: any, public type: Type);
}
AutoBuffer [source]
export class AutoBuffer {
    _buffer: Uint8Array;
    state;
    constructor(public prepend: number = , private initialSize: number = );
    get buffer();
    get size();
    setOffset(offset: number);
    apply(serializer: AutoBufferSerializer, data: any);
}
Writer [source]
export class Writer {
    typeOffset: number;
    constructor(public buffer: Uint8Array, public offset: number = );
    reset();
    /**
     * If typeOffset is defined, the type will be written at this offset.
     * Useful for writing type information for members in array/object literals.
     */
    writeType(v: number);
    resetWriteType();
    prepareWriteType();
    writeUint32(v: number);
    writeInt32(v: number);
    writeDouble(v: number);
    writeDelayedSize(v: number, position: number);
    writeByte(v: number);
    writeBuffer(buffer: Uint8Array, offset: number = );
    writeNull();
    writeAsciiString(str: string | number);
    writeString(str: string);
    getBigIntBSONType(value: bigint): number;
    writeBigIntLong(value: bigint);
    writeBigIntBinary(value: bigint);
    writeSignedBigIntBinary(value: bigint);
    writeLong(value: number);
    writeUUID(value: string);
    writeObjectId(value: string);
    write(value: any): void;
    writeArrayBuffer(value: ArrayBuffer | ArrayBufferView);
}
DigitByteRuntimeCode [source]
export class DigitByteRuntimeCode extends RuntimeCode {
    constructor(public code: string);
}
BSONBinarySerializer [source]
export class BSONBinarySerializer extends Serializer {
    name;
    serializeId: symbol;
    deserializeId: symbol;
    sizerId: symbol;
    sizerRegistry;
    bsonSerializeRegistry;
    bsonDeserializeRegistry;
    bsonTypeGuards;
    constructor(protected options: BSONSerializerOptions = {});
}
BsonStreamReader [source]
export class BsonStreamReader {
    constructor(protected readonly onMessage: (response: Uint8Array) => void);
    emptyBuffer(): boolean;
    feed(data: Uint8Array, bytes?: number);
}

Reads BSON messages from a stream and emits them as Uint8Array.

Errors

BSONError [source]
export class BSONError extends CustomError {
}

Const

hexTable [source]
string[]
JS_INT_MAX [source]
9007199254740992
JS_INT_MIN [source]
-9007199254740992
bsonBinarySerializer [source]
BSONBinarySerializer

Functions

readUint32LE [source]
(buffer: Uint8Array, offset: number): number
readInt32LE [source]
(buffer: Uint8Array, offset: number): number
readFloat64LE [source]
(buffer: Uint8Array, offset: number): number
parseObject [source]
(parser: BaseParser): any
parseArray [source]
(parser: BaseParser): any[]
deserializeBSONWithoutOptimiser [source]
(buffer: Uint8Array, offset?: number): any
getBSONDeserializer [source]
<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONDeserializer<T>
deserializeBSON [source]
<T>(data: Uint8Array, offset?: number, serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): T
hexToByte [source]
(hex: string, index?: number, offset?: number): number
uuidStringToByte [source]
(hex: string, index?: number): number
stringByteLength [source]
(str: string): number
getValueSize [source]
(value: any): number
wrapValue [source]
<T>(value: any, type?: ReceiveType<T>): ValueWithBSONSerializer
wrapObjectId [source]
(value: string): ValueWithBSONSerializer
wrapUUID [source]
(value: string): ValueWithBSONSerializer
writeUint32LE [source]
(buffer: Uint8Array, offset: number, value: number): void
writeInt32LE [source]
(buffer: Uint8Array, offset: number, value: number): void
writeFloat64LE [source]
(buffer: Uint8Array, offset: number, value: number): void
createBSONSizer [source]
<T>(type?: ReceiveType<T>, serializer?: BSONBinarySerializer, jitStack?: JitStack): (data: object) => number
serializeBSONWithoutOptimiser [source]
(data: any): Uint8Array
getBSONSerializer [source]
<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONSerializer
getBSONSizer [source]
<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONSizer
serializeBSON [source]
<T>(data: T, serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): Uint8Array
decodeUTF8 [source]
(buffer: Uint8Array, off: number, end: number): string
decodeUTF8Short [source]
(buffer: Uint8Array, off: number, end: number): string
getBsonEncoder [source]
(type: Type, options?: Partial<Options>): BsonEncoder

Provides a BSON encoder/decoder for the given type and wraps it into a {v: type} object if necessary. This is necessary because BSON only supports objects/arrays at the top level.

This abstraction also calls validation on the decoded and encoded values.

Types

BSONDeserializer [source]
type BSONDeserializer<T> = (bson: Uint8Array, offset?: number) => T;
AutoBufferSerializerState [source]
type AutoBufferSerializerState = { writer?: Writer };
AutoBufferSerializer [source]
type AutoBufferSerializer = (data: any, state: AutoBufferSerializerState) => void;
BSONSerializerState [source]
type BSONSerializerState = { writer?: Writer };
BSONSerializer [source]
type BSONSerializer = (data: any, state?: BSONSerializerState) => Uint8Array;
BSONSizer [source]
type BSONSizer = (data: any) => number;