@deepkit/bson
Version:
Deepkit BSON parser
115 lines (114 loc) • 5.07 kB
TypeScript
import { JitStack, ReceiveType, RuntimeCode, Serializer, TemplateRegistry, Type, TypeGuardRegistry } from '@deepkit/type';
export declare const JS_INT_MAX = 9007199254740992;
export declare const JS_INT_MIN = -9007199254740992;
export declare function hexToByte(hex: string, index?: number, offset?: number): number;
export declare function uuidStringToByte(hex: string, index?: number): number;
export declare function stringByteLength(str: string): number;
export declare function getValueSize(value: any): number;
export declare class ValueWithBSONSerializer {
value: any;
type: Type;
constructor(value: any, type: Type);
}
export declare function wrapValue<T>(value: any, type?: ReceiveType<T>): ValueWithBSONSerializer;
export declare function wrapObjectId(value: string): ValueWithBSONSerializer;
export declare function wrapUUID(value: string): ValueWithBSONSerializer;
export declare function writeUint32LE(buffer: Uint8Array, offset: number, value: number): void;
export declare function writeInt32LE(buffer: Uint8Array, offset: number, value: number): void;
export declare function writeFloat64LE(buffer: Uint8Array, offset: number, value: number): void;
export type AutoBufferSerializerState = {
writer?: Writer;
};
export type AutoBufferSerializer = (data: any, state: AutoBufferSerializerState) => void;
export declare class AutoBuffer {
prepend: number;
private initialSize;
_buffer: Uint8Array;
state: {
writer: Writer;
};
constructor(prepend?: number, initialSize?: number);
get buffer(): Uint8Array<ArrayBufferLike>;
get size(): number;
setOffset(offset: number): void;
apply(serializer: AutoBufferSerializer, data: any): void;
}
export declare class Writer {
buffer: Uint8Array;
offset: number;
typeOffset: number;
constructor(buffer: Uint8Array, offset?: number);
reset(): void;
/**
* 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): void;
resetWriteType(): void;
prepareWriteType(): void;
writeUint32(v: number): void;
writeInt32(v: number): void;
writeDouble(v: number): void;
writeDelayedSize(v: number, position: number): void;
writeByte(v: number): void;
writeBuffer(buffer: Uint8Array, offset?: number): void;
writeNull(): void;
writeAsciiString(str: string | number): void;
writeString(str: string): void;
getBigIntBSONType(value: bigint): number;
writeBigIntLong(value: bigint): void;
writeBigIntBinary(value: bigint): void;
writeSignedBigIntBinary(value: bigint): void;
writeLong(value: number): void;
writeUUID(value: string): void;
writeObjectId(value: string): void;
write(value: any): void;
writeArrayBuffer(value: ArrayBuffer | ArrayBufferView): void;
}
export declare class DigitByteRuntimeCode extends RuntimeCode {
code: string;
constructor(code: string);
}
interface BSONSerializerOptions {
/**
* If true the serializes changes slightly its behaviour to make it compatible with the mongo database.
* For example are fields marked as BackReference excluded.
* Fields marked as Reference() will only serialize its primary key.
*
*
*/
forMongoDatabase?: true;
}
export declare class BSONBinarySerializer extends Serializer {
protected options: BSONSerializerOptions;
name: string;
serializeId: symbol;
deserializeId: symbol;
sizerId: symbol;
sizerRegistry: TemplateRegistry;
bsonSerializeRegistry: TemplateRegistry;
bsonDeserializeRegistry: TemplateRegistry;
bsonTypeGuards: TypeGuardRegistry;
constructor(options?: BSONSerializerOptions);
protected registerSizer(): void;
protected registerBsonSerializers(): void;
protected registerBsonTypeGuards(): void;
protected registerBsonDeserializers(): void;
}
export declare const bsonBinarySerializer: BSONBinarySerializer;
export declare function createBSONSizer<T>(type?: ReceiveType<T>, serializer?: BSONBinarySerializer, jitStack?: JitStack): (data: object) => number;
export declare function serializeBSONWithoutOptimiser(data: any): Uint8Array;
export type BSONSerializerState = {
writer?: Writer;
};
export type BSONSerializer = (data: any, state?: BSONSerializerState) => Uint8Array;
export type BSONSizer = (data: any) => number;
export declare function getBSONSerializer<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONSerializer;
export declare function getBSONSizer<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONSizer;
export declare function serializeBSON<T>(data: T, serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): Uint8Array;
export {};
export declare type __ΩAutoBufferSerializerState = any[];
export declare type __ΩAutoBufferSerializer = any[];
export declare type __ΩBSONSerializerState = any[];
export declare type __ΩBSONSerializer = any[];
export declare type __ΩBSONSizer = any[];