Skip to content
Snippets Groups Projects
notify.ts 1015 B
Newer Older
  • Learn to ignore specific revisions
  • 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"
    
    Marin Karamihalev's avatar
    Marin Karamihalev committed
        );
    
        return id && relField
          ? [parseInfo(relField, msg), id, null]
          : [null, id, 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,