@chez14/rdap-sdk
v0.2.0
Published
A TypeScript SDK for RDAP.net. Directly calls RDAP APIs from RDAP.net as the main RDAP Server Database.
Readme
RDAP.net SDK
A TypeScript SDK for RDAP.net. Directly calls RDAP APIs from RDAP.net as the main RDAP Server Database.
Support RDAP.net/RDAP.org here: https://about.rdap.org/
References:
- API Usage:
https://www.openrdap.org/api
Installation
# Using pnpm
pnpm add @chez14/rdap-sdk
# Using npm
npm install @chez14/rdap-sdk
# Using yarn
yarn add @chez14/rdap-sdkUsage
import { RdapClient } from '@chez14/rdap-sdk';
// Create a client
const client = new RdapClient();
// Query domain information
const domain = await client.domain('example.com');
console.log(domain.ldhName);
// Query internationalized domain name (IDN)
const idn = await client.domain('münchen.de');
console.log(idn.ldhName); // Automatically converts to punycode
// Query IP information
const ip = await client.ip('8.8.8.8');
console.log(ip.name);
// Query IP network (CIDR notation)
const network = await client.ip('2001:db8::1/128');
console.log(network.startAddress, network.endAddress);
// Query ASN information
const asn = await client.autnum(174);
console.log(asn.name);
// Use custom base domain (default is www.rdap.net)
const customClient = new RdapClient({
baseDomain: 'custom.rdap.example.com'
});Advanced Usage
Custom Fetcher Implementation
You can provide your own fetcher implementation to customize how HTTP requests are made. This is useful for:
- Adding custom headers
- Implementing custom retry logic
- Using different HTTP clients
- Adding request/response interceptors
- Custom error handling
import { RdapClient, Fetcher } from '@chez14/rdap-sdk';
// Define your custom types
interface CustomHeaders {
Accept: string;
'User-Agent': string;
}
// Implement a typed fetcher
class CustomFetcher implements Fetcher {
constructor(private userAgent: string) {}
// Your implementation here
}
// Use your custom fetcher
const client = new RdapClient({
fetcher: new CustomFetcher('MyApp/1.0 (https://example.com)'),
});Type Safety
The SDK is fully typed and provides interfaces for customizing request behavior. You can implement your own fetcher with custom types:
The SDK exports these key types for customization:
HttpMethod: Supported HTTP methods ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH')FetchOptions: Request configuration including method, URL, body, and headersFetchResponse: Standardized response format with status, data, and headersFetcher: Interface for implementing custom HTTP clients
Response types:
DomainResponse: Type for domain query responsesIpNetworkResponse: Type for IP network query responsesAutonomousSystemResponse: Type for ASN query responses
For type safety, we recommend:
- Define interfaces for your request and response data
- Use TypeScript's strict mode
- Avoid using
unknownoranytypes in your implementations
Development
# Install dependencies
pnpm install
# Build
pnpm build
# Run tests
pnpm test
# Lint
pnpm lintLicense
MIT
