OverviewFilesCommitsIssuesDocsReleasesPeers

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

446 lines · javascript ref:
const e = require("compact-encoding"),
  d = require("@holepunchto/hyperindex"),
  { GENERIC_EVENTS: n, DISPLAY_TYPES: o } = require("@holepunchto/keet-core-api"),
  c = 0,
  t = [d.UINT, d.UINT],
  r = [d.BUFFER, d.UINT],
  i = e.fixed32,
  p = d.UINT,
  u = {
    preencode(d, n) {
      ;(e.fixed32.preencode(d, n.key), e.uint.preencode(d, n.seq))
    },
    encode(d, n) {
      ;(e.fixed32.encode(d, n.key), e.uint.encode(d, n.seq))
    },
    decode: (d) => ({ key: e.fixed32.decode(d), seq: e.uint.decode(d) }),
  },
  s = {
    preencode(d, n) {
      ;(e.uint.preencode(d, n[0]), e.uint.preencode(d, n[1]))
    },
    encode(d, n) {
      ;(e.uint.encode(d, n[0]), e.uint.encode(d, n[1]))
    },
    decode: (d) => [e.uint.decode(d), e.uint.decode(d)],
  },
  l = {
    TYPE: o.MENTION,
    preencode(e, d) {
      ;(i.preencode(e, d.memberId), I.preencode(e, d))
    },
    encode(e, d) {
      ;(i.encode(e, d.memberId), I.encode(e, d))
    },
    decode: (e) => ({ memberId: i.decode(e), ...I.decode(e) }),
  },
  a = {
    preencode(d, n) {
      let o = 0
      ;(n.title && (o |= 1),
        n.description && (o |= 2),
        n.file && (o |= 4),
        e.uint.preencode(d, o),
        e.string.preencode(d, n.url),
        n.title && e.string.preencode(d, n.title),
        n.description && e.string.preencode(d, n.description),
        n.file && L.preencode(d, n.file))
    },
    encode(d, n) {
      let o = 0
      ;(n.title && (o |= 1),
        n.description && (o |= 2),
        n.file && (o |= 4),
        e.uint.encode(d, o),
        e.string.encode(d, n.url),
        n.title && e.string.encode(d, n.title),
        n.description && e.string.encode(d, n.description),
        n.file && L.encode(d, n.file))
    },
    decode(d) {
      const n = e.uint.decode(d)
      return {
        url: e.string.decode(d),
        title: 1 & n ? e.string.decode(d) : null,
        description: 2 & n ? e.string.decode(d) : null,
        file: 4 & n ? L.decode(d) : null,
      }
    },
  },
  E = {
    TYPE: o.HTTP_LINK,
    preencode(d, n) {
      let o = 0
      ;(n.preview && (o |= 1),
        e.uint.preencode(d, o),
        h.preencode(d, n),
        n.preview && a.preencode(d, n.preview))
    },
    encode(d, n) {
      let o = 0
      ;(n.preview && (o |= 1),
        e.uint.encode(d, o),
        h.encode(d, n),
        n.preview && a.encode(d, n.preview))
    },
    decode(d) {
      const n = e.uint.decode(d)
      return { ...h.decode(d), preview: 1 & n ? a.decode(d) : null }
    },
  },
  v = {
    TYPE: o.PEAR_LINK,
    preencode(d, n) {
      let o = 0
      ;(n.preview && (o |= 1),
        e.uint.preencode(d, o),
        h.preencode(d, n),
        n.preview && a.preencode(d, n.preview))
    },
    encode(d, n) {
      let o = 0
      ;(n.preview && (o |= 1),
        e.uint.encode(d, o),
        h.encode(d, n),
        n.preview && a.encode(d, n.preview))
    },
    decode(d) {
      const n = e.uint.decode(d)
      return { ...h.decode(d), preview: 1 & n ? a.decode(d) : null }
    },
  },
  y = {
    TYPE: o.CODE,
    preencode(e, d) {
      I.preencode(e, d)
    },
    encode(e, d) {
      I.encode(e, d)
    },
    decode: (e) => I.decode(e),
  },
  T = {
    TYPE: o.CODE_BLOCK,
    preencode(e, d) {
      I.preencode(e, d)
    },
    encode(e, d) {
      I.encode(e, d)
    },
    decode: (e) => I.decode(e),
  },
  f = {
    TYPE: o.BOLD,
    preencode(e, d) {
      I.preencode(e, d)
    },
    encode(e, d) {
      I.encode(e, d)
    },
    decode: (e) => I.decode(e),
  },
  w = {
    TYPE: o.ITALIC,
    preencode(e, d) {
      I.preencode(e, d)
    },
    encode(e, d) {
      I.encode(e, d)
    },
    decode: (e) => I.decode(e),
  },
  g = {
    TYPE: o.STRIKE_THROUGH,
    preencode(e, d) {
      I.preencode(e, d)
    },
    encode(e, d) {
      I.encode(e, d)
    },
    decode: (e) => I.decode(e),
  },
  m = {
    TYPE: o.EMOJI,
    preencode(e, d) {
      h.preencode(e, d)
    },
    encode(e, d) {
      h.encode(e, d)
    },
    decode: (e) => h.decode(e),
  },
  h = {
    preencode(d, n) {
      ;(e.string.preencode(d, n.content), I.preencode(d, n))
    },
    encode(d, n) {
      ;(e.string.encode(d, n.content), I.encode(d, n))
    },
    decode: (d) => ({ content: e.string.decode(d), ...I.decode(d) }),
  },
  I = {
    preencode(d, n) {
      ;(e.uint.preencode(d, n.start), e.uint.preencode(d, n.length))
    },
    encode(d, n) {
      ;(e.uint.encode(d, n.start), e.uint.encode(d, n.length))
    },
    decode: (d) => ({ start: e.uint.decode(d), length: e.uint.decode(d) }),
  }
