OverviewFilesCommitsIssuesDocsReleasesPeers

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

35 lines · javascript ref:
const e = require("compact-encoding"),
  i = {
    preencode(i, c) {
      ;(i.end++,
        e.fixed32.preencode(i, c.key),
        e.fixed32.preencode(i, c.noisePublicKey),
        e.uint.preencode(i, c.capabilities),
        c.receipt && e.buffer.preencode(i, c.receipt),
        c.name && e.string.preencode(i, c.name))
    },
    encode(i, c) {
      const d = i.start++
      ;(e.fixed32.encode(i, c.key),
        e.fixed32.encode(i, c.noisePublicKey),
        e.uint.encode(i, c.capabilities))
      let n = 0
      ;(c.receipt && ((n |= 1), e.buffer.encode(i, c.receipt)),
        c.isMobile && (n |= 2),
        c.name && ((n |= 4), e.string.encode(i, c.name)),
        (i.buffer[d] = n))
    },
    decode(i) {
      const c = e.uint.decode(i)
      return {
        key: e.fixed32.decode(i),
        noisePublicKey: e.fixed32.decode(i),
        capabilities: e.uint.decode(i),
        receipt: 1 & c ? e.buffer.decode(i) : null,
        isMobile: !!(2 & c),
        name: 4 & c ? e.string.decode(i) : null,
      }
    },
  }
module.exports = { DeviceRecord: i }