A comprehensive registry of blockchain providers and networks with programmatic access to check provider-chain compatibility and endpoint construction.
- Provider Registry: Comprehensive list of blockchain providers (Infura, Alchemy, QuickNode, etc.)
- Network Support: Extensive network coverage including Ethereum, Polygon, Arbitrum, and more
- Type Safety: Full TypeScript support with literal types for better IDE suggestions
- Runtime Validation: Valibot schemas for runtime JSON validation
- Endpoint Construction: Automatic endpoint URL generation with API key substitution
- Provider Compatibility: Check which providers support specific networks
- Testing Infrastructure: Built-in endpoint testing with performance metrics
npm install @bastiencodes/registryimport { Registry } from "@bastiencodes/registry";
// Use the default registry instance
const registry = Registry.default;
// Get all supported networks
const networks = registry.getNetworks();
// Get all providers
const providers = registry.getProviders();
// Check if a provider supports a specific network
const isSupported = registry.isNetworkSupported("ethereum", "infura");
// Get endpoint for a provider-network combination
const endpoint = registry.getEndpoint("ethereum", "infura", "YOUR_API_KEY");import { Registry } from "@bastiencodes/registry";
const registry = Registry.default;
// Get all Ethereum networks
const ethereumNetworks = registry.getNetworksByChain("ethereum");
// Get all providers that support Polygon
const polygonProviders = registry.getProvidersByNetwork("polygon");
// Construct endpoint URL
const endpoint = registry.getEndpoint("arbitrum", "alchemy", "your-api-key");
// Returns: https://arb-mainnet.g.alchemy.com/v2/your-api-keyimport { Registry } from "@bastiencodes/registry";
import networks from "@bastiencodes/registry/networks.json";
import providers from "@bastiencodes/registry/providers.json";
// Create custom registry with your own networks and providers
const customRegistry = new Registry({
networks,
providers,
});import {
Registry,
networkSchema,
providerSchema,
} from "@bastiencodes/registry";
// Validate networks data
const networksResult = networkSchema.safeParse(networksData);
if (!networksResult.success) {
console.error("Invalid networks data:", networksResult.error);
}
// Validate provider data
const providerResult = providerSchema.safeParse(providerData);
if (!providerResult.success) {
console.error("Invalid provider data:", providerResult.error);
}new Registry({ networks, providers });getNetworks(): Get all networksgetProviders(): Get all providersgetNetwork(id): Get a specific network by IDgetProvider(id): Get a specific provider by IDisNetworkSupported(networkId, providerId): Check if provider supports networkgetEndpoint(networkId, providerId, apiKey): Get endpoint URLgetNetworksByChain(chainId): Get all networks for a chaingetProvidersByNetwork(networkId): Get all providers supporting a network
NetworkId: Literal type for network identifiersProviderId: Literal type for provider identifiersNetwork: Network configuration interfaceProvider: Provider configuration interfaceEndpointConfig: Endpoint configuration interface
The package includes a comprehensive testing script to verify endpoint connectivity:
# Run endpoint tests (requires .env file with API keys)
bun run test:endpoints
# Or run directly
bun run tests/test-endpoints.tsCreate a .env file based on env.template with your API keys:
# Required API keys for testing
INFURA_API_KEY=your_infura_key
ALCHEMY_API_KEY=your_alchemy_key
QUICKNODE_API_KEY=your_quicknode_key
THIRDWEB_API_KEY=your_thirdweb_key
BLAST_API_KEY=your_blast_key
DRPC_API_KEY=your_drpc_key
TENDERLY_API_KEY=your_tenderly_key- Infura: Ethereum, Polygon, Arbitrum, Optimism, Base, and more
- Alchemy: Ethereum, Polygon, Arbitrum, Optimism, Base, and more
- QuickNode: Ethereum, Polygon, Arbitrum, Optimism, Base, Bitcoin, Solana
- ThirdWeb: Ethereum, Polygon, Arbitrum, Optimism, Base, Bitcoin, Solana
- Blast: Ethereum, Polygon, Arbitrum, Optimism, Base
- dRPC: Ethereum, Polygon, Arbitrum, Optimism, Base, Bitcoin, Solana
- Tenderly: Ethereum, Polygon, Arbitrum, Optimism, Base, Bitcoin, Solana
The registry includes 50+ networks across multiple chains:
- Ethereum: Mainnet, Goerli, Sepolia
- Polygon: Mainnet, Mumbai
- Arbitrum: One, Nova, Sepolia
- Optimism: Mainnet, Sepolia
- Base: Mainnet, Sepolia
- BSC: Mainnet, Testnet
- Avalanche: C-Chain, Fuji
- Fantom: Opera, Testnet
- Celo: Mainnet, Alfajores
- Gnosis: Mainnet, Chiado
- And many more...
# Install dependencies
bun install
# Build the package
bun run build
# Run tests
bun run test
# Run endpoint tests
bun run test:endpointsMIT