wormhole/sui/testing/js/helpers/error/moveAbort.ts

43 lines
1.1 KiB
TypeScript

export function parseMoveAbort(errorMessage: string) {
const parsed = errorMessage.matchAll(
/MoveAbort\(MoveLocation { module: ModuleId { address: ([0-9a-f]{64}), name: Identifier\("([A-Za-z_]+)"\) }, function: ([0-9]+), instruction: ([0-9]+), function_name: Some\("([A-Za-z_]+)"\) }, ([0-9]+)\) in command ([0-9]+)/g
);
return parsed.next().value.slice(1, 8);
}
export class MoveAbort {
packageId: string;
moduleName: string;
functionName: string;
errorCode: bigint;
command: number;
constructor(
packageId: string,
moduleName: string,
functionName: string,
errorCode: string,
command: string
) {
this.packageId = packageId;
this.moduleName = moduleName;
this.functionName = functionName;
this.errorCode = BigInt(errorCode);
this.command = Number(command);
}
static parseError(errorMessage: string): MoveAbort {
const [packageId, moduleName, , , functionName, errorCode, command] =
parseMoveAbort(errorMessage);
return new MoveAbort(
"0x" + packageId,
moduleName,
functionName,
errorCode,
command
);
}
}