biketrack-app/node_modules/@ethersphere/bee-js/dist/mjs/chunk/span.js

28 lines
845 B
JavaScript
Raw Normal View History

2022-07-11 10:27:11 +02:00
import { BeeArgumentError } from "../utils/error.js";
export const SPAN_SIZE = 8; // we limit the maximum span size in 32 bits to avoid BigInt compatibility issues
const MAX_SPAN_LENGTH = Math.pow(2, 32) - 1;
/**
* Create a span for storing the length of the chunk
*
* The length is encoded in 64-bit little endian.
*
* @param length The length of the span
*/
export function makeSpan(length) {
if (length <= 0) {
throw new BeeArgumentError('invalid length for span', length);
}
if (length > MAX_SPAN_LENGTH) {
throw new BeeArgumentError('invalid length (> MAX_SPAN_LENGTH)', length);
}
const span = new Uint8Array(SPAN_SIZE);
const dataView = new DataView(span.buffer);
const littleEndian = true;
const lengthLower32 = length & 0xffffffff;
dataView.setUint32(0, lengthLower32, littleEndian);
return span;
}