mqttjs / mqtt-connection

Barebone Connection object for MQTT in node.js
Other
114 stars 25 forks source link

Add @types for TypeScript. #20

Open lygstate opened 5 years ago

lygstate commented 5 years ago

index.d.ts

import { Duplexify } from 'duplexify';
import { Stream, Duplex } from 'stream'

export = Connection;

type ConnectionCallback = ()=>void

interface ConnectionConstructor {
    (duplex?: Duplex, opts?: any | ConnectionCallback, cb?: ConnectionCallback): Connection.Connection;
    new(duplex?: Duplex, opts?: any | ConnectionCallback, cb?: ConnectionCallback): Connection.Connection;
}
declare var Connection: ConnectionConstructor;
declare namespace Connection {
    interface Connection extends Duplexify {
        connect(opts:any, cb?:ConnectionCallback):void;
        connack(opts:any, cb?:ConnectionCallback):void;
        publish(opts:any, cb?:ConnectionCallback):void;
        puback(opts:any, cb?:ConnectionCallback):void;
        pubrec(opts:any, cb?:ConnectionCallback):void;
        pubrel(opts:any, cb?:ConnectionCallback):void;
        pubcomp(opts:any, cb?:ConnectionCallback):void;
        subscribe(opts:any, cb?:ConnectionCallback):void;
        suback(opts:any, cb?:ConnectionCallback):void;
        unsubscribe(opts:any, cb?:ConnectionCallback):void;
        unsuback(opts:any, cb?:ConnectionCallback):void;
        pingreq(opts:any, cb?:ConnectionCallback):void;
        pingresp(opts:any, cb?:ConnectionCallback):void;
        disconnect(opts:any, cb?:ConnectionCallback):void;
        auth(opts:any, cb?:ConnectionCallback):void;

        destroy():void;
        setOptions(opts:any):void;
    }
}
JohnCMcDonough commented 5 years ago

I'm still working on these, but I think this might be slightly better?

  import { EventEmitter } from 'events';
  import { Duplexify } from 'duplexify';
  import * as mqtt from 'mqtt-packet';
  import { Stream, Duplex } from 'stream'

  export = Connection;

  type ConnectionCallback = () => void

  interface ConnectionConstructor {
    (duplex?: Duplex, opts?: any | ConnectionCallback, cb?: ConnectionCallback): Connection.Connection;
    new(duplex?: Duplex, opts?: any | ConnectionCallback, cb?: ConnectionCallback): Connection.Connection;
  }
  declare  var Connection: ConnectionConstructor;
  declare namespace Connection {
    interface Connection extends Duplexify, EventEmitter {
      connect(opts: Partial<mqtt.IConnectPacket>, cb?: ConnectionCallback): void;
      connack(opts: Partial<mqtt.IConnackPacket>, cb?: ConnectionCallback): void;
      publish(opts: Partial<mqtt.IPubackPacket>, cb?: ConnectionCallback): void;
      puback(opts: Partial<mqtt.IPubackPacket>, cb?: ConnectionCallback): void;
      pubrec(opts: Partial<mqtt.IPubrecPacket>, cb?: ConnectionCallback): void;
      pubrel(opts: Partial<mqtt.IPubrelPacket>, cb?: ConnectionCallback): void;
      pubcomp(opts: Partial<mqtt.IPubcompPacket>, cb?: ConnectionCallback): void;
      subscribe(opts: Partial<mqtt.ISubscribePacket>, cb?: ConnectionCallback): void;
      suback(opts: Partial<mqtt.ISubackPacket>, cb?: ConnectionCallback): void;
      unsubscribe(opts: Partial<mqtt.IUnsubscribePacket>, cb?: ConnectionCallback): void;
      unsuback(opts: Partial<mqtt.IUnsubackPacket>, cb?: ConnectionCallback): void;
      pingreq(opts: Partial<mqtt.IPingreqPacket>, cb?: ConnectionCallback): void;
      pingresp(opts: Partial<mqtt.IPingrespPacket>, cb?: ConnectionCallback): void;
      disconnect(opts: Partial<mqtt.IDisconnectPacket>, cb?: ConnectionCallback): void;
      auth(opts: any, cb?: ConnectionCallback): void;

      on(event: "connack", cb: (packet: mqtt.IConnackPacket) => void);
      on(event: "connect", cb: (packet: mqtt.IConnectPacket) => void);
      on(event: "disconnect", cb: (packet: mqtt.IDisconnectPacket) => void);
      on(event: "pingreq", cb: (packet: mqtt.IPingreqPacket) => void);
      on(event: "pingresp", cb: (packet: mqtt.IPingrespPacket) => void);
      on(event: "puback", cb: (packet: mqtt.IPubackPacket) => void);
      on(event: "pubcomp", cb: (packet: mqtt.IPubcompPacket) => void);
      on(event: "publish", cb: (packet: mqtt.IPublishPacket) => void);
      on(event: "pubrel", cb: (packet: mqtt.IPubrelPacket) => void);
      on(event: "pubrec", cb: (packet: mqtt.IPubrecPacket) => void);
      on(event: "suback", cb: (packet: mqtt.ISubackPacket) => void);
      on(event: "subscribe", cb: (packet: mqtt.ISubscribePacket & mqtt.ISubscription) => void); // why is this packet wrong without the union?
      on(event: "unsuback", cb: (packet: mqtt.IUnsubackPacket) => void);
      on(event: "unsubscribe", cb: (packet: mqtt.IUnsubscribePacket) => void);

      on(event: 'close', cb: () => void)
      on(event: 'error', cb: () => void)
      on(event: 'disconnect', cb: () => void)

      destroy(): void;
      setOptions(opts: any): void;
    }
  }
}