OverviewFilesCommitsIssuesDocsReleasesPeers

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

98 lines · javascript ref:
const e = require("compact-encoding"),
  { PluginRecord: o } = require("../plugins/messages"),
  n = {
    SUBTYPE: 0,
    preencode(o, n) {
      e.uint.preencode(o, n.version)
    },
    encode(o, n) {
      e.uint.encode(o, n.version)
    },
    decode: (o) => ({ version: e.uint.decode(o) }),
  },
  d = {
    SUBTYPE: 1,
    preencode(e, n) {
      o.preencode(e, n)
    },
    encode(e, n) {
      o.encode(e, n)
    },
    decode: (e) => o.decode(e),
  },
  t = {
    preencode(o, n) {
      e.fixed32.preencode(o, n.noisePublicKey)
    },
    encode(o, n) {
      e.fixed32.encode(o, n.noisePublicKey)
    },
    decode: (o) => ({ noisePublicKey: e.fixed32.decode(o) }),
  },
  r = {
    SUBTYPE: 2,
    preencode(o, n) {
      let d = 0
      ;(n.experimental && (d |= 1),
        n.roomType && (d |= 2),
        n.title && (d |= 4),
        e.uint.preencode(o, d),
        e.uint.preencode(o, n.version),
        t.preencode(o, n.bootstrap),
        n.title && e.string.preencode(o, n.title),
        n.roomType && e.uint.preencode(o, n.roomType))
    },
    encode(o, n) {
      let d = 0
      ;(n.experimental && (d |= 1),
        n.roomType && (d |= 2),
        n.title && (d |= 4),
        e.uint.encode(o, d),
        e.uint.encode(o, n.version),
        t.encode(o, n.bootstrap),
        n.title && e.string.encode(o, n.title),
        n.roomType && e.uint.encode(o, n.roomType))
    },
    decode(o) {
      const n = e.uint.decode(o)
      return {
        version: e.uint.decode(o),
        bootstrap: t.decode(o),
        experimental: !!(1 & n),
        roomType: 2 & n ? e.uint.decode(o) : 0,
        title: 4 & n ? e.string.decode(o) : 0,
      }
    },
  },
  c = {
    TYPE: 0,
    preencode(o, n) {
      ;(e.uint.preencode(o, n.subtype), i(n.subtype).preencode(o, n.value))
    },
    encode(o, n) {
      ;(e.uint.encode(o, n.subtype), i(n.subtype).encode(o, n.value))
    },
    decode(o) {
      const n = e.uint.decode(o)
      return { subtype: n, value: i(n).decode(o) }
    },
  }
function i(e) {
  switch (e) {
    case n.SUBTYPE:
      return n
    case d.SUBTYPE:
      return d
    case r.SUBTYPE:
      return r
    default:
      throw new Error("Invalid internal operation subtype")
  }
}
module.exports = {
  InternalOperation: c,
  GenesisOperation: r,
  UpgradeOperation: n,
  AddPluginOperation: d,
}