/// import { AedesOptions, PublishPacket } from "aedes"; import { LoggerService, Type } from "@nestjs/common"; import { ModuleMetadata } from "@nestjs/common/interfaces"; import { Transport } from "enum/pigeon.transport.enum"; export type MqttMessageTransformer = (payload: string | Buffer) => T; export interface MqttSubscribeOptions { topic: string | string[]; queue?: boolean; share?: string; transform?: "json" | "text" | MqttMessageTransformer; } export interface PubPacket extends PublishPacket { cmd: "publish"; qos: 0 | 1 | 2; topic: string; payload: string | Buffer; } export interface MqttSubscriberParameter { index: number; type: "error" | "payload" | "topic" | "publish" | "packet" | "client" | "host" | "subscription" | "subscriptions" | "unsubscription" | "function" | "credential"; transform?: "json" | "text" | MqttMessageTransformer; } export interface PigeonSubscriber { topic: RegExp | string; handle: any; provider: any; options: MqttSubscribeOptions; parameters: MqttSubscriberParameter[]; } export interface MqttLoggerOptions { useValue?: LoggerService; useClass?: Type; } export interface PigeonModuleOptions extends AedesOptions { port: number; transport: Transport; } export interface PigeonOptionsFactory { createPigeonConnectOptions(): Promise | PigeonModuleOptions; } export interface PigeonModuleAsyncOptions extends Pick { inject?: any[]; useExisting?: Type; useClass?: Type; useFactory?: (...args: any[]) => Promise | PigeonOptionsFactory; logger?: MqttLoggerOptions; }