@rarible/types
Version:
`@rarible/types` is a TypeScript library that provides type definitions and interfaces for the Rarible ecosystem. This package is designed to facilitate seamless integration with Rarible's APIs and services, ensuring type safety and improved developer exp
53 lines (52 loc) • 1.81 kB
JavaScript
import { CustomError } from "@rarible/utils";
import { randomAptosAddress, toAptosAddress } from "../address/index.js";
import { randomAptosModuleName } from "../module/index.js";
export const aptosFunctionAddressRegexp = new RegExp(/^0x[a-fA-F0-9]{1,64}::[a-zA-Z_][a-zA-Z0-9_]*::[a-zA-Z_][a-zA-Z0-9_]*$/);
export function isAptosFunctionAddress(raw) {
return aptosFunctionAddressRegexp.test(raw);
}
export function toAptosFunctionAddress(raw) {
const parsed = toAptosFunctionAddressSafe(raw);
if (!parsed)
throw new InvalidAptosFunctionAddressError(raw);
return parsed;
}
export function toAptosFunctionAddressSafe(raw) {
if (isAptosFunctionAddress(raw))
return raw;
return undefined;
}
export function parseAptosFunctionAddress(str) {
const parsed = parseAptosFunctionAddressSafe(str);
if (!parsed)
throw new InvalidAptosFunctionAddressError(str);
return parsed;
}
export function parseAptosFunctionAddressSafe(str) {
const parsed = toAptosFunctionAddressSafe(str);
if (parsed) {
const [resource, moduleName, functionName] = parsed.split("::");
return {
resource: toAptosAddress(resource),
moduleName,
functionName,
};
}
return undefined;
}
export class InvalidAptosFunctionAddressError extends CustomError {
constructor(str) {
super(`Invalid Aptos function address - ${str}`);
}
}
/**
* Generates random Aptos function address
*
* @example 0xeeff357ea5c1a4e7bc11b2b17ff2dc2dcca69750bfef1e1ebcaccf8c8018175b::coin::swap
*/
export function randomAptosFunctionAddress() {
return `${randomAptosAddress()}::${randomAptosModuleName()}::${randomAptosFunctionName()}`;
}
export function randomAptosFunctionName() {
return randomAptosModuleName();
}