///
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;
}