# API `@deepkit/bson`

```shell
npm install @deepkit/bson
```

BSON과 JavaScript 객체 간 변환을 위한 인코더/디코더 함수를 제공합니다.

## API reference of @deepkit/bson

### BSONError (error)

```typescript
export class BSONError extends CustomError {
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/model.ts#L16

### hexTable (variable)

```typescript
string[]
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/model.ts#L25

### ObjectId (class)

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

```typescript
export class ObjectId {
    static index: number;
    static generate(time?: number): string;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/model.ts#L37

### readUint32LE (function)

```typescript
(buffer: Uint8Array, offset: number): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-parser.ts#L16

### readInt32LE (function)

```typescript
(buffer: Uint8Array, offset: number): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-parser.ts#L25

### readFloat64LE (function)

```typescript
(buffer: Uint8Array, offset: number): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-parser.ts#L38

### parseObject (function)

```typescript
(parser: BaseParser): any
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-parser.ts#L352

### parseArray (function)

```typescript
(parser: BaseParser): any[]
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-parser.ts#L367

### deserializeBSONWithoutOptimiser (function)

```typescript
(buffer: Uint8Array, offset?: number): any
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-parser.ts#L384

### getBSONDeserializer (function)

```typescript
<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONDeserializer<T>
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-deserializer.ts#L36

### deserializeBSON (function)

```typescript
<T>(data: Uint8Array, offset?: number, serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): T
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-deserializer.ts#L51

### BSONDeserializer (type)

```typescript
type BSONDeserializer<T> = (bson: Uint8Array, offset?: number) => T;
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-deserializer.ts#L34

### hexToByte (function)

```typescript
(hex: string, index?: number, offset?: number): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L113

### uuidStringToByte (function)

```typescript
(hex: string, index?: number): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L118

### stringByteLength (function)

```typescript
(str: string): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L128

### getValueSize (function)

```typescript
(value: any): number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L169

### wrapValue (function)

```typescript
<T>(value: any, type?: ReceiveType<T>): ValueWithBSONSerializer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L258

### wrapObjectId (function)

```typescript
(value: string): ValueWithBSONSerializer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L264

### wrapUUID (function)

```typescript
(value: string): ValueWithBSONSerializer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L270

### writeUint32LE (function)

```typescript
(buffer: Uint8Array, offset: number, value: number): void
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L274

### writeInt32LE (function)

```typescript
(buffer: Uint8Array, offset: number, value: number): void
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L281

### writeFloat64LE (function)

```typescript
(buffer: Uint8Array, offset: number, value: number): void
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L290

### createBSONSizer (function)

```typescript
<T>(type?: ReceiveType<T>, serializer?: BSONBinarySerializer, jitStack?: JitStack): (data: object) => number
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1598

### serializeBSONWithoutOptimiser (function)

```typescript
(data: any): Uint8Array
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1625

### getBSONSerializer (function)

```typescript
<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONSerializer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1636

### getBSONSizer (function)

```typescript
<T>(serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): BSONSizer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1647

### serializeBSON (function)

```typescript
<T>(data: T, serializer?: BSONBinarySerializer, receiveType?: ReceiveType<T>): Uint8Array
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1657

### JS_INT_MAX (variable)

```typescript
9007199254740992
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L102

### JS_INT_MIN (variable)

```typescript
-9007199254740992
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L103

### ValueWithBSONSerializer (class)

```typescript
export class ValueWithBSONSerializer {
    constructor(public value: any, public type: Type);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L252

### AutoBufferSerializerState (type)

```typescript
type AutoBufferSerializerState = { writer?: Writer };
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L302

### AutoBufferSerializer (type)

```typescript
type AutoBufferSerializer = (data: any, state: AutoBufferSerializerState) => void;
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L303

### AutoBuffer (class)

```typescript
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);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L305

### Writer (class)

```typescript
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);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L345

### DigitByteRuntimeCode (class)

```typescript
export class DigitByteRuntimeCode extends RuntimeCode {
    constructor(public code: string);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L979

### BSONBinarySerializer (class)

```typescript
export class BSONBinarySerializer extends Serializer {
    name;
    serializeId: symbol;
    deserializeId: symbol;
    sizerId: symbol;
    sizerRegistry;
    bsonSerializeRegistry;
    bsonDeserializeRegistry;
    bsonTypeGuards;
    constructor(protected options: BSONSerializerOptions = {});
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1369

### bsonBinarySerializer (variable)

```typescript
BSONBinarySerializer
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1568

### BSONSerializerState (type)

```typescript
type BSONSerializerState = { writer?: Writer };
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1632

### BSONSerializer (type)

```typescript
type BSONSerializer = (data: any, state?: BSONSerializerState) => Uint8Array;
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1633

### BSONSizer (type)

```typescript
type BSONSizer = (data: any) => number;
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/bson-serializer.ts#L1634

### decodeUTF8 (function)

```typescript
(buffer: Uint8Array, off: number | undefined, end: number): string
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/strings.ts#L15

### decodeUTF8Short (function)

```typescript
(buffer: Uint8Array, off: number | undefined, end: number): string
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/strings.ts#L23

### BsonStreamReader (class)

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

```typescript
export class BsonStreamReader {
    constructor(protected readonly onMessage: (response: Uint8Array) => void);
    emptyBuffer(): boolean;
    feed(data: Uint8Array, bytes?: number);
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/stream.ts#L11

### getBsonEncoder (function)

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.

```typescript
(type: Type, options?: Partial<Options>): BsonEncoder
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/bson/src/encoder.ts#L21
