OverviewFilesCommitsIssuesDocsReleasesPeers

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

121 lines · javascript ref:
const e = require("compact-encoding"),
  d = {
    preencode(d, i) {
      ;(d.end++,
        e.fixed32.preencode(d, i.publicKey),
        e.uint.preencode(d, i.capabilities),
        i.expiration && e.uint.preencode(d, i.expiration),
        i.uses && e.uint.preencode(d, i.uses))
    },
    encode(d, i) {
      const n = d.start++
      ;(e.fixed32.encode(d, i.publicKey), e.uint.encode(d, i.capabilities))
      let t = 0
      ;(i.expiration && ((t |= 1), e.uint.encode(d, i.expiration)),
        i.uses && ((t |= 2), e.uint.encode(d, i.uses)),
        i.reusable && (t |= 4),
        (d.buffer[n] = t))
    },
    decode(d) {
      const i = e.uint.decode(d)
      return {
        publicKey: e.fixed32.decode(d),
        capabilities: e.uint.decode(d),
        expiration: 1 & i ? e.uint.decode(d) : 0,
        uses: 2 & i ? e.uint.decode(d) : 0,
        reusable: !!(4 & i),
      }
    },
  },
  i = {
    preencode(d, i) {
      ;(e.buffer.preencode(d, i.data), e.buffer.preencode(d, i.signature))
    },
    encode(d, i) {
      ;(e.buffer.encode(d, i.data), e.buffer.encode(d, i.signature))
    },
    decode: (d) => ({ data: e.buffer.decode(d), signature: e.buffer.decode(d) }),
  },
  n = {
    preencode(d, n) {
      let t = 0
      ;(n.expiration && (t |= 1),
        n.uses && (t |= 2),
        n.reusable && (t |= 4),
        n.attestsTo && (t |= 8),
        n.additional && (t |= 16),
        e.uint.preencode(d, t),
        e.fixed32.preencode(d, n.publicKey),
        e.uint.preencode(d, n.capabilities),
        n.expiration && e.uint.preencode(d, n.expiration),
        n.uses && e.uint.preencode(d, n.uses),
        n.attestsTo && e.fixed32.preencode(d, n.attestsTo),
        n.additional && i.preencode(d, n.additional))
    },
    encode(d, n) {
      let t = 0
      ;(n.expiration && (t |= 1),
        n.uses && (t |= 2),
        n.reusable && (t |= 4),
        n.attestsTo && (t |= 8),
        n.additional && (t |= 16),
        e.uint.encode(d, t),
        e.fixed32.encode(d, n.publicKey),
        e.uint.encode(d, n.capabilities),
        n.expiration && e.uint.encode(d, n.expiration),
        n.uses && e.uint.encode(d, n.uses),
        n.attestsTo && e.fixed32.encode(d, n.attestsTo),
        n.additional && i.encode(d, n.additional))
    },
    decode(d) {
      const n = e.uint.decode(d)
      return {
        publicKey: e.fixed32.decode(d),
        capabilities: e.uint.decode(d),
        expiration: 1 & n ? e.uint.decode(d) : 0,
        uses: 2 & n ? e.uint.decode(d) : 0,
        reusable: !!(4 & n),
        attestsTo: 8 & n ? e.fixed32.decode(d) : null,
        additional: 16 & n ? i.decode(d) : null,
      }
    },
  },
  t = {
    preencode(d, i) {
      ;(e.fixed32.preencode(d, i.deviceKey),
        e.fixed32.preencode(d, i.noisePublicKey),
        i.attestation
          ? e.buffer.preencode(d, i.attestation)
          : i.deviceName && e.buffer.preencode(d, null))
      let n = 0
      ;(i.deviceName && (n |= 1),
        e.uint.preencode(d, n),
        i.deviceName && e.string.preencode(d, i.deviceName))
    },
    encode(d, i) {
      ;(e.fixed32.encode(d, i.deviceKey),
        e.fixed32.encode(d, i.noisePublicKey),
        i.attestation
          ? e.buffer.encode(d, i.attestation)
          : i.deviceName && e.buffer.encode(d, null))
      let n = 0
      ;(i.deviceName && (n |= 1),
        e.uint.encode(d, n),
        i.deviceName && e.string.encode(d, i.deviceName))
    },
    decode(d) {
      const i = {
        deviceKey: e.fixed32.decode(d),
        noisePublicKey: e.fixed32.decode(d),
        attestation: d.start < d.end ? e.buffer.decode(d) : null,
        deviceName: null,
      }
      if (d.start < d.end) {
        const n = e.uint.decode(d)
        i.deviceName = 1 & n ? e.string.decode(d) : null
      }
      return i
    },
  }
module.exports = { InvitationRecordV1: d, InvitationRecord: n, InvitationUserData: t }