@bedrock-apis/nbt
Version:
Solid NBT package, with multiple formats
87 lines (86 loc) • 4.15 kB
TypeScript
import { ReaderLike, WriterLike } from "./index-CxKCPxKy.js";
import { Byte, Double, Float, IDataCursor, Int, Long, Short, TagType } from "@bedrock-apis/nbt-core";
//#region main/async/binary-source.d.ts
declare abstract class BinaryDataTransformerInstance<T extends ArrayBufferLike, S> implements Transformer<Uint8Array<T>, S>, IDataCursor {
readonly buffer: Uint8Array;
protected readonly maxSubChunkSize: number;
pointer: number;
length: number;
readonly view: DataView;
readonly program: Iterator<number, void, number>;
readonly controller: TransformStreamDefaultController<S>;
protected requested: number;
protected isDone: boolean | undefined;
constructor(buffer: Uint8Array, maxSubChunkSize?: number);
start(controller: TransformStreamDefaultController<S>): void;
transform(chunk: Uint8Array<T>, controller: TransformStreamDefaultController<S>): void;
flush(): void;
// Abstract method to get the program iterator
protected abstract getProgram(controller: TransformStreamDefaultController<S>): Iterator<number, void, number>;
// Method to set data in the buffer
protected set(u8: Uint8Array<T>): void;
// Method to flush the buffer
protected flushBuffer(): void;
// Method to reset the consumer
protected reset(): void;
// Static helper to get chunk iterator
static getChunkIterator<T extends ArrayBufferLike>(buffer: Uint8Array<T>, chunkLength: number): Generator<Uint8Array<T>>;
//#region Binary Operations
createStreamController(): {
readable: ReadableStream<Uint8Array<T>>;
controller: ReadableStreamController<Uint8Array<T>>;
};
bufferUpController(controller: ReadableStreamController<Uint8Array>, length: number, close?: boolean): Generator<number, void, number>;
createReadable(length: number): (Generator<number, void, number> & {
readable: ReadableStream<Uint8Array<T>>;
});
bufferUp<T extends Uint8Array<ArrayBufferLike>>(buffer: T): Generator<number, T, number>;
batchSkip(length: number): Generator<number, void, number>;
rentSlice(length: number): Uint8Array;
rentDataView(length: number): DataView;
}
//#endregion
//#region main/async/binary-writer.d.ts
type NBTToken = Byte | Short | Int | Long | bigint | Float | Double | string | Uint8Array;
declare class TokenReader extends ReadableStream<Uint8Array> implements IDataCursor {
readonly format: Iterator<NBTToken>;
readonly buffer: WriterLike;
pointer: number;
readonly view: DataView;
protected get availableSpace(): number;
// We use slice for safety reasons here
protected getWrittenBuffer(): Uint8Array;
protected pushChunk(controller: ReadableStreamController<Uint8Array>, chunk: Uint8Array): void;
constructor(iterator: Iterator<NBTToken>, format: WriterLike, buffer?: Uint8Array);
private flush;
}
//#endregion
//#region main/async/binary-tokenizer.d.ts
declare enum ReadMode {
RootTag = 241,
ValueTag = 242,
}
declare const VALUE_SIZES: Record<number, number>;
declare const TYPE_TOKENS: Record<number, new (v: any) => Token>;
type Token = Byte | Short | Int | bigint | Float | Double | string | {
type: 10 | 9 | 11 | 12;
length: number;
tagType?: TagType;
} | Uint8Array;
declare class NBTTokenizerTransformer extends BinaryDataTransformerInstance<ArrayBufferLike, Token> {
format: Uint8Array;
readonly mode: ReaderLike;
constructor(buffer: Uint8Array, format: ReaderLike, mode: ReadMode | TagType);
protected getProgram(controller: TransformStreamDefaultController<string | number | bigint | object>): Iterator<number, void, number>;
protected push(tag: number): Generator<number, void, number>;
protected pushString(): Generator<number, void, number>;
protected pushList(): Generator<number, void, number>;
protected pushCompound(): Generator<number, void, number>;
}
declare class NBTTokenize {
static getRootIterator(value: unknown, rootKey?: string): Iterator<NBTToken>;
static 10(value: object): Generator<NBTToken>;
static 9(value: unknown[]): Generator<NBTToken>;
}
//#endregion
export { BinaryDataTransformerInstance, NBTToken, NBTTokenize, NBTTokenizerTransformer, ReadMode, TYPE_TOKENS, Token, TokenReader, VALUE_SIZES };