@j0nnyboi/amman
Version:
A modern mandatory toolbelt to help test solana SDK libraries and apps on a locally running validator.
135 lines • 5.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTransactionInstructionError = void 0;
const instructionErrorMessage = new Map([
['GenericError', 'generic instruction error'],
['InvalidArgument', 'invalid program argument'],
['InvalidInstructionData', 'invalid instruction data'],
['InvalidAccountData', 'invalid account data for instruction'],
['AccountDataTooSmall', 'account data too small for instruction'],
['InsufficientFunds', 'insufficient funds for instruction'],
['IncorrectProgramId', 'incorrect program id for instruction'],
['MissingRequiredSignature', 'missing required signature for instruction'],
[
'AccountAlreadyInitialized',
'instruction requires an uninitialized account',
],
['UninitializedAccount', 'instruction requires an initialized account'],
[
'UnbalancedInstruction',
'sum of account balances before and after instruction do not match',
],
['ModifiedProgramId', 'instruction modified the program id of an account'],
[
'ExternalAccountLamportSpend',
'instruction spent from the balance of an account it does not own',
],
[
'ExternalAccountDataModified',
'instruction modified data of an account it does not own',
],
[
'ReadonlyLamportChange',
'instruction changed the balance of a read-only account',
],
['ReadonlyDataModified', 'instruction modified data of a read-only account'],
['DuplicateAccountIndex', 'instruction contains duplicate accounts'],
['ExecutableModified', 'instruction changed executable bit of an account'],
['RentEpochModified', 'instruction modified rent epoch of an account'],
['NotEnoughAccountKeys', 'insufficient account keys for instruction'],
['AccountDataSizeChanged', 'non-system instruction changed account size'],
['AccountNotExecutable', 'instruction expected an executable account'],
[
'AccountBorrowFailed',
'instruction tries to borrow reference for an account which is already borrowed',
],
[
'AccountBorrowOutstanding',
'instruction left account with an outstanding borrowed reference',
],
[
'DuplicateAccountOutOfSync',
'instruction modifications of multiply-passed account differ',
],
['Custom', 'custom program error: {0}'],
['InvalidError', 'program returned invalid error code'],
['ExecutableDataModified', 'instruction changed executable accounts data'],
[
'ExecutableLamportChange',
'instruction changed the balance of a executable account',
],
['ExecutableAccountNotRentExempt', 'executable accounts must be rent exempt'],
['UnsupportedProgramId', 'Unsupported program id'],
['CallDepth', 'Cross-program invocation call depth too deep'],
['MissingAccount', 'An account required by the instruction is missing'],
[
'ReentrancyNotAllowed',
'Cross-program invocation reentrancy not allowed for this instruction',
],
[
'MaxSeedLengthExceeded',
'Length of the seed is too long for address generation',
],
['InvalidSeeds', 'Provided seeds do not result in a valid address'],
['InvalidRealloc', 'Failed to reallocate account data'],
['ComputationalBudgetExceeded', 'Computational budget exceeded'],
[
'PrivilegeEscalation',
'Cross-program invocation with unauthorized signer or writable account',
],
[
'ProgramEnvironmentSetupFailure',
'Failed to create program execution environment',
],
['ProgramFailedToComplete', 'Program failed to complete'],
['ProgramFailedToCompile', 'Program failed to compile'],
['Immutable', 'Account is immutable'],
['IncorrectAuthority', 'Incorrect authority provided'],
['BorshIoError', 'Failed to serialize or deserialize account data: {0}'],
[
'AccountNotRentExempt',
'An account does not have enough lamports to be rent-exempt',
],
['InvalidAccountOwner', 'Invalid account owner'],
['ArithmeticOverflow', 'Program arithmetic overflowed'],
['UnsupportedSysvar', 'Unsupported sysvar'],
['IllegalOwner', 'Provided owner is not allowed'],
]);
function getTransactionInstructionError(error) {
if (!error) {
return;
}
if (typeof error === 'object' && 'InstructionError' in error) {
const innerError = error['InstructionError'];
const index = innerError[0];
const instructionError = innerError[1];
return {
index,
message: getInstructionError(instructionError),
};
}
}
exports.getTransactionInstructionError = getTransactionInstructionError;
function getInstructionError(error) {
let out;
let value;
if (typeof error === 'string') {
const message = instructionErrorMessage.get(error);
if (message) {
return message;
}
}
else if ('Custom' in error) {
out = instructionErrorMessage.get('Custom');
value = error['Custom'];
}
else if ('BorshIoError' in error) {
out = instructionErrorMessage.get('BorshIoError');
value = error['BorshIoError'];
}
if (out && value) {
return out.replace('{0}', value);
}
return 'Unknown instruction error';
}
//# sourceMappingURL=program-err.js.map