@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
71 lines (70 loc) • 3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomAptosModuleName = exports.randomAptosModuleAddress = exports.InvalidAptosModuleAddressError = exports.parseAptosModuleAddressSafe = exports.parseAptosModuleAddress = exports.toAptosModuleAddressSafe = exports.toAptosModuleAddress = exports.isAptosModuleAddress = exports.aptosModuleAddressRegexp = void 0;
const utils_1 = require("@rarible/utils");
const index_js_1 = require("../address/index.js");
exports.aptosModuleAddressRegexp = new RegExp(/^0x[a-fA-F0-9]{1,64}::[a-zA-Z_][a-zA-Z0-9_]*$/);
function isAptosModuleAddress(raw) {
return exports.aptosModuleAddressRegexp.test(raw);
}
exports.isAptosModuleAddress = isAptosModuleAddress;
function toAptosModuleAddress(raw) {
const parsed = toAptosModuleAddressSafe(raw);
if (!parsed)
throw new InvalidAptosModuleAddressError(raw);
return parsed;
}
exports.toAptosModuleAddress = toAptosModuleAddress;
function toAptosModuleAddressSafe(raw) {
if (isAptosModuleAddress(raw))
return raw;
return undefined;
}
exports.toAptosModuleAddressSafe = toAptosModuleAddressSafe;
function parseAptosModuleAddress(str) {
const parsed = parseAptosModuleAddressSafe(str);
if (!parsed)
throw new InvalidAptosModuleAddressError(str);
return parsed;
}
exports.parseAptosModuleAddress = parseAptosModuleAddress;
function parseAptosModuleAddressSafe(str) {
const parsed = toAptosModuleAddressSafe(str);
if (parsed) {
const [resource, name] = parsed.split("::");
return {
resource: (0, index_js_1.toAptosAddress)(resource),
moduleName: name,
};
}
return undefined;
}
exports.parseAptosModuleAddressSafe = parseAptosModuleAddressSafe;
class InvalidAptosModuleAddressError extends utils_1.CustomError {
constructor(str) {
super(`Invalid Aptos module address - ${str}`);
}
}
exports.InvalidAptosModuleAddressError = InvalidAptosModuleAddressError;
/**
* Generates random Aptos address
*
* @example 0xeeff357ea5c1a4e7bc11b2b17ff2dc2dcca69750bfef1e1ebcaccf8c8018175b::coin
*/
function randomAptosModuleAddress() {
return `${(0, index_js_1.randomAptosAddress)()}::${randomAptosModuleName()}`;
}
exports.randomAptosModuleAddress = randomAptosModuleAddress;
function randomAptosModuleName() {
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const alphanumeric = letters + "0123456789_";
// The first character should be a letter or underscore
let moduleName = letters.charAt(Math.floor(Math.random() * letters.length));
// Generate the rest of the module name with a random length between 1 and 20
const length = Math.floor(Math.random() * 19) + 1; // 1 to 20 characters long
for (let i = 0; i < length; i++) {
moduleName += alphanumeric.charAt(Math.floor(Math.random() * alphanumeric.length));
}
return moduleName;
}
exports.randomAptosModuleName = randomAptosModuleName;