@robot.com/better-mqtt
Version:
A modern, TypeScript-first MQTT client library that provides a better developer experience with async iterators, shared subscriptions, and React hooks. Better MQTT is a wrapper around the excellent [mqtt.js](https://github.com/mqttjs/MQTT.js) library, enh
1 lines • 5.88 kB
Source Map (JSON)
{"version":3,"sources":["../src/mock.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: This is a mock */\nimport { EventEmitter } from 'ee-ts'\nimport type { ErrorWithReasonCode, IClientOptions, MqttClient } from 'mqtt'\n\nexport type ConnectArgs =\n | [brokerUrl: string]\n | [brokerUrl: string, opts?: IClientOptions]\n | [opts: IClientOptions]\n\nexport interface BetterMQTTEvents {\n status(status: 'online' | 'offline'): void\n error(error: Error | ErrorWithReasonCode): void\n end(): void\n}\n\nexport type MessageParser<T = string> = (message: Buffer) => T\n\nexport function stringParser(message: Buffer): string {\n return message.toString('utf8')\n}\n\nexport function jsonParser<T = unknown>(message: Buffer): T {\n return JSON.parse(message.toString('utf8'))\n}\n\nexport function binaryParser(message: Buffer): Buffer {\n return message\n}\n\nexport interface BetterMQTTMessage<T> {\n topic: string\n content: T\n params: string[]\n}\n\nexport interface SubscriptionEvents<T> {\n message(message: BetterMQTTMessage<T>): void\n end(): void\n error(error: Error): void\n}\n\nexport class Subscription<T = string> extends EventEmitter<\n SubscriptionEvents<T>\n> {\n topic: string\n parser: (message: Buffer) => T\n\n constructor(opts: {\n mqtt: BetterMQTT\n topic: string\n parser: (message: Buffer) => T\n }) {\n super()\n this.topic = opts.topic\n this.parser = opts.parser\n }\n\n handleMessage(_message: Buffer, _topic: string, _params: string[]): void {\n // Do nothing\n }\n\n async *[Symbol.asyncIterator](): AsyncGenerator<\n BetterMQTTMessage<T>,\n any,\n any\n > {\n // This is an empty generator\n }\n\n end(): void {\n this.emit('end')\n }\n}\n\nexport class BetterMQTT extends EventEmitter<BetterMQTTEvents> {\n readonly client: MqttClient = new EventEmitter() as any\n error: Error | ErrorWithReasonCode | null = null\n\n get status() {\n return 'offline' as const\n }\n\n publish(\n _topic: string,\n _message: string | Buffer,\n _opts?: { qos?: 0 | 1 | 2 },\n ): void {\n // Do nothing\n }\n\n async publishAsync(\n _topic: string,\n _message: string | Buffer,\n ): Promise<void> {\n return Promise.resolve()\n }\n\n publishJson<T>(_topic: string, _message: T): void {\n // Do nothing\n }\n\n async publishJsonAsync<T>(_topic: string, _message: T): Promise<void> {\n return Promise.resolve()\n }\n\n unsubscribe(_sub: Subscription<unknown>): void {\n // Do nothing\n }\n\n subscribe<T>(topic: string, parser: MessageParser<T>): Subscription<T> {\n return new Subscription<T>({ mqtt: this, topic, parser })\n }\n\n subscribeString(topic: string): Subscription<string> {\n return this.subscribe(topic, stringParser)\n }\n\n subscribeJson<T>(topic: string): Subscription<T> {\n return this.subscribe<T>(topic, jsonParser)\n }\n\n subscribeBinary(topic: string): Subscription<Buffer> {\n return this.subscribe(topic, binaryParser)\n }\n\n async subscribeAsync<T>(\n topic: string,\n parser: MessageParser<T>,\n ): Promise<Subscription<T>> {\n return Promise.resolve(\n new Subscription<T>({ mqtt: this, topic, parser }),\n )\n }\n\n async subscribeStringAsync(topic: string): Promise<Subscription<string>> {\n return this.subscribeAsync(topic, stringParser)\n }\n\n async subscribeJsonAsync<T>(topic: string): Promise<Subscription<T>> {\n return this.subscribeAsync<T>(topic, jsonParser)\n }\n\n async subscribeBinaryAsync(topic: string): Promise<Subscription<Buffer>> {\n return this.subscribeAsync(topic, binaryParser)\n }\n\n static async connectAsync(..._args: ConnectArgs): Promise<BetterMQTT> {\n return Promise.resolve(new BetterMQTT())\n }\n\n static connect(..._args: ConnectArgs): BetterMQTT {\n return new BetterMQTT()\n }\n\n end(): void {\n this.emit('end')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA6B;AAgBtB,SAAS,aAAa,SAAyB;AAClD,SAAO,QAAQ,SAAS,MAAM;AAClC;AAEO,SAAS,WAAwB,SAAoB;AACxD,SAAO,KAAK,MAAM,QAAQ,SAAS,MAAM,CAAC;AAC9C;AAEO,SAAS,aAAa,SAAyB;AAClD,SAAO;AACX;AAcO,IAAM,eAAN,cAAuC,0BAE5C;AAAA,EACE;AAAA,EACA;AAAA,EAEA,YAAY,MAIT;AACC,UAAM;AACN,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS,KAAK;AAAA,EACvB;AAAA,EAEA,cAAc,UAAkB,QAAgB,SAAyB;AAAA,EAEzE;AAAA,EAEA,QAAQ,OAAO,aAAa,IAI1B;AAAA,EAEF;AAAA,EAEA,MAAY;AACR,SAAK,KAAK,KAAK;AAAA,EACnB;AACJ;AAEO,IAAM,aAAN,MAAM,oBAAmB,0BAA+B;AAAA,EAClD,SAAqB,IAAI,0BAAa;AAAA,EAC/C,QAA4C;AAAA,EAE5C,IAAI,SAAS;AACT,WAAO;AAAA,EACX;AAAA,EAEA,QACI,QACA,UACA,OACI;AAAA,EAER;AAAA,EAEA,MAAM,aACF,QACA,UACa;AACb,WAAO,QAAQ,QAAQ;AAAA,EAC3B;AAAA,EAEA,YAAe,QAAgB,UAAmB;AAAA,EAElD;AAAA,EAEA,MAAM,iBAAoB,QAAgB,UAA4B;AAClE,WAAO,QAAQ,QAAQ;AAAA,EAC3B;AAAA,EAEA,YAAY,MAAmC;AAAA,EAE/C;AAAA,EAEA,UAAa,OAAe,QAA2C;AACnE,WAAO,IAAI,aAAgB,EAAE,MAAM,MAAM,OAAO,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEA,gBAAgB,OAAqC;AACjD,WAAO,KAAK,UAAU,OAAO,YAAY;AAAA,EAC7C;AAAA,EAEA,cAAiB,OAAgC;AAC7C,WAAO,KAAK,UAAa,OAAO,UAAU;AAAA,EAC9C;AAAA,EAEA,gBAAgB,OAAqC;AACjD,WAAO,KAAK,UAAU,OAAO,YAAY;AAAA,EAC7C;AAAA,EAEA,MAAM,eACF,OACA,QACwB;AACxB,WAAO,QAAQ;AAAA,MACX,IAAI,aAAgB,EAAE,MAAM,MAAM,OAAO,OAAO,CAAC;AAAA,IACrD;AAAA,EACJ;AAAA,EAEA,MAAM,qBAAqB,OAA8C;AACrE,WAAO,KAAK,eAAe,OAAO,YAAY;AAAA,EAClD;AAAA,EAEA,MAAM,mBAAsB,OAAyC;AACjE,WAAO,KAAK,eAAkB,OAAO,UAAU;AAAA,EACnD;AAAA,EAEA,MAAM,qBAAqB,OAA8C;AACrE,WAAO,KAAK,eAAe,OAAO,YAAY;AAAA,EAClD;AAAA,EAEA,aAAa,gBAAgB,OAAyC;AAClE,WAAO,QAAQ,QAAQ,IAAI,YAAW,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,WAAW,OAAgC;AAC9C,WAAO,IAAI,YAAW;AAAA,EAC1B;AAAA,EAEA,MAAY;AACR,SAAK,KAAK,KAAK;AAAA,EACnB;AACJ;","names":[]}