@haelp/teto
Version:
A typescript-based controllable TETR.IO client.
84 lines (83 loc) • 2.9 kB
TypeScript
import { Events, Game } from "../../types";
import { API, type APITypes, EventEmitter } from "../../utils";
export type Codec = "json" | "teto" | "candor";
export interface Spool {
host: string;
endpoint: string;
token: string;
signature: Promise<APITypes.Server.Signature>;
}
export declare class Ribbon {
#private;
static CACHE_MAXSIZE: number;
static BATCH_TIMEOUT: number;
static readonly CLOSE_CODES: {
readonly 1000: "ribbon closed normally";
readonly 1001: "client closed ribbon";
readonly 1002: "protocol error";
readonly 1003: "protocol violation";
readonly 1005: "no error provided";
readonly 1006: "ribbon lost";
readonly 1007: "payload data corrupted";
readonly 1008: "protocol violation";
readonly 1009: "too much data";
readonly 1010: "negotiation error";
readonly 1011: "server error";
readonly 1012: "server restarting";
readonly 1013: "temporary error";
readonly 1014: "bad gateway";
readonly 1015: "TLS error";
};
static FLAGS: {
ALIVE: number;
SUCCESSFUL: number;
CONNECTING: number;
FAST_PING: number;
TIMING_OUT: number;
DEAD: number;
};
static CODEC_FLAGS: {
readonly F_ID: 128;
};
static SLOW_CODEC_THRESHOLD: number;
emitter: EventEmitter<Events.in.all>;
constructor({ verbose, token, handling, userAgent, codec, spool, api, spooling }: {
verbose: boolean;
token: string;
handling: Game.Handling;
userAgent: string;
codec: Codec;
spool: Spool;
api: API;
spooling?: boolean;
});
static create({ verbose, token, handling, userAgent, codec, spooling }: {
verbose?: boolean;
token: string;
handling: Game.Handling;
userAgent: string;
codec?: Codec;
spooling?: boolean;
}): Promise<Ribbon>;
emit<T extends keyof Events.out.all>(event: T, ...data: Events.out.all[T] extends void ? [] : [Events.out.all[T]]): void;
log(msg: string, { force, level }?: {
force: boolean;
level: "info" | "warning" | "error";
}): void;
/** The last ping time, in ms */
get ping(): number;
/** Used in the Game class to detect disconnects faster, don't touch. */
set fasterPing(value: boolean);
/** Ribbon spool information, useful for logging */
get spool(): {
host: string;
endpoint: string;
};
/** Closes and cleans up the ribbon, called automatically by `client.destroy()` */
destroy(): void;
/** Automatically disconnect the ribbon's connection. It will attempt to automatically reconnect. */
disconnect(): void;
/** Clones a ribbon. Used internally by Client.reconnect. */
clone(): Promise<Ribbon>;
}
export { RibbonOptions } from "./types";