From 3a1604d1554383dcececf57a5ad1d4c201296697 Mon Sep 17 00:00:00 2001 From: afrokick Date: Fri, 20 Mar 2020 04:19:33 +0300 Subject: [PATCH] add declaration file --- index.d.ts | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 ++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 index.d.ts diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..0ad7a14 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,71 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/// +import { Server } from "net"; +import EventEmitter from "events"; +import WebSocketLib from "ws"; +import Express from "express"; + +declare type MyWebSocket = WebSocketLib & EventEmitter; + +declare type Optional = { + [P in keyof T]?: (T[P] | undefined); +}; + +declare interface IConfig { + readonly port: number; + readonly expire_timeout: number; + readonly alive_timeout: number; + readonly key: string; + readonly path: string; + readonly concurrent_limit: number; + readonly allow_discovery: boolean; + readonly proxied: boolean | string; + readonly cleanup_out_msgs: number; + readonly ssl?: { + key: string; + cert: string; + }; + readonly generateClientId?: () => string; +} + +declare interface IClient { + getId(): string; + getToken(): string; + getSocket(): MyWebSocket | null; + setSocket(socket: MyWebSocket | null): void; + getLastPing(): number; + setLastPing(lastPing: number): void; + send(data: any): void; +} + +declare enum MessageType { + OPEN = "OPEN", + LEAVE = "LEAVE", + CANDIDATE = "CANDIDATE", + OFFER = "OFFER", + ANSWER = "ANSWER", + EXPIRE = "EXPIRE", + HEARTBEAT = "HEARTBEAT", + ID_TAKEN = "ID-TAKEN", + ERROR = "ERROR" +} + +declare interface IMessage { + readonly type: MessageType; + readonly src: string; + readonly dst: string; + readonly payload?: any; +} + +declare interface CustomExpress extends Express.Express { + on(event: string, callback: (...args: any[]) => void): this; + on(event: 'connection', callback: (client: IClient) => void): this; + on(event: 'disconnect', callback: (client: IClient) => void): this; + on(event: 'message', callback: (client: IClient, message: IMessage) => void): this; + on(event: 'error', callback: (error: Error) => void): this; +} + +declare function ExpressPeerServer(server: Server, options?: IConfig): CustomExpress; +declare function PeerServer(options?: Optional, callback?: (server: Server) => void): CustomExpress; + +export { ExpressPeerServer, PeerServer }; diff --git a/package.json b/package.json index ca04c2c..822fa77 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ }, "files": [ "bin/", - "dist/" + "dist/", + "index.d.ts" ], "repository": { "type": "git",