function P(e) {
  switch (e) {
    case l.TYPE:
      return l
    case E.TYPE:
      return E
    case v.TYPE:
      return v
    case f.TYPE:
      return f
    case w.TYPE:
      return w
    case y.TYPE:
      return y
    case T.TYPE:
      return T
    case g.TYPE:
      return g
    case m.TYPE:
      return m
    default:
      return null
  }
}
const Y = {
    preencode(d, n) {
      const o = P(n.type)
      if (!o) throw new Error("Unsupported display type")
      ;(e.uint.preencode(d, n.type), o.preencode(d, n.value))
    },
    encode(d, n) {
      const o = P(n.type)
      if (!o) throw new Error("Unsupported display type")
      ;(e.uint.encode(d, n.type), o.encode(d, n.value))
    },
    decode(d) {
      const n = e.uint.decode(d),
        o = P(n)
      if (!o) throw new Error("Unsupported display type")
      return { type: n, value: o.decode(d) }
    },
  },
  R = e.array(Y),
  x = {
    preencode(d, n) {
      ;(d.end++, e.string.preencode(d, n.text))
    },
    encode(d, n) {
      const o = d.start++
      e.string.encode(d, n.text)
      let c = 0
      ;(n.edited && (c |= 1), (d.buffer[o] = c))
    },
    decode(d) {
      const n = e.uint.decode(d)
      return { text: e.string.decode(d), edited: !!(1 & n) }
    },
  },
  _ = {
    preencode(e, d) {
      L.preencode(e, d)
    },
    encode(e, d) {
      L.encode(e, d)
    },
    decode: (e) => L.decode(e),
  }
