'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var token = require('./token.js'); var _0uint = require('./0uint.js'); var _1negint = require('./1negint.js'); var _2bytes = require('./2bytes.js'); var _3string = require('./3string.js'); var _4array = require('./4array.js'); var _5map = require('./5map.js'); var _6tag = require('./6tag.js'); var _7float = require('./7float.js'); var common = require('./common.js'); var byteUtils = require('./byte-utils.js'); function invalidMinor(data, pos, minor) { throw new Error(`${ common.decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`); } function errorer(msg) { return () => { throw new Error(`${ common.decodeErrPrefix } ${ msg }`); }; } const jump = []; for (let i = 0; i <= 23; i++) { jump[i] = invalidMinor; } jump[24] = _0uint.decodeUint8; jump[25] = _0uint.decodeUint16; jump[26] = _0uint.decodeUint32; jump[27] = _0uint.decodeUint64; jump[28] = invalidMinor; jump[29] = invalidMinor; jump[30] = invalidMinor; jump[31] = invalidMinor; for (let i = 32; i <= 55; i++) { jump[i] = invalidMinor; } jump[56] = _1negint.decodeNegint8; jump[57] = _1negint.decodeNegint16; jump[58] = _1negint.decodeNegint32; jump[59] = _1negint.decodeNegint64; jump[60] = invalidMinor; jump[61] = invalidMinor; jump[62] = invalidMinor; jump[63] = invalidMinor; for (let i = 64; i <= 87; i++) { jump[i] = _2bytes.decodeBytesCompact; } jump[88] = _2bytes.decodeBytes8; jump[89] = _2bytes.decodeBytes16; jump[90] = _2bytes.decodeBytes32; jump[91] = _2bytes.decodeBytes64; jump[92] = invalidMinor; jump[93] = invalidMinor; jump[94] = invalidMinor; jump[95] = errorer('indefinite length bytes/strings are not supported'); for (let i = 96; i <= 119; i++) { jump[i] = _3string.decodeStringCompact; } jump[120] = _3string.decodeString8; jump[121] = _3string.decodeString16; jump[122] = _3string.decodeString32; jump[123] = _3string.decodeString64; jump[124] = invalidMinor; jump[125] = invalidMinor; jump[126] = invalidMinor; jump[127] = errorer('indefinite length bytes/strings are not supported'); for (let i = 128; i <= 151; i++) { jump[i] = _4array.decodeArrayCompact; } jump[152] = _4array.decodeArray8; jump[153] = _4array.decodeArray16; jump[154] = _4array.decodeArray32; jump[155] = _4array.decodeArray64; jump[156] = invalidMinor; jump[157] = invalidMinor; jump[158] = invalidMinor; jump[159] = _4array.decodeArrayIndefinite; for (let i = 160; i <= 183; i++) { jump[i] = _5map.decodeMapCompact; } jump[184] = _5map.decodeMap8; jump[185] = _5map.decodeMap16; jump[186] = _5map.decodeMap32; jump[187] = _5map.decodeMap64; jump[188] = invalidMinor; jump[189] = invalidMinor; jump[190] = invalidMinor; jump[191] = _5map.decodeMapIndefinite; for (let i = 192; i <= 215; i++) { jump[i] = _6tag.decodeTagCompact; } jump[216] = _6tag.decodeTag8; jump[217] = _6tag.decodeTag16; jump[218] = _6tag.decodeTag32; jump[219] = _6tag.decodeTag64; jump[220] = invalidMinor; jump[221] = invalidMinor; jump[222] = invalidMinor; jump[223] = invalidMinor; for (let i = 224; i <= 243; i++) { jump[i] = errorer('simple values are not supported'); } jump[244] = invalidMinor; jump[245] = invalidMinor; jump[246] = invalidMinor; jump[247] = _7float.decodeUndefined; jump[248] = errorer('simple values are not supported'); jump[249] = _7float.decodeFloat16; jump[250] = _7float.decodeFloat32; jump[251] = _7float.decodeFloat64; jump[252] = invalidMinor; jump[253] = invalidMinor; jump[254] = invalidMinor; jump[255] = _7float.decodeBreak; const quick = []; for (let i = 0; i < 24; i++) { quick[i] = new token.Token(token.Type.uint, i, 1); } for (let i = -1; i >= -24; i--) { quick[31 - i] = new token.Token(token.Type.negint, i, 1); } quick[64] = new token.Token(token.Type.bytes, new Uint8Array(0), 1); quick[96] = new token.Token(token.Type.string, '', 1); quick[128] = new token.Token(token.Type.array, 0, 1); quick[160] = new token.Token(token.Type.map, 0, 1); quick[244] = new token.Token(token.Type.false, false, 1); quick[245] = new token.Token(token.Type.true, true, 1); quick[246] = new token.Token(token.Type.null, null, 1); function quickEncodeToken(token$1) { switch (token$1.type) { case token.Type.false: return byteUtils.fromArray([244]); case token.Type.true: return byteUtils.fromArray([245]); case token.Type.null: return byteUtils.fromArray([246]); case token.Type.bytes: if (!token$1.value.length) { return byteUtils.fromArray([64]); } return; case token.Type.string: if (token$1.value === '') { return byteUtils.fromArray([96]); } return; case token.Type.array: if (token$1.value === 0) { return byteUtils.fromArray([128]); } return; case token.Type.map: if (token$1.value === 0) { return byteUtils.fromArray([160]); } return; case token.Type.uint: if (token$1.value < 24) { return byteUtils.fromArray([Number(token$1.value)]); } return; case token.Type.negint: if (token$1.value >= -24) { return byteUtils.fromArray([31 - Number(token$1.value)]); } } } exports.jump = jump; exports.quick = quick; exports.quickEncodeToken = quickEncodeToken;