@fnlb-project/stanza
Version:
Modern XMPP in the browser, with a JSON API
52 lines (51 loc) • 1.98 kB
TypeScript
import { AsyncPriorityQueue } from 'async';
import { EventEmitter } from 'events';
import { Agent, AgentConfig, Transport } from './';
import StreamManagement from './helpers/StreamManagement';
import * as JXT from './jxt';
import { JSONData } from './jxt';
import * as SASL from './lib/sasl';
import { IQ, Message, Presence, StreamError, Stream } from './protocol';
import NetworkDiscovery from './helpers/NetworkDiscovery';
interface StreamData {
kind: string;
stanza: any;
replay?: boolean;
}
export default class Client extends EventEmitter {
jid: string;
config: AgentConfig;
sm: StreamManagement;
transport?: Transport;
stanzas: JXT.Registry;
resolver: NetworkDiscovery;
sessionStarting?: boolean;
sessionStarted?: boolean;
sessionTerminating?: boolean;
reconnectAttempts: number;
transports: {
[key: string]: new (client: Agent, sm: StreamManagement, registry: JXT.Registry) => Transport;
};
sasl: SASL.Factory;
incomingDataQueue: AsyncPriorityQueue<StreamData>;
outgoingDataQueue: AsyncPriorityQueue<StreamData>;
private reconnectTimer;
constructor(opts?: AgentConfig);
updateConfig(opts?: AgentConfig): void;
get stream(): Stream | undefined;
emit(name: string, ...args: any[]): boolean;
use(pluginInit: boolean | ((agent: Agent, registry: JXT.Registry, config: AgentConfig) => void)): void;
nextId(): string;
getCredentials(): Promise<SASL.Credentials>;
connect(): Promise<void>;
disconnect(): Promise<void>;
send(kind: string, stanza: JSONData, replay?: boolean): Promise<void>;
sendMessage(data: Message): string;
sendPresence(data?: Presence): string;
sendIQ<T extends IQ = IQ, R extends IQ = T>(data: T): Promise<R>;
sendIQResult(original: IQ, reply: Partial<IQ>): void;
sendIQError(original: IQ, error: Partial<IQ>): void;
sendStreamError(error: StreamError): void;
private _getConfiguredCredentials;
}
export {};