@yubing744/rooch-sdk
Version:
113 lines (112 loc) • 4.16 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var encode_exports = {};
__export(encode_exports, {
canonicalRoochAddress: () => canonicalRoochAddress,
functionIdToStirng: () => functionIdToStirng,
normalizeRoochAddress: () => normalizeRoochAddress,
parseFunctionId: () => parseFunctionId,
structTagToCanonicalString: () => structTagToCanonicalString,
structTagToObjectID: () => structTagToObjectID,
typeTagToCanonicalString: () => typeTagToCanonicalString,
typeTagToString: () => typeTagToString
});
module.exports = __toCommonJS(encode_exports);
var import_bytes = require("@ethersproject/bytes");
var import_sha3 = require("@noble/hashes/sha3");
var import_constants = require("../constants");
function functionIdToStirng(functionId) {
if (typeof functionId !== "string") {
if (functionId instanceof Object) {
return `${functionId.address}::${functionId.module}::${functionId.functionName}`;
}
}
return functionId;
}
function parseFunctionId(functionId) {
if (typeof functionId !== "string") {
return functionId;
}
const parts = functionId.split("::", 3);
if (parts.length !== 3) {
throw new Error(`cannot parse ${functionId} into FunctionId`);
}
return {
address: normalizeRoochAddress(parts[0]),
module: parts[1],
functionName: parts[2]
};
}
function normalizeRoochAddress(value, forceAdd0x = false) {
let address = value.toLowerCase();
if (!forceAdd0x && address.startsWith("0x")) {
address = address.slice(2);
}
return `0x${address.padStart(import_constants.ROOCH_ADDRESS_LENGTH, "0")}`;
}
function canonicalRoochAddress(value, forceAdd0x = false) {
let address = value.toLowerCase();
if (!forceAdd0x && address.startsWith("0x")) {
address = address.slice(2);
}
return `${address.padStart(import_constants.ROOCH_ADDRESS_LENGTH, "0")}`;
}
function typeTagToString(type_tag) {
if (typeof type_tag === "string") {
return type_tag;
}
if ("Vector" in type_tag) {
return `Vector<${typeTagToString(type_tag.Vector)}>`;
}
if ("Struct" in type_tag) {
const struct = type_tag.Struct;
let result = `${struct.address}::${struct.module}::${struct.name}`;
if (struct.type_params) {
const params = struct.type_params.map(typeTagToString).join(", ");
result += `<${params}>`;
}
return result;
}
throw new Error(`Unknown type tag: ${JSON.stringify(type_tag)}`);
}
function structTagToCanonicalString(structTag) {
let result = `${canonicalRoochAddress(structTag.address)}::${structTag.module}::${structTag.name}`;
if (structTag.type_params && structTag.type_params.length > 0) {
const typeParams = structTag.type_params.map(typeTagToCanonicalString).join(",");
result += `<${typeParams}>`;
}
return result;
}
function typeTagToCanonicalString(typeTag) {
if (typeof typeTag === "string") {
return typeTag.toLocaleLowerCase();
} else if ("Vector" in typeTag) {
return `vector<${typeTagToCanonicalString(typeTag.Vector)}>`;
} else if ("Struct" in typeTag) {
return structTagToCanonicalString(typeTag.Struct);
} else {
throw new Error(`Unknown TypeTag: ${JSON.stringify(typeTag)}`);
}
}
function structTagToObjectID(structTag) {
const canonicalString = structTagToCanonicalString(structTag);
const hash = (0, import_sha3.sha3_256)(canonicalString);
return (0, import_bytes.hexlify)(hash);
}
//# sourceMappingURL=encode.js.map