sails-js
Version:
Typescript library for working with Sails programs
29 lines (26 loc) • 1.03 kB
JavaScript
import { ReplyCode } from '@gear-js/api';
function throwOnErrorReply(code, payload, specVersion, registry) {
if (code.isSuccess)
return;
const replyCode = new ReplyCode(code.toU8a(), specVersion);
if (!replyCode.isError) {
throw new Error(`Unable to decode reply code. ${code.toU8a()}`);
}
const reason = replyCode.errorReason;
if (reason.isExecution) {
const error = reason.executionReason.isUserspacePanic
? new Error(registry.createType('String', payload).toString())
: new Error(reason.executionReason.explanation);
throw error;
}
else if (reason.isUnavailableActor) {
const error = reason.unavailableActorReason.isProgramExited
? new Error(`Program exited. Program inheritor is ${registry.createType('[u8;32]', payload).toHex()}`)
: new Error(reason.unavailableActorReason.explanation);
throw error;
}
else {
throw new Error(reason.explanation);
}
}
export { throwOnErrorReply };