@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
56 lines (55 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomFlowContractAddress = exports.toFlowContractAddressSafe = exports.toFlowContractAddress = exports.flowContractAddressValidator = exports.isFlowContractAddress = exports.flowContractRegExp = void 0;
const contract_address_js_1 = require("../../common/contract-address.js");
const common_js_1 = require("../../common/common.js");
const domain_js_1 = require("../../union/enum/domain.js");
// example: A.0x01658d9b94068f3c.CommonNFT
exports.flowContractRegExp = new RegExp(/^A\.0*x*[0-9a-f]{16}\.[0-9A-Za-z_]{3,}/);
function isFlowContractAddress(raw) {
return exports.flowContractRegExp.test(raw);
}
exports.isFlowContractAddress = isFlowContractAddress;
exports.flowContractAddressValidator = (0, common_js_1.createLayer1fulValidator)(domain_js_1.BlockchainLayer1Enum.FLOW, isFlowContractAddress);
function toFlowContractAddress(value) {
const safe = toFlowContractAddressSafe(value);
if (!safe)
throw new contract_address_js_1.InvalidContractAddressError(domain_js_1.BlockchainLayer1Enum.FLOW, value);
return safe;
}
exports.toFlowContractAddress = toFlowContractAddress;
function toFlowContractAddressSafe(raw) {
if (isFlowContractAddress(raw))
return raw;
return undefined;
}
exports.toFlowContractAddressSafe = toFlowContractAddressSafe;
function randomFlowContractAddress(contractName = generateRandomContractName()) {
// Function to generate a random hexadecimal character
function getRandomHexChar() {
const hexChars = "0123456789abcdef";
return hexChars[Math.floor(Math.random() * hexChars.length)];
}
// Generate a 16-character hexadecimal string
let hexString = "";
for (let i = 0; i < 16; i++) {
hexString += getRandomHexChar();
}
// Construct the full contract address
return toFlowContractAddress(`A.0x${hexString}.${contractName}`);
}
exports.randomFlowContractAddress = randomFlowContractAddress;
function generateRandomContractName() {
// Function to generate a random alphanumeric character
function getRandomAlphaNumChar() {
const alphaNumChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
return alphaNumChars[Math.floor(Math.random() * alphaNumChars.length)];
}
// Generate a random contract name of a variable length between 3 and 10 characters
let contractName = "";
const contractNameLength = Math.floor(Math.random() * 8) + 3; // Length between 3 and 10
for (let i = 0; i < contractNameLength; i++) {
contractName += getRandomAlphaNumChar();
}
return contractName;
}