UNPKG

@algonameservice/sdk

Version:

JavaScript SDK to resolve ANS .algo names

37 lines (34 loc) 972 B
import algosdk from "algosdk"; import { ALLOWED_TLDS, ASCII_CODES } from "./constants.js"; import { InvalidNameError } from "./errors.js"; export function isValidAddress(address: string): boolean { return algosdk.isValidAddress(address); } export function normalizeName(name: string): string { const tld: string = name.split(".").pop() as string; if (!ALLOWED_TLDS.includes(tld)) { throw new Error("TLD not supported"); } name = name.split(".")[0].toLowerCase(); const lengthOfName = name.length; if (lengthOfName > 64) { throw new InvalidNameError(); } for (let i = 0; i < lengthOfName; i++) { if ( !( name.charCodeAt(i) >= ASCII_CODES.ASCII_0 && name.charCodeAt(i) <= ASCII_CODES.ASCII_9 ) ) { if ( !( name.charCodeAt(i) >= ASCII_CODES.ASCII_A && name.charCodeAt(i) <= ASCII_CODES.ASCII_Z ) ) throw new InvalidNameError(); } } return name; }