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":[]}