UNPKG

@yubing744/rooch-sdk

Version:
113 lines (112 loc) 4.16 kB
"use strict"; 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