@codama/errors
Version:
Error management for Codama
275 lines (267 loc) • 15.3 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
CODAMA_ERROR__ANCHOR__ACCOUNT_TYPE_MISSING: () => CODAMA_ERROR__ANCHOR__ACCOUNT_TYPE_MISSING,
CODAMA_ERROR__ANCHOR__ARGUMENT_TYPE_MISSING: () => CODAMA_ERROR__ANCHOR__ARGUMENT_TYPE_MISSING,
CODAMA_ERROR__ANCHOR__PROGRAM_ID_KIND_UNIMPLEMENTED: () => CODAMA_ERROR__ANCHOR__PROGRAM_ID_KIND_UNIMPLEMENTED,
CODAMA_ERROR__ANCHOR__SEED_KIND_UNIMPLEMENTED: () => CODAMA_ERROR__ANCHOR__SEED_KIND_UNIMPLEMENTED,
CODAMA_ERROR__ANCHOR__TYPE_PATH_MISSING: () => CODAMA_ERROR__ANCHOR__TYPE_PATH_MISSING,
CODAMA_ERROR__ANCHOR__UNRECOGNIZED_IDL_TYPE: () => CODAMA_ERROR__ANCHOR__UNRECOGNIZED_IDL_TYPE,
CODAMA_ERROR__DISCRIMINATOR_FIELD_HAS_NO_DEFAULT_VALUE: () => CODAMA_ERROR__DISCRIMINATOR_FIELD_HAS_NO_DEFAULT_VALUE,
CODAMA_ERROR__DISCRIMINATOR_FIELD_NOT_FOUND: () => CODAMA_ERROR__DISCRIMINATOR_FIELD_NOT_FOUND,
CODAMA_ERROR__ENUM_VARIANT_NOT_FOUND: () => CODAMA_ERROR__ENUM_VARIANT_NOT_FOUND,
CODAMA_ERROR__LINKED_NODE_NOT_FOUND: () => CODAMA_ERROR__LINKED_NODE_NOT_FOUND,
CODAMA_ERROR__NODE_FILESYSTEM_FUNCTION_UNAVAILABLE: () => CODAMA_ERROR__NODE_FILESYSTEM_FUNCTION_UNAVAILABLE,
CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE: () => CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE,
CODAMA_ERROR__UNEXPECTED_NESTED_NODE_KIND: () => CODAMA_ERROR__UNEXPECTED_NESTED_NODE_KIND,
CODAMA_ERROR__UNEXPECTED_NODE_KIND: () => CODAMA_ERROR__UNEXPECTED_NODE_KIND,
CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING: () => CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING,
CODAMA_ERROR__UNRECOGNIZED_NODE_KIND: () => CODAMA_ERROR__UNRECOGNIZED_NODE_KIND,
CODAMA_ERROR__UNRECOGNIZED_NUMBER_FORMAT: () => CODAMA_ERROR__UNRECOGNIZED_NUMBER_FORMAT,
CODAMA_ERROR__VERSION_MISMATCH: () => CODAMA_ERROR__VERSION_MISMATCH,
CODAMA_ERROR__VISITORS__ACCOUNT_FIELD_NOT_FOUND: () => CODAMA_ERROR__VISITORS__ACCOUNT_FIELD_NOT_FOUND,
CODAMA_ERROR__VISITORS__CANNOT_ADD_DUPLICATED_PDA_NAMES: () => CODAMA_ERROR__VISITORS__CANNOT_ADD_DUPLICATED_PDA_NAMES,
CODAMA_ERROR__VISITORS__CANNOT_EXTEND_MISSING_VISIT_FUNCTION: () => CODAMA_ERROR__VISITORS__CANNOT_EXTEND_MISSING_VISIT_FUNCTION,
CODAMA_ERROR__VISITORS__CANNOT_FLATTEN_STRUCT_WITH_CONFLICTING_ATTRIBUTES: () => CODAMA_ERROR__VISITORS__CANNOT_FLATTEN_STRUCT_WITH_CONFLICTING_ATTRIBUTES,
CODAMA_ERROR__VISITORS__CANNOT_REMOVE_LAST_PATH_IN_NODE_STACK: () => CODAMA_ERROR__VISITORS__CANNOT_REMOVE_LAST_PATH_IN_NODE_STACK,
CODAMA_ERROR__VISITORS__CANNOT_USE_OPTIONAL_ACCOUNT_AS_PDA_SEED_VALUE: () => 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__CYCLIC_DEPENDENCY_DETECTED_WHEN_RESOLVING_INSTRUCTION_DEFAULT_VALUES,
CODAMA_ERROR__VISITORS__FAILED_TO_VALIDATE_NODE: () => CODAMA_ERROR__VISITORS__FAILED_TO_VALIDATE_NODE,
CODAMA_ERROR__VISITORS__INSTRUCTION_ENUM_ARGUMENT_NOT_FOUND: () => CODAMA_ERROR__VISITORS__INSTRUCTION_ENUM_ARGUMENT_NOT_FOUND,
CODAMA_ERROR__VISITORS__INVALID_INSTRUCTION_DEFAULT_VALUE_DEPENDENCY: () => CODAMA_ERROR__VISITORS__INVALID_INSTRUCTION_DEFAULT_VALUE_DEPENDENCY,
CODAMA_ERROR__VISITORS__INVALID_NUMBER_WRAPPER: () => CODAMA_ERROR__VISITORS__INVALID_NUMBER_WRAPPER,
CODAMA_ERROR__VISITORS__INVALID_PDA_SEED_VALUES: () => CODAMA_ERROR__VISITORS__INVALID_PDA_SEED_VALUES,
CODAMA_ERROR__VISITORS__RENDER_MAP_KEY_NOT_FOUND: () => CODAMA_ERROR__VISITORS__RENDER_MAP_KEY_NOT_FOUND,
CodamaError: () => CodamaError,
isCodamaError: () => isCodamaError,
logError: () => logError,
logInfo: () => logInfo,
logWarn: () => logWarn,
safeCaptureStackTrace: () => safeCaptureStackTrace
});
module.exports = __toCommonJS(index_exports);
// src/codes.ts
var CODAMA_ERROR__UNRECOGNIZED_NODE_KIND = 1;
var CODAMA_ERROR__UNEXPECTED_NODE_KIND = 2;
var CODAMA_ERROR__UNEXPECTED_NESTED_NODE_KIND = 3;
var CODAMA_ERROR__LINKED_NODE_NOT_FOUND = 4;
var CODAMA_ERROR__NODE_FILESYSTEM_FUNCTION_UNAVAILABLE = 5;
var CODAMA_ERROR__VERSION_MISMATCH = 6;
var CODAMA_ERROR__UNRECOGNIZED_NUMBER_FORMAT = 7;
var CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING = 8;
var CODAMA_ERROR__ENUM_VARIANT_NOT_FOUND = 9;
var CODAMA_ERROR__DISCRIMINATOR_FIELD_NOT_FOUND = 10;
var CODAMA_ERROR__DISCRIMINATOR_FIELD_HAS_NO_DEFAULT_VALUE = 11;
var CODAMA_ERROR__VISITORS__CANNOT_ADD_DUPLICATED_PDA_NAMES = 12e5;
var CODAMA_ERROR__VISITORS__INVALID_PDA_SEED_VALUES = 1200001;
var CODAMA_ERROR__VISITORS__CYCLIC_DEPENDENCY_DETECTED_WHEN_RESOLVING_INSTRUCTION_DEFAULT_VALUES = 1200002;
var CODAMA_ERROR__VISITORS__CANNOT_USE_OPTIONAL_ACCOUNT_AS_PDA_SEED_VALUE = 1200003;
var CODAMA_ERROR__VISITORS__INVALID_INSTRUCTION_DEFAULT_VALUE_DEPENDENCY = 1200004;
var CODAMA_ERROR__VISITORS__ACCOUNT_FIELD_NOT_FOUND = 1200005;
var CODAMA_ERROR__VISITORS__INVALID_NUMBER_WRAPPER = 1200006;
var CODAMA_ERROR__VISITORS__CANNOT_EXTEND_MISSING_VISIT_FUNCTION = 1200007;
var CODAMA_ERROR__VISITORS__FAILED_TO_VALIDATE_NODE = 1200008;
var CODAMA_ERROR__VISITORS__INSTRUCTION_ENUM_ARGUMENT_NOT_FOUND = 1200009;
var CODAMA_ERROR__VISITORS__CANNOT_FLATTEN_STRUCT_WITH_CONFLICTING_ATTRIBUTES = 1200010;
var CODAMA_ERROR__VISITORS__RENDER_MAP_KEY_NOT_FOUND = 1200011;
var CODAMA_ERROR__VISITORS__CANNOT_REMOVE_LAST_PATH_IN_NODE_STACK = 1200012;
var CODAMA_ERROR__ANCHOR__UNRECOGNIZED_IDL_TYPE = 21e5;
var CODAMA_ERROR__ANCHOR__ACCOUNT_TYPE_MISSING = 2100001;
var CODAMA_ERROR__ANCHOR__ARGUMENT_TYPE_MISSING = 2100002;
var CODAMA_ERROR__ANCHOR__TYPE_PATH_MISSING = 2100003;
var CODAMA_ERROR__ANCHOR__SEED_KIND_UNIMPLEMENTED = 2100004;
var CODAMA_ERROR__ANCHOR__PROGRAM_ID_KIND_UNIMPLEMENTED = 2100005;
var CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE = 28e5;
// src/context.ts
function encodeValue(value) {
if (Array.isArray(value)) {
const commaSeparatedValues = value.map(encodeValue).join(
"%2C%20"
/* ", " */
);
return "%5B" + commaSeparatedValues + /* "]" */
"%5D";
} else if (typeof value === "bigint") {
return `${value}n`;
} else {
return encodeURIComponent(
String(
value != null && Object.getPrototypeOf(value) === null ? (
// Plain objects with no protoype don't have a `toString` method.
// Convert them before stringifying them.
{ ...value }
) : value
)
);
}
}
function encodeObjectContextEntry([key, value]) {
return `${key}=${encodeValue(value)}`;
}
function encodeContextObject(context) {
const searchParamsString = Object.entries(context).map(encodeObjectContextEntry).join("&");
return true ? Buffer.from(searchParamsString, "utf8").toString("base64") : btoa(searchParamsString);
}
// src/messages.ts
var CodamaErrorMessages = {
[CODAMA_ERROR__ANCHOR__ACCOUNT_TYPE_MISSING]: "Account type [$name] is missing from the IDL types.",
[CODAMA_ERROR__ANCHOR__ARGUMENT_TYPE_MISSING]: "Argument name [$name] is missing from the instruction definition.",
[CODAMA_ERROR__ANCHOR__PROGRAM_ID_KIND_UNIMPLEMENTED]: "Program ID kind [$kind] is not implemented.",
[CODAMA_ERROR__ANCHOR__SEED_KIND_UNIMPLEMENTED]: "Seed kind [$kind] is not implemented.",
[CODAMA_ERROR__ANCHOR__TYPE_PATH_MISSING]: "Field type is missing for path [$path] in [$idlType].",
[CODAMA_ERROR__ANCHOR__UNRECOGNIZED_IDL_TYPE]: "Unrecognized Anchor IDL type [$idlType].",
[CODAMA_ERROR__DISCRIMINATOR_FIELD_HAS_NO_DEFAULT_VALUE]: "Discriminator field [$field] has no default value.",
[CODAMA_ERROR__DISCRIMINATOR_FIELD_NOT_FOUND]: "Could not find discriminator field [$field]",
[CODAMA_ERROR__ENUM_VARIANT_NOT_FOUND]: "Enum variant [$variant] not found in enum type [$enumName].",
[CODAMA_ERROR__LINKED_NODE_NOT_FOUND]: "Could not find linked node [$name] from [$kind].",
[CODAMA_ERROR__NODE_FILESYSTEM_FUNCTION_UNAVAILABLE]: "Node.js filesystem function [$fsFunction] is not available in your environment.",
[CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE]: "Cannot render the encountered node of kind [$kind].",
[CODAMA_ERROR__UNEXPECTED_NESTED_NODE_KIND]: "Expected nested node of kind [$expectedKinds], got [$kind]",
[CODAMA_ERROR__UNEXPECTED_NODE_KIND]: "Expected node of kind [$expectedKinds], got [$kind].",
[CODAMA_ERROR__UNRECOGNIZED_BYTES_ENCODING]: "Unrecognized bytes encoding [$encoding].",
[CODAMA_ERROR__UNRECOGNIZED_NODE_KIND]: "Unrecognized node kind [$kind].",
[CODAMA_ERROR__UNRECOGNIZED_NUMBER_FORMAT]: "Unrecognized number format [$format].",
[CODAMA_ERROR__VERSION_MISMATCH]: "The provided RootNode version [$rootVersion] is not compatible with the installed Codama version [$codamaVersion].",
[CODAMA_ERROR__VISITORS__ACCOUNT_FIELD_NOT_FOUND]: "Account [$name] does not have a field named [$missingField].",
[CODAMA_ERROR__VISITORS__CANNOT_ADD_DUPLICATED_PDA_NAMES]: "Cannot add PDAs to program [$programName] because the following PDA names already exist [$duplicatedPdaNames].",
[CODAMA_ERROR__VISITORS__CANNOT_EXTEND_MISSING_VISIT_FUNCTION]: "Cannot extend visitor with function [$visitFunction] as the base visitor does not support it.",
[CODAMA_ERROR__VISITORS__CANNOT_FLATTEN_STRUCT_WITH_CONFLICTING_ATTRIBUTES]: "Cannot flatten struct since this would cause the following attributes to conflict [$conflictingAttributes].",
[CODAMA_ERROR__VISITORS__CANNOT_REMOVE_LAST_PATH_IN_NODE_STACK]: "Cannot remove the last path in the node stack.",
[CODAMA_ERROR__VISITORS__CANNOT_USE_OPTIONAL_ACCOUNT_AS_PDA_SEED_VALUE]: "Cannot use optional account [$seedValueName] as the [$seedName] PDA seed for the [$instructionAccountName] account of the [$instructionName] instruction.",
[CODAMA_ERROR__VISITORS__CYCLIC_DEPENDENCY_DETECTED_WHEN_RESOLVING_INSTRUCTION_DEFAULT_VALUES]: "Circular dependency detected when resolving the accounts and arguments' default values of the [$instructionName] instruction. Got the following dependency cycle [$formattedCycle].",
[CODAMA_ERROR__VISITORS__FAILED_TO_VALIDATE_NODE]: "Failed to validate the given node [$formattedHistogram].",
[CODAMA_ERROR__VISITORS__INSTRUCTION_ENUM_ARGUMENT_NOT_FOUND]: "Could not find an enum argument named [$argumentName] for instruction [$instructionName].",
[CODAMA_ERROR__VISITORS__INVALID_INSTRUCTION_DEFAULT_VALUE_DEPENDENCY]: "Dependency [$dependencyName] of kind [$dependencyKind] is not a valid dependency of [$parentName] of kind [$parentKind] in the [$instructionName] instruction.",
[CODAMA_ERROR__VISITORS__INVALID_NUMBER_WRAPPER]: "Invalid number wrapper kind [$wrapper].",
[CODAMA_ERROR__VISITORS__INVALID_PDA_SEED_VALUES]: "Invalid seed values for PDA [$pdaName] in instruction [$instructionName].",
[CODAMA_ERROR__VISITORS__RENDER_MAP_KEY_NOT_FOUND]: "Cannot find key [$key] in RenderMap."
};
// src/message-formatter.ts
function getHumanReadableErrorMessage(code, context = {}) {
const messageFormatString = CodamaErrorMessages[code];
const message = messageFormatString.replace(
/(?<!\\)\$(\w+)/g,
(substring, variableName) => variableName in context ? `${context[variableName]}` : substring
);
return message;
}
function getErrorMessage(code, context = {}) {
if (process.env.NODE_ENV !== "production") {
return getHumanReadableErrorMessage(code, context);
} else {
let decodingAdviceMessage = `Codama error #${code}; Decode this error by running \`npx @codama/errors decode -- ${code}`;
if (Object.keys(context).length) {
decodingAdviceMessage += ` '${encodeContextObject(context)}'`;
}
return `${decodingAdviceMessage}\``;
}
}
// src/error.ts
function isCodamaError(e, code) {
const isCodamaError2 = e instanceof Error && e.name === "CodamaError";
if (isCodamaError2) {
if (code !== void 0) {
return e.context.__code === code;
}
return true;
}
return false;
}
var CodamaError = class extends Error {
context;
constructor(...[code, contextAndErrorOptions]) {
let context;
let errorOptions;
if (contextAndErrorOptions) {
const { cause, ...contextRest } = contextAndErrorOptions;
if (cause) {
errorOptions = { cause };
}
if (Object.keys(contextRest).length > 0) {
context = contextRest;
}
}
const message = getErrorMessage(code, context);
super(message, errorOptions);
this.context = {
__code: code,
...context
};
this.name = "CodamaError";
}
};
// src/logs.ts
function logError(message) {
console.error(message);
}
function logWarn(message) {
console.warn(message);
}
function logInfo(message) {
console.log(message);
}
// src/stack-trace.ts
function safeCaptureStackTrace(...args) {
if ("captureStackTrace" in Error && typeof Error.captureStackTrace === "function") {
Error.captureStackTrace(...args);
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
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,
CodamaError,
isCodamaError,
logError,
logInfo,
logWarn,
safeCaptureStackTrace
});
//# sourceMappingURL=index.node.cjs.map