9966a0ab5bda6e09a255648b00955e9249bf17557e654f2145fb6514aa44333b.json raw
1 {"ast":null,"code":"function isResultKeyType(value) {\n return typeof value === 'number' || typeof value === 'string';\n}\nexport function encodeCBOR(value) {\n var buffer = [];\n encodeItem(value, buffer);\n return new Uint8Array(buffer);\n}\nfunction encodeItem(value, buffer) {\n if (value === null) {\n buffer.push(0xf6);\n } else if (value === undefined) {\n buffer.push(0xf7);\n } else if (typeof value === 'boolean') {\n buffer.push(value ? 0xf5 : 0xf4);\n } else if (typeof value === 'number') {\n encodeUnsigned(value, buffer);\n } else if (typeof value === 'string') {\n encodeString(value, buffer);\n } else if (Array.isArray(value)) {\n encodeArray(value, buffer);\n } else if (value instanceof Uint8Array) {\n encodeByteString(value, buffer);\n } else if (typeof value === 'object') {\n encodeObject(value, buffer);\n } else {\n throw new Error('Unsupported type');\n }\n}\nfunction encodeUnsigned(value, buffer) {\n if (value < 24) {\n buffer.push(value);\n } else if (value < 256) {\n buffer.push(0x18, value);\n } else if (value < 65536) {\n buffer.push(0x19, value >> 8, value & 0xff);\n } else if (value < 4294967296) {\n buffer.push(0x1a, value >> 24, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n } else {\n throw new Error('Unsupported integer size');\n }\n}\nfunction encodeByteString(value, buffer) {\n var length = value.length;\n if (length < 24) {\n buffer.push(0x40 + length);\n } else if (length < 256) {\n buffer.push(0x58, length);\n } else if (length < 65536) {\n buffer.push(0x59, length >> 8 & 0xff, length & 0xff);\n } else if (length < 4294967296) {\n buffer.push(0x5a, length >> 24 & 0xff, length >> 16 & 0xff, length >> 8 & 0xff, length & 0xff);\n } else {\n throw new Error('Byte string too long to encode');\n }\n for (var i = 0; i < value.length; i++) {\n buffer.push(value[i]);\n }\n}\nfunction encodeString(value, buffer) {\n var utf8 = new TextEncoder().encode(value);\n var length = utf8.length;\n if (length < 24) {\n buffer.push(0x60 + length);\n } else if (length < 256) {\n buffer.push(0x78, length);\n } else if (length < 65536) {\n buffer.push(0x79, length >> 8 & 0xff, length & 0xff);\n } else if (length < 4294967296) {\n buffer.push(0x7a, length >> 24 & 0xff, length >> 16 & 0xff, length >> 8 & 0xff, length & 0xff);\n } else {\n throw new Error('String too long to encode');\n }\n for (var i = 0; i < utf8.length; i++) {\n buffer.push(utf8[i]);\n }\n}\nfunction encodeArray(value, buffer) {\n var length = value.length;\n if (length < 24) {\n buffer.push(0x80 | length);\n } else if (length < 256) {\n buffer.push(0x98, length);\n } else if (length < 65536) {\n buffer.push(0x99, length >> 8, length & 0xff);\n } else {\n throw new Error('Unsupported array length');\n }\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var item = value_1[_i];\n encodeItem(item, buffer);\n }\n}\nfunction encodeObject(value, buffer) {\n var keys = Object.keys(value);\n encodeUnsigned(keys.length, buffer);\n buffer[buffer.length - 1] |= 0xa0;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n encodeString(key, buffer);\n encodeItem(value[key], buffer);\n }\n}\nexport function decodeCBOR(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n var result = decodeItem(view, 0);\n return result.value;\n}\nfunction decodeItem(view, offset) {\n if (offset >= view.byteLength) {\n throw new Error('Unexpected end of data');\n }\n var initialByte = view.getUint8(offset++);\n var majorType = initialByte >> 5;\n var additionalInfo = initialByte & 0x1f;\n switch (majorType) {\n case 0:\n return decodeUnsigned(view, offset, additionalInfo);\n case 1:\n return decodeSigned(view, offset, additionalInfo);\n case 2:\n return decodeByteString(view, offset, additionalInfo);\n case 3:\n return decodeString(view, offset, additionalInfo);\n case 4:\n return decodeArray(view, offset, additionalInfo);\n case 5:\n return decodeMap(view, offset, additionalInfo);\n case 7:\n return decodeSimpleAndFloat(view, offset, additionalInfo);\n default:\n throw new Error(\"Unsupported major type: \".concat(majorType));\n }\n}\nfunction decodeLength(view, offset, additionalInfo) {\n if (additionalInfo < 24) return {\n value: additionalInfo,\n offset: offset\n };\n if (additionalInfo === 24) return {\n value: view.getUint8(offset++),\n offset: offset\n };\n if (additionalInfo === 25) {\n var value = view.getUint16(offset, false);\n offset += 2;\n return {\n value: value,\n offset: offset\n };\n }\n if (additionalInfo === 26) {\n var value = view.getUint32(offset, false);\n offset += 4;\n return {\n value: value,\n offset: offset\n };\n }\n if (additionalInfo === 27) {\n var hi = view.getUint32(offset, false);\n var lo = view.getUint32(offset + 4, false);\n offset += 8;\n return {\n value: hi * Math.pow(2, 32) + lo,\n offset: offset\n };\n }\n throw new Error(\"Unsupported length: \".concat(additionalInfo));\n}\nfunction decodeUnsigned(view, offset, additionalInfo) {\n var _a = decodeLength(view, offset, additionalInfo),\n value = _a.value,\n newOffset = _a.offset;\n return {\n value: value,\n offset: newOffset\n };\n}\nfunction decodeSigned(view, offset, additionalInfo) {\n var _a = decodeLength(view, offset, additionalInfo),\n value = _a.value,\n newOffset = _a.offset;\n return {\n value: -1 - value,\n offset: newOffset\n };\n}\nfunction decodeByteString(view, offset, additionalInfo) {\n var _a = decodeLength(view, offset, additionalInfo),\n length = _a.value,\n newOffset = _a.offset;\n if (newOffset + length > view.byteLength) {\n throw new Error('Byte string length exceeds data length');\n }\n var value = new Uint8Array(view.buffer, view.byteOffset + newOffset, length);\n return {\n value: value,\n offset: newOffset + length\n };\n}\nfunction decodeString(view, offset, additionalInfo) {\n var _a = decodeLength(view, offset, additionalInfo),\n length = _a.value,\n newOffset = _a.offset;\n if (newOffset + length > view.byteLength) {\n throw new Error('String length exceeds data length');\n }\n var bytes = new Uint8Array(view.buffer, view.byteOffset + newOffset, length);\n var value = new TextDecoder().decode(bytes);\n return {\n value: value,\n offset: newOffset + length\n };\n}\nfunction decodeArray(view, offset, additionalInfo) {\n var _a = decodeLength(view, offset, additionalInfo),\n length = _a.value,\n newOffset = _a.offset;\n var array = [];\n var currentOffset = newOffset;\n for (var i = 0; i < length; i++) {\n var result = decodeItem(view, currentOffset);\n array.push(result.value);\n currentOffset = result.offset;\n }\n return {\n value: array,\n offset: currentOffset\n };\n}\nfunction decodeMap(view, offset, additionalInfo) {\n var _a = decodeLength(view, offset, additionalInfo),\n length = _a.value,\n newOffset = _a.offset;\n var map = {};\n var currentOffset = newOffset;\n for (var i = 0; i < length; i++) {\n var keyResult = decodeItem(view, currentOffset);\n if (!isResultKeyType(keyResult.value)) {\n throw new Error('Invalid key type');\n }\n var valueResult = decodeItem(view, keyResult.offset);\n map[keyResult.value] = valueResult.value;\n currentOffset = valueResult.offset;\n }\n return {\n value: map,\n offset: currentOffset\n };\n}\nfunction decodeFloat16(uint16) {\n var exponent = (uint16 & 0x7c00) >> 10;\n var fraction = uint16 & 0x03ff;\n var sign = uint16 & 0x8000 ? -1 : 1;\n if (exponent === 0) {\n return sign * Math.pow(2, -14) * (fraction / 1024);\n } else if (exponent === 0x1f) {\n return fraction ? NaN : sign * Infinity;\n }\n return sign * Math.pow(2, exponent - 15) * (1 + fraction / 1024);\n}\nfunction decodeSimpleAndFloat(view, offset, additionalInfo) {\n if (additionalInfo < 24) {\n switch (additionalInfo) {\n case 20:\n return {\n value: false,\n offset: offset\n };\n case 21:\n return {\n value: true,\n offset: offset\n };\n case 22:\n return {\n value: null,\n offset: offset\n };\n case 23:\n return {\n value: undefined,\n offset: offset\n };\n default:\n throw new Error(\"Unknown simple value: \".concat(additionalInfo));\n }\n }\n if (additionalInfo === 24) return {\n value: view.getUint8(offset++),\n offset: offset\n };\n if (additionalInfo === 25) {\n var value = decodeFloat16(view.getUint16(offset, false));\n offset += 2;\n return {\n value: value,\n offset: offset\n };\n }\n if (additionalInfo === 26) {\n var value = view.getFloat32(offset, false);\n offset += 4;\n return {\n value: value,\n offset: offset\n };\n }\n if (additionalInfo === 27) {\n var value = view.getFloat64(offset, false);\n offset += 8;\n return {\n value: value,\n offset: offset\n };\n }\n throw new Error(\"Unknown simple or float value: \".concat(additionalInfo));\n}\n//# sourceMappingURL=cbor.js.map","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}