You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
804 B
23 lines
804 B
import { LruMap } from '../lru.js';
|
|
import { checksumAddress } from './getAddress.js';
|
|
const addressRegex = /^0x[a-fA-F0-9]{40}$/;
|
|
/** @internal */
|
|
export const isAddressCache = /*#__PURE__*/ new LruMap(8192);
|
|
export function isAddress(address, options) {
|
|
const { strict = true } = options ?? {};
|
|
const cacheKey = `${address}.${strict}`;
|
|
if (isAddressCache.has(cacheKey))
|
|
return isAddressCache.get(cacheKey);
|
|
const result = (() => {
|
|
if (!addressRegex.test(address))
|
|
return false;
|
|
if (address.toLowerCase() === address)
|
|
return true;
|
|
if (strict)
|
|
return checksumAddress(address) === address;
|
|
return true;
|
|
})();
|
|
isAddressCache.set(cacheKey, result);
|
|
return result;
|
|
}
|
|
//# sourceMappingURL=isAddress.js.map
|