@codama/errors
Version:
Error management for Codama
156 lines • 7.14 kB
TypeScript
/**
* Heavily inspired by @solana/errors.
* @see https://github.com/anza-xyz/kit/blob/main/packages/errors
*/
import { AccountNode, AccountValueNode, CamelCaseString, EnumTypeNode, InstructionAccountNode, InstructionArgumentNode, InstructionNode, LinkNode, Node, NodeKind, PdaNode, PdaSeedValueNode, ProgramNode } from '@codama/node-types';
import { CODAMA_ERROR__ANCHOR__ACCOUNT_TYPE_MISSING, CODAMA_ERROR__ANCHOR__ARGUMENT_TYPE_MISSING, CODAMA_ERROR__ANCHOR__PROGRAM_ID_KIND_UNIMPLEMENTED, CODAMA_ERROR__ANCHOR__SEED_KIND_UNIMPLEMENTED, CODAMA_ERROR__ANCHOR__TYPE_PATH_MISSING, CODAMA_ERROR__ANCHOR__UNRECOGNIZED_IDL_TYPE, CODAMA_ERROR__DISCRIMINATOR_FIELD_HAS_NO_DEFAULT_VALUE, CODAMA_ERROR__DISCRIMINATOR_FIELD_NOT_FOUND, CODAMA_ERROR__ENUM_VARIANT_NOT_FOUND, CODAMA_ERROR__LINKED_NODE_NOT_FOUND, CODAMA_ERROR__NODE_FILESYSTEM_FUNCTION_UNAVAILABLE, CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, CODAMA_ERROR__UNEXPECTED_NESTED_NODE_KIND, CODAMA_ERROR__UNEXPECTED_NODE_KIND, CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING, CODAMA_ERROR__UNRECOGNIZED_NODE_KIND, CODAMA_ERROR__UNRECOGNIZED_NUMBER_FORMAT, CODAMA_ERROR__VERSION_MISMATCH, CODAMA_ERROR__VISITORS__ACCOUNT_FIELD_NOT_FOUND, CODAMA_ERROR__VISITORS__CANNOT_ADD_DUPLICATED_PDA_NAMES, CODAMA_ERROR__VISITORS__CANNOT_EXTEND_MISSING_VISIT_FUNCTION, CODAMA_ERROR__VISITORS__CANNOT_FLATTEN_STRUCT_WITH_CONFLICTING_ATTRIBUTES, CODAMA_ERROR__VISITORS__CANNOT_REMOVE_LAST_PATH_IN_NODE_STACK, CODAMA_ERROR__VISITORS__CANNOT_USE_OPTIONAL_ACCOUNT_AS_PDA_SEED_VALUE, CODAMA_ERROR__VISITORS__CYCLIC_DEPENDENCY_DETECTED_WHEN_RESOLVING_INSTRUCTION_DEFAULT_VALUES, CODAMA_ERROR__VISITORS__FAILED_TO_VALIDATE_NODE, CODAMA_ERROR__VISITORS__INSTRUCTION_ENUM_ARGUMENT_NOT_FOUND, CODAMA_ERROR__VISITORS__INVALID_INSTRUCTION_DEFAULT_VALUE_DEPENDENCY, CODAMA_ERROR__VISITORS__INVALID_NUMBER_WRAPPER, CODAMA_ERROR__VISITORS__INVALID_PDA_SEED_VALUES, CODAMA_ERROR__VISITORS__RENDER_MAP_KEY_NOT_FOUND, CodamaErrorCode } from './codes';
type DefaultUnspecifiedErrorContextToUndefined<T> = {
[P in CodamaErrorCode]: P extends keyof T ? T[P] : undefined;
};
/**
* WARNING:
* - Don't change or remove members of an error's context.
*/
export type CodamaErrorContext = DefaultUnspecifiedErrorContextToUndefined<{
[CODAMA_ERROR__ANCHOR__ACCOUNT_TYPE_MISSING]: {
name: string;
};
[CODAMA_ERROR__ANCHOR__ARGUMENT_TYPE_MISSING]: {
name: string;
};
[CODAMA_ERROR__ANCHOR__PROGRAM_ID_KIND_UNIMPLEMENTED]: {
kind: string;
};
[CODAMA_ERROR__ANCHOR__SEED_KIND_UNIMPLEMENTED]: {
kind: string;
};
[CODAMA_ERROR__ANCHOR__TYPE_PATH_MISSING]: {
idlType: string;
path: string;
};
[CODAMA_ERROR__ANCHOR__UNRECOGNIZED_IDL_TYPE]: {
idlType: string;
};
[CODAMA_ERROR__DISCRIMINATOR_FIELD_HAS_NO_DEFAULT_VALUE]: {
field: CamelCaseString;
};
[CODAMA_ERROR__DISCRIMINATOR_FIELD_NOT_FOUND]: {
field: CamelCaseString;
};
[CODAMA_ERROR__ENUM_VARIANT_NOT_FOUND]: {
enum: EnumTypeNode;
enumName: CamelCaseString;
variant: CamelCaseString;
};
[CODAMA_ERROR__LINKED_NODE_NOT_FOUND]: {
kind: LinkNode['kind'];
linkNode: LinkNode;
name: CamelCaseString;
path: readonly Node[];
};
[CODAMA_ERROR__NODE_FILESYSTEM_FUNCTION_UNAVAILABLE]: {
fsFunction: string;
};
[CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE]: {
kind: NodeKind;
node: Node | undefined;
};
[CODAMA_ERROR__UNEXPECTED_NESTED_NODE_KIND]: {
expectedKinds: NodeKind[];
kind: NodeKind | null;
node: Node | null | undefined;
};
[CODAMA_ERROR__UNEXPECTED_NODE_KIND]: {
expectedKinds: NodeKind[];
kind: NodeKind | null;
node: Node | null | undefined;
};
[CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING]: {
encoding: string;
};
[CODAMA_ERROR__UNRECOGNIZED_NODE_KIND]: {
kind: string;
};
[CODAMA_ERROR__UNRECOGNIZED_NUMBER_FORMAT]: {
format: string;
};
[CODAMA_ERROR__VERSION_MISMATCH]: {
codamaVersion: string;
rootVersion: string;
};
[CODAMA_ERROR__VISITORS__ACCOUNT_FIELD_NOT_FOUND]: {
account: AccountNode;
missingField: CamelCaseString;
name: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__CANNOT_ADD_DUPLICATED_PDA_NAMES]: {
duplicatedPdaNames: CamelCaseString[];
program: ProgramNode;
programName: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__CANNOT_EXTEND_MISSING_VISIT_FUNCTION]: {
visitFunction: string;
};
[CODAMA_ERROR__VISITORS__CANNOT_FLATTEN_STRUCT_WITH_CONFLICTING_ATTRIBUTES]: {
conflictingAttributes: CamelCaseString[];
};
[CODAMA_ERROR__VISITORS__CANNOT_REMOVE_LAST_PATH_IN_NODE_STACK]: {
path: readonly Node[];
};
[CODAMA_ERROR__VISITORS__CANNOT_USE_OPTIONAL_ACCOUNT_AS_PDA_SEED_VALUE]: {
instruction: InstructionNode;
instructionAccount: InstructionAccountNode;
instructionAccountName: CamelCaseString;
instructionName: CamelCaseString;
seed: PdaSeedValueNode<AccountValueNode>;
seedName: CamelCaseString;
seedValueName: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__CYCLIC_DEPENDENCY_DETECTED_WHEN_RESOLVING_INSTRUCTION_DEFAULT_VALUES]: {
cycle: (InstructionAccountNode | InstructionArgumentNode)[];
formattedCycle: string;
instruction: InstructionNode;
instructionName: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__FAILED_TO_VALIDATE_NODE]: {
formattedHistogram: string;
validationItems: ValidationItem[];
};
[CODAMA_ERROR__VISITORS__INSTRUCTION_ENUM_ARGUMENT_NOT_FOUND]: {
argumentName: CamelCaseString;
instruction: InstructionNode;
instructionName: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__INVALID_INSTRUCTION_DEFAULT_VALUE_DEPENDENCY]: {
dependency: InstructionAccountNode | InstructionArgumentNode;
dependencyKind: 'instructionAccountNode' | 'instructionArgumentNode';
dependencyName: CamelCaseString;
instruction: InstructionNode;
instructionName: CamelCaseString;
parent: InstructionAccountNode | InstructionArgumentNode;
parentKind: 'instructionAccountNode' | 'instructionArgumentNode';
parentName: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__INVALID_NUMBER_WRAPPER]: {
wrapper: string;
};
[CODAMA_ERROR__VISITORS__INVALID_PDA_SEED_VALUES]: {
instruction: InstructionNode;
instructionName: CamelCaseString;
pda: PdaNode;
pdaName: CamelCaseString;
};
[CODAMA_ERROR__VISITORS__RENDER_MAP_KEY_NOT_FOUND]: {
key: string;
};
}>;
type ValidationItem = {
level: 'debug' | 'error' | 'info' | 'trace' | 'warn';
message: string;
node: Node;
path: Node[];
};
export declare function decodeEncodedContext(encodedContext: string): object;
export declare function encodeContextObject(context: object): string;
export {};
//# sourceMappingURL=context.d.ts.map