[ts3-nodejs-library] Add and enhance typings, remove unneeded dependency (#34873)

* Add ts3-nodejs-library typings

* Use files instead of include

* Fix json error in tsconfig

* Require at least TypeScript Version 3.0

* Fix typescript version header

* Remove duplicate typings in subclasses of the abstract class

* Add constructor list typings

* type-safe events construct, remove unneeded steam dependency and more

* Add more typings

* Correctly reference node types for Buffer and Fix linting issues

* Type 'close' and 'error' event

* Type 'clientdisconnect', 'flooding', 'debug' and ready events
This commit is contained in:
Pascal Sthamer
2019-04-21 11:33:30 -07:00
committed by Pranav Senthilnathan
parent b63d70da01
commit fc57ce331b
4 changed files with 130 additions and 6 deletions
+110 -6
View File
@@ -1,3 +1,5 @@
/// <reference types="node" />
import { EventEmitter } from 'events';
import TeamSpeakChannel = require('./property/Channel');
import TeamSpeakClient = require('./property/Client');
@@ -5,9 +7,6 @@ import TeamSpeakServer = require('./property/Server');
import TeamSpeakServerGroup = require('./property/ServerGroup');
import TeamSpeakChannelGroup = require('./property/ChannelGroup');
// For the buffer type.
import * as stream from 'steam';
// We need this namespace, becaue we can't just export the interface directly,
// as it would conflict with export = TeamSpeak3.
declare namespace TeamSpeak3 {
@@ -29,6 +28,111 @@ declare namespace TeamSpeak3 {
/** Maximum wait time for the connection to get established. Defaults to 20000. */
readyTimeout?: number;
}
enum TargetMode {
CLIENT = 1,
CHANNEL = 2,
VIRTUAL_SERVER = 3
}
enum ClientType {
CLIENT = 0,
QUERY = 1
}
interface MessageData {
invoker: TeamSpeakClient;
msg: string;
targetmode: TargetMode;
}
interface WhoAmIResponse {
virtualserver_status: string;
virtualserver_id: number;
virtualserver_unique_identifier: string;
virtualserver_port: number;
client_id: number;
client_channel_id: number;
client_nickname: string;
client_database_id: number;
cient_login_name: string;
client_unique_identifier: string;
client_origin_server_id: number;
}
interface ClientMovedResponse {
client: TeamSpeakClient;
channel: TeamSpeakChannel;
reasonid: number;
}
interface ServerGroupClientListResponse {
cldbid: number;
client_nickname: string;
client_unique_identifier: string;
}
interface DisconnectedClient {
clid: number;
cid: number;
client_database_id: number;
client_nickname: string;
client_type: ClientType;
client_away: number;
client_away_message: string | undefined;
client_flag_talking: number;
client_input_muted: number;
client_output_muted: number;
client_input_hardware: number;
client_output_hardware: number;
client_talk_power: number;
client_is_talker: number;
client_is_priority_speaker: number;
client_is_recording: number;
client_is_channel_commander: number;
client_unique_identifier: string;
client_servergroups: number[];
client_channel_group_id: number;
client_channel_group_inherited_channel_id: number;
client_version: string;
client_platform: string;
client_idle_time: number;
client_created: number;
client_lastconnected: number;
client_icon_id: number;
client_country: string | undefined;
connection_client_ip: string;
}
interface DisconnectEvent {
cfid: number;
ctid: number;
reasonid: number;
reasonmsg: string;
clid: number;
}
interface ClientDisconnectResponse {
client: DisconnectedClient;
event: DisconnectEvent;
}
interface DebugInformation {
type: string;
data: string;
}
}
interface TeamSpeak3 {
// Type-safe events.
on(event: 'textmessage', listener: (data: TeamSpeak3.MessageData) => void): this;
on(event: 'clientconnect', listener: (data: { client: TeamSpeakClient }) => void): this;
on(event: 'clientmoved', listener: (data: TeamSpeak3.ClientMovedResponse) => void): this;
on(event: 'clientdisconnect', listener: (data: TeamSpeak3.ClientDisconnectResponse) => void): this;
on(event: 'close' | 'error' | 'flooding', listener: (err: Error) => void): this;
on(event: 'ready', listener: () => void): this;
on(event: 'debug', listener: (debug: TeamSpeak3.DebugInformation) => void): this;
on(event: string, listener: () => any): this;
}
declare class TeamSpeak3 extends EventEmitter {
@@ -143,7 +247,7 @@ declare class TeamSpeak3 extends EventEmitter {
/**
* Displays information about your current ServerQuery connection including your loginname, etc.
*/
whoami(): Promise<any>;
whoami(): Promise<TeamSpeak3.WhoAmIResponse>;
/**
* Displays detailed configuration information about the selected virtual server
@@ -216,7 +320,7 @@ declare class TeamSpeak3 extends EventEmitter {
* Displays the IDs of all clients currently residing in the server group.
* @param - the ServerGroup id
*/
serverGroupClientList(sgid: number): Promise<any>;
serverGroupClientList(sgid: number): Promise<TeamSpeak3.ServerGroupClientListResponse[] | TeamSpeak3.ServerGroupClientListResponse> | null;
/**
* Adds the client to the server group specified with sgid.
@@ -846,7 +950,7 @@ declare class TeamSpeak3 extends EventEmitter {
* Lists all Clients with a given Filter
* @param - Filter Object
*/
clientList(filter: any): Promise<TeamSpeakClient[]>;
clientList(filter?: any): Promise<TeamSpeakClient[]>;
/**
* Displays a list of files and directories stored in the specified channels file repository.
+1
View File
@@ -2,6 +2,7 @@
// Project: https://github.com/Multivit4min/TS3-NodeJS-Library
// Definitions by: Pascal Sthamer <https://github.com/P4sca1>
// David Kartnaller <https://github.com/Multivit4min>
// Mattis Krämer <https://github.com/Mattzimann>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.0
+3
View File
@@ -11,6 +11,9 @@ interface ChannelListResponse {
declare class TeamSpeakChannel extends Abstract {
constructor(parent: TeamSpeak3, list: ChannelListResponse)
/** Returns the Name of the channel */
name: string;
/**
* Returns the ID of the Channel
* @returns the Channels ID
+16
View File
@@ -11,9 +11,25 @@ interface ClientListResponse {
client_unique_identifier: string;
}
declare enum ClientType {
CLIENT = 0,
QUERY = 1
}
declare class TeamSpeakClient extends Abstract {
constructor(parent: TeamSpeak3, list: ClientListResponse)
/** Returns the Client Type: 0 = CLIENT, 1 = QUERY */
type: ClientType;
/** Client Nickname */
nickname: string;
/** Array of client Servergroups */
servergroups: number[];
/** The ChannelID of the client */
cid: number;
/** The UID of the client */
client_unique_identifier: string;
/**
* Returns the Database ID of the Client
* @returns the Clients Database ID