UNPKG

@haelp/teto

Version:

A typescript-based controllable TETR.IO client.

84 lines (83 loc) 2.9 kB
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";