New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

structly

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

structly - npm Package Compare versions

Comparing version
0.3.1
to
0.3.2
+8
-2
CHANGELOG.md
# Changelog
## 0.3.2
* Remove usage of `Reflect`
* Fix incorrect TypeScript declaration of `createView`
* Export all TypeScript interfaces
## 0.3.1

@@ -12,3 +18,3 @@

* Typed views! With `createView`, you can now create objects from your type schemas that automagically update their buffer storage on modification!
* Removed `startOffset` in converter functions. Use a typed array instead.
* Removed `startOffset` in converter functions. Use an ArrayBufferView (typed array) instead.
* New `createDecoder` and `createEncoder` functions

@@ -18,3 +24,3 @@

* Code generation! The code for reading and writing to buffers is now created on demand from the type schemas. This means that all type handlers are inlined, bypassing the need for runtime lookup!
* Code generation! The code for reading and writing to buffers is now created on the fly from the type schemas. This means that all type handlers are inlined, bypassing the need for runtime lookup!
* All built-in type schemas are made immutable using `Object.freeze`

@@ -21,0 +27,0 @@ * `Uint64` and `Bool` types have been removed

+3
-3

@@ -5,3 +5,3 @@ (function (global, factory) {

(factory((global.Structly = global.Structly || {})));
}(this, function (exports) { 'use strict';
}(this, (function (exports) { 'use strict';

@@ -603,3 +603,3 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {

var cache = void 0;
if (Reflect.has(target, key)) {
if (key in target) {
cache = target[key];

@@ -1051,3 +1051,3 @@ } else {

}));
})));
//# sourceMappingURL=structly.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":null,"sources":["../src/utils.js","../src/types.js","../src/visitors/reader.js","../src/visitors/writer.js","../src/visitors/view.js","../src/converters.js"],"sourcesContent":["/**\n * Whether the running system is little endian (true = LE, false = BE)\n */\nexport const systemLittleEndian = (typeof os === 'object')\n /* eslint-disable no-undef */\n ? os.endianness() === 'LE'\n /* eslint-enable no-undef */\n : new Uint32Array(new Uint8Array([0x11, 0x22, 0x33, 0x44]).buffer)[0] === 0x44332211;\n\n/**\n * Gets the closest multiple of byteAlignment from byteOffset (base-2 only)\n */\nexport function align(byteOffset, byteAlignment) {\n /* eslint-disable no-mixed-operators */\n return (byteOffset + byteAlignment - 1) & ~(byteAlignment - 1);\n}\n\n/**\n * The byte alignment of the given type\n */\nexport function alignof({ byteAlignment = 0 } = {}) {\n return byteAlignment;\n}\n\n/**\n * The byte size of the type, excluding alignment padding\n */\nexport function sizeof({ byteLength = 0 } = {}) {\n return byteLength;\n}\n\n/**\n * The byte size of the type, including alignment padding\n */\nexport function strideof(type, byteAlignment = alignof(type)) {\n return align(sizeof(type), byteAlignment);\n}\n\nexport function createMask(bits) {\n return (bits <= 0) ? 0 : 0xFFFFFFFF >>> (32 - bits);\n}\n\nexport function createVariable(name, stackDepth = 0) {\n return `${name}${stackDepth}`;\n}\n\n/* eslint-disable no-param-reassign, prefer-rest-params, no-restricted-syntax */\nexport const assign = Object.assign ||/* istanbul ignore next */ function assign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n target = Object(target);\n for (let index = 1, len = arguments.length; index < len; index++) {\n const source = Object(arguments[index]);\n if (source != null) {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n};\n\nexport function getDataView(data) {\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n } else if (ArrayBuffer.isView(data)) {\n const { buffer, byteOffset, byteLength } = data;\n return new DataView(buffer, byteOffset, byteLength);\n }\n throw new TypeError('Invalid input data');\n}\n\n// Memoize if WeakMap if supported, otherwise passthrough\nexport const maybeMemoize = (() => {\n if (typeof WeakMap === 'function') {\n return function memoize(fn) {\n const cache = new WeakMap();\n return function memoized(key) {\n if (!cache.has(key)) {\n cache.set(key, fn(key));\n }\n return cache.get(key);\n };\n };\n }\n /* istanbul ignore next */\n return function passthrough(fn) {\n return fn;\n };\n})();\n","/* eslint-disable no-param-reassign */\nimport { systemLittleEndian, align, assign, alignof } from './utils';\n\nfunction createNumberType(kind, size, littleEndian = systemLittleEndian) {\n return Object.freeze({\n tag: 'Number',\n kind,\n byteLength: size,\n byteAlignment: size,\n littleEndian,\n });\n}\n\nexport const boolean = Object.freeze({ tag: 'Boolean', byteLength: 1, byteAlignment: 1 });\nexport const bool = boolean;\n\nexport const int8 = createNumberType('Int8', 1);\nexport const uint8 = createNumberType('Uint8', 1);\n\nexport const int16 = createNumberType('Int16', 2);\nexport const int16le = createNumberType('Int16', 2, true);\nexport const int16be = createNumberType('Int16', 2, false);\n\nexport const uint16 = createNumberType('Uint16', 2);\nexport const uint16le = createNumberType('Uint16', 2, true);\nexport const uint16be = createNumberType('Uint16', 2, false);\n\nexport const int32 = createNumberType('Int32', 4);\nexport const int32le = createNumberType('Int32', 4, true);\nexport const int32be = createNumberType('Int32', 4, false);\n\nexport const uint32 = createNumberType('Uint32', 4);\nexport const uint32le = createNumberType('Uint32', 4, true);\nexport const uint32be = createNumberType('Uint32', 4, false);\n\nexport const float32 = createNumberType('Float32', 4);\nexport const float32le = createNumberType('Float32', 4, true);\nexport const float32be = createNumberType('Float32', 4, false);\n\nexport const float64 = createNumberType('Float64', 8);\nexport const float64le = createNumberType('Float64', 8, true);\nexport const float64be = createNumberType('Float64', 8, false);\n\n/**\n * Create a string type.\n */\nexport function string(maxLength, encoding = 'utf8') {\n if (maxLength === undefined) {\n throw new TypeError('You must specify a max length for the string!');\n }\n\n return Object.freeze({\n tag: 'String',\n byteLength: maxLength,\n byteAlignment: 1,\n encoding,\n });\n}\n\n/**\n * Create an array type.\n */\nexport function array(element, length, { pack } = {}) {\n if (element === undefined) {\n throw new TypeError('You must specify the array element type!');\n }\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the array!');\n }\n\n return Object.freeze({\n tag: 'Array',\n byteLength: length * element.byteLength,\n byteAlignment: pack || element.byteAlignment,\n length,\n element,\n });\n}\n\nfunction offsetHelper(tag, elements, inject, pack = 0) {\n let byteOffset = 0;\n let maxByteAlignment = 0;\n\n const members = Object.freeze(elements.map(element => {\n const { byteLength, byteAlignment } = element;\n\n byteOffset = align(byteOffset, pack || byteAlignment);\n\n const result = { byteOffset, element };\n\n if (inject !== undefined) {\n assign(result, inject(element));\n }\n\n byteOffset += byteLength;\n maxByteAlignment = Math.max(maxByteAlignment, byteAlignment);\n\n return Object.freeze(result);\n }));\n\n return Object.freeze({\n tag,\n byteLength: byteOffset,\n byteAlignment: pack || maxByteAlignment,\n members,\n });\n}\n\n/**\n * Create a tuple type.\n */\nexport function tuple(...elements) {\n return offsetHelper('Tuple', elements);\n}\n\nfunction injectName({ name }) {\n return { name };\n}\n\n/**\n * Create a struct type.\n */\nexport function struct(members, { reorder = false, pack = 0 } = {}) {\n if (members === undefined) {\n throw new TypeError('You must specify the struct members!');\n }\n\n pack = Number(pack);\n const memberNames = Object.keys(members);\n\n if (reorder) {\n memberNames.sort((a, b) => alignof(members[a]) - alignof(members[b]));\n }\n\n const sortedMembers = memberNames.map(name => assign({ name }, members[name]));\n\n return offsetHelper('Struct', sortedMembers, injectName, pack);\n}\n\n/**\n * Create a bitfield type.\n */\nexport function bitfield(members, element = uint32) {\n if (members === undefined) {\n throw new TypeError('You must specify the bitfield members!');\n }\n\n const memberNames = Object.keys(members);\n const totalBits = memberNames.reduce((sum, name) => sum + members[name], 0);\n\n if (totalBits > 8 * element.byteLength) {\n throw new RangeError('Sum of bitfield widths is too large for storage element');\n }\n\n return Object.freeze({\n tag: 'Bitfield',\n byteLength: element.byteLength,\n byteAlignment: element.byteAlignment,\n members: Object.freeze(memberNames.map(name => Object.freeze({ name, bits: members[name] }))),\n element,\n });\n}\n\nexport function buffer(length) {\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the buffer!');\n }\n\n return Object.freeze({\n tag: 'Buffer',\n byteLength: length,\n byteAlignment: 1,\n });\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const readerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = dataView.get${kind}(${byteOffsetVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = Boolean(dataView.getUint8(${byteOffsetVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const arrayVar = createVariable('array', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n var ${arrayVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n var ${indexVar} = ${arrayVar}.indexOf(0);\n if (${indexVar} >= 0) {\n ${arrayVar} = ${arrayVar}.subarray(0, ${indexVar});\n }\n ${(() => {\n if (typeof Buffer === 'function') {\n return `${resultVar} = new Buffer(${arrayVar}).toString(${JSON.stringify(encoding)});`;\n }\n\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return `${resultVar} = new TextDecoder(${JSON.stringify(encoding)}).decode(${arrayVar});`;\n }\n\n /* istanbul ignore next */\n return `${resultVar} = String.fromCharCode.apply(String, ${arrayVar});`;\n })()}\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${length});\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerResultVar} = ${resultVar}[${indexVar}];\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${indexVar}] = ${innerResultVar};\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${members.length});\n }\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerResultVar} = ${resultVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${i}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyStruct = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyStruct};\n }\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerResultVar} = ${resultVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyBitfield = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyBitfield};\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerResultVar};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${members.map(({ name, bits }) => `\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar} & ${createMask(bits)};\n ${innerResultVar} >>>= ${bits};\n `).join('\\n')}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${resultVar} === void 0 ||\n ${resultVar}.buffer !== dataView.buffer ||\n ${resultVar}.byteLength !== ${byteOffsetVar} ||\n ${resultVar}.byteOffset !== ${byteLength}) {\n ${resultVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n }\n `;\n },\n});\n\nexport function createReader(type) {\n const resultVar = createVariable('result');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, resultVar, `\n \"use strict\";\n ${readerVisitor[type.tag](type, 0)}\n return ${resultVar};\n `);\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const writerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.set${kind}(${byteOffsetVar}, ${dataVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.setUint8(${byteOffsetVar}, Number(${dataVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const lengthVar = createVariable('length', stackDepth);\n\n if (typeof Buffer === 'function') {\n return `\n new Buffer(${dataVar}, ${JSON.stringify(encoding)}).copy(new Buffer(dataView.buffer, dataView.byteOffset, dataView.byteLength), ${byteOffsetVar});\n `;\n }\n\n /* istanbul ignore next */\n if (typeof TextEncoder === 'function') {\n return `\n new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength).set(new TextDecoder(${JSON.stringify(encoding)}).encode(${dataVar}));\n `;\n }\n\n /* istanbul ignore next */\n return `\n ${dataVar} = new String(${dataVar});\n for (var ${indexVar} = 0, ${lengthVar} = ${dataVar}.length; ${indexVar} < ${lengthVar}; ++${indexVar}) {\n dataView.setUint8(${byteOffsetVar} + ${indexVar}, ${dataVar}.charCodeAt(${indexVar}));\n }\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerDataVar} = ${dataVar}[${indexVar}];\n ${writerVisitor[element.tag](element, innerStackDepth)}\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerDataVar} = ${dataVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerDataVar} = ${dataVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerDataVar} = 0;\n ${members.slice().reverse().map(({ name, bits }) => `\n ${innerDataVar} <<= ${bits};\n ${innerDataVar} |= ${dataVar}[${JSON.stringify(name)}] & ${createMask(bits)};\n `).join('\\n')}\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${dataVar}.buffer !== dataView.buffer ||\n ${dataVar}.byteLength !== ${byteOffsetVar} ||\n ${dataVar}.byteOffset !== ${byteLength}) {\n new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength}).set(${dataVar});\n }\n `;\n },\n});\n\nexport function createWriter(type) {\n const dataVar = createVariable('data');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, dataVar, `\n \"use strict\";\n ${writerVisitor[type.tag](type, 0)}\n `);\n}\n","import { createReader } from './reader';\nimport { createWriter } from './writer';\nimport { sizeof, strideof, getDataView, createMask } from '../utils';\n\nconst SUPPORTS_PROXY = typeof Proxy === 'function';\n\nfunction createArrayProxy(length, { get, set, useProxy = SUPPORTS_PROXY } = {}) {\n const array = new Array(length);\n\n // Lazily compute properties if proxy is available\n if (useProxy) {\n return new Proxy(array, {\n has(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n return (index >= 0) && (index < length);\n }\n return key in target;\n },\n\n get(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n if ((index >= 0) && (index < length)) {\n let cache;\n if (Reflect.has(target, key)) {\n cache = target[key];\n } else {\n cache = get(index);\n if (typeof cache === 'object') {\n /* eslint-disable no-param-reassign */\n target[key] = cache;\n /* eslint-enable */\n }\n }\n return cache;\n }\n }\n return target[key];\n },\n\n set(target, key, value) {\n // Check that key is either a number or a numeric string\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n // Check bounds\n if ((index >= 0) && (index < length)) {\n return set(index, value) || true;\n }\n }\n // Don't allow any other properties to be changed\n return false;\n },\n });\n }\n\n // Eagerly compute properties using Object.defineProperty\n for (let i = 0; i < length; ++i) {\n let cache;\n Object.defineProperty(array, i, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(i);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, i),\n });\n }\n\n return Object.freeze(array);\n}\n\nfunction createObjectProxy(keys, { get, set } = {}) {\n const object = {};\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n let cache;\n Object.defineProperty(object, key, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(key);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, key),\n });\n }\n\n return Object.freeze(object);\n}\n\nexport const viewVisitor = Object.freeze({\n Number({ littleEndian, kind }, dataView, byteOffset) {\n return dataView[`get${kind}`](byteOffset, littleEndian);\n },\n\n Boolean(_, dataView, byteOffset) {\n return Boolean(dataView.getUint8(byteOffset));\n },\n\n String({ byteLength, encoding }, dataView, byteOffset) {\n let array = new Uint8Array(dataView.buffer, byteOffset, byteLength);\n\n const index = array.indexOf(0);\n if (index >= 0) {\n array = array.subarray(0, index);\n }\n\n if (typeof Buffer === 'function') {\n return new Buffer(array).toString(encoding);\n }\n\n /* eslint-disable no-undef */\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return new TextDecoder(encoding).decode(array);\n }\n /* eslint-enable no-undef */\n\n /* eslint-disable prefer-spread */\n /* istanbul ignore next */\n return String.fromCharCode.apply(String, array);\n /* eslint-enable prefer-spread */\n },\n\n Array({ length, element }, dataView, byteOffset, useProxy = length > 20) {\n const elementProxyHandler = viewVisitor[element.tag];\n const elementWriter = createWriter(element);\n const byteStride = strideof(element);\n\n return createArrayProxy(length, {\n useProxy,\n get(i) {\n const elementByteOffset = byteOffset + (byteStride * i);\n return elementProxyHandler(element, dataView, elementByteOffset, useProxy);\n },\n set(i, value) {\n const elementByteOffset = byteOffset + (byteStride * i);\n elementWriter(dataView, elementByteOffset, value);\n },\n });\n },\n\n Tuple({ members }, dataView, byteOffset, useProxy) {\n const handlers = members.map(member => ({\n element: member.element,\n proxyHandler: viewVisitor[member.element.tag],\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n }));\n\n return createArrayProxy(members.length, {\n useProxy: false,\n get(i) {\n const { element, proxyHandler, totalByteOffset } = handlers[i];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(i, value) {\n const { writer, totalByteOffset } = handlers[i];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Struct({ members }, dataView, byteOffset, useProxy) {\n const names = members.map(member => member.name);\n const membersByName = members.reduce((obj, member) => {\n /* eslint-disable no-param-reassign */\n obj[member.name] = {\n element: member.element,\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n proxyHandler: viewVisitor[member.element.tag],\n };\n /* eslint-enable */\n return obj;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { element, proxyHandler, totalByteOffset } = membersByName[name];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(name, value) {\n const { writer, totalByteOffset } = membersByName[name];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Bitfield({ element, members }, dataView, byteOffset) {\n const reader = createReader(element);\n const writer = createWriter(element);\n\n const names = members.map(member => member.name);\n\n let currentBitOffset = 0;\n const infoByName = members.reduce((info, { name, bits }) => {\n const bitOffset = currentBitOffset;\n const mask = createMask(bits);\n const clearMask = ~(mask << bitOffset);\n /* eslint-disable no-param-reassign */\n info[name] = { bitOffset, mask, clearMask };\n /* eslint-enable */\n currentBitOffset += bits;\n return info;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { bitOffset, mask } = infoByName[name];\n const elementValue = reader(dataView, byteOffset);\n return (elementValue >>> bitOffset) & mask;\n },\n set(name, value) {\n const { bitOffset, clearMask, mask } = infoByName[name];\n let elementValue = reader(dataView, byteOffset);\n elementValue &= clearMask;\n elementValue |= (value & mask) << bitOffset;\n writer(dataView, byteOffset, elementValue);\n },\n });\n },\n\n Buffer({ byteLength }, dataView, byteOffset) {\n return new Uint8Array(dataView.buffer, byteOffset, byteLength);\n },\n});\n\nexport function createView(type, buffer = new ArrayBuffer(sizeof(type)), useProxy) {\n const dataView = getDataView(buffer);\n\n const viewHandler = viewVisitor[type.tag];\n const writer = createWriter(type);\n\n const view = {\n buffer: dataView.buffer,\n byteOffset: dataView.byteOffset,\n byteLength: dataView.byteLength,\n };\n\n let cache;\n Object.defineProperty(view, 'value', {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = viewHandler(type, dataView, 0, useProxy);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set(value) {\n writer(dataView, 0, value);\n },\n });\n\n return Object.seal(view);\n}\n","/* eslint-disable no-shadow */\nimport { getDataView, sizeof, maybeMemoize } from './utils';\nimport { createReader } from './visitors/reader';\nimport { createWriter } from './visitors/writer';\n\nexport { createView } from './visitors/view';\n\n// Since type schemas are immutable, we should always create the same code for the same object\nconst createReaderMemoized = maybeMemoize(createReader);\nconst createWriterMemoized = maybeMemoize(createWriter);\n\n/**\n * Create a decode function for converting a buffer into its JavaScript representation\n */\nexport function createDecoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const reader = createReaderMemoized(type);\n return function decode(buffer, data) {\n if (buffer === undefined) {\n throw new TypeError('You must specify the buffer the decode');\n }\n const dataView = getDataView(buffer);\n return reader(dataView, 0, data);\n };\n}\n\n/**\n * Create an encode function for serializing a JavaScript object or value into a buffer\n */\nexport function createEncoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const writer = createWriterMemoized(type);\n return function encode(data, buffer = new ArrayBuffer(sizeof(type))) {\n if (data === undefined) {\n throw new TypeError('You must specify the data to encode');\n }\n const dataView = getDataView(buffer);\n if (sizeof(dataView) < sizeof(type)) {\n throw new RangeError('The provided buffer is too small to store the encoded type');\n }\n writer(dataView, 0, data);\n return buffer;\n };\n}\n\n/**\n * Create a converter object that contains both an encoder and a decoder\n */\nexport function createConverter(type) {\n /* istanbul ignore next */\n const encode = createEncoder(type);\n /* istanbul ignore next */\n const decode = createDecoder(type);\n /* istanbul ignore next */\n return { type, encode, decode };\n}\n\n/**\n * Converting a buffer into its JavaScript representation\n * @deprecated\n */\nexport function decode(type, buffer, data) {\n const decode = createDecoder(type);\n return decode(buffer, data);\n}\n\n/**\n * Serialize a JavaScript object or value into a buffer\n * @deprecated\n */\nexport function encode(type, data, buffer) {\n const encode = createEncoder(type);\n return encode(data, buffer);\n}\n"],"names":[],"mappings":"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"}
{"version":3,"file":null,"sources":["../src/utils.js","../src/types.js","../src/visitors/reader.js","../src/visitors/writer.js","../src/visitors/view.js","../src/converters.js"],"sourcesContent":["/**\n * Whether the running system is little endian (true = LE, false = BE)\n */\nexport const systemLittleEndian = (typeof os === 'object')\n /* eslint-disable no-undef */\n ? os.endianness() === 'LE'\n /* eslint-enable no-undef */\n : new Uint32Array(new Uint8Array([0x11, 0x22, 0x33, 0x44]).buffer)[0] === 0x44332211;\n\n/**\n * Gets the closest multiple of byteAlignment from byteOffset (base-2 only)\n */\nexport function align(byteOffset, byteAlignment) {\n /* eslint-disable no-mixed-operators */\n return (byteOffset + byteAlignment - 1) & ~(byteAlignment - 1);\n}\n\n/**\n * The byte alignment of the given type\n */\nexport function alignof({ byteAlignment = 0 } = {}) {\n return byteAlignment;\n}\n\n/**\n * The byte size of the type, excluding alignment padding\n */\nexport function sizeof({ byteLength = 0 } = {}) {\n return byteLength;\n}\n\n/**\n * The byte size of the type, including alignment padding\n */\nexport function strideof(type, byteAlignment = alignof(type)) {\n return align(sizeof(type), byteAlignment);\n}\n\nexport function createMask(bits) {\n return (bits <= 0) ? 0 : 0xFFFFFFFF >>> (32 - bits);\n}\n\nexport function createVariable(name, stackDepth = 0) {\n return `${name}${stackDepth}`;\n}\n\n/* eslint-disable no-param-reassign, prefer-rest-params, no-restricted-syntax */\nexport const assign = Object.assign ||/* istanbul ignore next */ function assign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n target = Object(target);\n for (let index = 1, len = arguments.length; index < len; index++) {\n const source = Object(arguments[index]);\n if (source != null) {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n};\n\nexport function getDataView(data) {\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n } else if (ArrayBuffer.isView(data)) {\n const { buffer, byteOffset, byteLength } = data;\n return new DataView(buffer, byteOffset, byteLength);\n }\n throw new TypeError('Invalid input data');\n}\n\n// Memoize if WeakMap if supported, otherwise passthrough\nexport const maybeMemoize = (() => {\n if (typeof WeakMap === 'function') {\n return function memoize(fn) {\n const cache = new WeakMap();\n return function memoized(key) {\n if (!cache.has(key)) {\n cache.set(key, fn(key));\n }\n return cache.get(key);\n };\n };\n }\n /* istanbul ignore next */\n return function passthrough(fn) {\n return fn;\n };\n})();\n","/* eslint-disable no-param-reassign */\nimport { systemLittleEndian, align, assign, alignof } from './utils';\n\nfunction createNumberType(kind, size, littleEndian = systemLittleEndian) {\n return Object.freeze({\n tag: 'Number',\n kind,\n byteLength: size,\n byteAlignment: size,\n littleEndian,\n });\n}\n\nexport const boolean = Object.freeze({ tag: 'Boolean', byteLength: 1, byteAlignment: 1 });\nexport const bool = boolean;\n\nexport const int8 = createNumberType('Int8', 1);\nexport const uint8 = createNumberType('Uint8', 1);\n\nexport const int16 = createNumberType('Int16', 2);\nexport const int16le = createNumberType('Int16', 2, true);\nexport const int16be = createNumberType('Int16', 2, false);\n\nexport const uint16 = createNumberType('Uint16', 2);\nexport const uint16le = createNumberType('Uint16', 2, true);\nexport const uint16be = createNumberType('Uint16', 2, false);\n\nexport const int32 = createNumberType('Int32', 4);\nexport const int32le = createNumberType('Int32', 4, true);\nexport const int32be = createNumberType('Int32', 4, false);\n\nexport const uint32 = createNumberType('Uint32', 4);\nexport const uint32le = createNumberType('Uint32', 4, true);\nexport const uint32be = createNumberType('Uint32', 4, false);\n\nexport const float32 = createNumberType('Float32', 4);\nexport const float32le = createNumberType('Float32', 4, true);\nexport const float32be = createNumberType('Float32', 4, false);\n\nexport const float64 = createNumberType('Float64', 8);\nexport const float64le = createNumberType('Float64', 8, true);\nexport const float64be = createNumberType('Float64', 8, false);\n\n/**\n * Create a string type.\n */\nexport function string(maxLength, encoding = 'utf8') {\n if (maxLength === undefined) {\n throw new TypeError('You must specify a max length for the string!');\n }\n\n return Object.freeze({\n tag: 'String',\n byteLength: maxLength,\n byteAlignment: 1,\n encoding,\n });\n}\n\n/**\n * Create an array type.\n */\nexport function array(element, length, { pack } = {}) {\n if (element === undefined) {\n throw new TypeError('You must specify the array element type!');\n }\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the array!');\n }\n\n return Object.freeze({\n tag: 'Array',\n byteLength: length * element.byteLength,\n byteAlignment: pack || element.byteAlignment,\n length,\n element,\n });\n}\n\nfunction offsetHelper(tag, elements, inject, pack = 0) {\n let byteOffset = 0;\n let maxByteAlignment = 0;\n\n const members = Object.freeze(elements.map(element => {\n const { byteLength, byteAlignment } = element;\n\n byteOffset = align(byteOffset, pack || byteAlignment);\n\n const result = { byteOffset, element };\n\n if (inject !== undefined) {\n assign(result, inject(element));\n }\n\n byteOffset += byteLength;\n maxByteAlignment = Math.max(maxByteAlignment, byteAlignment);\n\n return Object.freeze(result);\n }));\n\n return Object.freeze({\n tag,\n byteLength: byteOffset,\n byteAlignment: pack || maxByteAlignment,\n members,\n });\n}\n\n/**\n * Create a tuple type.\n */\nexport function tuple(...elements) {\n return offsetHelper('Tuple', elements);\n}\n\nfunction injectName({ name }) {\n return { name };\n}\n\n/**\n * Create a struct type.\n */\nexport function struct(members, { reorder = false, pack = 0 } = {}) {\n if (members === undefined) {\n throw new TypeError('You must specify the struct members!');\n }\n\n pack = Number(pack);\n const memberNames = Object.keys(members);\n\n if (reorder) {\n memberNames.sort((a, b) => alignof(members[a]) - alignof(members[b]));\n }\n\n const sortedMembers = memberNames.map(name => assign({ name }, members[name]));\n\n return offsetHelper('Struct', sortedMembers, injectName, pack);\n}\n\n/**\n * Create a bitfield type.\n */\nexport function bitfield(members, element = uint32) {\n if (members === undefined) {\n throw new TypeError('You must specify the bitfield members!');\n }\n\n const memberNames = Object.keys(members);\n const totalBits = memberNames.reduce((sum, name) => sum + members[name], 0);\n\n if (totalBits > 8 * element.byteLength) {\n throw new RangeError('Sum of bitfield widths is too large for storage element');\n }\n\n return Object.freeze({\n tag: 'Bitfield',\n byteLength: element.byteLength,\n byteAlignment: element.byteAlignment,\n members: Object.freeze(memberNames.map(name => Object.freeze({ name, bits: members[name] }))),\n element,\n });\n}\n\nexport function buffer(length) {\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the buffer!');\n }\n\n return Object.freeze({\n tag: 'Buffer',\n byteLength: length,\n byteAlignment: 1,\n });\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const readerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = dataView.get${kind}(${byteOffsetVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = Boolean(dataView.getUint8(${byteOffsetVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const arrayVar = createVariable('array', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n var ${arrayVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n var ${indexVar} = ${arrayVar}.indexOf(0);\n if (${indexVar} >= 0) {\n ${arrayVar} = ${arrayVar}.subarray(0, ${indexVar});\n }\n ${(() => {\n if (typeof Buffer === 'function') {\n return `${resultVar} = new Buffer(${arrayVar}).toString(${JSON.stringify(encoding)});`;\n }\n\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return `${resultVar} = new TextDecoder(${JSON.stringify(encoding)}).decode(${arrayVar});`;\n }\n\n /* istanbul ignore next */\n return `${resultVar} = String.fromCharCode.apply(String, ${arrayVar});`;\n })()}\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${length});\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerResultVar} = ${resultVar}[${indexVar}];\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${indexVar}] = ${innerResultVar};\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${members.length});\n }\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerResultVar} = ${resultVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${i}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyStruct = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyStruct};\n }\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerResultVar} = ${resultVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyBitfield = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyBitfield};\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerResultVar};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${members.map(({ name, bits }) => `\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar} & ${createMask(bits)};\n ${innerResultVar} >>>= ${bits};\n `).join('\\n')}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${resultVar} === void 0 ||\n ${resultVar}.buffer !== dataView.buffer ||\n ${resultVar}.byteLength !== ${byteOffsetVar} ||\n ${resultVar}.byteOffset !== ${byteLength}) {\n ${resultVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n }\n `;\n },\n});\n\nexport function createReader(type) {\n const resultVar = createVariable('result');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, resultVar, `\n \"use strict\";\n ${readerVisitor[type.tag](type, 0)}\n return ${resultVar};\n `);\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const writerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.set${kind}(${byteOffsetVar}, ${dataVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.setUint8(${byteOffsetVar}, Number(${dataVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const lengthVar = createVariable('length', stackDepth);\n\n if (typeof Buffer === 'function') {\n return `\n new Buffer(${dataVar}, ${JSON.stringify(encoding)}).copy(new Buffer(dataView.buffer, dataView.byteOffset, dataView.byteLength), ${byteOffsetVar});\n `;\n }\n\n /* istanbul ignore next */\n if (typeof TextEncoder === 'function') {\n return `\n new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength).set(new TextDecoder(${JSON.stringify(encoding)}).encode(${dataVar}));\n `;\n }\n\n /* istanbul ignore next */\n return `\n ${dataVar} = new String(${dataVar});\n for (var ${indexVar} = 0, ${lengthVar} = ${dataVar}.length; ${indexVar} < ${lengthVar}; ++${indexVar}) {\n dataView.setUint8(${byteOffsetVar} + ${indexVar}, ${dataVar}.charCodeAt(${indexVar}));\n }\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerDataVar} = ${dataVar}[${indexVar}];\n ${writerVisitor[element.tag](element, innerStackDepth)}\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerDataVar} = ${dataVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerDataVar} = ${dataVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerDataVar} = 0;\n ${members.slice().reverse().map(({ name, bits }) => `\n ${innerDataVar} <<= ${bits};\n ${innerDataVar} |= ${dataVar}[${JSON.stringify(name)}] & ${createMask(bits)};\n `).join('\\n')}\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${dataVar}.buffer !== dataView.buffer ||\n ${dataVar}.byteLength !== ${byteOffsetVar} ||\n ${dataVar}.byteOffset !== ${byteLength}) {\n new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength}).set(${dataVar});\n }\n `;\n },\n});\n\nexport function createWriter(type) {\n const dataVar = createVariable('data');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, dataVar, `\n \"use strict\";\n ${writerVisitor[type.tag](type, 0)}\n `);\n}\n","import { createReader } from './reader';\nimport { createWriter } from './writer';\nimport { sizeof, strideof, getDataView, createMask } from '../utils';\n\nconst SUPPORTS_PROXY = typeof Proxy === 'function';\n\nfunction createArrayProxy(length, { get, set, useProxy = SUPPORTS_PROXY } = {}) {\n const array = new Array(length);\n\n // Lazily compute properties if proxy is available\n if (useProxy) {\n return new Proxy(array, {\n has(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n return (index >= 0) && (index < length);\n }\n return key in target;\n },\n\n get(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n if ((index >= 0) && (index < length)) {\n let cache;\n if (key in target) {\n cache = target[key];\n } else {\n cache = get(index);\n if (typeof cache === 'object') {\n /* eslint-disable no-param-reassign */\n target[key] = cache;\n /* eslint-enable */\n }\n }\n return cache;\n }\n }\n return target[key];\n },\n\n set(target, key, value) {\n // Check that key is either a number or a numeric string\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n // Check bounds\n if ((index >= 0) && (index < length)) {\n return set(index, value) || true;\n }\n }\n // Don't allow any other properties to be changed\n return false;\n },\n });\n }\n\n // Eagerly compute properties using Object.defineProperty\n for (let i = 0; i < length; ++i) {\n let cache;\n Object.defineProperty(array, i, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(i);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, i),\n });\n }\n\n return Object.freeze(array);\n}\n\nfunction createObjectProxy(keys, { get, set } = {}) {\n const object = {};\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n let cache;\n Object.defineProperty(object, key, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(key);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, key),\n });\n }\n\n return Object.freeze(object);\n}\n\nexport const viewVisitor = Object.freeze({\n Number({ littleEndian, kind }, dataView, byteOffset) {\n return dataView[`get${kind}`](byteOffset, littleEndian);\n },\n\n Boolean(_, dataView, byteOffset) {\n return Boolean(dataView.getUint8(byteOffset));\n },\n\n String({ byteLength, encoding }, dataView, byteOffset) {\n let array = new Uint8Array(dataView.buffer, byteOffset, byteLength);\n\n const index = array.indexOf(0);\n if (index >= 0) {\n array = array.subarray(0, index);\n }\n\n if (typeof Buffer === 'function') {\n return new Buffer(array).toString(encoding);\n }\n\n /* eslint-disable no-undef */\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return new TextDecoder(encoding).decode(array);\n }\n /* eslint-enable no-undef */\n\n /* eslint-disable prefer-spread */\n /* istanbul ignore next */\n return String.fromCharCode.apply(String, array);\n /* eslint-enable prefer-spread */\n },\n\n Array({ length, element }, dataView, byteOffset, useProxy = length > 20) {\n const elementProxyHandler = viewVisitor[element.tag];\n const elementWriter = createWriter(element);\n const byteStride = strideof(element);\n\n return createArrayProxy(length, {\n useProxy,\n get(i) {\n const elementByteOffset = byteOffset + (byteStride * i);\n return elementProxyHandler(element, dataView, elementByteOffset, useProxy);\n },\n set(i, value) {\n const elementByteOffset = byteOffset + (byteStride * i);\n elementWriter(dataView, elementByteOffset, value);\n },\n });\n },\n\n Tuple({ members }, dataView, byteOffset, useProxy) {\n const handlers = members.map(member => ({\n element: member.element,\n proxyHandler: viewVisitor[member.element.tag],\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n }));\n\n return createArrayProxy(members.length, {\n useProxy: false,\n get(i) {\n const { element, proxyHandler, totalByteOffset } = handlers[i];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(i, value) {\n const { writer, totalByteOffset } = handlers[i];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Struct({ members }, dataView, byteOffset, useProxy) {\n const names = members.map(member => member.name);\n const membersByName = members.reduce((obj, member) => {\n /* eslint-disable no-param-reassign */\n obj[member.name] = {\n element: member.element,\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n proxyHandler: viewVisitor[member.element.tag],\n };\n /* eslint-enable */\n return obj;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { element, proxyHandler, totalByteOffset } = membersByName[name];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(name, value) {\n const { writer, totalByteOffset } = membersByName[name];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Bitfield({ element, members }, dataView, byteOffset) {\n const reader = createReader(element);\n const writer = createWriter(element);\n\n const names = members.map(member => member.name);\n\n let currentBitOffset = 0;\n const infoByName = members.reduce((info, { name, bits }) => {\n const bitOffset = currentBitOffset;\n const mask = createMask(bits);\n const clearMask = ~(mask << bitOffset);\n /* eslint-disable no-param-reassign */\n info[name] = { bitOffset, mask, clearMask };\n /* eslint-enable */\n currentBitOffset += bits;\n return info;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { bitOffset, mask } = infoByName[name];\n const elementValue = reader(dataView, byteOffset);\n return (elementValue >>> bitOffset) & mask;\n },\n set(name, value) {\n const { bitOffset, clearMask, mask } = infoByName[name];\n let elementValue = reader(dataView, byteOffset);\n elementValue &= clearMask;\n elementValue |= (value & mask) << bitOffset;\n writer(dataView, byteOffset, elementValue);\n },\n });\n },\n\n Buffer({ byteLength }, dataView, byteOffset) {\n return new Uint8Array(dataView.buffer, byteOffset, byteLength);\n },\n});\n\nexport function createView(type, buffer = new ArrayBuffer(sizeof(type)), useProxy) {\n const dataView = getDataView(buffer);\n\n const viewHandler = viewVisitor[type.tag];\n const writer = createWriter(type);\n\n const view = {\n buffer: dataView.buffer,\n byteOffset: dataView.byteOffset,\n byteLength: dataView.byteLength,\n };\n\n let cache;\n Object.defineProperty(view, 'value', {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = viewHandler(type, dataView, 0, useProxy);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set(value) {\n writer(dataView, 0, value);\n },\n });\n\n return Object.seal(view);\n}\n","/* eslint-disable no-shadow */\nimport { getDataView, sizeof, maybeMemoize } from './utils';\nimport { createReader } from './visitors/reader';\nimport { createWriter } from './visitors/writer';\n\nexport { createView } from './visitors/view';\n\n// Since type schemas are immutable, we should always create the same code for the same object\nconst createReaderMemoized = maybeMemoize(createReader);\nconst createWriterMemoized = maybeMemoize(createWriter);\n\n/**\n * Create a decode function for converting a buffer into its JavaScript representation\n */\nexport function createDecoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const reader = createReaderMemoized(type);\n return function decode(buffer, data) {\n if (buffer === undefined) {\n throw new TypeError('You must specify the buffer the decode');\n }\n const dataView = getDataView(buffer);\n return reader(dataView, 0, data);\n };\n}\n\n/**\n * Create an encode function for serializing a JavaScript object or value into a buffer\n */\nexport function createEncoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const writer = createWriterMemoized(type);\n return function encode(data, buffer = new ArrayBuffer(sizeof(type))) {\n if (data === undefined) {\n throw new TypeError('You must specify the data to encode');\n }\n const dataView = getDataView(buffer);\n if (sizeof(dataView) < sizeof(type)) {\n throw new RangeError('The provided buffer is too small to store the encoded type');\n }\n writer(dataView, 0, data);\n return buffer;\n };\n}\n\n/**\n * Create a converter object that contains both an encoder and a decoder\n */\nexport function createConverter(type) {\n /* istanbul ignore next */\n const encode = createEncoder(type);\n /* istanbul ignore next */\n const decode = createDecoder(type);\n /* istanbul ignore next */\n return { type, encode, decode };\n}\n\n/**\n * Converting a buffer into its JavaScript representation\n * @deprecated\n */\nexport function decode(type, buffer, data) {\n const decode = createDecoder(type);\n return decode(buffer, data);\n}\n\n/**\n * Serialize a JavaScript object or value into a buffer\n * @deprecated\n */\nexport function encode(type, data, buffer) {\n const encode = createEncoder(type);\n return encode(data, buffer);\n}\n"],"names":[],"mappings":"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"}

@@ -593,3 +593,3 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {

var cache = void 0;
if (Reflect.has(target, key)) {
if (key in target) {
cache = target[key];

@@ -596,0 +596,0 @@ } else {

@@ -1,1 +0,1 @@

{"version":3,"file":null,"sources":["../src/utils.js","../src/types.js","../src/visitors/reader.js","../src/visitors/writer.js","../src/visitors/view.js","../src/converters.js"],"sourcesContent":["/**\n * Whether the running system is little endian (true = LE, false = BE)\n */\nexport const systemLittleEndian = (typeof os === 'object')\n /* eslint-disable no-undef */\n ? os.endianness() === 'LE'\n /* eslint-enable no-undef */\n : new Uint32Array(new Uint8Array([0x11, 0x22, 0x33, 0x44]).buffer)[0] === 0x44332211;\n\n/**\n * Gets the closest multiple of byteAlignment from byteOffset (base-2 only)\n */\nexport function align(byteOffset, byteAlignment) {\n /* eslint-disable no-mixed-operators */\n return (byteOffset + byteAlignment - 1) & ~(byteAlignment - 1);\n}\n\n/**\n * The byte alignment of the given type\n */\nexport function alignof({ byteAlignment = 0 } = {}) {\n return byteAlignment;\n}\n\n/**\n * The byte size of the type, excluding alignment padding\n */\nexport function sizeof({ byteLength = 0 } = {}) {\n return byteLength;\n}\n\n/**\n * The byte size of the type, including alignment padding\n */\nexport function strideof(type, byteAlignment = alignof(type)) {\n return align(sizeof(type), byteAlignment);\n}\n\nexport function createMask(bits) {\n return (bits <= 0) ? 0 : 0xFFFFFFFF >>> (32 - bits);\n}\n\nexport function createVariable(name, stackDepth = 0) {\n return `${name}${stackDepth}`;\n}\n\n/* eslint-disable no-param-reassign, prefer-rest-params, no-restricted-syntax */\nexport const assign = Object.assign ||/* istanbul ignore next */ function assign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n target = Object(target);\n for (let index = 1, len = arguments.length; index < len; index++) {\n const source = Object(arguments[index]);\n if (source != null) {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n};\n\nexport function getDataView(data) {\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n } else if (ArrayBuffer.isView(data)) {\n const { buffer, byteOffset, byteLength } = data;\n return new DataView(buffer, byteOffset, byteLength);\n }\n throw new TypeError('Invalid input data');\n}\n\n// Memoize if WeakMap if supported, otherwise passthrough\nexport const maybeMemoize = (() => {\n if (typeof WeakMap === 'function') {\n return function memoize(fn) {\n const cache = new WeakMap();\n return function memoized(key) {\n if (!cache.has(key)) {\n cache.set(key, fn(key));\n }\n return cache.get(key);\n };\n };\n }\n /* istanbul ignore next */\n return function passthrough(fn) {\n return fn;\n };\n})();\n","/* eslint-disable no-param-reassign */\nimport { systemLittleEndian, align, assign, alignof } from './utils';\n\nfunction createNumberType(kind, size, littleEndian = systemLittleEndian) {\n return Object.freeze({\n tag: 'Number',\n kind,\n byteLength: size,\n byteAlignment: size,\n littleEndian,\n });\n}\n\nexport const boolean = Object.freeze({ tag: 'Boolean', byteLength: 1, byteAlignment: 1 });\nexport const bool = boolean;\n\nexport const int8 = createNumberType('Int8', 1);\nexport const uint8 = createNumberType('Uint8', 1);\n\nexport const int16 = createNumberType('Int16', 2);\nexport const int16le = createNumberType('Int16', 2, true);\nexport const int16be = createNumberType('Int16', 2, false);\n\nexport const uint16 = createNumberType('Uint16', 2);\nexport const uint16le = createNumberType('Uint16', 2, true);\nexport const uint16be = createNumberType('Uint16', 2, false);\n\nexport const int32 = createNumberType('Int32', 4);\nexport const int32le = createNumberType('Int32', 4, true);\nexport const int32be = createNumberType('Int32', 4, false);\n\nexport const uint32 = createNumberType('Uint32', 4);\nexport const uint32le = createNumberType('Uint32', 4, true);\nexport const uint32be = createNumberType('Uint32', 4, false);\n\nexport const float32 = createNumberType('Float32', 4);\nexport const float32le = createNumberType('Float32', 4, true);\nexport const float32be = createNumberType('Float32', 4, false);\n\nexport const float64 = createNumberType('Float64', 8);\nexport const float64le = createNumberType('Float64', 8, true);\nexport const float64be = createNumberType('Float64', 8, false);\n\n/**\n * Create a string type.\n */\nexport function string(maxLength, encoding = 'utf8') {\n if (maxLength === undefined) {\n throw new TypeError('You must specify a max length for the string!');\n }\n\n return Object.freeze({\n tag: 'String',\n byteLength: maxLength,\n byteAlignment: 1,\n encoding,\n });\n}\n\n/**\n * Create an array type.\n */\nexport function array(element, length, { pack } = {}) {\n if (element === undefined) {\n throw new TypeError('You must specify the array element type!');\n }\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the array!');\n }\n\n return Object.freeze({\n tag: 'Array',\n byteLength: length * element.byteLength,\n byteAlignment: pack || element.byteAlignment,\n length,\n element,\n });\n}\n\nfunction offsetHelper(tag, elements, inject, pack = 0) {\n let byteOffset = 0;\n let maxByteAlignment = 0;\n\n const members = Object.freeze(elements.map(element => {\n const { byteLength, byteAlignment } = element;\n\n byteOffset = align(byteOffset, pack || byteAlignment);\n\n const result = { byteOffset, element };\n\n if (inject !== undefined) {\n assign(result, inject(element));\n }\n\n byteOffset += byteLength;\n maxByteAlignment = Math.max(maxByteAlignment, byteAlignment);\n\n return Object.freeze(result);\n }));\n\n return Object.freeze({\n tag,\n byteLength: byteOffset,\n byteAlignment: pack || maxByteAlignment,\n members,\n });\n}\n\n/**\n * Create a tuple type.\n */\nexport function tuple(...elements) {\n return offsetHelper('Tuple', elements);\n}\n\nfunction injectName({ name }) {\n return { name };\n}\n\n/**\n * Create a struct type.\n */\nexport function struct(members, { reorder = false, pack = 0 } = {}) {\n if (members === undefined) {\n throw new TypeError('You must specify the struct members!');\n }\n\n pack = Number(pack);\n const memberNames = Object.keys(members);\n\n if (reorder) {\n memberNames.sort((a, b) => alignof(members[a]) - alignof(members[b]));\n }\n\n const sortedMembers = memberNames.map(name => assign({ name }, members[name]));\n\n return offsetHelper('Struct', sortedMembers, injectName, pack);\n}\n\n/**\n * Create a bitfield type.\n */\nexport function bitfield(members, element = uint32) {\n if (members === undefined) {\n throw new TypeError('You must specify the bitfield members!');\n }\n\n const memberNames = Object.keys(members);\n const totalBits = memberNames.reduce((sum, name) => sum + members[name], 0);\n\n if (totalBits > 8 * element.byteLength) {\n throw new RangeError('Sum of bitfield widths is too large for storage element');\n }\n\n return Object.freeze({\n tag: 'Bitfield',\n byteLength: element.byteLength,\n byteAlignment: element.byteAlignment,\n members: Object.freeze(memberNames.map(name => Object.freeze({ name, bits: members[name] }))),\n element,\n });\n}\n\nexport function buffer(length) {\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the buffer!');\n }\n\n return Object.freeze({\n tag: 'Buffer',\n byteLength: length,\n byteAlignment: 1,\n });\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const readerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = dataView.get${kind}(${byteOffsetVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = Boolean(dataView.getUint8(${byteOffsetVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const arrayVar = createVariable('array', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n var ${arrayVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n var ${indexVar} = ${arrayVar}.indexOf(0);\n if (${indexVar} >= 0) {\n ${arrayVar} = ${arrayVar}.subarray(0, ${indexVar});\n }\n ${(() => {\n if (typeof Buffer === 'function') {\n return `${resultVar} = new Buffer(${arrayVar}).toString(${JSON.stringify(encoding)});`;\n }\n\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return `${resultVar} = new TextDecoder(${JSON.stringify(encoding)}).decode(${arrayVar});`;\n }\n\n /* istanbul ignore next */\n return `${resultVar} = String.fromCharCode.apply(String, ${arrayVar});`;\n })()}\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${length});\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerResultVar} = ${resultVar}[${indexVar}];\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${indexVar}] = ${innerResultVar};\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${members.length});\n }\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerResultVar} = ${resultVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${i}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyStruct = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyStruct};\n }\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerResultVar} = ${resultVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyBitfield = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyBitfield};\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerResultVar};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${members.map(({ name, bits }) => `\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar} & ${createMask(bits)};\n ${innerResultVar} >>>= ${bits};\n `).join('\\n')}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${resultVar} === void 0 ||\n ${resultVar}.buffer !== dataView.buffer ||\n ${resultVar}.byteLength !== ${byteOffsetVar} ||\n ${resultVar}.byteOffset !== ${byteLength}) {\n ${resultVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n }\n `;\n },\n});\n\nexport function createReader(type) {\n const resultVar = createVariable('result');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, resultVar, `\n \"use strict\";\n ${readerVisitor[type.tag](type, 0)}\n return ${resultVar};\n `);\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const writerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.set${kind}(${byteOffsetVar}, ${dataVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.setUint8(${byteOffsetVar}, Number(${dataVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const lengthVar = createVariable('length', stackDepth);\n\n if (typeof Buffer === 'function') {\n return `\n new Buffer(${dataVar}, ${JSON.stringify(encoding)}).copy(new Buffer(dataView.buffer, dataView.byteOffset, dataView.byteLength), ${byteOffsetVar});\n `;\n }\n\n /* istanbul ignore next */\n if (typeof TextEncoder === 'function') {\n return `\n new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength).set(new TextDecoder(${JSON.stringify(encoding)}).encode(${dataVar}));\n `;\n }\n\n /* istanbul ignore next */\n return `\n ${dataVar} = new String(${dataVar});\n for (var ${indexVar} = 0, ${lengthVar} = ${dataVar}.length; ${indexVar} < ${lengthVar}; ++${indexVar}) {\n dataView.setUint8(${byteOffsetVar} + ${indexVar}, ${dataVar}.charCodeAt(${indexVar}));\n }\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerDataVar} = ${dataVar}[${indexVar}];\n ${writerVisitor[element.tag](element, innerStackDepth)}\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerDataVar} = ${dataVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerDataVar} = ${dataVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerDataVar} = 0;\n ${members.slice().reverse().map(({ name, bits }) => `\n ${innerDataVar} <<= ${bits};\n ${innerDataVar} |= ${dataVar}[${JSON.stringify(name)}] & ${createMask(bits)};\n `).join('\\n')}\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${dataVar}.buffer !== dataView.buffer ||\n ${dataVar}.byteLength !== ${byteOffsetVar} ||\n ${dataVar}.byteOffset !== ${byteLength}) {\n new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength}).set(${dataVar});\n }\n `;\n },\n});\n\nexport function createWriter(type) {\n const dataVar = createVariable('data');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, dataVar, `\n \"use strict\";\n ${writerVisitor[type.tag](type, 0)}\n `);\n}\n","import { createReader } from './reader';\nimport { createWriter } from './writer';\nimport { sizeof, strideof, getDataView, createMask } from '../utils';\n\nconst SUPPORTS_PROXY = typeof Proxy === 'function';\n\nfunction createArrayProxy(length, { get, set, useProxy = SUPPORTS_PROXY } = {}) {\n const array = new Array(length);\n\n // Lazily compute properties if proxy is available\n if (useProxy) {\n return new Proxy(array, {\n has(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n return (index >= 0) && (index < length);\n }\n return key in target;\n },\n\n get(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n if ((index >= 0) && (index < length)) {\n let cache;\n if (Reflect.has(target, key)) {\n cache = target[key];\n } else {\n cache = get(index);\n if (typeof cache === 'object') {\n /* eslint-disable no-param-reassign */\n target[key] = cache;\n /* eslint-enable */\n }\n }\n return cache;\n }\n }\n return target[key];\n },\n\n set(target, key, value) {\n // Check that key is either a number or a numeric string\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n // Check bounds\n if ((index >= 0) && (index < length)) {\n return set(index, value) || true;\n }\n }\n // Don't allow any other properties to be changed\n return false;\n },\n });\n }\n\n // Eagerly compute properties using Object.defineProperty\n for (let i = 0; i < length; ++i) {\n let cache;\n Object.defineProperty(array, i, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(i);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, i),\n });\n }\n\n return Object.freeze(array);\n}\n\nfunction createObjectProxy(keys, { get, set } = {}) {\n const object = {};\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n let cache;\n Object.defineProperty(object, key, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(key);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, key),\n });\n }\n\n return Object.freeze(object);\n}\n\nexport const viewVisitor = Object.freeze({\n Number({ littleEndian, kind }, dataView, byteOffset) {\n return dataView[`get${kind}`](byteOffset, littleEndian);\n },\n\n Boolean(_, dataView, byteOffset) {\n return Boolean(dataView.getUint8(byteOffset));\n },\n\n String({ byteLength, encoding }, dataView, byteOffset) {\n let array = new Uint8Array(dataView.buffer, byteOffset, byteLength);\n\n const index = array.indexOf(0);\n if (index >= 0) {\n array = array.subarray(0, index);\n }\n\n if (typeof Buffer === 'function') {\n return new Buffer(array).toString(encoding);\n }\n\n /* eslint-disable no-undef */\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return new TextDecoder(encoding).decode(array);\n }\n /* eslint-enable no-undef */\n\n /* eslint-disable prefer-spread */\n /* istanbul ignore next */\n return String.fromCharCode.apply(String, array);\n /* eslint-enable prefer-spread */\n },\n\n Array({ length, element }, dataView, byteOffset, useProxy = length > 20) {\n const elementProxyHandler = viewVisitor[element.tag];\n const elementWriter = createWriter(element);\n const byteStride = strideof(element);\n\n return createArrayProxy(length, {\n useProxy,\n get(i) {\n const elementByteOffset = byteOffset + (byteStride * i);\n return elementProxyHandler(element, dataView, elementByteOffset, useProxy);\n },\n set(i, value) {\n const elementByteOffset = byteOffset + (byteStride * i);\n elementWriter(dataView, elementByteOffset, value);\n },\n });\n },\n\n Tuple({ members }, dataView, byteOffset, useProxy) {\n const handlers = members.map(member => ({\n element: member.element,\n proxyHandler: viewVisitor[member.element.tag],\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n }));\n\n return createArrayProxy(members.length, {\n useProxy: false,\n get(i) {\n const { element, proxyHandler, totalByteOffset } = handlers[i];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(i, value) {\n const { writer, totalByteOffset } = handlers[i];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Struct({ members }, dataView, byteOffset, useProxy) {\n const names = members.map(member => member.name);\n const membersByName = members.reduce((obj, member) => {\n /* eslint-disable no-param-reassign */\n obj[member.name] = {\n element: member.element,\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n proxyHandler: viewVisitor[member.element.tag],\n };\n /* eslint-enable */\n return obj;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { element, proxyHandler, totalByteOffset } = membersByName[name];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(name, value) {\n const { writer, totalByteOffset } = membersByName[name];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Bitfield({ element, members }, dataView, byteOffset) {\n const reader = createReader(element);\n const writer = createWriter(element);\n\n const names = members.map(member => member.name);\n\n let currentBitOffset = 0;\n const infoByName = members.reduce((info, { name, bits }) => {\n const bitOffset = currentBitOffset;\n const mask = createMask(bits);\n const clearMask = ~(mask << bitOffset);\n /* eslint-disable no-param-reassign */\n info[name] = { bitOffset, mask, clearMask };\n /* eslint-enable */\n currentBitOffset += bits;\n return info;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { bitOffset, mask } = infoByName[name];\n const elementValue = reader(dataView, byteOffset);\n return (elementValue >>> bitOffset) & mask;\n },\n set(name, value) {\n const { bitOffset, clearMask, mask } = infoByName[name];\n let elementValue = reader(dataView, byteOffset);\n elementValue &= clearMask;\n elementValue |= (value & mask) << bitOffset;\n writer(dataView, byteOffset, elementValue);\n },\n });\n },\n\n Buffer({ byteLength }, dataView, byteOffset) {\n return new Uint8Array(dataView.buffer, byteOffset, byteLength);\n },\n});\n\nexport function createView(type, buffer = new ArrayBuffer(sizeof(type)), useProxy) {\n const dataView = getDataView(buffer);\n\n const viewHandler = viewVisitor[type.tag];\n const writer = createWriter(type);\n\n const view = {\n buffer: dataView.buffer,\n byteOffset: dataView.byteOffset,\n byteLength: dataView.byteLength,\n };\n\n let cache;\n Object.defineProperty(view, 'value', {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = viewHandler(type, dataView, 0, useProxy);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set(value) {\n writer(dataView, 0, value);\n },\n });\n\n return Object.seal(view);\n}\n","/* eslint-disable no-shadow */\nimport { getDataView, sizeof, maybeMemoize } from './utils';\nimport { createReader } from './visitors/reader';\nimport { createWriter } from './visitors/writer';\n\nexport { createView } from './visitors/view';\n\n// Since type schemas are immutable, we should always create the same code for the same object\nconst createReaderMemoized = maybeMemoize(createReader);\nconst createWriterMemoized = maybeMemoize(createWriter);\n\n/**\n * Create a decode function for converting a buffer into its JavaScript representation\n */\nexport function createDecoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const reader = createReaderMemoized(type);\n return function decode(buffer, data) {\n if (buffer === undefined) {\n throw new TypeError('You must specify the buffer the decode');\n }\n const dataView = getDataView(buffer);\n return reader(dataView, 0, data);\n };\n}\n\n/**\n * Create an encode function for serializing a JavaScript object or value into a buffer\n */\nexport function createEncoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const writer = createWriterMemoized(type);\n return function encode(data, buffer = new ArrayBuffer(sizeof(type))) {\n if (data === undefined) {\n throw new TypeError('You must specify the data to encode');\n }\n const dataView = getDataView(buffer);\n if (sizeof(dataView) < sizeof(type)) {\n throw new RangeError('The provided buffer is too small to store the encoded type');\n }\n writer(dataView, 0, data);\n return buffer;\n };\n}\n\n/**\n * Create a converter object that contains both an encoder and a decoder\n */\nexport function createConverter(type) {\n /* istanbul ignore next */\n const encode = createEncoder(type);\n /* istanbul ignore next */\n const decode = createDecoder(type);\n /* istanbul ignore next */\n return { type, encode, decode };\n}\n\n/**\n * Converting a buffer into its JavaScript representation\n * @deprecated\n */\nexport function decode(type, buffer, data) {\n const decode = createDecoder(type);\n return decode(buffer, data);\n}\n\n/**\n * Serialize a JavaScript object or value into a buffer\n * @deprecated\n */\nexport function encode(type, data, buffer) {\n const encode = createEncoder(type);\n return encode(data, buffer);\n}\n"],"names":[],"mappings":"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"}
{"version":3,"file":null,"sources":["../src/utils.js","../src/types.js","../src/visitors/reader.js","../src/visitors/writer.js","../src/visitors/view.js","../src/converters.js"],"sourcesContent":["/**\n * Whether the running system is little endian (true = LE, false = BE)\n */\nexport const systemLittleEndian = (typeof os === 'object')\n /* eslint-disable no-undef */\n ? os.endianness() === 'LE'\n /* eslint-enable no-undef */\n : new Uint32Array(new Uint8Array([0x11, 0x22, 0x33, 0x44]).buffer)[0] === 0x44332211;\n\n/**\n * Gets the closest multiple of byteAlignment from byteOffset (base-2 only)\n */\nexport function align(byteOffset, byteAlignment) {\n /* eslint-disable no-mixed-operators */\n return (byteOffset + byteAlignment - 1) & ~(byteAlignment - 1);\n}\n\n/**\n * The byte alignment of the given type\n */\nexport function alignof({ byteAlignment = 0 } = {}) {\n return byteAlignment;\n}\n\n/**\n * The byte size of the type, excluding alignment padding\n */\nexport function sizeof({ byteLength = 0 } = {}) {\n return byteLength;\n}\n\n/**\n * The byte size of the type, including alignment padding\n */\nexport function strideof(type, byteAlignment = alignof(type)) {\n return align(sizeof(type), byteAlignment);\n}\n\nexport function createMask(bits) {\n return (bits <= 0) ? 0 : 0xFFFFFFFF >>> (32 - bits);\n}\n\nexport function createVariable(name, stackDepth = 0) {\n return `${name}${stackDepth}`;\n}\n\n/* eslint-disable no-param-reassign, prefer-rest-params, no-restricted-syntax */\nexport const assign = Object.assign ||/* istanbul ignore next */ function assign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n target = Object(target);\n for (let index = 1, len = arguments.length; index < len; index++) {\n const source = Object(arguments[index]);\n if (source != null) {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n};\n\nexport function getDataView(data) {\n if (data instanceof ArrayBuffer) {\n return new DataView(data);\n } else if (ArrayBuffer.isView(data)) {\n const { buffer, byteOffset, byteLength } = data;\n return new DataView(buffer, byteOffset, byteLength);\n }\n throw new TypeError('Invalid input data');\n}\n\n// Memoize if WeakMap if supported, otherwise passthrough\nexport const maybeMemoize = (() => {\n if (typeof WeakMap === 'function') {\n return function memoize(fn) {\n const cache = new WeakMap();\n return function memoized(key) {\n if (!cache.has(key)) {\n cache.set(key, fn(key));\n }\n return cache.get(key);\n };\n };\n }\n /* istanbul ignore next */\n return function passthrough(fn) {\n return fn;\n };\n})();\n","/* eslint-disable no-param-reassign */\nimport { systemLittleEndian, align, assign, alignof } from './utils';\n\nfunction createNumberType(kind, size, littleEndian = systemLittleEndian) {\n return Object.freeze({\n tag: 'Number',\n kind,\n byteLength: size,\n byteAlignment: size,\n littleEndian,\n });\n}\n\nexport const boolean = Object.freeze({ tag: 'Boolean', byteLength: 1, byteAlignment: 1 });\nexport const bool = boolean;\n\nexport const int8 = createNumberType('Int8', 1);\nexport const uint8 = createNumberType('Uint8', 1);\n\nexport const int16 = createNumberType('Int16', 2);\nexport const int16le = createNumberType('Int16', 2, true);\nexport const int16be = createNumberType('Int16', 2, false);\n\nexport const uint16 = createNumberType('Uint16', 2);\nexport const uint16le = createNumberType('Uint16', 2, true);\nexport const uint16be = createNumberType('Uint16', 2, false);\n\nexport const int32 = createNumberType('Int32', 4);\nexport const int32le = createNumberType('Int32', 4, true);\nexport const int32be = createNumberType('Int32', 4, false);\n\nexport const uint32 = createNumberType('Uint32', 4);\nexport const uint32le = createNumberType('Uint32', 4, true);\nexport const uint32be = createNumberType('Uint32', 4, false);\n\nexport const float32 = createNumberType('Float32', 4);\nexport const float32le = createNumberType('Float32', 4, true);\nexport const float32be = createNumberType('Float32', 4, false);\n\nexport const float64 = createNumberType('Float64', 8);\nexport const float64le = createNumberType('Float64', 8, true);\nexport const float64be = createNumberType('Float64', 8, false);\n\n/**\n * Create a string type.\n */\nexport function string(maxLength, encoding = 'utf8') {\n if (maxLength === undefined) {\n throw new TypeError('You must specify a max length for the string!');\n }\n\n return Object.freeze({\n tag: 'String',\n byteLength: maxLength,\n byteAlignment: 1,\n encoding,\n });\n}\n\n/**\n * Create an array type.\n */\nexport function array(element, length, { pack } = {}) {\n if (element === undefined) {\n throw new TypeError('You must specify the array element type!');\n }\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the array!');\n }\n\n return Object.freeze({\n tag: 'Array',\n byteLength: length * element.byteLength,\n byteAlignment: pack || element.byteAlignment,\n length,\n element,\n });\n}\n\nfunction offsetHelper(tag, elements, inject, pack = 0) {\n let byteOffset = 0;\n let maxByteAlignment = 0;\n\n const members = Object.freeze(elements.map(element => {\n const { byteLength, byteAlignment } = element;\n\n byteOffset = align(byteOffset, pack || byteAlignment);\n\n const result = { byteOffset, element };\n\n if (inject !== undefined) {\n assign(result, inject(element));\n }\n\n byteOffset += byteLength;\n maxByteAlignment = Math.max(maxByteAlignment, byteAlignment);\n\n return Object.freeze(result);\n }));\n\n return Object.freeze({\n tag,\n byteLength: byteOffset,\n byteAlignment: pack || maxByteAlignment,\n members,\n });\n}\n\n/**\n * Create a tuple type.\n */\nexport function tuple(...elements) {\n return offsetHelper('Tuple', elements);\n}\n\nfunction injectName({ name }) {\n return { name };\n}\n\n/**\n * Create a struct type.\n */\nexport function struct(members, { reorder = false, pack = 0 } = {}) {\n if (members === undefined) {\n throw new TypeError('You must specify the struct members!');\n }\n\n pack = Number(pack);\n const memberNames = Object.keys(members);\n\n if (reorder) {\n memberNames.sort((a, b) => alignof(members[a]) - alignof(members[b]));\n }\n\n const sortedMembers = memberNames.map(name => assign({ name }, members[name]));\n\n return offsetHelper('Struct', sortedMembers, injectName, pack);\n}\n\n/**\n * Create a bitfield type.\n */\nexport function bitfield(members, element = uint32) {\n if (members === undefined) {\n throw new TypeError('You must specify the bitfield members!');\n }\n\n const memberNames = Object.keys(members);\n const totalBits = memberNames.reduce((sum, name) => sum + members[name], 0);\n\n if (totalBits > 8 * element.byteLength) {\n throw new RangeError('Sum of bitfield widths is too large for storage element');\n }\n\n return Object.freeze({\n tag: 'Bitfield',\n byteLength: element.byteLength,\n byteAlignment: element.byteAlignment,\n members: Object.freeze(memberNames.map(name => Object.freeze({ name, bits: members[name] }))),\n element,\n });\n}\n\nexport function buffer(length) {\n if (length === undefined || typeof length !== 'number') {\n throw new TypeError('You must specify a length of the buffer!');\n }\n\n return Object.freeze({\n tag: 'Buffer',\n byteLength: length,\n byteAlignment: 1,\n });\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const readerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = dataView.get${kind}(${byteOffsetVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `${resultVar} = Boolean(dataView.getUint8(${byteOffsetVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const arrayVar = createVariable('array', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n var ${arrayVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n var ${indexVar} = ${arrayVar}.indexOf(0);\n if (${indexVar} >= 0) {\n ${arrayVar} = ${arrayVar}.subarray(0, ${indexVar});\n }\n ${(() => {\n if (typeof Buffer === 'function') {\n return `${resultVar} = new Buffer(${arrayVar}).toString(${JSON.stringify(encoding)});`;\n }\n\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return `${resultVar} = new TextDecoder(${JSON.stringify(encoding)}).decode(${arrayVar});`;\n }\n\n /* istanbul ignore next */\n return `${resultVar} = String.fromCharCode.apply(String, ${arrayVar});`;\n })()}\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${length});\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerResultVar} = ${resultVar}[${indexVar}];\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${indexVar}] = ${innerResultVar};\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = new Array(${members.length});\n }\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerResultVar} = ${resultVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${i}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyStruct = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyStruct};\n }\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerResultVar} = ${resultVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar};\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerResultVar = createVariable('result', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const emptyBitfield = `{ ${members.map(({ name }) => `${JSON.stringify(name)}: undefined`).join(', ')} }`;\n\n return `\n if (${resultVar} === void 0) {\n ${resultVar} = ${emptyBitfield};\n }\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerResultVar};\n ${readerVisitor[element.tag](element, innerStackDepth)}\n ${members.map(({ name, bits }) => `\n ${resultVar}[${JSON.stringify(name)}] = ${innerResultVar} & ${createMask(bits)};\n ${innerResultVar} >>>= ${bits};\n `).join('\\n')}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const resultVar = createVariable('result', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${resultVar} === void 0 ||\n ${resultVar}.buffer !== dataView.buffer ||\n ${resultVar}.byteLength !== ${byteOffsetVar} ||\n ${resultVar}.byteOffset !== ${byteLength}) {\n ${resultVar} = new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength});\n }\n `;\n },\n});\n\nexport function createReader(type) {\n const resultVar = createVariable('result');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, resultVar, `\n \"use strict\";\n ${readerVisitor[type.tag](type, 0)}\n return ${resultVar};\n `);\n}\n","/* eslint-disable max-len, no-new-func */\nimport { strideof, createMask, createVariable } from '../utils';\n\nexport const writerVisitor = Object.freeze({\n Number({ littleEndian, kind }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.set${kind}(${byteOffsetVar}, ${dataVar}, ${littleEndian});`;\n },\n\n Boolean(_, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `dataView.setUint8(${byteOffsetVar}, Number(${dataVar}));`;\n },\n\n String({ byteLength, encoding }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const lengthVar = createVariable('length', stackDepth);\n\n if (typeof Buffer === 'function') {\n return `\n new Buffer(${dataVar}, ${JSON.stringify(encoding)}).copy(new Buffer(dataView.buffer, dataView.byteOffset, dataView.byteLength), ${byteOffsetVar});\n `;\n }\n\n /* istanbul ignore next */\n if (typeof TextEncoder === 'function') {\n return `\n new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength).set(new TextDecoder(${JSON.stringify(encoding)}).encode(${dataVar}));\n `;\n }\n\n /* istanbul ignore next */\n return `\n ${dataVar} = new String(${dataVar});\n for (var ${indexVar} = 0, ${lengthVar} = ${dataVar}.length; ${indexVar} < ${lengthVar}; ++${indexVar}) {\n dataView.setUint8(${byteOffsetVar} + ${indexVar}, ${dataVar}.charCodeAt(${indexVar}));\n }\n `;\n },\n\n Array({ byteAlignment, length, element, pack }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const indexVar = createVariable('i', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n const stride = strideof(element, byteAlignment);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n for (var ${indexVar} = 0; ${indexVar} < ${length}; ++${indexVar}) {\n var ${innerDataVar} = ${dataVar}[${indexVar}];\n ${writerVisitor[element.tag](element, innerStackDepth)}\n ${innerByteOffsetVar} += ${stride};\n }\n `;\n },\n\n Tuple({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ element, byteOffset }, i) => `\n var ${innerDataVar} = ${dataVar}[${i}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Struct({ members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n ${members.map(({ name, element, byteOffset }) => `\n var ${innerDataVar} = ${dataVar}[${JSON.stringify(name)}];\n var ${innerByteOffsetVar} = ${byteOffsetVar} + ${byteOffset};\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `).join('\\n')}\n `;\n },\n\n Bitfield({ element, members }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n const innerStackDepth = stackDepth + 1;\n const innerDataVar = createVariable('data', innerStackDepth);\n const innerByteOffsetVar = createVariable('byteOffset', innerStackDepth);\n\n return `\n var ${innerByteOffsetVar} = ${byteOffsetVar};\n var ${innerDataVar} = 0;\n ${members.slice().reverse().map(({ name, bits }) => `\n ${innerDataVar} <<= ${bits};\n ${innerDataVar} |= ${dataVar}[${JSON.stringify(name)}] & ${createMask(bits)};\n `).join('\\n')}\n ${writerVisitor[element.tag](element, innerStackDepth)}\n `;\n },\n\n Buffer({ byteLength }, stackDepth) {\n const dataVar = createVariable('data', stackDepth);\n const byteOffsetVar = createVariable('byteOffset', stackDepth);\n\n return `\n if (${dataVar}.buffer !== dataView.buffer ||\n ${dataVar}.byteLength !== ${byteOffsetVar} ||\n ${dataVar}.byteOffset !== ${byteLength}) {\n new Uint8Array(dataView.buffer, ${byteOffsetVar}, ${byteLength}).set(${dataVar});\n }\n `;\n },\n});\n\nexport function createWriter(type) {\n const dataVar = createVariable('data');\n const byteOffsetVar = createVariable('byteOffset');\n\n return new Function('dataView', byteOffsetVar, dataVar, `\n \"use strict\";\n ${writerVisitor[type.tag](type, 0)}\n `);\n}\n","import { createReader } from './reader';\nimport { createWriter } from './writer';\nimport { sizeof, strideof, getDataView, createMask } from '../utils';\n\nconst SUPPORTS_PROXY = typeof Proxy === 'function';\n\nfunction createArrayProxy(length, { get, set, useProxy = SUPPORTS_PROXY } = {}) {\n const array = new Array(length);\n\n // Lazily compute properties if proxy is available\n if (useProxy) {\n return new Proxy(array, {\n has(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n return (index >= 0) && (index < length);\n }\n return key in target;\n },\n\n get(target, key) {\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n if ((index >= 0) && (index < length)) {\n let cache;\n if (key in target) {\n cache = target[key];\n } else {\n cache = get(index);\n if (typeof cache === 'object') {\n /* eslint-disable no-param-reassign */\n target[key] = cache;\n /* eslint-enable */\n }\n }\n return cache;\n }\n }\n return target[key];\n },\n\n set(target, key, value) {\n // Check that key is either a number or a numeric string\n if (typeof key !== 'symbol' && !isNaN(key)) {\n const index = parseInt(key, 10);\n // Check bounds\n if ((index >= 0) && (index < length)) {\n return set(index, value) || true;\n }\n }\n // Don't allow any other properties to be changed\n return false;\n },\n });\n }\n\n // Eagerly compute properties using Object.defineProperty\n for (let i = 0; i < length; ++i) {\n let cache;\n Object.defineProperty(array, i, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(i);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, i),\n });\n }\n\n return Object.freeze(array);\n}\n\nfunction createObjectProxy(keys, { get, set } = {}) {\n const object = {};\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n let cache;\n Object.defineProperty(object, key, {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = get(key);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set: set.bind(undefined, key),\n });\n }\n\n return Object.freeze(object);\n}\n\nexport const viewVisitor = Object.freeze({\n Number({ littleEndian, kind }, dataView, byteOffset) {\n return dataView[`get${kind}`](byteOffset, littleEndian);\n },\n\n Boolean(_, dataView, byteOffset) {\n return Boolean(dataView.getUint8(byteOffset));\n },\n\n String({ byteLength, encoding }, dataView, byteOffset) {\n let array = new Uint8Array(dataView.buffer, byteOffset, byteLength);\n\n const index = array.indexOf(0);\n if (index >= 0) {\n array = array.subarray(0, index);\n }\n\n if (typeof Buffer === 'function') {\n return new Buffer(array).toString(encoding);\n }\n\n /* eslint-disable no-undef */\n /* istanbul ignore next */\n if (typeof TextDecoder === 'function') {\n return new TextDecoder(encoding).decode(array);\n }\n /* eslint-enable no-undef */\n\n /* eslint-disable prefer-spread */\n /* istanbul ignore next */\n return String.fromCharCode.apply(String, array);\n /* eslint-enable prefer-spread */\n },\n\n Array({ length, element }, dataView, byteOffset, useProxy = length > 20) {\n const elementProxyHandler = viewVisitor[element.tag];\n const elementWriter = createWriter(element);\n const byteStride = strideof(element);\n\n return createArrayProxy(length, {\n useProxy,\n get(i) {\n const elementByteOffset = byteOffset + (byteStride * i);\n return elementProxyHandler(element, dataView, elementByteOffset, useProxy);\n },\n set(i, value) {\n const elementByteOffset = byteOffset + (byteStride * i);\n elementWriter(dataView, elementByteOffset, value);\n },\n });\n },\n\n Tuple({ members }, dataView, byteOffset, useProxy) {\n const handlers = members.map(member => ({\n element: member.element,\n proxyHandler: viewVisitor[member.element.tag],\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n }));\n\n return createArrayProxy(members.length, {\n useProxy: false,\n get(i) {\n const { element, proxyHandler, totalByteOffset } = handlers[i];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(i, value) {\n const { writer, totalByteOffset } = handlers[i];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Struct({ members }, dataView, byteOffset, useProxy) {\n const names = members.map(member => member.name);\n const membersByName = members.reduce((obj, member) => {\n /* eslint-disable no-param-reassign */\n obj[member.name] = {\n element: member.element,\n writer: createWriter(member.element),\n totalByteOffset: byteOffset + member.byteOffset,\n proxyHandler: viewVisitor[member.element.tag],\n };\n /* eslint-enable */\n return obj;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { element, proxyHandler, totalByteOffset } = membersByName[name];\n return proxyHandler(element, dataView, totalByteOffset, useProxy);\n },\n set(name, value) {\n const { writer, totalByteOffset } = membersByName[name];\n writer(dataView, totalByteOffset, value);\n },\n });\n },\n\n Bitfield({ element, members }, dataView, byteOffset) {\n const reader = createReader(element);\n const writer = createWriter(element);\n\n const names = members.map(member => member.name);\n\n let currentBitOffset = 0;\n const infoByName = members.reduce((info, { name, bits }) => {\n const bitOffset = currentBitOffset;\n const mask = createMask(bits);\n const clearMask = ~(mask << bitOffset);\n /* eslint-disable no-param-reassign */\n info[name] = { bitOffset, mask, clearMask };\n /* eslint-enable */\n currentBitOffset += bits;\n return info;\n }, Object.create(null));\n\n return createObjectProxy(names, {\n get(name) {\n const { bitOffset, mask } = infoByName[name];\n const elementValue = reader(dataView, byteOffset);\n return (elementValue >>> bitOffset) & mask;\n },\n set(name, value) {\n const { bitOffset, clearMask, mask } = infoByName[name];\n let elementValue = reader(dataView, byteOffset);\n elementValue &= clearMask;\n elementValue |= (value & mask) << bitOffset;\n writer(dataView, byteOffset, elementValue);\n },\n });\n },\n\n Buffer({ byteLength }, dataView, byteOffset) {\n return new Uint8Array(dataView.buffer, byteOffset, byteLength);\n },\n});\n\nexport function createView(type, buffer = new ArrayBuffer(sizeof(type)), useProxy) {\n const dataView = getDataView(buffer);\n\n const viewHandler = viewVisitor[type.tag];\n const writer = createWriter(type);\n\n const view = {\n buffer: dataView.buffer,\n byteOffset: dataView.byteOffset,\n byteLength: dataView.byteLength,\n };\n\n let cache;\n Object.defineProperty(view, 'value', {\n enumerable: true,\n configurable: false,\n get() {\n if (cache) {\n return cache;\n }\n const result = viewHandler(type, dataView, 0, useProxy);\n if (typeof result === 'object') {\n cache = result;\n }\n return result;\n },\n set(value) {\n writer(dataView, 0, value);\n },\n });\n\n return Object.seal(view);\n}\n","/* eslint-disable no-shadow */\nimport { getDataView, sizeof, maybeMemoize } from './utils';\nimport { createReader } from './visitors/reader';\nimport { createWriter } from './visitors/writer';\n\nexport { createView } from './visitors/view';\n\n// Since type schemas are immutable, we should always create the same code for the same object\nconst createReaderMemoized = maybeMemoize(createReader);\nconst createWriterMemoized = maybeMemoize(createWriter);\n\n/**\n * Create a decode function for converting a buffer into its JavaScript representation\n */\nexport function createDecoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const reader = createReaderMemoized(type);\n return function decode(buffer, data) {\n if (buffer === undefined) {\n throw new TypeError('You must specify the buffer the decode');\n }\n const dataView = getDataView(buffer);\n return reader(dataView, 0, data);\n };\n}\n\n/**\n * Create an encode function for serializing a JavaScript object or value into a buffer\n */\nexport function createEncoder(type) {\n if (type === undefined) {\n throw new TypeError('You must specify a type to convert with');\n }\n const writer = createWriterMemoized(type);\n return function encode(data, buffer = new ArrayBuffer(sizeof(type))) {\n if (data === undefined) {\n throw new TypeError('You must specify the data to encode');\n }\n const dataView = getDataView(buffer);\n if (sizeof(dataView) < sizeof(type)) {\n throw new RangeError('The provided buffer is too small to store the encoded type');\n }\n writer(dataView, 0, data);\n return buffer;\n };\n}\n\n/**\n * Create a converter object that contains both an encoder and a decoder\n */\nexport function createConverter(type) {\n /* istanbul ignore next */\n const encode = createEncoder(type);\n /* istanbul ignore next */\n const decode = createDecoder(type);\n /* istanbul ignore next */\n return { type, encode, decode };\n}\n\n/**\n * Converting a buffer into its JavaScript representation\n * @deprecated\n */\nexport function decode(type, buffer, data) {\n const decode = createDecoder(type);\n return decode(buffer, data);\n}\n\n/**\n * Serialize a JavaScript object or value into a buffer\n * @deprecated\n */\nexport function encode(type, data, buffer) {\n const encode = createEncoder(type);\n return encode(data, buffer);\n}\n"],"names":[],"mappings":"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"}
{
"name": "structly",
"version": "0.3.1",
"version": "0.3.2",
"license": "MIT",

@@ -56,3 +56,3 @@ "description": "Tool for working with binary data types in JavaScript",

"babel-plugin-external-helpers": "^6.8.0",
"babel-plugin-istanbul": "^1.0.1",
"babel-plugin-istanbul": "^2.0.0",
"babel-preset-es2015": "^6.13.2",

@@ -59,0 +59,0 @@ "coveralls": "^2.11.9",

@@ -7,3 +7,3 @@ # structly

[![Dependency Status](https://img.shields.io/david/maxdavidson/structly.svg)](https://david-dm.org/maxdavidson/structly)
[![devDependency Status](https://img.shields.io/david/dev/maxdavidson/structly.svg)](https://david-dm.org/maxdavidson/structly#info=devDependencies)
[![devDependency Status](https://img.shields.io/david/dev/maxdavidson/structly.svg)](https://david-dm.org/maxdavidson/structly?type=dev)

@@ -64,5 +64,5 @@ Structly is a tool for working with binary data types in JavaScript.

By default, Structly makes sure accesses are [properly aligned](https://en.wikipedia.org/wiki/Data_structure_alignment).
This result is structs being padded with empty space for performance.
This results in structs being padded with empty space for performance reasons.
You can override the byte alignment of the struct by passing
`{ pack: n }` as a second argument to the `struct` type factory, similary to `#pragma pack(n)`.
`{ pack: n }` as a second argument to the `struct` type factory, similar to `#pragma pack(n)`.

@@ -91,3 +91,3 @@

*/
export function createView<T extends Type>(type: T, buffer: ArrayBuffer | ArrayBufferView): View<T>;
export function createView<T extends Type>(type: T, buffer?: ArrayBuffer | ArrayBufferView): View<T>;

@@ -155,7 +155,7 @@ /**

// Interfaces:
interface Decoder<T extends Type> {
export interface Decoder<T extends Type> {
(buffer: ArrayBuffer | ArrayBufferView, data?: any): any;
}
interface Encoder<T extends Type> {
export interface Encoder<T extends Type> {
(data: any): ArrayBuffer;

@@ -165,3 +165,3 @@ <BufferType extends ArrayBuffer | ArrayBufferView>(data: any, buffer: BufferType): BufferType;

interface Converter<T extends Type> {
export interface Converter<T extends Type> {
type: T;

@@ -172,3 +172,3 @@ decode: Decoder<T>;

interface View<T> {
export interface View<T> {
value: any;

@@ -175,0 +175,0 @@ buffer: ArrayBuffer;

import { Type } from './types';
interface Decoder<T extends Type> {
export interface Decoder<T extends Type> {
(buffer: ArrayBuffer | ArrayBufferView, data?: any): any;
}
interface Encoder<T extends Type> {
export interface Encoder<T extends Type> {
(data: any): ArrayBuffer;

@@ -12,3 +12,3 @@ <BufferType extends ArrayBuffer | ArrayBufferView>(data: any, buffer: BufferType): BufferType;

interface Converter<T extends Type> {
export interface Converter<T extends Type> {
type: T;

@@ -19,3 +19,3 @@ decode: Decoder<T>;

interface View<T> {
export interface View<T> {
value: any;

@@ -45,3 +45,3 @@ buffer: ArrayBuffer;

*/
export function createView<T extends Type>(type: T, buffer: ArrayBuffer | ArrayBufferView): View<T>;
export function createView<T extends Type>(type: T, buffer?: ArrayBuffer | ArrayBufferView): View<T>;

@@ -48,0 +48,0 @@ /**

@@ -26,3 +26,3 @@ import { createReader } from './reader';

let cache;
if (Reflect.has(target, key)) {
if (key in target) {
cache = target[key];

@@ -29,0 +29,0 @@ } else {