@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
33 lines (32 loc) • 1.47 kB
JavaScript
import { InvalidAddressError } from "../../common/address.js";
import { createLayer1fulValidator } from "../../common/common.js";
import { BlockchainLayer1Enum } from "../../union/enum/domain.js";
// Solana addresses are usually Base58 encoded strings.
// Regular expression to validate a Solana address.
const solanaAddressRegExp = new RegExp(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/);
export function isSolanaAddress(address) {
return solanaAddressRegExp.test(address);
}
export const solanaAddressValidator = createLayer1fulValidator(BlockchainLayer1Enum.SOLANA, isSolanaAddress);
export function toSolanaAddress(address) {
const safe = toSolanaAddressSafe(address);
if (!safe)
throw new InvalidAddressError(BlockchainLayer1Enum.SOLANA, address);
return safe;
}
export function toSolanaAddressSafe(address) {
if (isSolanaAddress(address))
return address;
return undefined;
}
export const SOLANA_ZERO_ADDRESS = toSolanaAddress("11111111111111111111111111111111");
export function randomSolanaAddress() {
const base58Chars = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
const addressLength = Math.floor(Math.random() * (44 - 32 + 1)) + 32; // Random length between 32 and 44
let address = "";
for (let i = 0; i < addressLength; i++) {
const randomIndex = Math.floor(Math.random() * base58Chars.length);
address += base58Chars[randomIndex];
}
return toSolanaAddress(address);
}