@metaplex-foundation/umi-serializers
Version:
A comprehensive set of serializers for the Umi framework
83 lines (71 loc) • 2.39 kB
text/typescript
/** @category Errors */
export class InvalidNumberOfItemsError extends Error {
readonly name = 'InvalidNumberOfItemsError';
constructor(
serializer: string,
expected: number | bigint,
actual: number | bigint
) {
super(`Expected [${serializer}] to have ${expected} items, got ${actual}.`);
}
}
/** @category Errors */
export class InvalidArrayLikeRemainderSizeError extends Error {
readonly name = 'InvalidArrayLikeRemainderSizeError';
constructor(remainderSize: number | bigint, itemSize: number | bigint) {
super(
`The remainder of the buffer (${remainderSize} bytes) cannot be split into chunks of ${itemSize} bytes. ` +
`Serializers of "remainder" size must have a remainder that is a multiple of its item size. ` +
`In other words, ${remainderSize} modulo ${itemSize} should be equal to zero.`
);
}
}
/** @category Errors */
export class UnrecognizedArrayLikeSerializerSizeError extends Error {
readonly name = 'UnrecognizedArrayLikeSerializerSizeError';
constructor(size: never) {
super(`Unrecognized array-like serializer size: ${JSON.stringify(size)}`);
}
}
/** @category Errors */
export class InvalidDataEnumVariantError extends Error {
readonly name = 'InvalidDataEnumVariantError';
constructor(invalidVariant: string, validVariants: string[]) {
super(
`Invalid data enum variant. ` +
`Expected one of [${validVariants.join(', ')}], ` +
`got "${invalidVariant}".`
);
}
}
/** @category Errors */
export class InvalidScalarEnumVariantError extends Error {
readonly name = 'InvalidScalarEnumVariantError';
constructor(
invalidVariant: string | number | bigint,
validVariants: string[],
min: number | bigint,
max: number | bigint
) {
super(
`Invalid scalar enum variant. ` +
`Expected one of [${validVariants.join(', ')}] ` +
`or a number between ${min} and ${max}, ` +
`got "${invalidVariant}".`
);
}
}
/** @category Errors */
export class EnumDiscriminatorOutOfRangeError extends RangeError {
readonly name = 'EnumDiscriminatorOutOfRangeError';
constructor(
discriminator: number | bigint,
min: number | bigint,
max: number | bigint
) {
super(
`Enum discriminator out of range. ` +
`Expected a number between ${min} and ${max}, got ${discriminator}.`
);
}
}