Newer
Older
import { DecodeFn, EncodeFn } from "../../types";
import * as util from "../util";
const parseInfo = (key: string, data: Record<string, any>) =>
util.unflatten(
util.search(data, key === "operComplete" ? "outputArgs" : key) || {}
);
const decode: DecodeFn = (msg) => {
const parent = util.searchParent(msg, "subscriptionId");
const id = parent.subscriptionId;
const relField = Object.keys(parent).find(
(k) => k !== "subscriptionId" && k !== "sendResp"
return id && relField
? [parseInfo(relField, msg), id, null]
: [null, id, null];
}
return [null];
};
const encode: EncodeFn = ({ sendResp, subscriptionId, ...rest }) => ({
lookup: "Msg",
header: {
msgId: util.uniq("NOTIFY@"),
msgType: "GET",
lookup: "Header",
},
body: {
lookup: "Body",
request: {
lookup: "Request",
notify: {
subscriptionId,
sendResp,
...rest,