diff --git a/src/commands/index.ts b/src/commands/index.ts index e6b3e4cf61b0b8025035386a0b75369b86b86be6..d39f435231394804cb24b6ef5f9ecb2102f9da74 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -56,11 +56,6 @@ const unkownErr = ( msg: Record<string, string> ): [string, string, Record<string, any>] => ["error", "", msg]; -export const parseIds = (msg: Record<string, any>): string[] => [ - search(msg, "msgId"), - search(msg, "subscriptionId"), -].filter(v => v !== undefined) - export const readMsg = (data: any): Record<string, any> => { const record = rootRecord.lookupType("usp_record.Record"); const decodedRecord: any = record.decode(data); diff --git a/src/index.ts b/src/index.ts index d6ed60378801cf7df33cf979c4107dbcebb25c47..43903c0d885add4ac3033caa313520b93f52851e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import mqttAsync from "async-mqtt"; -import { decode, makeEncode, makeRecipes, parseIds, readMsg } from "./commands"; +import { decode, makeEncode, makeRecipes, readMsg } from "./commands"; import { ConnectionOptions, USP, @@ -61,11 +61,11 @@ export default async function connect( else call.resolve(message); } - const ids = parseIds(parsedMsg); - ids.forEach(i => { - const cbs = callbackRouter.get(i); - cbs.forEach((cb) => { cb(parsedMsg) }) - }) + const cbs = callbackRouter.get(id); + cbs.forEach((cb) => { + if (message) cb(message, parsedMsg) + else if(err) cb(err, parsedMsg) + }) }); client.on("error", (err) => { diff --git a/src/types.ts b/src/types.ts index b678b036901355c8c65f5be87898ebb28a640659..c22eaa21e224e39af73ccfef4e438a1959514f5e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -311,7 +311,7 @@ export interface SubscriptionOptions { reference: string | string[]; } -export type SubscriptionCallback = (msg: Response) => void; +export type SubscriptionCallback = (msg: Response, fullMsg?: Record<string, any>) => void; export interface OperateOptions { ID?: string;