OverviewFilesCommitsIssuesDocsReleasesPeers

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

1 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};