@blockassetlabs/blaze
Version:
Blockasset Blaze
263 lines • 10.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleError = exports.NATIVE_ERRORS = void 0;
const constants_1 = require("./programs/blockasset-blaze/constants");
exports.NATIVE_ERRORS = [
{
code: 'Blockhash not found',
message: 'Blockhash not found. Transaction may or may not have gone through'
},
{
code: 'Transaction was not confirmed in',
message: 'Transaction timed out waiting on confirmation from Solana. It may or may not have gone through'
},
// token program errors
{
code: '0x1',
message: 'Insufficient funds. User does not have enough balance of token to complete the transaction'
},
{
code: '0x4',
message: 'Invalid owner. The user is likely not mint authority of this token.'
},
{
code: '91',
message: 'Token is not ellgible for original receipts'
},
// anchor errors
{
code: '100',
message: 'InstructionMissing: 8 byte instruction identifier not provided'
},
{
code: '101',
message: 'InstructionFallbackNotFound: Fallback functions are not supported'
},
{
code: '102',
message: 'InstructionDidNotDeserialize: The program could not deserialize the given instruction'
},
{
code: '103',
message: 'InstructionDidNotSerialize: The program could not serialize the given instruction'
},
{
code: '1000',
message: 'IdlInstructionStub: The program was compiled without idl instructions'
},
{
code: '1001',
message: 'IdlInstructionInvalidProgram: Invalid program given to the IDL instruction'
},
{ code: '2000', message: 'ConstraintMut: A mut constraint was violated' },
{
code: '2001',
message: 'ConstraintHasOne: A has one constraint was violated'
},
{
code: '2002',
message: 'ConstraintSigner: A signer constraint as violated'
},
{ code: '2003', message: 'ConstraintRaw: A raw constraint was violated' },
{
code: '2004',
message: 'ConstraintOwner: An owner constraint was violated'
},
{
code: '2005',
message: 'ConstraintRentExempt: A rent exemption constraint was violated'
},
{
code: '2006',
message: 'ConstraintSeeds: A seeds constraint was violated'
},
{
code: '2007',
message: 'ConstraintExecutable: An executable constraint was violated'
},
{
code: '2008',
message: 'ConstraintState: A state constraint was violated'
},
{
code: '2009',
message: 'ConstraintAssociated: An associated constraint was violated'
},
{
code: '2010',
message: 'ConstraintAssociatedInit: An associated init constraint was violated'
},
{
code: '2011',
message: 'ConstraintClose: A close constraint was violated'
},
{
code: '2012',
message: 'ConstraintAddress: An address constraint was violated'
},
{
code: '2013',
message: 'ConstraintZero: Expected zero account discriminant'
},
{
code: '2014',
message: 'ConstraintTokenMint: A token mint constraint was violated'
},
{
code: '2015',
message: 'ConstraintTokenOwner: A token owner constraint was violated'
},
{
code: '2016',
message: 'ConstraintMintMintAuthority: A mint mint authority constraint was violated'
},
{
code: '2017',
message: 'ConstraintMintFreezeAuthority: A mint freeze authority constraint was violated'
},
{
code: '2018',
message: 'ConstraintMintDecimals: A mint decimals constraint was violated'
},
{
code: '2019',
message: 'ConstraintSpace: A space constraint was violated'
},
{
code: '3000',
message: 'AccountDiscriminatorAlreadySet: The account discriminator was already set on this account'
},
{
code: '3001',
message: 'AccountDiscriminatorNotFound: No 8 byte discriminator was found on the account'
},
{
code: '3002',
message: 'AccountDiscriminatorMismatch: 8 byte discriminator did not match what was expected'
},
{
code: '3003',
message: 'AccountDidNotDeserialize: Failed to deserialize the account'
},
{
code: '3004',
message: 'AccountDidNotSerialize: Failed to serialize the account'
},
{
code: '3005',
message: 'AccountNotEnoughKeys: Not enough account keys given to the instruction'
},
{
code: '3006',
message: 'AccountNotMutable: The given account is not mutable'
},
{
code: '3007',
message: 'AccountNotProgramOwned: The given account is not owned by the executing program'
},
{
code: '3008',
message: 'InvalidProgramId: Program ID was not as expected'
},
{
code: '3009',
message: 'InvalidProgramExecutable: Program account is not executable'
},
{
code: '3010',
message: 'AccountNotSigner: The given account did not sign'
},
{
code: '3011',
message: 'AccountNotSystemOwned: The given account is not owned by the system program'
},
{
code: '3012',
message: 'AccountNotInitialized: The program expected this account to be already initialized'
},
{
code: '3013',
message: 'AccountNotProgramData: The given account is not a program data account'
},
{
code: '3014',
message: 'AccountNotAssociatedTokenAccount: The given account is not the associated token account'
},
{
code: '4000',
message: 'StateInvalidAddress: The given state account does not have the correct address'
},
{
code: '5000',
message: 'Deprecated: The API being used is deprecated and should no longer be used'
}
].reverse();
const handleError = (e, fallBackMessage = 'Transaction failed',
// programIdls in priority order
options = {
programIdls: [{ programId: constants_1.BLAZE_ADDRESS, idl: constants_1.BLAZE_IDL }],
additionalErrors: exports.NATIVE_ERRORS
}) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
const programIdls = (_a = options.programIdls) !== null && _a !== void 0 ? _a : [];
const additionalErrors = (_b = options.additionalErrors) !== null && _b !== void 0 ? _b : [];
const hex = (_c = e === null || e === void 0 ? void 0 : e.message) === null || _c === void 0 ? void 0 : _c.split(' ').at(-1);
const dec = parseInt(hex || '', 16);
const logs = (_f = (_e = (_d = e === null || e === void 0 ? void 0 : e.logs) !== null && _d !== void 0 ? _d : [
e === null || e === void 0 ? void 0 : e.message
]) !== null && _e !== void 0 ? _e : [e.toString()]) !== null && _f !== void 0 ? _f : [];
const matchedErrors = [
...[
...programIdls.map(({ idl, programId }) => {
var _a, _b;
return ({
// match program on any log that includes programId and 'failed'
programMatch: logs === null || logs === void 0 ? void 0 : logs.some(l => (l === null || l === void 0 ? void 0 : l.includes(programId.toString())) && l.includes('failed')),
// match error with decimal
errorMatch: (_b = (_a = idl.errors) === null || _a === void 0 ? void 0 : _a.find(err => err.code === dec)) === null || _b === void 0 ? void 0 : _b.msg
});
}),
{
// match native error with decimal
errorMatch: (_g = additionalErrors.find(err => err.code === dec.toString())) === null || _g === void 0 ? void 0 : _g.message
}
],
...[
{
programMatch: false,
errorMatch: (_h = additionalErrors.find(err => {
var _a, _b;
// message includes error
return ((_a = e === null || e === void 0 ? void 0 : e.message) === null || _a === void 0 ? void 0 : _a.includes(err.code)) ||
// toString includes error
e.toString().includes(err.code) ||
(
// any log includes error
(_b = e === null || e === void 0 ? void 0 : e.logs) === null || _b === void 0 ? void 0 : _b.some(l => l.toString().includes(err.code)));
})) === null || _h === void 0 ? void 0 : _h.message
},
...programIdls.map(({ idl, programId }) => {
var _a, _b;
return ({
// match program on any log that includes programId and 'failed'
programMatch: logs === null || logs === void 0 ? void 0 : logs.some(l => (l === null || l === void 0 ? void 0 : l.includes(programId.toString())) && l.includes('failed')),
errorMatch: (_b = (_a = idl.errors) === null || _a === void 0 ? void 0 : _a.find(err => {
var _a, _b;
// message includes error
return ((_a = e === null || e === void 0 ? void 0 : e.message) === null || _a === void 0 ? void 0 : _a.includes(err.code.toString())) ||
// toString includes error
e.toString().includes(err.code.toString()) ||
(
// any log includes error
(_b = e === null || e === void 0 ? void 0 : e.logs) === null || _b === void 0 ? void 0 : _b.some(l => l.toString().includes(err.code.toString())));
})) === null || _b === void 0 ? void 0 : _b.msg
});
})
]
];
return (((_j = matchedErrors.find(e => e.programMatch && e.errorMatch)) === null || _j === void 0 ? void 0 : _j.errorMatch) ||
((_k = matchedErrors.find(e => e.errorMatch)) === null || _k === void 0 ? void 0 : _k.errorMatch) ||
fallBackMessage);
};
exports.handleError = handleError;
//# sourceMappingURL=errors.js.map