function N(d) {
  switch (d) {
    case n.MEMBER_JOINED:
    case n.CALL_STARTED:
    case n.ROOM_AVATAR_CHANGED:
    case n.INVITATION_CREATED:
    case n.MEMBER_LEFT:
      return M
    case n.MEMBER_REMOVED:
      return k
    case n.ROOM_TITLE_CHANGED:
      return O
    default:
      return e.buffer
  }
}
const A = {
    preencode(d, n) {
      e.uint.preencode(d, n.type)
      const o = N(n.type)
      o.preencode && o.preencode(d, n.value)
    },
    encode(d, n) {
      e.uint.encode(d, n.type)
      const o = N(n.type)
      o.preencode && o.encode(d, n.value)
    },
    decode(d) {
      const n = e.uint.decode(d),
        o = N(n)
      return o.preencode ? { type: n, value: o.decode(d) } : { type: n, value: null }
    },
  },
  M = {},
  O = {
    preencode(d, n) {
      ;(e.string.preencode(d, n.from), e.string.preencode(d, n.to))
    },
    encode(d, n) {
      ;(e.string.encode(d, n.from), e.string.encode(d, n.to))
    },
    decode: (d) => ({ from: e.string.decode(d), to: e.string.decode(d) }),
  },
  k = {
    preencode(d, n) {
      e.fixed32.preencode(d, n.memberKey)
    },
    encode(d, n) {
      e.fixed32.encode(d, n.memberKey)
    },
    decode: (d) => ({ memberKey: e.fixed32.decode(d) }),
  },
  D = {
    preencode(d, n) {
      let o = 0
      ;(n.deleted && (o |= 1),
        n.timestamp && (o |= 2),
        n.chat && (o |= 4),
        n.file && (o |= 8),
        n.display && (o |= 16),
        n.event && (o |= 32),
        n.parent && (o |= 64),
        n.replyTo && (o |= 128),
        e.uint.preencode(d, o),
        e.uint.preencode(d, n.clock),
        u.preencode(d, n.id),
        n.timestamp && e.uint.preencode(d, n.timestamp),
        n.chat && x.preencode(d, n.chat),
        n.file && _.preencode(d, n.file),
        n.display && R.preencode(d, n.display),
        n.event && A.preencode(d, n.event),
        n.parent && u.preencode(d, n.parent),
        n.replyTo && u.preencode(d, n.replyTo))
    },
    encode(d, n) {
      let o = 0
      ;(n.deleted && (o |= 1),
        n.timestamp && (o |= 2),
        n.chat && (o |= 4),
        n.file && (o |= 8),
        n.display && (o |= 16),
        n.event && (o |= 32),
        n.parent && (o |= 64),
        n.replyTo && (o |= 128),
        e.uint.encode(d, o),
        e.uint.encode(d, n.clock),
        u.encode(d, n.id),
        n.timestamp && e.uint.encode(d, n.timestamp),
        n.chat && x.encode(d, n.chat),
        n.file && _.encode(d, n.file),
        n.display && R.encode(d, n.display),
        n.event && A.encode(d, n.event),
        n.parent && u.encode(d, n.parent),
        n.replyTo && u.encode(d, n.replyTo))
    },
    decode(d) {
      const n = e.uint.decode(d)
      return {
        clock: e.uint.decode(d),
        id: u.decode(d),
        deleted: !!(1 & n),
        timestamp: 2 & n ? e.uint.decode(d) : null,
        chat: 4 & n ? x.decode(d) : null,
        file: 8 & n ? _.decode(d) : null,
        display: 16 & n ? R.decode(d) : null,
        event: 32 & n ? A.decode(d) : null,
        parent: 64 & n ? u.decode(d) : null,
        replyTo: 128 & n ? u.decode(d) : null,
      }
    },
  },
  b = {
    preencode(d, n) {
      ;(e.fixed32.preencode(d, n.key),
        e.string.preencode(d, n.path),
        e.uint.preencode(d, n.version))
    },
    encode(d, n) {
      ;(e.fixed32.encode(d, n.key), e.string.encode(d, n.path), e.uint.encode(d, n.version))
    },
    decode: (d) => ({
      key: e.fixed32.decode(d),
      path: e.string.decode(d),
      version: e.uint.decode(d),
    }),
  },
  C = {
    preencode(d, n) {
      ;(e.uint.preencode(d, n.width), e.uint.preencode(d, n.height))
    },
    encode(d, n) {
      ;(e.uint.encode(d, n.width), e.uint.encode(d, n.height))
    },
    decode: (d) => ({ width: e.uint.decode(d), height: e.uint.decode(d) }),
  },
  L = {
    preencode(d, n) {
      let o = 0
      ;(n.type && (o |= 1),
        n.dimensions && (o |= 2),
        n.preview && (o |= 4),
        n.previewPointer && (o |= 8),
        e.uint.preencode(d, o),
        b.preencode(d, n),
        n.type && e.string.preencode(d, n.type),
        n.dimensions && C.preencode(d, n.dimensions),
        n.preview && e.buffer.preencode(d, n.preview),
        n.previewPointer && b.preencode(d, n.previewPointer))
    },
    encode(d, n) {
      let o = 0
      ;(n.type && (o |= 1),
        n.dimensions && (o |= 2),
        n.preview && (o |= 4),
        n.previewPointer && (o |= 8),
        e.uint.encode(d, o),
        b.encode(d, n),
        n.type && e.string.encode(d, n.type),
        n.dimensions && C.encode(d, n.dimensions),
        n.preview && e.buffer.encode(d, n.preview),
        n.previewPointer && b.encode(d, n.previewPointer))
    },
    decode(d) {
      const n = e.uint.decode(d),
        { key: o, path: c, version: t } = b.decode(d)
      return {
        key: o,
        path: c,
        version: t,
        type: 1 & n ? e.string.decode(d) : null,
        dimensions: 2 & n ? C.decode(d) : null,
        preview: 4 & n ? e.buffer.decode(d) : null,
        previewPointer: 8 & n ? b.decode(d) : null,
      }
    },
  }
module.exports = {
  PRIMARY_THREAD_ID: 0,
  IndexEventId: t,
  IndexMessageId: r,
  ClockIndexEncoding: p,
  MessageId: u,
  EventIdValueEncoding: s,
  GenericEvent: A,
  DisplayEvent: R,
  ChatEvent: x,
  EventRecord: D,
  FileRecord: L,
}