earendil-works/pi · error · TypeError

CBOR input must be a Uint8Array

Error message

CBOR input must be a Uint8Array

What it means

Error "CBOR input must be a Uint8Array" thrown in earendil-works/pi.

Source

Thrown at packages/protocol/src/cbor/decoder.ts:162

	private readByte(): number {
		if (this.offset >= this.bytes.byteLength) throw new CborError("Truncated CBOR payload");
		const value = this.bytes[this.offset]!;
		this.offset++;
		return value;
	}

	private readBytes(length: number): Uint8Array {
		if (length > this.bytes.byteLength - this.offset) throw new CborError("Truncated CBOR payload");
		const value = this.bytes.subarray(this.offset, this.offset + length);
		this.offset += length;
		return value;
	}
}

/** Decodes exactly one item from the protocol's strict RFC 8949 subset. */
export function decodeCbor(bytes: Uint8Array, options?: CborOptions): unknown {
	if (!(bytes instanceof Uint8Array)) throw new TypeError("CBOR input must be a Uint8Array");
	const resolved = resolveOptions(options);
	if (bytes.byteLength > resolved.maxByteLength) {
		throw new CborError(`CBOR byte length exceeds configured limit of ${resolved.maxByteLength}`);
	}
	return new CborReader(bytes, resolved).decode();
}

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. Pass a Uint8Array to the decoder; convert strings, Buffers, or ArrayBuffers first.

When it happens

Trigger: Thrown at packages/protocol/src/cbor/decoder.ts:162 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24). Data as JSON: /api/errors/5350cda2d520fc20. Report an issue: GitHub.