OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-core-schemas / lib / chat / ops.js

126 lines · javascript ref:
const e = require("compact-encoding"),
  {
    MessageId: d,
    ChatEvent: o,
    DisplayEvent: n,
    GenericEvent: c,
    FileRecord: i,
  } = require("./messages"),
  r = {
    TYPE: 3,
    preencode(c, i) {
      let r = 0
      ;(i.display && (r |= 1),
        i.replyTo && (r |= 2),
        e.uint.preencode(c, r),
        o.preencode(c, i),
        i.display && n.preencode(c, i.display),
        i.replyTo && d.preencode(c, i.replyTo))
    },
    encode(c, i) {
      let r = 0
      ;(i.display && (r |= 1),
        i.replyTo && (r |= 2),
        e.uint.encode(c, r),
        o.encode(c, i),
        i.display && n.encode(c, i.display),
        i.replyTo && d.encode(c, i.replyTo))
    },
    decode(c) {
      const i = e.uint.decode(c)
      return {
        ...o.decode(c),
        display: 1 & i ? n.decode(c) : null,
        replyTo: 2 & i ? d.decode(c) : null,
      }
    },
  },
  p = {
    TYPE: 4,
    preencode(c, i) {
      let r = 0
      ;(i.display && (r |= 1),
        i.replyTo && (r |= 2),
        e.uint.preencode(c, r),
        d.preencode(c, i.id),
        o.preencode(c, i),
        i.display && n.preencode(c, i.display),
        i.replyTo && d.preencode(c, i.replyTo))
    },
    encode(c, i) {
      let r = 0
      ;(i.display && (r |= 1),
        i.replyTo && (r |= 2),
        e.uint.encode(c, r),
        d.encode(c, i.id),
        o.encode(c, i),
        i.display && n.encode(c, i.display),
        i.replyTo && d.encode(c, i.replyTo))
    },
    decode(c) {
      const i = e.uint.decode(c)
      return {
        id: d.decode(c),
        ...o.decode(c),
        display: 1 & i ? n.decode(c) : null,
        replyTo: 2 & i ? d.decode(c) : null,
      }
    },
  },
  l = {
    TYPE: 5,
    preencode(e, o) {
      d.preencode(e, o.id)
    },
    encode(e, o) {
      d.encode(e, o.id)
    },
    decode: (e) => ({ id: d.decode(e) }),
  },
  t = { TYPE: 6, ...c },
  s = {
    TYPE: 7,
    preencode(e, o) {
      d.preencode(e, o.id)
    },
    encode(e, o) {
      d.encode(e, o.id)
    },
    decode: (e) => ({ id: d.decode(e) }),
  },
  a = {
    TYPE: 1,
    preencode(d, o) {
      ;(d.end++, i.preencode(d, o.file), o.description && e.string.preencode(d, o.description))
    },
    encode(d, o) {
      const n = d.start++
      i.encode(d, o.file)
      let c = 0
      ;(o.description && ((c |= 1), e.string.encode(d, o.description)), (d.buffer[n] = c))
    },
    decode(d) {
      const o = e.uint.decode(d)
      return { file: i.decode(d), description: 1 & o ? e.string.decode(d) : null }
    },
  },
  y = {
    TYPE: 2,
    preencode(e, o) {
      d.preencode(e, o.id)
    },
    encode(e, o) {
      d.encode(e, o.id)
    },
    decode: (e) => ({ id: d.decode(e) }),
  }
module.exports = {
  AddChatMessageOperation: r,
  UpdateChatMessageOperation: p,
  RemoveChatMessageOperation: l,
  AddGenericEventOperation: t,
  RemoveGenericEventOperation: s,
  AddFileOperation: a,
  RemoveFileOperation: y,
}