UNPKG

@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
"use strict"; 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; }