Lee Thanh
Upload 3012 files
5641073
raw
history blame
6.44 kB
/**
* This file contains all the error strings used in the library. Also contains silliness.
*
* @author jdiaz5513
*/
import initTrace from "debug";
import { MAX_SEGMENT_LENGTH } from "./constants";
const trace = initTrace("capnp:errors");
trace("load");
// Invariant violations (sometimes known as "precondition failed").
//
// All right, hold up the brakes. This is a serious 1 === 0 WHAT THE FAILURE moment here. Tell the SO's you won't be
// home for dinner.
export const INVARIANT_UNREACHABLE_CODE = "CAPNP-TS000 Unreachable code detected.";
export function assertNever(n: never): never {
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
throw new Error(INVARIANT_UNREACHABLE_CODE + ` (never block hit with: ${n})`);
}
// Message errors.
//
// Now who told you it would be a good idea to fuzz the inputs? You just made the program sad.
export const MSG_INVALID_FRAME_HEADER =
"CAPNP-TS001 Attempted to parse an invalid message frame header; are you sure this is a Cap'n Proto message?";
export const MSG_NO_SEGMENTS_IN_ARENA = "CAPNP-TS002 Attempted to preallocate a message with no segments in the arena.";
export const MSG_PACK_NOT_WORD_ALIGNED = "CAPNP-TS003 Attempted to pack a message that was not word-aligned.";
export const MSG_SEGMENT_OUT_OF_BOUNDS = "CAPNP-TS004 Segment ID %X is out of bounds for message %s.";
export const MSG_SEGMENT_TOO_SMALL =
"CAPNP-TS005 First segment must have at least enough room to hold the root pointer (8 bytes).";
// Used for methods that are not yet implemented.
//
// My bad. I'll get to it. Eventually.
export const NOT_IMPLEMENTED = "CAPNP-TS006 %s is not implemented.";
// Pointer-related errors.
//
// Look, this is probably the hardest part of the code. Cut some slack here! You probably found a bug.
export const PTR_ADOPT_COMPOSITE_STRUCT = "CAPNP-TS007 Attempted to adopt a struct into a composite list (%s).";
export const PTR_ADOPT_WRONG_MESSAGE = "CAPNP-TS008 Attempted to adopt %s into a pointer in a different message %s.";
export const PTR_ALREADY_ADOPTED = "CAPNP-TS009 Attempted to adopt %s more than once.";
export const PTR_COMPOSITE_SIZE_UNDEFINED =
"CAPNP-TS010 Attempted to set a composite list without providing a composite element size.";
export const PTR_DEPTH_LIMIT_EXCEEDED = "CAPNP-TS011 Nesting depth limit exceeded for %s.";
export const PTR_DISOWN_COMPOSITE_STRUCT =
"CAPNP-TS012 Attempted to disown a struct member from a composite list (%s).";
export const PTR_INIT_COMPOSITE_STRUCT =
"CAPNP-TS013 Attempted to initialize a struct member from a composite list (%s).";
export const PTR_INIT_NON_GROUP = "CAPNP-TS014 Attempted to initialize a group field with a non-group struct class.";
export const PTR_INVALID_FAR_TARGET = "CAPNP-TS015 Target of a far pointer (%s) is another far pointer.";
export const PTR_INVALID_LIST_SIZE = "CAPNP-TS016 Invalid list element size: %x.";
export const PTR_INVALID_POINTER_TYPE = "CAPNP-TS017 Invalid pointer type: %x.";
export const PTR_INVALID_UNION_ACCESS =
"CAPNP-TS018 Attempted to access getter on %s for union field %s that is not currently set (wanted: %d, found: %d).";
export const PTR_OFFSET_OUT_OF_BOUNDS = "CAPNP-TS019 Pointer offset %a is out of bounds for underlying buffer.";
export const PTR_STRUCT_DATA_OUT_OF_BOUNDS =
"CAPNP-TS020 Attempted to access out-of-bounds struct data (struct: %s, %d bytes at %a, data words: %d).";
export const PTR_STRUCT_POINTER_OUT_OF_BOUNDS =
"CAPNP-TS021 Attempted to access out-of-bounds struct pointer (%s, index: %d, length: %d).";
export const PTR_TRAVERSAL_LIMIT_EXCEEDED = "CAPNP-TS022 Traversal limit exceeded! Slow down! %s";
export const PTR_WRONG_LIST_TYPE = "CAPNP-TS023 Cannot convert %s to a %s list.";
export const PTR_WRONG_POINTER_TYPE = "CAPNP-TS024 Attempted to convert pointer %s to a %s type.";
export const PTR_WRONG_COMPOSITE_DATA_SIZE =
"CAPNP-TS025 Attempted to convert %s to a composite list with the wrong data size (found: %d).";
export const PTR_WRONG_COMPOSITE_PTR_SIZE =
"CAPNP-TS026 Attempted to convert %s to a composite list with the wrong pointer size (found: %d).";
export const PTR_WRONG_STRUCT_DATA_SIZE =
"CAPNP-TS027 Attempted to convert %s to a struct with the wrong data size (found: %d).";
export const PTR_WRONG_STRUCT_PTR_SIZE =
"CAPNP-TS028 Attempted to convert %s to a struct with the wrong pointer size (found: %d).";
// Custom error messages for the built-in `RangeError` class.
//
// You don't get a witty comment with these.
export const RANGE_INT32_OVERFLOW = "CAPNP-TS029 32-bit signed integer overflow detected.";
export const RANGE_INT64_UNDERFLOW = "CAPNP-TS030 Buffer is not large enough to hold a word.";
export const RANGE_INVALID_UTF8 = "CAPNP-TS031 Invalid UTF-8 code sequence detected.";
export const RANGE_SIZE_OVERFLOW = `CAPNP-TS032 Size %x exceeds maximum ${MAX_SEGMENT_LENGTH.toString(16)}.`;
export const RANGE_UINT32_OVERFLOW = "CAPNP-TS033 32-bit unsigned integer overflow detected.";
// Segment-related errors.
//
// These suck. Deal with it.
export const SEG_BUFFER_NOT_ALLOCATED =
"CAPNP-TS034 allocate() needs to be called at least once before getting a buffer.";
export const SEG_GET_NON_ZERO_SINGLE =
"CAPNP-TS035 Attempted to get a segment other than 0 (%d) from a single segment arena.";
export const SEG_ID_OUT_OF_BOUNDS = "CAPNP-TS036 Attempted to get an out-of-bounds segment (%d).";
export const SEG_NOT_WORD_ALIGNED = "CAPNP-TS037 Segment buffer length %d is not a multiple of 8.";
export const SEG_REPLACEMENT_BUFFER_TOO_SMALL =
"CAPNP-TS038 Attempted to replace a segment buffer with one that is smaller than the allocated space.";
export const SEG_SIZE_OVERFLOW = `CAPNP-TS039 Requested size %x exceeds maximum value (${MAX_SEGMENT_LENGTH}).`;
// Custom error messages for the built-in `TypeError` class.
//
// If it looks like a duck, quacks like an elephant, and has hooves for feet, it's probably JavaScript.
export const TYPE_COMPOSITE_SIZE_UNDEFINED =
"CAPNP-TS040 Must provide a composite element size for composite list pointers.";
export const TYPE_GET_GENERIC_LIST = "CAPNP-TS041 Attempted to call get() on a generic list.";
export const TYPE_SET_GENERIC_LIST = "CAPNP-TS042 Attempted to call set() on a generic list.";
export const PTR_WRITE_CONST_LIST = "CAPNP-TS043 Attempted to write to a const list.";
export const PTR_WRITE_CONST_STRUCT = "CAPNP-TS044 Attempted to write to a const struct.";