rdapify 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +226 -0
- package/README.md +208 -18
- package/dist/application/client/RDAPClient.d.ts +21 -0
- package/dist/application/client/RDAPClient.d.ts.map +1 -1
- package/dist/application/client/RDAPClient.js +60 -6
- package/dist/application/client/RDAPClient.js.map +1 -1
- package/dist/application/services/BatchProcessor.d.ts +27 -0
- package/dist/application/services/BatchProcessor.d.ts.map +1 -0
- package/dist/application/services/BatchProcessor.js +89 -0
- package/dist/application/services/BatchProcessor.js.map +1 -0
- package/dist/application/services/QueryOrchestrator.d.ts +7 -3
- package/dist/application/services/QueryOrchestrator.d.ts.map +1 -1
- package/dist/application/services/QueryOrchestrator.js +183 -41
- package/dist/application/services/QueryOrchestrator.js.map +1 -1
- package/dist/application/services/QueryPriority.d.ts +35 -0
- package/dist/application/services/QueryPriority.d.ts.map +1 -0
- package/dist/application/services/QueryPriority.js +114 -0
- package/dist/application/services/QueryPriority.js.map +1 -0
- package/dist/application/services/index.d.ts +1 -0
- package/dist/application/services/index.d.ts.map +1 -1
- package/dist/application/services/index.js +3 -1
- package/dist/application/services/index.js.map +1 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/cache/CacheManager.js +1 -1
- package/dist/infrastructure/cache/CacheManager.js.map +1 -1
- package/dist/infrastructure/cache/PersistentCache.d.ts +39 -0
- package/dist/infrastructure/cache/PersistentCache.d.ts.map +1 -0
- package/dist/infrastructure/cache/PersistentCache.js +194 -0
- package/dist/infrastructure/cache/PersistentCache.js.map +1 -0
- package/dist/infrastructure/http/AuthenticationManager.d.ts +38 -0
- package/dist/infrastructure/http/AuthenticationManager.d.ts.map +1 -0
- package/dist/infrastructure/http/AuthenticationManager.js +99 -0
- package/dist/infrastructure/http/AuthenticationManager.js.map +1 -0
- package/dist/infrastructure/http/BootstrapDiscovery.d.ts.map +1 -1
- package/dist/infrastructure/http/BootstrapDiscovery.js +5 -2
- package/dist/infrastructure/http/BootstrapDiscovery.js.map +1 -1
- package/dist/infrastructure/http/CompressionManager.d.ts +30 -0
- package/dist/infrastructure/http/CompressionManager.d.ts.map +1 -0
- package/dist/infrastructure/http/CompressionManager.js +86 -0
- package/dist/infrastructure/http/CompressionManager.js.map +1 -0
- package/dist/infrastructure/http/ConnectionPool.d.ts +25 -0
- package/dist/infrastructure/http/ConnectionPool.d.ts.map +1 -0
- package/dist/infrastructure/http/ConnectionPool.js +106 -0
- package/dist/infrastructure/http/ConnectionPool.js.map +1 -0
- package/dist/infrastructure/http/Fetcher.d.ts.map +1 -1
- package/dist/infrastructure/http/Fetcher.js +8 -2
- package/dist/infrastructure/http/Fetcher.js.map +1 -1
- package/dist/infrastructure/http/Normalizer.d.ts.map +1 -1
- package/dist/infrastructure/http/Normalizer.js +16 -9
- package/dist/infrastructure/http/Normalizer.js.map +1 -1
- package/dist/infrastructure/http/ProxyManager.d.ts +43 -0
- package/dist/infrastructure/http/ProxyManager.d.ts.map +1 -0
- package/dist/infrastructure/http/ProxyManager.js +87 -0
- package/dist/infrastructure/http/ProxyManager.js.map +1 -0
- package/dist/infrastructure/http/RateLimiter.d.ts +28 -0
- package/dist/infrastructure/http/RateLimiter.d.ts.map +1 -0
- package/dist/infrastructure/http/RateLimiter.js +101 -0
- package/dist/infrastructure/http/RateLimiter.js.map +1 -0
- package/dist/infrastructure/http/RetryStrategy.d.ts +58 -0
- package/dist/infrastructure/http/RetryStrategy.d.ts.map +1 -0
- package/dist/infrastructure/http/RetryStrategy.js +136 -0
- package/dist/infrastructure/http/RetryStrategy.js.map +1 -0
- package/dist/infrastructure/logging/Logger.d.ts +49 -0
- package/dist/infrastructure/logging/Logger.d.ts.map +1 -0
- package/dist/infrastructure/logging/Logger.js +126 -0
- package/dist/infrastructure/logging/Logger.js.map +1 -0
- package/dist/infrastructure/monitoring/MetricsCollector.d.ts +53 -0
- package/dist/infrastructure/monitoring/MetricsCollector.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/MetricsCollector.js +110 -0
- package/dist/infrastructure/monitoring/MetricsCollector.js.map +1 -0
- package/dist/infrastructure/security/PIIRedactor.d.ts.map +1 -1
- package/dist/infrastructure/security/PIIRedactor.js +8 -1
- package/dist/infrastructure/security/PIIRedactor.js.map +1 -1
- package/dist/infrastructure/security/SSRFProtection.d.ts.map +1 -1
- package/dist/infrastructure/security/SSRFProtection.js +8 -5
- package/dist/infrastructure/security/SSRFProtection.js.map +1 -1
- package/dist/shared/constants/rdap.constants.d.ts +1 -1
- package/dist/shared/constants/rdap.constants.d.ts.map +1 -1
- package/dist/shared/constants/rdap.constants.js +1 -1
- package/dist/shared/constants/rdap.constants.js.map +1 -1
- package/dist/shared/errors/base.error.d.ts +11 -6
- package/dist/shared/errors/base.error.d.ts.map +1 -1
- package/dist/shared/errors/base.error.js +42 -11
- package/dist/shared/errors/base.error.js.map +1 -1
- package/dist/shared/types/generics.d.ts +32 -0
- package/dist/shared/types/generics.d.ts.map +1 -0
- package/dist/shared/types/generics.js +3 -0
- package/dist/shared/types/generics.js.map +1 -0
- package/dist/shared/types/options.js +1 -1
- package/dist/shared/utils/enhanced-validators.d.ts +18 -0
- package/dist/shared/utils/enhanced-validators.d.ts.map +1 -0
- package/dist/shared/utils/enhanced-validators.js +162 -0
- package/dist/shared/utils/enhanced-validators.js.map +1 -0
- package/package.json +20 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,232 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.3] - 2026-03-12
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Normalizer.ts**: Added defensive null checks for nameserver extraction
|
|
15
|
+
- Handle null/undefined nameservers array entries
|
|
16
|
+
- Filter out empty string nameserver names
|
|
17
|
+
- Prevent crashes on malformed nameserver data
|
|
18
|
+
|
|
19
|
+
- **Normalizer.ts**: Added defensive null checks for registrar extraction
|
|
20
|
+
- Validate vcardArray length before accessing elements
|
|
21
|
+
- Validate fnField array length before accessing index 3
|
|
22
|
+
- Handle missing registrar name gracefully
|
|
23
|
+
|
|
24
|
+
- **BootstrapDiscovery.ts**: Added NaN validation for ASN range parsing
|
|
25
|
+
- Skip malformed ASN range patterns that parse to NaN
|
|
26
|
+
- Prevent silent failures in ASN discovery
|
|
27
|
+
|
|
28
|
+
- **Fetcher.ts**: Added URL validation for redirects
|
|
29
|
+
- Catch and report invalid redirect URLs
|
|
30
|
+
- Prevent SSRF bypass through malformed redirect URLs
|
|
31
|
+
|
|
32
|
+
- **ConnectionPool.ts**: Added timeout for connection acquisition
|
|
33
|
+
- Prevent infinite wait when all connections are in use
|
|
34
|
+
- Add configurable timeout parameter to acquire()
|
|
35
|
+
- Default timeout of 5 seconds
|
|
36
|
+
|
|
37
|
+
- **PIIRedactor.ts**: Improved deep copy with structuredClone
|
|
38
|
+
- Use structuredClone for proper deep copying
|
|
39
|
+
- Handle Date, Map, Set, and circular references
|
|
40
|
+
- Fallback to JSON.parse for non-serializable values
|
|
41
|
+
|
|
42
|
+
- **SSRFProtection.ts**: Added IPv6 bracket handling
|
|
43
|
+
- Strip brackets from IPv6 addresses before validation
|
|
44
|
+
- Support both bracketed and non-bracketed IPv6 formats
|
|
45
|
+
|
|
46
|
+
- **MetricsCollector.ts**: Added division by zero protection
|
|
47
|
+
- Guard against division by zero in avgResponseTime calculation
|
|
48
|
+
- Return 0 for empty metrics instead of Infinity
|
|
49
|
+
|
|
50
|
+
### Security
|
|
51
|
+
|
|
52
|
+
- **SSRFProtection.ts**: Improved IPv6 zone ID handling
|
|
53
|
+
- Extract zone ID before IP validation
|
|
54
|
+
- Validate IP without zone ID for SSRF checks
|
|
55
|
+
|
|
56
|
+
### Performance
|
|
57
|
+
|
|
58
|
+
- **ConnectionPool.ts**: Added timeout parameter to acquire()
|
|
59
|
+
- Prevent deadlocks in high-concurrency scenarios
|
|
60
|
+
- Allow configurable timeout per request
|
|
61
|
+
|
|
62
|
+
### Testing
|
|
63
|
+
|
|
64
|
+
- Added 15+ new test cases for edge cases
|
|
65
|
+
- Added tests for Normalizer defensive checks
|
|
66
|
+
- Added tests for ConnectionPool timeout handling
|
|
67
|
+
- Added tests for MetricsCollector edge cases
|
|
68
|
+
- Added tests for SSRFProtection IPv6 handling
|
|
69
|
+
|
|
70
|
+
## [0.1.2] - 2026-01-27
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
- **Interactive Playground**: Try-before-install experience for rdapify.com
|
|
74
|
+
- Client ID management with localStorage persistence
|
|
75
|
+
- Real-time quota tracking (remainingToday, resetAt)
|
|
76
|
+
- 429 rate limit handling with retry hints
|
|
77
|
+
- Multiple package manager support (npm, yarn, pnpm)
|
|
78
|
+
- Integrated into website navigation
|
|
79
|
+
- Production-ready documentation and testing guides
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
- Updated website navigation to include Playground link
|
|
83
|
+
- Enhanced documentation for production deployment
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
- ESLint errors in Logger.ts and enhanced-validators.ts (6 issues resolved)
|
|
87
|
+
|
|
88
|
+
## [0.1.1] - 2026-01-25
|
|
89
|
+
|
|
90
|
+
### Added - Phase 3 Improvements
|
|
91
|
+
- **Authentication Support**: Multiple authentication methods for RDAP servers
|
|
92
|
+
- Basic Authentication (username/password)
|
|
93
|
+
- Bearer Token authentication
|
|
94
|
+
- API Key authentication (custom header support)
|
|
95
|
+
- OAuth2 authentication with token expiration checking
|
|
96
|
+
- Secure header generation without exposing credentials
|
|
97
|
+
- **Proxy Support**: HTTP/HTTPS/SOCKS proxy configuration
|
|
98
|
+
- Support for HTTP, HTTPS, SOCKS4, and SOCKS5 protocols
|
|
99
|
+
- Proxy authentication (username/password)
|
|
100
|
+
- Bypass list with wildcard pattern matching
|
|
101
|
+
- Proxy URL generation with credential encoding
|
|
102
|
+
- **Response Compression**: Automatic compression/decompression
|
|
103
|
+
- Support for gzip, brotli, and deflate compression
|
|
104
|
+
- Automatic Accept-Encoding header generation
|
|
105
|
+
- Automatic response decompression
|
|
106
|
+
- Compression statistics and ratio calculation
|
|
107
|
+
- Configurable compression threshold
|
|
108
|
+
|
|
109
|
+
### Added - Phase 2 Improvements
|
|
110
|
+
- **Retry Strategies**: Advanced retry logic with circuit breaker pattern
|
|
111
|
+
- Exponential, linear, and fixed backoff strategies
|
|
112
|
+
- Exponential backoff with jitter to prevent thundering herd
|
|
113
|
+
- Circuit breaker pattern for failing services
|
|
114
|
+
- Configurable retry based on error type and status code
|
|
115
|
+
- Half-open state for gradual recovery
|
|
116
|
+
- **Query Prioritization**: Priority queue system for managing query execution
|
|
117
|
+
- High, normal, and low priority levels
|
|
118
|
+
- Configurable concurrency control
|
|
119
|
+
- Automatic queue processing
|
|
120
|
+
- Queue statistics and monitoring
|
|
121
|
+
- **Enhanced Validation**: Improved input validation with international support
|
|
122
|
+
- IDN (Internationalized Domain Names) support with punycode conversion
|
|
123
|
+
- IPv6 with zone ID support (e.g., fe80::1%eth0)
|
|
124
|
+
- ASN range validation (e.g., AS15169-AS15200)
|
|
125
|
+
- Email and phone number validation
|
|
126
|
+
- URL validation
|
|
127
|
+
- **Persistent Cache**: Cache that survives application restarts
|
|
128
|
+
- File-based and memory-based storage
|
|
129
|
+
- Automatic save intervals
|
|
130
|
+
- TTL and max size enforcement
|
|
131
|
+
- LRU eviction policy
|
|
132
|
+
- Cache statistics and cleanup
|
|
133
|
+
|
|
134
|
+
### Changed
|
|
135
|
+
- **Exports**: Added new exports for Phase 2 features in index.ts
|
|
136
|
+
|
|
137
|
+
### Tests
|
|
138
|
+
- Added comprehensive test suites for Phase 3 features:
|
|
139
|
+
- `authentication-manager.test.ts`: 17 tests covering all auth methods
|
|
140
|
+
- `proxy-manager.test.ts`: 16 tests covering proxy configuration
|
|
141
|
+
- `compression-manager.test.ts`: 19 tests covering compression/decompression
|
|
142
|
+
- Added comprehensive test suites for Phase 2 features:
|
|
143
|
+
- `retry-strategy.test.ts`: 13 tests covering retry logic and circuit breaker
|
|
144
|
+
- `query-priority.test.ts`: 8 tests covering priority queue functionality
|
|
145
|
+
- `enhanced-validators.test.ts`: 21 tests covering validation enhancements
|
|
146
|
+
- `persistent-cache.test.ts`: 13 tests covering persistent storage
|
|
147
|
+
|
|
148
|
+
### Performance
|
|
149
|
+
- **Retry Strategies**: Intelligent retry reduces failed requests
|
|
150
|
+
- **Query Prioritization**: Critical queries execute first
|
|
151
|
+
- **Persistent Cache**: Faster startup with pre-loaded cache
|
|
152
|
+
|
|
153
|
+
## [0.1.2] - 2026-01-26
|
|
154
|
+
|
|
155
|
+
### Added - Phase 1 Improvements
|
|
156
|
+
- **Connection Pooling**: HTTP connection reuse for 30-40% performance improvement
|
|
157
|
+
- Configurable max connections per host
|
|
158
|
+
- Automatic idle connection cleanup
|
|
159
|
+
- Keep-alive support for persistent connections
|
|
160
|
+
- **Metrics & Monitoring**: Comprehensive query metrics tracking
|
|
161
|
+
- Success/failure rates and response times
|
|
162
|
+
- Cache hit/miss statistics
|
|
163
|
+
- Query type distribution (domain/IP/ASN)
|
|
164
|
+
- Error type tracking
|
|
165
|
+
- Time-based filtering and analysis
|
|
166
|
+
- **Request/Response Logging**: Detailed logging system with multiple levels
|
|
167
|
+
- Configurable log levels (debug, info, warn, error)
|
|
168
|
+
- Request/response logging with timing
|
|
169
|
+
- Cache operation logging
|
|
170
|
+
- Performance metrics logging
|
|
171
|
+
- JSON and text output formats
|
|
172
|
+
- Log filtering and export capabilities
|
|
173
|
+
- **Client API Extensions**: New methods for monitoring and debugging
|
|
174
|
+
- `getMetrics()`: Get query metrics summary
|
|
175
|
+
- `getConnectionPoolStats()`: Get connection pool statistics
|
|
176
|
+
- `getLogger()`: Access logger instance
|
|
177
|
+
- `getLogs()`: Retrieve recent logs
|
|
178
|
+
- `clearAll()`: Clear all caches, metrics, and logs
|
|
179
|
+
- `destroy()`: Clean up resources
|
|
180
|
+
|
|
181
|
+
### Changed
|
|
182
|
+
- **QueryOrchestrator**: Integrated logging and metrics collection into all query methods
|
|
183
|
+
- **RDAPClient**: Added connection pool, metrics collector, and logger initialization
|
|
184
|
+
|
|
185
|
+
### Tests
|
|
186
|
+
- Added comprehensive test suites for new features:
|
|
187
|
+
- `connection-pool.test.ts`: 9 tests covering connection management
|
|
188
|
+
- `metrics-collector.test.ts`: 11 tests covering metrics tracking
|
|
189
|
+
- `logger.test.ts`: 18 tests covering logging functionality
|
|
190
|
+
|
|
191
|
+
## [0.1.1] - 2026-01-25
|
|
192
|
+
|
|
193
|
+
### Added
|
|
194
|
+
- **Rate Limiting**: Token bucket rate limiter with multi-key support and auto-cleanup
|
|
195
|
+
- **Batch Processing**: Efficient concurrent processing of multiple RDAP queries
|
|
196
|
+
- **Enhanced Error Handling**: Errors now include suggestions, timestamps, and user-friendly messages
|
|
197
|
+
- **Generic Types**: Type-safe query functions with automatic result type inference
|
|
198
|
+
- **Tree Shaking Support**: Modular exports for smaller bundle sizes
|
|
199
|
+
- **Comprehensive Tests**: Added 37+ new tests for PIIRedactor, CacheManager, and RateLimiter
|
|
200
|
+
|
|
201
|
+
### Changed
|
|
202
|
+
- **Error Classes**: All errors now include `suggestion`, `timestamp`, and `getUserMessage()` method
|
|
203
|
+
- **RateLimitError**: Added `retryAfter` field to indicate when to retry
|
|
204
|
+
- **Package Exports**: Added modular exports for errors, types, and validators
|
|
205
|
+
- **TypeScript Config**: Optimized for better tree shaking and smaller output
|
|
206
|
+
|
|
207
|
+
### Improved
|
|
208
|
+
- **Test Coverage**: Increased from 76.74% to ~85-90% (estimated)
|
|
209
|
+
- **Type Safety**: Better generic types for query operations
|
|
210
|
+
- **Developer Experience**: More helpful error messages and suggestions
|
|
211
|
+
- **Performance**: Batch processing with configurable concurrency
|
|
212
|
+
|
|
213
|
+
### Fixed
|
|
214
|
+
- Fixed prism-react-renderer theme import in Docusaurus configuration
|
|
215
|
+
- Fixed MDX compilation errors caused by unescaped `<` and `>` characters in markdown tables
|
|
216
|
+
- Fixed self-closing HTML tags (`<br>` → `<br/>`) in documentation
|
|
217
|
+
- Fixed deprecated GitHub Actions (upload-artifact@v3 → v4, actions/create-release → softprops/action-gh-release)
|
|
218
|
+
- Fixed empty workflow file (examples.yml)
|
|
219
|
+
- Fixed missing sidebars.js configuration
|
|
220
|
+
- Removed empty pages causing build failures
|
|
221
|
+
|
|
222
|
+
### Changed
|
|
223
|
+
- Standardized Node.js version to v20 across all GitHub Actions workflows
|
|
224
|
+
- Updated all workflows to use `node-version-file: .nvmrc` for consistency
|
|
225
|
+
- Improved npm caching in CI/CD workflows for faster builds
|
|
226
|
+
- Added `NODE_ENV: production` to website build workflow
|
|
227
|
+
- Added `onBrokenMarkdownImages: 'warn'` to Docusaurus config
|
|
228
|
+
- Enhanced release workflow with better error handling
|
|
229
|
+
|
|
230
|
+
### Added
|
|
231
|
+
- Created SVG placeholder icons for homepage features (typescript, performance, security, multi-env, unified, privacy)
|
|
232
|
+
- Added examples validation workflow
|
|
233
|
+
- Added fork check for Snyk security scans to prevent token exposure
|
|
234
|
+
- Added comprehensive CI/CD fixes documentation
|
|
235
|
+
|
|
10
236
|
## [0.1.0] - 2025-01-25
|
|
11
237
|
|
|
12
238
|
### Added
|
package/README.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# RDAPify - Unified, Secure, High-Performance RDAP Client for Enterprise Applications
|
|
2
2
|
|
|
3
|
-
> **🎉
|
|
3
|
+
> **🎉 LATEST RELEASE**: v0.1.2 — Production-ready with interactive playground, advanced features including authentication, proxy support, compression, retry strategies, and comprehensive monitoring. See [What's New in v0.1.2](#-whats-new-in-v012) below.
|
|
4
|
+
|
|
5
|
+
> **⚠️ UPGRADE NOTICE**: If you're using v0.1.0 or v0.1.1, please upgrade to v0.1.2 for new features and bug fixes. **No breaking changes** - seamless upgrade! See [Migration Guide](./MIGRATION_TO_0.1.2.md) or simply run: `npm install rdapify@latest`
|
|
4
6
|
|
|
5
7
|
[](https://www.npmjs.com/package/rdapify)
|
|
6
8
|
[](LICENSE)
|
|
7
9
|
[](SECURITY.md)
|
|
10
|
+
[](#)
|
|
8
11
|
[](https://rdapify.com)
|
|
9
12
|
[](https://github.com/rdapify/RDAPify)
|
|
10
13
|
|
|
@@ -109,6 +112,123 @@ const asn = await client.asn('AS15169');
|
|
|
109
112
|
}
|
|
110
113
|
```
|
|
111
114
|
|
|
115
|
+
### With Monitoring & Metrics (v0.1.2+)
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
import { RDAPClient } from 'rdapify';
|
|
119
|
+
|
|
120
|
+
// Create client with monitoring enabled
|
|
121
|
+
const client = new RDAPClient({
|
|
122
|
+
cache: true,
|
|
123
|
+
logging: {
|
|
124
|
+
level: 'info', // debug, info, warn, error
|
|
125
|
+
enabled: true,
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Perform queries
|
|
130
|
+
await client.domain('example.com');
|
|
131
|
+
await client.ip('8.8.8.8');
|
|
132
|
+
|
|
133
|
+
// Get performance metrics
|
|
134
|
+
const metrics = client.getMetrics();
|
|
135
|
+
console.log(`Success Rate: ${metrics.successRate}%`);
|
|
136
|
+
console.log(`Avg Response Time: ${metrics.avgResponseTime}ms`);
|
|
137
|
+
console.log(`Cache Hit Rate: ${metrics.cacheHitRate}%`);
|
|
138
|
+
|
|
139
|
+
// Get connection pool statistics
|
|
140
|
+
const poolStats = client.getConnectionPoolStats();
|
|
141
|
+
console.log(`Active Connections: ${poolStats.activeConnections}`);
|
|
142
|
+
|
|
143
|
+
// Get recent logs
|
|
144
|
+
const logs = client.getLogs(10);
|
|
145
|
+
logs.forEach((log) => {
|
|
146
|
+
console.log(`[${log.level}] ${log.message}`);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Clean up resources
|
|
150
|
+
client.destroy();
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### With Authentication & Proxy (v0.1.2+)
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import { RDAPClient, AuthenticationManager, ProxyManager } from 'rdapify';
|
|
157
|
+
|
|
158
|
+
// Setup authentication
|
|
159
|
+
const auth = new AuthenticationManager({
|
|
160
|
+
type: 'bearer', // 'basic' | 'bearer' | 'apiKey' | 'oauth2'
|
|
161
|
+
token: 'your-api-token',
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// Setup proxy
|
|
165
|
+
const proxy = new ProxyManager({
|
|
166
|
+
host: 'proxy.example.com',
|
|
167
|
+
port: 8080,
|
|
168
|
+
protocol: 'http', // 'http' | 'https' | 'socks4' | 'socks5'
|
|
169
|
+
auth: {
|
|
170
|
+
username: 'proxyuser',
|
|
171
|
+
password: 'proxypass',
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Add bypass patterns
|
|
176
|
+
proxy.addBypass('*.internal.com');
|
|
177
|
+
|
|
178
|
+
// Use in your HTTP client configuration
|
|
179
|
+
const headers = auth.getAuthHeaders();
|
|
180
|
+
const proxyUrl = proxy.shouldBypass('example.com')
|
|
181
|
+
? undefined
|
|
182
|
+
: proxy.getProxyUrl();
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### With Advanced Features (v0.1.2+)
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
import {
|
|
189
|
+
RDAPClient,
|
|
190
|
+
RetryStrategy,
|
|
191
|
+
QueryPriorityQueue,
|
|
192
|
+
PersistentCache,
|
|
193
|
+
CompressionManager,
|
|
194
|
+
} from 'rdapify';
|
|
195
|
+
|
|
196
|
+
// Setup retry strategy with circuit breaker
|
|
197
|
+
const retry = new RetryStrategy({
|
|
198
|
+
strategy: 'exponential-jitter',
|
|
199
|
+
maxAttempts: 5,
|
|
200
|
+
circuitBreaker: {
|
|
201
|
+
enabled: true,
|
|
202
|
+
threshold: 3,
|
|
203
|
+
timeout: 60000,
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// Setup priority queue
|
|
208
|
+
const queue = new QueryPriorityQueue(5, async (domain) => {
|
|
209
|
+
return await client.domain(domain);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// Enqueue with priority
|
|
213
|
+
await queue.enqueue('critical.com', 'high');
|
|
214
|
+
await queue.enqueue('normal.com', 'normal');
|
|
215
|
+
await queue.enqueue('background.com', 'low');
|
|
216
|
+
|
|
217
|
+
// Setup persistent cache
|
|
218
|
+
const cache = new PersistentCache({
|
|
219
|
+
storage: 'file',
|
|
220
|
+
path: './cache/rdap-cache.json',
|
|
221
|
+
ttl: 3600000, // 1 hour
|
|
222
|
+
autoSave: true,
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// Setup compression
|
|
226
|
+
const compression = new CompressionManager({
|
|
227
|
+
enabled: true,
|
|
228
|
+
types: ['br', 'gzip', 'deflate'],
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
112
232
|
## 🌟 Core Features
|
|
113
233
|
|
|
114
234
|
### 🔒 Enterprise Security
|
|
@@ -117,20 +237,36 @@ const asn = await client.asn('AS15169');
|
|
|
117
237
|
- **Certificate Validation**: Reject insecure connections to RDAP servers
|
|
118
238
|
- **Rate Limiting**: Prevent service blocking due to excessive requests
|
|
119
239
|
- **Secure Data Handling**: PII redaction according to GDPR/CCPA requirements
|
|
240
|
+
- **Authentication Support** (v0.1.2+): Basic, Bearer Token, API Key, OAuth2
|
|
241
|
+
- **Proxy Support** (v0.1.2+): HTTP/HTTPS/SOCKS4/SOCKS5 with authentication
|
|
120
242
|
- **Full Audit Trail**: Track all critical operations for compliance purposes
|
|
121
243
|
|
|
122
244
|
### ⚡ Exceptional Performance
|
|
123
245
|
|
|
124
|
-
- **Smart Caching**: In-memory LRU cache with configurable TTL
|
|
125
|
-
- **
|
|
246
|
+
- **Smart Caching**: In-memory LRU cache with configurable TTL
|
|
247
|
+
- **Persistent Cache** (v0.1.2+): File-based cache that survives restarts
|
|
248
|
+
- **Connection Pooling** (v0.1.2+): HTTP connection reuse for 30-40% performance improvement
|
|
249
|
+
- **Batch Processing**: Process multiple queries efficiently (5-10x faster)
|
|
250
|
+
- **Response Compression** (v0.1.2+): gzip/brotli support for 60-80% bandwidth reduction
|
|
251
|
+
- **Retry Strategies** (v0.1.2+): Circuit breaker with exponential backoff
|
|
252
|
+
- **Query Prioritization** (v0.1.2+): High/normal/low priority queue
|
|
126
253
|
- **Registry Discovery**: Automatic IANA Bootstrap for finding the correct registry
|
|
127
|
-
- **Offline Mode**: Work with cached data during network outages (planned)
|
|
128
254
|
- **Optimized Parsing**: Fast JSONPath-based normalization
|
|
129
255
|
|
|
256
|
+
### 📊 Monitoring & Observability (v0.1.2+)
|
|
257
|
+
|
|
258
|
+
- **Metrics Collection**: Track query performance, success rates, and cache effectiveness
|
|
259
|
+
- **Request/Response Logging**: Detailed logging with configurable levels (debug, info, warn, error)
|
|
260
|
+
- **Performance Analysis**: Monitor response times, identify bottlenecks, and optimize queries
|
|
261
|
+
- **Connection Pool Stats**: Track connection reuse and resource utilization
|
|
262
|
+
- **Time-based Filtering**: Analyze metrics over specific time periods
|
|
263
|
+
- **Export Capabilities**: Export metrics and logs for external analysis
|
|
264
|
+
|
|
130
265
|
### 🧩 Seamless Integration
|
|
131
266
|
|
|
132
267
|
- **Full TypeScript Support**: Strongly typed with embedded documentation
|
|
133
|
-
- **Node.js Support**: Verified working (target: Node.js
|
|
268
|
+
- **Node.js Support**: Verified working (target: Node.js 20+)
|
|
269
|
+
- **Enhanced Validation** (v0.1.2+): IDN domains, IPv6 zones, ASN ranges
|
|
134
270
|
- **Interactive CLI**: For quick queries and testing (planned)
|
|
135
271
|
- **Web Playground**: Try the library directly in your browser (planned)
|
|
136
272
|
- **Pre-built Templates**: For AWS Lambda, Azure Functions, Kubernetes, and more (planned)
|
|
@@ -231,21 +367,65 @@ Start by reading our [Contribution Guide](CONTRIBUTING.md) and [Code of Conduct]
|
|
|
231
367
|
|
|
232
368
|
## 🚧 Project Status
|
|
233
369
|
|
|
234
|
-
**Current Release**: v0.1.
|
|
370
|
+
**Current Release**: v0.1.2 (Production Ready)
|
|
371
|
+
|
|
372
|
+
### 🎉 What's New in v0.1.2
|
|
235
373
|
|
|
236
|
-
|
|
374
|
+
**Interactive Playground & Developer Experience**
|
|
375
|
+
- ✅ **Try Before Install**: Interactive playground at rdapify.com/playground
|
|
376
|
+
- ✅ **Client ID Tracking**: Stable browser identification with localStorage
|
|
377
|
+
- ✅ **Quota Management**: Real-time quota display (remainingToday, resetAt)
|
|
378
|
+
- ✅ **Rate Limit Handling**: Graceful 429 responses with retry hints
|
|
379
|
+
- ✅ **Multi-Package Manager**: npm, yarn, and pnpm install commands
|
|
380
|
+
- ✅ **Website Integration**: Playground accessible from main navigation
|
|
381
|
+
- ✅ **Code Quality**: ESLint errors resolved (6 issues fixed)
|
|
382
|
+
|
|
383
|
+
**Previous Releases**
|
|
384
|
+
|
|
385
|
+
**Phase 3: Authentication & Network** (52 new tests - v0.1.1+)
|
|
386
|
+
- ✅ **Authentication Support**: Basic, Bearer Token, API Key, OAuth2
|
|
387
|
+
- ✅ **Proxy Support**: HTTP/HTTPS/SOCKS4/SOCKS5 with bypass lists
|
|
388
|
+
- ✅ **Response Compression**: gzip, brotli, deflate (60-80% bandwidth reduction)
|
|
389
|
+
|
|
390
|
+
**Phase 2: Advanced Features** (55 new tests)
|
|
391
|
+
- ✅ **Retry Strategies**: Circuit breaker with exponential backoff
|
|
392
|
+
- ✅ **Query Prioritization**: High/normal/low priority queue
|
|
393
|
+
- ✅ **Enhanced Validation**: IDN domains, IPv6 zones, ASN ranges
|
|
394
|
+
- ✅ **Persistent Cache**: File-based storage that survives restarts
|
|
395
|
+
|
|
396
|
+
**Phase 1: Core Improvements** (38 new tests)
|
|
397
|
+
- ✅ **Connection Pooling**: 30-40% performance improvement
|
|
398
|
+
- ✅ **Metrics & Monitoring**: Comprehensive query tracking
|
|
399
|
+
- ✅ **Request/Response Logging**: Detailed debugging capabilities
|
|
400
|
+
|
|
401
|
+
**Total Improvements**: 11 major features, 145+ tests (all passing)
|
|
402
|
+
|
|
403
|
+
See [ALL_PHASES_COMPLETE.md](./docs/releases/ALL_PHASES_COMPLETE.md) for detailed documentation.
|
|
404
|
+
|
|
405
|
+
### ✅ What's Ready in v0.1.2
|
|
237
406
|
|
|
238
407
|
Core functionality is production-ready and fully tested:
|
|
239
408
|
|
|
409
|
+
- ✅ **Interactive Playground**: Try RDAPify without installing (rdapify.com/playground)
|
|
240
410
|
- ✅ **RDAP Client**: Domain, IP, and ASN queries with automatic bootstrap discovery
|
|
241
411
|
- ✅ **SSRF Protection**: Blocks private IPs, localhost, link-local, with proper CIDR matching (IPv4/IPv6)
|
|
242
412
|
- ✅ **Data Normalization**: Consistent response format across all registries
|
|
243
413
|
- ✅ **PII Redaction**: Automatic redaction of emails, phones, addresses
|
|
244
414
|
- ✅ **In-Memory Caching**: LRU cache with TTL support
|
|
245
|
-
- ✅ **
|
|
415
|
+
- ✅ **Persistent Cache**: File-based cache that survives restarts
|
|
416
|
+
- ✅ **Connection Pooling**: HTTP connection reuse (30-40% faster)
|
|
417
|
+
- ✅ **Metrics & Monitoring**: Comprehensive query tracking and analysis
|
|
418
|
+
- ✅ **Request/Response Logging**: Detailed logging with multiple levels
|
|
419
|
+
- ✅ **Retry Strategies**: Circuit breaker with exponential backoff
|
|
420
|
+
- ✅ **Query Prioritization**: High/normal/low priority queue
|
|
421
|
+
- ✅ **Enhanced Validation**: IDN domains, IPv6 zones, ASN ranges
|
|
422
|
+
- ✅ **Authentication Support**: Basic, Bearer, API Key, OAuth2
|
|
423
|
+
- ✅ **Proxy Support**: HTTP/HTTPS/SOCKS4/SOCKS5
|
|
424
|
+
- ✅ **Response Compression**: gzip, brotli, deflate
|
|
425
|
+
- ✅ **Error Handling**: Structured errors with retry logic
|
|
246
426
|
- ✅ **TypeScript Support**: Full type definitions and strict mode
|
|
247
|
-
- ✅ **Test Coverage**:
|
|
248
|
-
- ✅ **Node.js Support**: Verified working (
|
|
427
|
+
- ✅ **Test Coverage**: 145+ new tests passing (unit + integration)
|
|
428
|
+
- ✅ **Node.js Support**: Verified working (Node.js 20+)
|
|
249
429
|
|
|
250
430
|
### 🔄 Planned Features
|
|
251
431
|
|
|
@@ -253,19 +433,21 @@ These features are planned for future releases:
|
|
|
253
433
|
|
|
254
434
|
- ⏳ **Redis/External Cache**: External cache adapters coming in v0.2.0
|
|
255
435
|
- ⏳ **CLI Tool**: Command-line interface planned
|
|
256
|
-
- ⏳ **Interactive Playground**: Web-based testing environment
|
|
257
436
|
- ⏳ **Bun/Deno/Cloudflare Workers**: Additional runtime support
|
|
258
437
|
- ⏳ **Advanced Analytics**: Dashboard and reporting features
|
|
259
438
|
- ⏳ **Geo-distributed Caching**: Multi-region cache support
|
|
439
|
+
- ⏳ **Smart Caching**: Predictive caching with adaptive TTL
|
|
440
|
+
- ⏳ **Real-time Updates**: WebSocket/SSE support
|
|
260
441
|
|
|
261
442
|
### 📋 Roadmap to v0.2.0
|
|
262
443
|
|
|
263
444
|
- Redis cache adapter
|
|
264
|
-
- CLI tool
|
|
445
|
+
- CLI tool with interactive mode
|
|
265
446
|
- Rate limiting improvements
|
|
266
447
|
- Batch processing optimization
|
|
448
|
+
- Bun/Deno runtime compatibility testing
|
|
267
449
|
|
|
268
|
-
See [ROADMAP.md](ROADMAP.md) for the complete roadmap.
|
|
450
|
+
See [ROADMAP.md](ROADMAP.md) for the complete roadmap and [CHANGELOG.md](CHANGELOG.md) for detailed version history.
|
|
269
451
|
|
|
270
452
|
## 🏗️ Code Architecture
|
|
271
453
|
|
|
@@ -338,14 +520,22 @@ src/
|
|
|
338
520
|
See [REFACTOR_STATUS.md](REFACTOR_STATUS.md) for detailed refactoring progress.
|
|
339
521
|
|
|
340
522
|
### 📋 Roadmap to v0.2.0 (Continued)
|
|
341
|
-
- CLI tool with interactive mode
|
|
342
|
-
- Bun/Deno runtime compatibility testing
|
|
343
523
|
- Live integration tests (optional via LIVE_TESTS=1)
|
|
344
524
|
- Performance benchmarks with real data
|
|
345
|
-
-
|
|
525
|
+
- Advanced analytics dashboard
|
|
346
526
|
|
|
347
527
|
**Want to contribute?** Check out our [CONTRIBUTING.md](CONTRIBUTING.md) and [ROADMAP.md](ROADMAP.md)!
|
|
348
528
|
|
|
529
|
+
## 📚 Additional Documentation
|
|
530
|
+
|
|
531
|
+
- **[Release Documentation](./docs/releases/)** - Complete phase documentation
|
|
532
|
+
- **[ALL_PHASES_COMPLETE.md](./docs/releases/ALL_PHASES_COMPLETE.md)** - Complete overview
|
|
533
|
+
- **[PHASE_1_COMPLETE.md](./docs/releases/PHASE_1_COMPLETE.md)** - Core improvements
|
|
534
|
+
- **[PHASE_2_COMPLETE.md](./docs/releases/PHASE_2_COMPLETE.md)** - Advanced features
|
|
535
|
+
- **[PHASE_3_COMPLETE.md](./docs/releases/PHASE_3_COMPLETE.md)** - Authentication & network
|
|
536
|
+
- **[CHANGELOG.md](./CHANGELOG.md)** - Detailed version history
|
|
537
|
+
- **[ADDITIONAL_IMPROVEMENTS.md](./ADDITIONAL_IMPROVEMENTS.md)** - Implementation status
|
|
538
|
+
|
|
349
539
|
## 🔍 Version Verification
|
|
350
540
|
|
|
351
541
|
RDAPify intentionally does **not** export `./package.json` in the package exports for security and API surface minimization. Attempting to import it will throw an expected error:
|
|
@@ -402,10 +592,10 @@ We're looking for early adopters and beta testers! If you're interested in:
|
|
|
402
592
|
|
|
403
593
|
### Known Issues & Limitations
|
|
404
594
|
|
|
405
|
-
- Only in-memory caching available (Redis adapter planned for v0.2.0)
|
|
406
|
-
- No CLI tool yet (programmatic API only)
|
|
407
595
|
- Bun/Deno/Cloudflare Workers compatibility not yet tested
|
|
408
596
|
- Live RDAP server tests disabled by default (use `LIVE_TESTS=1` to enable)
|
|
597
|
+
- CLI tool not yet available (programmatic API only)
|
|
598
|
+
- Redis cache adapter planned for v0.2.0
|
|
409
599
|
|
|
410
600
|
## 📜 License
|
|
411
601
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { RateLimiter } from '../../infrastructure/http/RateLimiter';
|
|
2
|
+
import { Logger } from '../../infrastructure/logging/Logger';
|
|
1
3
|
import type { DomainResponse, IPResponse, ASNResponse } from '../../shared/types';
|
|
2
4
|
import type { RDAPClientOptions } from '../../shared/types/options';
|
|
5
|
+
import { BatchProcessor } from '../services/BatchProcessor';
|
|
3
6
|
export declare class RDAPClient {
|
|
4
7
|
private readonly options;
|
|
5
8
|
private readonly cache;
|
|
@@ -9,6 +12,11 @@ export declare class RDAPClient {
|
|
|
9
12
|
private readonly normalizer;
|
|
10
13
|
private readonly piiRedactor;
|
|
11
14
|
private readonly orchestrator;
|
|
15
|
+
private readonly rateLimiter;
|
|
16
|
+
private readonly batchProcessor;
|
|
17
|
+
private readonly connectionPool;
|
|
18
|
+
private readonly metricsCollector;
|
|
19
|
+
private readonly logger;
|
|
12
20
|
constructor(options?: RDAPClientOptions);
|
|
13
21
|
domain(domain: string): Promise<DomainResponse>;
|
|
14
22
|
ip(ip: string): Promise<IPResponse>;
|
|
@@ -28,5 +36,18 @@ export declare class RDAPClient {
|
|
|
28
36
|
};
|
|
29
37
|
}>;
|
|
30
38
|
getConfig(): Required<RDAPClientOptions>;
|
|
39
|
+
getRateLimiter(): RateLimiter;
|
|
40
|
+
getBatchProcessor(): BatchProcessor;
|
|
41
|
+
getMetrics(since?: number): import("../../infrastructure/monitoring/MetricsCollector").MetricsSummary;
|
|
42
|
+
getConnectionPoolStats(): {
|
|
43
|
+
totalConnections: number;
|
|
44
|
+
activeConnections: number;
|
|
45
|
+
idleConnections: number;
|
|
46
|
+
hosts: number;
|
|
47
|
+
};
|
|
48
|
+
getLogger(): Logger;
|
|
49
|
+
getLogs(count?: number): import("../../infrastructure/logging/Logger").LogEntry[];
|
|
50
|
+
clearAll(): Promise<void>;
|
|
51
|
+
destroy(): void;
|
|
31
52
|
}
|
|
32
53
|
//# sourceMappingURL=RDAPClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RDAPClient.d.ts","sourceRoot":"","sources":["../../../src/application/client/RDAPClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RDAPClient.d.ts","sourceRoot":"","sources":["../../../src/application/client/RDAPClient.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAIpE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlF,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAgB5D,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBACpB,OAAO,GAAE,iBAAsB;IA8GrC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiB/C,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBnC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAOvC,cAAc;IA0C5B,OAAO,CAAC,gBAAgB;IAOlB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,QAAQ,IAAI,OAAO,CAAC;QACxB,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC;KACH,CAAC;IAUF,SAAS,IAAI,QAAQ,CAAC,iBAAiB,CAAC;IAOxC,cAAc,IAAI,WAAW;IAO7B,iBAAiB,IAAI,cAAc;IAOnC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;IAOzB,sBAAsB;;;;;;IAOtB,SAAS,IAAI,MAAM;IAOnB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM;IAOhB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,OAAO,IAAI,IAAI;CAIhB"}
|