// This file is autogenerated by the hyperschema compiler
// Schema Version: 1
/* eslint-disable camelcase */
/* eslint-disable quotes */
/* eslint-disable space-before-function-paren */
const { c } = require('hyperschema/runtime')
const VERSION = 1
// eslint-disable-next-line no-unused-vars
let version = VERSION
// @state/entry
const encoding0 = {
preencode(state, m) {
c.string.preencode(state, m.key)
state.end++ // max flag is 4 so always one byte
if (m.value) c.string.preencode(state, m.value)
if (m.ts) c.uint.preencode(state, m.ts)
if (m.admit) c.string.preencode(state, m.admit)
},
encode(state, m) {
const flags = (m.value ? 1 : 0) | (m.ts ? 2 : 0) | (m.admit ? 4 : 0)
c.string.encode(state, m.key)
c.uint.encode(state, flags)
if (m.value) c.string.encode(state, m.value)
if (m.ts) c.uint.encode(state, m.ts)
if (m.admit) c.string.encode(state, m.admit)
},
decode(state) {
const r0 = c.string.decode(state)
const flags = c.uint.decode(state)
return {
key: r0,
value: (flags & 1) !== 0 ? c.string.decode(state) : null,
ts: (flags & 2) !== 0 ? c.uint.decode(state) : 0,
admit: (flags & 4) !== 0 ? c.string.decode(state) : null
}
}
}
// @state/entry-key
const encoding1 = {
preencode(state, m) {
c.string.preencode(state, m.key)
state.end++ // max flag is 1 so always one byte
if (m.ts) c.uint.preencode(state, m.ts)
},
encode(state, m) {
const flags = m.ts ? 1 : 0
c.string.encode(state, m.key)
c.uint.encode(state, flags)
if (m.ts) c.uint.encode(state, m.ts)
},
decode(state) {
const r0 = c.string.decode(state)
const flags = c.uint.decode(state)
return {
key: r0,
ts: (flags & 1) !== 0 ? c.uint.decode(state) : 0
}
}
}
// @state/entry/hyperdb#0
const encoding2 = {
preencode(state, m) {
state.end++ // max flag is 4 so always one byte
if (m.value) c.string.preencode(state, m.value)
if (m.ts) c.uint.preencode(state, m.ts)
if (m.admit) c.string.preencode(state, m.admit)
},
encode(state, m) {
const flags = (m.value ? 1 : 0) | (m.ts ? 2 : 0) | (m.admit ? 4 : 0)
c.uint.encode(state, flags)
if (m.value) c.string.encode(state, m.value)
if (m.ts) c.uint.encode(state, m.ts)
if (m.admit) c.string.encode(state, m.admit)
},
decode(state) {
const flags = c.uint.decode(state)
return {
key: null,
value: (flags & 1) !== 0 ? c.string.decode(state) : null,
ts: (flags & 2) !== 0 ? c.uint.decode(state) : 0,
admit: (flags & 4) !== 0 ? c.string.decode(state) : null
}
}
}
function setVersion(v) {
version = v
}
function encode(name, value, v = VERSION) {
version = v
return c.encode(getEncoding(name), value)
}
function decode(name, buffer, v = VERSION) {
version = v
return c.decode(getEncoding(name), buffer)
}
function getEnum(name) {
switch (name) {
default:
throw new Error('Enum not found ' + name)
}
}
function getEncoding(name) {
switch (name) {
case '@state/entry':
return encoding0
case '@state/entry-key':
return encoding1
case '@state/entry/hyperdb#0':
return encoding2
default:
throw new Error('Encoder not found ' + name)
}
}
function getStruct(name, v = VERSION) {
const enc = getEncoding(name)
return {
preencode(state, m) {
version = v
enc.preencode(state, m)
},
encode(state, m) {
version = v
enc.encode(state, m)
},
decode(state) {
version = v
return enc.decode(state)
}
}
}
const resolveStruct = getStruct // compat
module.exports = {
resolveStruct,
getStruct,
getEnum,
getEncoding,
encode,
decode,
setVersion,
version
}