43 lines
1.1 KiB
TypeScript
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
|
|
);
|
|
}
|
|
}
|