earendil-works/pi · error · CborError
CBOR numbers must be finite
Error message
CBOR numbers must be finite
What it means
Error "CBOR numbers must be finite" thrown in earendil-works/pi.
Source
Thrown at packages/protocol/src/cbor/encoder.ts:138
writer: CborWriter,
value: unknown,
options: ResolvedCborOptions,
depth: number,
ancestors: Set<object>,
): void {
if (depth > options.maxDepth)
throw new CborError(`CBOR nesting depth exceeds configured limit of ${options.maxDepth}`);
if (value === null) {
writer.writeByte(0xf6);
return;
}
if (typeof value === "boolean") {
writer.writeByte(value ? 0xf5 : 0xf4);
return;
}
if (typeof value === "number") {
if (!Number.isFinite(value)) throw new CborError("CBOR numbers must be finite");
if (Number.isInteger(value) && !Object.is(value, -0)) {
if (!Number.isSafeInteger(value)) throw new CborError("CBOR integers must be safe JavaScript integers");
if (value >= 0) writeArgument(writer, 0, value);
else writeArgument(writer, 1, -1 - value);
} else {
writer.writeFloat64(value);
}
return;
}
if (typeof value === "string") {
encodeText(writer, value, options);
return;
}
if (value instanceof Uint8Array) {
if (value.byteLength > options.maxByteLength) {
throw new CborError(`CBOR byte string length exceeds configured limit of ${options.maxByteLength}`);
}
writeArgument(writer, 2, value.byteLength);View on GitHub (pinned to 4af9d21d3b)
Solutions
- Only encode finite numbers; check for NaN and Infinity before encoding.
When it happens
Trigger: Thrown at packages/protocol/src/cbor/encoder.ts:138 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/86a60420eb6cc875.
Report an issue: GitHub.