{"mappings":"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","sources":["index.js","src/EncodeStream.js","src/DecodeStream.js","src/Array.js","src/Base.js","src/Number.js","src/utils.js","src/LazyArray.js","src/Bitfield.js","src/Boolean.js","src/Buffer.js","src/Enum.js","src/Optional.js","src/Reserved.js","src/String.js","src/Struct.js","src/VersionedStruct.js","src/Pointer.js"],"sourcesContent":["export {EncodeStream} from './src/EncodeStream.js';\nexport {DecodeStream} from './src/DecodeStream.js';\nexport {Array} from './src/Array.js';\nexport {LazyArray} from './src/LazyArray.js';\nexport {Bitfield} from './src/Bitfield.js';\nexport {Boolean} from './src/Boolean.js';\nexport {Buffer} from './src/Buffer.js';\nexport {Enum} from './src/Enum.js';\nexport {Optional} from './src/Optional.js';\nexport {Reserved} from './src/Reserved.js';\nexport {String} from './src/String.js';\nexport {Struct} from './src/Struct.js';\nexport {VersionedStruct} from './src/VersionedStruct.js';\n\nexport * from './src/utils.js';\nexport * from './src/Number.js';\nexport * from './src/Pointer.js';\n","import {DecodeStream} from './DecodeStream.js';\n\nconst textEncoder = new TextEncoder();\nconst isBigEndian = new Uint8Array(new Uint16Array([0x1234]).buffer)[0] == 0x12;\n\nexport class EncodeStream {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n this.pos = 0;\n }\n\n writeBuffer(buffer) {\n this.buffer.set(buffer, this.pos);\n this.pos += buffer.length;\n }\n\n writeString(string, encoding = 'ascii') {\n let buf;\n switch (encoding) {\n case 'utf16le':\n case 'utf16-le':\n case 'ucs2': // node treats this the same as utf16.\n buf = stringToUtf16(string, isBigEndian);\n break;\n\n case 'utf16be':\n case 'utf16-be':\n buf = stringToUtf16(string, !isBigEndian);\n break;\n\n case 'utf8':\n buf = textEncoder.encode(string);\n break;\n\n case 'ascii':\n buf = stringToAscii(string);\n break;\n\n default:\n throw new Error(`Unsupported encoding: ${encoding}`);\n }\n\n this.writeBuffer(buf);\n }\n\n writeUInt24BE(val) {\n this.buffer[this.pos++] = (val >>> 16) & 0xff;\n this.buffer[this.pos++] = (val >>> 8) & 0xff;\n this.buffer[this.pos++] = val & 0xff;\n }\n\n writeUInt24LE(val) {\n this.buffer[this.pos++] = val & 0xff;\n this.buffer[this.pos++] = (val >>> 8) & 0xff;\n this.buffer[this.pos++] = (val >>> 16) & 0xff;\n }\n\n writeInt24BE(val) {\n if (val >= 0) {\n this.writeUInt24BE(val);\n } else {\n this.writeUInt24BE(val + 0xffffff + 1);\n }\n }\n\n writeInt24LE(val) {\n if (val >= 0) {\n this.writeUInt24LE(val);\n } else {\n this.writeUInt24LE(val + 0xffffff + 1);\n }\n }\n\n fill(val, length) {\n if (length < this.buffer.length) {\n this.buffer.fill(val, this.pos, this.pos + length);\n this.pos += length;\n } else {\n const buf = new Uint8Array(length);\n buf.fill(val);\n this.writeBuffer(buf);\n }\n }\n}\n\nfunction stringToUtf16(string, swap) {\n let buf = new Uint16Array(string.length);\n for (let i = 0; i < string.length; i++) {\n let code = string.charCodeAt(i);\n if (swap) {\n code = (code >> 8) | ((code & 0xff) << 8);\n }\n buf[i] = code;\n }\n return new Uint8Array(buf.buffer);\n}\n\nfunction stringToAscii(string) {\n let buf = new Uint8Array(string.length);\n for (let i = 0; i < string.length; i++) {\n // Match node.js behavior - encoding allows 8-bit rather than 7-bit.\n buf[i] = string.charCodeAt(i);\n }\n return buf;\n}\n\nfor (let key of Object.getOwnPropertyNames(DataView.prototype)) {\n if (key.slice(0, 3) === 'set') {\n let type = key.slice(3).replace('Ui', 'UI');\n if (type === 'Float32') {\n type = 'Float';\n } else if (type === 'Float64') {\n type = 'Double';\n }\n let bytes = DecodeStream.TYPES[type];\n EncodeStream.prototype['write' + type + (bytes === 1 ? '' : 'BE')] = function (value) {\n this.view[key](this.pos, value, false);\n this.pos += bytes;\n };\n\n if (bytes !== 1) {\n EncodeStream.prototype['write' + type + 'LE'] = function (value) {\n this.view[key](this.pos, value, true);\n this.pos += bytes;\n };\n }\n }\n}\n","// Node back-compat.\nconst ENCODING_MAPPING = {\n utf16le: 'utf-16le',\n ucs2: 'utf-16le',\n utf16be: 'utf-16be'\n}\n\nexport class DecodeStream {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.pos = 0;\n this.length = this.buffer.length;\n }\n\n readString(length, encoding = 'ascii') {\n encoding = ENCODING_MAPPING[encoding] || encoding;\n\n let buf = this.readBuffer(length);\n try {\n let decoder = new TextDecoder(encoding);\n return decoder.decode(buf);\n } catch (err) {\n return buf;\n }\n }\n\n readBuffer(length) {\n return this.buffer.slice(this.pos, (this.pos += length));\n }\n\n readUInt24BE() {\n return (this.readUInt16BE() << 8) + this.readUInt8();\n }\n\n readUInt24LE() {\n return this.readUInt16LE() + (this.readUInt8() << 16);\n }\n\n readInt24BE() {\n return (this.readInt16BE() << 8) + this.readUInt8();\n }\n\n readInt24LE() {\n return this.readUInt16LE() + (this.readInt8() << 16);\n }\n}\n\nDecodeStream.TYPES = {\n UInt8: 1,\n UInt16: 2,\n UInt24: 3,\n UInt32: 4,\n Int8: 1,\n Int16: 2,\n Int24: 3,\n Int32: 4,\n Float: 4,\n Double: 8\n};\n\nfor (let key of Object.getOwnPropertyNames(DataView.prototype)) {\n if (key.slice(0, 3) === 'get') {\n let type = key.slice(3).replace('Ui', 'UI');\n if (type === 'Float32') {\n type = 'Float';\n } else if (type === 'Float64') {\n type = 'Double';\n }\n let bytes = DecodeStream.TYPES[type];\n DecodeStream.prototype['read' + type + (bytes === 1 ? '' : 'BE')] = function () {\n const ret = this.view[key](this.pos, false);\n this.pos += bytes;\n return ret;\n };\n\n if (bytes !== 1) {\n DecodeStream.prototype['read' + type + 'LE'] = function () {\n const ret = this.view[key](this.pos, true);\n this.pos += bytes;\n return ret;\n };\n }\n }\n}\n","import {Base} from './Base.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nclass ArrayT extends Base {\n constructor(type, length, lengthType = 'count') {\n super();\n this.type = type;\n this.length = length;\n this.lengthType = lengthType;\n }\n\n decode(stream, parent) {\n let length;\n const { pos } = stream;\n\n const res = [];\n let ctx = parent;\n\n if (this.length != null) {\n length = utils.resolveLength(this.length, stream, parent);\n }\n\n if (this.length instanceof NumberT) {\n // define hidden properties\n Object.defineProperties(res, {\n parent: { value: parent },\n _startOffset: { value: pos },\n _currentOffset: { value: 0, writable: true },\n _length: { value: length }\n });\n\n ctx = res;\n }\n\n if ((length == null) || (this.lengthType === 'bytes')) {\n const target = (length != null) ?\n stream.pos + length\n : (parent != null ? parent._length : undefined) ?\n parent._startOffset + parent._length\n :\n stream.length;\n\n while (stream.pos < target) {\n res.push(this.type.decode(stream, ctx));\n }\n\n } else {\n for (let i = 0, end = length; i < end; i++) {\n res.push(this.type.decode(stream, ctx));\n }\n }\n\n return res;\n }\n\n size(array, ctx, includePointers = true) {\n if (!array) {\n return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);\n }\n\n let size = 0;\n if (this.length instanceof NumberT) {\n size += this.length.size();\n ctx = {parent: ctx, pointerSize: 0};\n }\n\n for (let item of array) {\n size += this.type.size(item, ctx);\n }\n\n if (ctx && includePointers && this.length instanceof NumberT) {\n size += ctx.pointerSize;\n }\n \n return size;\n }\n\n encode(stream, array, parent) {\n let ctx = parent;\n if (this.length instanceof NumberT) {\n ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent\n };\n\n ctx.pointerOffset = stream.pos + this.size(array, ctx, false);\n this.length.encode(stream, array.length);\n }\n\n for (let item of array) {\n this.type.encode(stream, item, ctx);\n }\n\n if (this.length instanceof NumberT) {\n let i = 0;\n while (i < ctx.pointers.length) {\n const ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n }\n }\n}\n\nexport {ArrayT as Array};\n","import {DecodeStream} from './DecodeStream.js';\nimport {EncodeStream} from './EncodeStream.js';\n\nexport class Base {\n fromBuffer(buffer) {\n let stream = new DecodeStream(buffer);\n return this.decode(stream);\n }\n\n toBuffer(value) {\n let size = this.size(value);\n let buffer = new Uint8Array(size);\n let stream = new EncodeStream(buffer);\n this.encode(stream, value);\n return buffer;\n }\n}\n","import {DecodeStream} from './DecodeStream.js';\nimport {Base} from './Base.js';\n\nclass NumberT extends Base {\n constructor(type, endian = 'BE') {\n super();\n this.type = type;\n this.endian = endian;\n this.fn = this.type;\n if (this.type[this.type.length - 1] !== '8') {\n this.fn += this.endian;\n }\n }\n\n size() {\n return DecodeStream.TYPES[this.type];\n }\n\n decode(stream) {\n return stream[`read${this.fn}`]();\n }\n\n encode(stream, val) {\n return stream[`write${this.fn}`](val);\n }\n}\n\nexport {NumberT as Number};\n\nexport const uint8 = new NumberT('UInt8');\nexport const uint16be = new NumberT('UInt16', 'BE');\nexport const uint16 = uint16be;\nexport const uint16le = new NumberT('UInt16', 'LE');\nexport const uint24be = new NumberT('UInt24', 'BE');\nexport const uint24 = uint24be;\nexport const uint24le = new NumberT('UInt24', 'LE');\nexport const uint32be = new NumberT('UInt32', 'BE');\nexport const uint32 = uint32be;\nexport const uint32le = new NumberT('UInt32', 'LE');\nexport const int8 = new NumberT('Int8');\nexport const int16be = new NumberT('Int16', 'BE');\nexport const int16 = int16be;\nexport const int16le = new NumberT('Int16', 'LE');\nexport const int24be = new NumberT('Int24', 'BE');\nexport const int24 = int24be;\nexport const int24le = new NumberT('Int24', 'LE');\nexport const int32be = new NumberT('Int32', 'BE');\nexport const int32 = int32be;\nexport const int32le = new NumberT('Int32', 'LE');\nexport const floatbe = new NumberT('Float', 'BE');\nexport const float = floatbe;\nexport const floatle = new NumberT('Float', 'LE');\nexport const doublebe = new NumberT('Double', 'BE');\nexport const double = doublebe;\nexport const doublele = new NumberT('Double', 'LE');\n\nexport class Fixed extends NumberT {\n constructor(size, endian, fracBits = size >> 1) {\n super(`Int${size}`, endian);\n this._point = 1 << fracBits;\n }\n\n decode(stream) {\n return super.decode(stream) / this._point;\n }\n\n encode(stream, val) {\n return super.encode(stream, (val * this._point) | 0);\n }\n}\n\nexport const fixed16be = new Fixed(16, 'BE');\nexport const fixed16 = fixed16be;\nexport const fixed16le = new Fixed(16, 'LE');\nexport const fixed32be = new Fixed(32, 'BE');\nexport const fixed32 = fixed32be;\nexport const fixed32le = new Fixed(32, 'LE');\n","import {Number as NumberT} from './Number.js';\n\nexport function resolveLength(length, stream, parent) {\n let res;\n if (typeof length === 'number') {\n res = length;\n\n } else if (typeof length === 'function') {\n res = length.call(parent, parent);\n\n } else if (parent && (typeof length === 'string')) {\n res = parent[length];\n\n } else if (stream && length instanceof NumberT) {\n res = length.decode(stream);\n }\n\n if (isNaN(res)) {\n throw new Error('Not a fixed size');\n }\n\n return res;\n};\n\nexport class PropertyDescriptor {\n constructor(opts = {}) {\n this.enumerable = true;\n this.configurable = true;\n\n for (let key in opts) {\n const val = opts[key];\n this[key] = val;\n }\n }\n}\n","import {Array as ArrayT} from './Array.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nexport class LazyArray extends ArrayT {\n decode(stream, parent) {\n const { pos } = stream;\n const length = utils.resolveLength(this.length, stream, parent);\n\n if (this.length instanceof NumberT) {\n parent = {\n parent,\n _startOffset: pos,\n _currentOffset: 0,\n _length: length\n };\n }\n\n const res = new LazyArrayValue(this.type, length, stream, parent);\n\n stream.pos += length * this.type.size(null, parent);\n return res;\n }\n\n size(val, ctx) {\n if (val instanceof LazyArrayValue) {\n val = val.toArray();\n }\n\n return super.size(val, ctx);\n }\n\n encode(stream, val, ctx) {\n if (val instanceof LazyArrayValue) {\n val = val.toArray();\n }\n\n return super.encode(stream, val, ctx);\n }\n}\n\nclass LazyArrayValue {\n constructor(type, length, stream, ctx) {\n this.type = type;\n this.length = length;\n this.stream = stream;\n this.ctx = ctx;\n this.base = this.stream.pos;\n this.items = [];\n }\n\n get(index) {\n if ((index < 0) || (index >= this.length)) {\n return undefined;\n }\n\n if (this.items[index] == null) {\n const { pos } = this.stream;\n this.stream.pos = this.base + (this.type.size(null, this.ctx) * index);\n this.items[index] = this.type.decode(this.stream, this.ctx);\n this.stream.pos = pos;\n }\n\n return this.items[index];\n }\n\n toArray() {\n const result = [];\n for (let i = 0, end = this.length; i < end; i++) {\n result.push(this.get(i));\n }\n return result;\n }\n}\n","import {Base} from './Base.js';\n\nexport class Bitfield extends Base {\n constructor(type, flags = []) {\n super();\n this.type = type;\n this.flags = flags;\n }\n\n decode(stream) {\n const val = this.type.decode(stream);\n\n const res = {};\n for (let i = 0; i < this.flags.length; i++) {\n const flag = this.flags[i];\n if (flag != null) {\n res[flag] = !!(val & (1 << i));\n }\n }\n\n return res;\n }\n\n size() {\n return this.type.size();\n }\n\n encode(stream, keys) {\n let val = 0;\n for (let i = 0; i < this.flags.length; i++) {\n const flag = this.flags[i];\n if (flag != null) {\n if (keys[flag]) { val |= (1 << i); }\n }\n }\n\n return this.type.encode(stream, val);\n }\n}\n","import {Base} from './Base.js';\n\nexport class BooleanT extends Base {\n constructor(type) {\n super();\n this.type = type;\n }\n\n decode(stream, parent) {\n return !!this.type.decode(stream, parent);\n }\n\n size(val, parent) {\n return this.type.size(val, parent);\n }\n\n encode(stream, val, parent) {\n return this.type.encode(stream, +val, parent);\n }\n}\n\nexport {BooleanT as Boolean};\n","import {Base} from './Base.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nexport class BufferT extends Base {\n constructor(length) {\n super();\n this.length = length;\n }\n \n decode(stream, parent) {\n const length = utils.resolveLength(this.length, stream, parent);\n return stream.readBuffer(length);\n }\n\n size(val, parent) {\n if (!val) {\n return utils.resolveLength(this.length, null, parent);\n }\n\n let len = val.length;\n if (this.length instanceof NumberT) {\n len += this.length.size();\n }\n\n return len;\n }\n\n encode(stream, buf, parent) {\n if (this.length instanceof NumberT) {\n this.length.encode(stream, buf.length);\n }\n\n return stream.writeBuffer(buf);\n }\n}\n\nexport {BufferT as Buffer};\n","import {Base} from './Base.js';\n\nexport class Enum extends Base {\n constructor(type, options = []) {\n super();\n this.type = type;\n this.options = options;\n }\n \n decode(stream) {\n const index = this.type.decode(stream);\n return this.options[index] || index;\n }\n\n size() {\n return this.type.size();\n }\n\n encode(stream, val) {\n const index = this.options.indexOf(val);\n if (index === -1) {\n throw new Error(`Unknown option in enum: ${val}`);\n }\n\n return this.type.encode(stream, index);\n }\n}\n","import {Base} from './Base.js';\n\nexport class Optional extends Base {\n constructor(type, condition = true) {\n super();\n this.type = type;\n this.condition = condition;\n }\n\n decode(stream, parent) {\n let { condition } = this;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n\n if (condition) {\n return this.type.decode(stream, parent);\n }\n }\n\n size(val, parent) {\n let { condition } = this;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n\n if (condition) {\n return this.type.size(val, parent);\n } else {\n return 0;\n }\n }\n\n encode(stream, val, parent) {\n let { condition } = this;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n\n if (condition) {\n return this.type.encode(stream, val, parent);\n }\n }\n}\n","import {Base} from './Base.js';\nimport * as utils from './utils.js';\n\nexport class Reserved extends Base {\n constructor(type, count = 1) {\n super();\n this.type = type;\n this.count = count;\n }\n decode(stream, parent) {\n stream.pos += this.size(null, parent);\n return undefined;\n }\n\n size(data, parent) {\n const count = utils.resolveLength(this.count, null, parent);\n return this.type.size() * count;\n }\n\n encode(stream, val, parent) {\n return stream.fill(0, this.size(val, parent));\n }\n}\n","import {Base} from './Base.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nclass StringT extends Base {\n constructor(length, encoding = 'ascii') {\n super();\n this.length = length;\n this.encoding = encoding;\n }\n\n decode(stream, parent) {\n let length, pos;\n\n if (this.length != null) {\n length = utils.resolveLength(this.length, stream, parent);\n } else {\n let buffer;\n ({buffer, length, pos} = stream);\n\n while ((pos < length) && (buffer[pos] !== 0x00)) {\n ++pos;\n }\n\n length = pos - stream.pos;\n }\n\n let { encoding } = this;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent, parent) || 'ascii';\n }\n\n const string = stream.readString(length, encoding);\n\n if ((this.length == null) && (stream.pos < stream.length)) {\n stream.pos++;\n }\n\n return string;\n }\n\n size(val, parent) {\n // Use the defined value if no value was given\n if (!val) {\n return utils.resolveLength(this.length, null, parent);\n }\n\n let { encoding } = this;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\n }\n\n if (encoding === 'utf16be') {\n encoding = 'utf16le';\n }\n\n let size = byteLength(val, encoding);\n if (this.length instanceof NumberT) {\n size += this.length.size();\n }\n\n if ((this.length == null)) {\n size++;\n }\n\n return size;\n }\n\n encode(stream, val, parent) {\n let { encoding } = this;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\n }\n\n if (this.length instanceof NumberT) {\n this.length.encode(stream, byteLength(val, encoding));\n }\n\n stream.writeString(val, encoding);\n\n if ((this.length == null)) {\n return stream.writeUInt8(0x00);\n }\n }\n}\n\nfunction byteLength(string, encoding) {\n switch (encoding) {\n case 'ascii':\n return string.length;\n case 'utf8':\n let len = 0;\n for (let i = 0; i < string.length; i++) {\n let c = string.charCodeAt(i);\n\n if (c >= 0xd800 && c <= 0xdbff && i < string.length - 1) {\n let c2 = string.charCodeAt(++i);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = ((c & 0x3ff) << 10) + (c2 & 0x3ff) + 0x10000;\n } else {\n // unmatched surrogate.\n i--;\n }\n }\n\n if ((c & 0xffffff80) === 0) {\n len++;\n } else if ((c & 0xfffff800) === 0) {\n len += 2;\n } else if ((c & 0xffff0000) === 0) {\n len += 3;\n } else if ((c & 0xffe00000) === 0) {\n len += 4;\n }\n }\n return len;\n case 'utf16le':\n case 'utf16-le':\n case 'utf16be':\n case 'utf16-be':\n case 'ucs2':\n return string.length * 2;\n default:\n throw new Error('Unknown encoding ' + encoding);\n }\n}\n\nexport {StringT as String};\n","import {Base} from './Base.js';\nimport * as utils from './utils.js';\n\nexport class Struct extends Base {\n constructor(fields = {}) {\n super();\n this.fields = fields;\n }\n\n decode(stream, parent, length = 0) {\n const res = this._setup(stream, parent, length);\n this._parseFields(stream, res, this.fields);\n\n if (this.process != null) {\n this.process.call(res, stream);\n }\n return res;\n }\n\n _setup(stream, parent, length) {\n const res = {};\n\n // define hidden properties\n Object.defineProperties(res, {\n parent: { value: parent },\n _startOffset: { value: stream.pos },\n _currentOffset: { value: 0, writable: true },\n _length: { value: length }\n });\n\n return res;\n }\n\n _parseFields(stream, res, fields) {\n for (let key in fields) {\n var val;\n const type = fields[key];\n if (typeof type === 'function') {\n val = type.call(res, res);\n } else {\n val = type.decode(stream, res);\n }\n\n if (val !== undefined) {\n if (val instanceof utils.PropertyDescriptor) {\n Object.defineProperty(res, key, val);\n } else {\n res[key] = val;\n }\n }\n\n res._currentOffset = stream.pos - res._startOffset;\n }\n\n }\n\n size(val, parent, includePointers = true) {\n if (val == null) { val = {}; }\n const ctx = {\n parent,\n val,\n pointerSize: 0\n };\n\n if (this.preEncode != null) {\n this.preEncode.call(val);\n }\n\n let size = 0;\n for (let key in this.fields) {\n const type = this.fields[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n\n if (includePointers) {\n size += ctx.pointerSize;\n }\n\n return size;\n }\n\n encode(stream, val, parent) {\n let type;\n if (this.preEncode != null) {\n this.preEncode.call(val, stream);\n }\n\n const ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent,\n val,\n pointerSize: 0\n };\n\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\n\n for (let key in this.fields) {\n type = this.fields[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n\n let i = 0;\n while (i < ctx.pointers.length) {\n const ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n }\n}\n","import {Struct} from './Struct.js';\n\nconst getPath = (object, pathArray) => {\n return pathArray.reduce((prevObj, key) => prevObj && prevObj[key], object);\n};\n\nexport class VersionedStruct extends Struct {\n constructor(type, versions = {}) {\n super();\n this.type = type;\n this.versions = versions;\n if (typeof type === 'string') {\n this.versionPath = type.split('.');\n }\n }\n\n decode(stream, parent, length = 0) {\n const res = this._setup(stream, parent, length);\n\n if (typeof this.type === 'string') {\n res.version = getPath(parent, this.versionPath);\n } else {\n res.version = this.type.decode(stream);\n }\n\n if (this.versions.header) {\n this._parseFields(stream, res, this.versions.header);\n }\n\n const fields = this.versions[res.version];\n if ((fields == null)) {\n throw new Error(`Unknown version ${res.version}`);\n }\n\n if (fields instanceof VersionedStruct) {\n return fields.decode(stream, parent);\n }\n\n this._parseFields(stream, res, fields);\n\n if (this.process != null) {\n this.process.call(res, stream);\n }\n return res;\n }\n\n size(val, parent, includePointers = true) {\n let key, type;\n if (!val) {\n throw new Error('Not a fixed size');\n }\n\n if (this.preEncode != null) {\n this.preEncode.call(val);\n }\n\n const ctx = {\n parent,\n val,\n pointerSize: 0\n };\n\n let size = 0;\n if (typeof this.type !== 'string') {\n size += this.type.size(val.version, ctx);\n }\n\n if (this.versions.header) {\n for (key in this.versions.header) {\n type = this.versions.header[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n }\n\n const fields = this.versions[val.version];\n if ((fields == null)) {\n throw new Error(`Unknown version ${val.version}`);\n }\n\n for (key in fields) {\n type = fields[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n\n if (includePointers) {\n size += ctx.pointerSize;\n }\n\n return size;\n }\n\n encode(stream, val, parent) {\n let key, type;\n if (this.preEncode != null) {\n this.preEncode.call(val, stream);\n }\n\n const ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent,\n val,\n pointerSize: 0\n };\n\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\n\n if (typeof this.type !== 'string') {\n this.type.encode(stream, val.version);\n }\n\n if (this.versions.header) {\n for (key in this.versions.header) {\n type = this.versions.header[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n }\n\n const fields = this.versions[val.version];\n for (key in fields) {\n type = fields[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n\n let i = 0;\n while (i < ctx.pointers.length) {\n const ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n }\n}\n","import * as utils from './utils.js';\nimport {Base} from './Base.js';\n\nexport class Pointer extends Base {\n constructor(offsetType, type, options = {}) {\n super();\n this.offsetType = offsetType;\n this.type = type;\n this.options = options;\n if (this.type === 'void') { this.type = null; }\n if (this.options.type == null) { this.options.type = 'local'; }\n if (this.options.allowNull == null) { this.options.allowNull = true; }\n if (this.options.nullValue == null) { this.options.nullValue = 0; }\n if (this.options.lazy == null) { this.options.lazy = false; }\n if (this.options.relativeTo) {\n if (typeof this.options.relativeTo !== 'function') {\n throw new Error('relativeTo option must be a function');\n }\n this.relativeToGetter = options.relativeTo;\n }\n }\n\n decode(stream, ctx) {\n const offset = this.offsetType.decode(stream, ctx);\n\n // handle NULL pointers\n if ((offset === this.options.nullValue) && this.options.allowNull) {\n return null;\n }\n\n let relative;\n switch (this.options.type) {\n case 'local': relative = ctx._startOffset; break;\n case 'immediate': relative = stream.pos - this.offsetType.size(); break;\n case 'parent': relative = ctx.parent._startOffset; break;\n default:\n var c = ctx;\n while (c.parent) {\n c = c.parent;\n }\n\n relative = c._startOffset || 0;\n }\n\n if (this.options.relativeTo) {\n relative += this.relativeToGetter(ctx);\n }\n\n const ptr = offset + relative;\n\n if (this.type != null) {\n let val = null;\n const decodeValue = () => {\n if (val != null) { return val; }\n\n const { pos } = stream;\n stream.pos = ptr;\n val = this.type.decode(stream, ctx);\n stream.pos = pos;\n return val;\n };\n\n // If this is a lazy pointer, define a getter to decode only when needed.\n // This obviously only works when the pointer is contained by a Struct.\n if (this.options.lazy) {\n return new utils.PropertyDescriptor({\n get: decodeValue});\n }\n\n return decodeValue();\n } else {\n return ptr;\n }\n }\n\n size(val, ctx) {\n const parent = ctx;\n switch (this.options.type) {\n case 'local': case 'immediate':\n break;\n case 'parent':\n ctx = ctx.parent;\n break;\n default: // global\n while (ctx.parent) {\n ctx = ctx.parent;\n }\n }\n\n let { type } = this;\n if (type == null) {\n if (!(val instanceof VoidPointer)) {\n throw new Error(\"Must be a VoidPointer\");\n }\n\n ({ type } = val);\n val = val.value;\n }\n\n if (val && ctx) {\n // Must be written as two separate lines rather than += in case `type.size` mutates ctx.pointerSize.\n let size = type.size(val, parent);\n ctx.pointerSize += size;\n }\n\n return this.offsetType.size();\n }\n\n encode(stream, val, ctx) {\n let relative;\n const parent = ctx;\n if ((val == null)) {\n this.offsetType.encode(stream, this.options.nullValue);\n return;\n }\n\n switch (this.options.type) {\n case 'local':\n relative = ctx.startOffset;\n break;\n case 'immediate':\n relative = stream.pos + this.offsetType.size(val, parent);\n break;\n case 'parent':\n ctx = ctx.parent;\n relative = ctx.startOffset;\n break;\n default: // global\n relative = 0;\n while (ctx.parent) {\n ctx = ctx.parent;\n }\n }\n\n if (this.options.relativeTo) {\n relative += this.relativeToGetter(parent.val);\n }\n\n this.offsetType.encode(stream, ctx.pointerOffset - relative);\n\n let { type } = this;\n if (type == null) {\n if (!(val instanceof VoidPointer)) {\n throw new Error(\"Must be a VoidPointer\");\n }\n\n ({ type } = val);\n val = val.value;\n }\n\n ctx.pointers.push({\n type,\n val,\n parent\n });\n\n return ctx.pointerOffset += type.size(val, parent);\n }\n}\n\n// A pointer whose type is determined at decode time\nexport class VoidPointer {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n}\n"],"names":[],"version":3,"file":"main.cjs.map"}