rdapify 0.1.7 → 0.1.9

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.
Files changed (99) hide show
  1. package/CHANGELOG.md +135 -6
  2. package/README.md +50 -31
  3. package/dist/application/client/RDAPClient.d.ts +7 -1
  4. package/dist/application/client/RDAPClient.d.ts.map +1 -1
  5. package/dist/application/client/RDAPClient.js +101 -24
  6. package/dist/application/client/RDAPClient.js.map +1 -1
  7. package/dist/application/hooks/MiddlewareHooks.d.ts +4 -2
  8. package/dist/application/hooks/MiddlewareHooks.d.ts.map +1 -1
  9. package/dist/application/hooks/MiddlewareHooks.js +41 -3
  10. package/dist/application/hooks/MiddlewareHooks.js.map +1 -1
  11. package/dist/application/services/BatchProcessor.d.ts +6 -0
  12. package/dist/application/services/BatchProcessor.d.ts.map +1 -1
  13. package/dist/application/services/BatchProcessor.js +54 -2
  14. package/dist/application/services/BatchProcessor.js.map +1 -1
  15. package/dist/application/services/QueryOrchestrator.d.ts +3 -2
  16. package/dist/application/services/QueryOrchestrator.d.ts.map +1 -1
  17. package/dist/application/services/QueryOrchestrator.js +16 -5
  18. package/dist/application/services/QueryOrchestrator.js.map +1 -1
  19. package/dist/index.d.ts +28 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +35 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/infrastructure/cache/RedisCache.d.ts +10 -0
  24. package/dist/infrastructure/cache/RedisCache.d.ts.map +1 -1
  25. package/dist/infrastructure/cache/RedisCache.js +37 -1
  26. package/dist/infrastructure/cache/RedisCache.js.map +1 -1
  27. package/dist/infrastructure/http/BootstrapDiscovery.d.ts +6 -3
  28. package/dist/infrastructure/http/BootstrapDiscovery.d.ts.map +1 -1
  29. package/dist/infrastructure/http/BootstrapDiscovery.js +55 -12
  30. package/dist/infrastructure/http/BootstrapDiscovery.js.map +1 -1
  31. package/dist/infrastructure/http/BrowserFetcher.d.ts +16 -0
  32. package/dist/infrastructure/http/BrowserFetcher.d.ts.map +1 -0
  33. package/dist/infrastructure/http/BrowserFetcher.js +47 -0
  34. package/dist/infrastructure/http/BrowserFetcher.js.map +1 -0
  35. package/dist/infrastructure/http/BunFetcher.d.ts +19 -0
  36. package/dist/infrastructure/http/BunFetcher.d.ts.map +1 -0
  37. package/dist/infrastructure/http/BunFetcher.js +51 -0
  38. package/dist/infrastructure/http/BunFetcher.js.map +1 -0
  39. package/dist/infrastructure/http/CircuitBreaker.d.ts +33 -0
  40. package/dist/infrastructure/http/CircuitBreaker.d.ts.map +1 -0
  41. package/dist/infrastructure/http/CircuitBreaker.js +104 -0
  42. package/dist/infrastructure/http/CircuitBreaker.js.map +1 -0
  43. package/dist/infrastructure/http/CloudflareWorkersFetcher.d.ts +18 -0
  44. package/dist/infrastructure/http/CloudflareWorkersFetcher.d.ts.map +1 -0
  45. package/dist/infrastructure/http/CloudflareWorkersFetcher.js +44 -0
  46. package/dist/infrastructure/http/CloudflareWorkersFetcher.js.map +1 -0
  47. package/dist/infrastructure/http/DenoFetcher.d.ts +18 -0
  48. package/dist/infrastructure/http/DenoFetcher.d.ts.map +1 -0
  49. package/dist/infrastructure/http/DenoFetcher.js +43 -0
  50. package/dist/infrastructure/http/DenoFetcher.js.map +1 -0
  51. package/dist/infrastructure/http/Fetcher.d.ts +2 -0
  52. package/dist/infrastructure/http/Fetcher.d.ts.map +1 -1
  53. package/dist/infrastructure/http/Fetcher.js +5 -0
  54. package/dist/infrastructure/http/Fetcher.js.map +1 -1
  55. package/dist/infrastructure/monitoring/GrafanaDashboard.d.ts +571 -0
  56. package/dist/infrastructure/monitoring/GrafanaDashboard.d.ts.map +1 -0
  57. package/dist/infrastructure/monitoring/GrafanaDashboard.js +119 -0
  58. package/dist/infrastructure/monitoring/GrafanaDashboard.js.map +1 -0
  59. package/dist/infrastructure/monitoring/PrometheusExporter.d.ts +20 -0
  60. package/dist/infrastructure/monitoring/PrometheusExporter.d.ts.map +1 -0
  61. package/dist/infrastructure/monitoring/PrometheusExporter.js +77 -0
  62. package/dist/infrastructure/monitoring/PrometheusExporter.js.map +1 -0
  63. package/dist/infrastructure/monitoring/TelemetryExporter.d.ts +42 -0
  64. package/dist/infrastructure/monitoring/TelemetryExporter.d.ts.map +1 -0
  65. package/dist/infrastructure/monitoring/TelemetryExporter.js +117 -0
  66. package/dist/infrastructure/monitoring/TelemetryExporter.js.map +1 -0
  67. package/dist/infrastructure/native/NativeBackend.d.ts +13 -0
  68. package/dist/infrastructure/native/NativeBackend.d.ts.map +1 -0
  69. package/dist/infrastructure/native/NativeBackend.js +92 -0
  70. package/dist/infrastructure/native/NativeBackend.js.map +1 -0
  71. package/dist/integrations/express.d.ts +23 -0
  72. package/dist/integrations/express.d.ts.map +1 -0
  73. package/dist/integrations/express.js +49 -0
  74. package/dist/integrations/express.js.map +1 -0
  75. package/dist/integrations/graphql.d.ts +20 -0
  76. package/dist/integrations/graphql.d.ts.map +1 -0
  77. package/dist/integrations/graphql.js +85 -0
  78. package/dist/integrations/graphql.js.map +1 -0
  79. package/dist/integrations/nestjs.d.ts +18 -0
  80. package/dist/integrations/nestjs.d.ts.map +1 -0
  81. package/dist/integrations/nestjs.js +29 -0
  82. package/dist/integrations/nestjs.js.map +1 -0
  83. package/dist/shared/errors/base.error.d.ts +3 -0
  84. package/dist/shared/errors/base.error.d.ts.map +1 -1
  85. package/dist/shared/errors/base.error.js +7 -1
  86. package/dist/shared/errors/base.error.js.map +1 -1
  87. package/dist/shared/types/index.d.ts +1 -1
  88. package/dist/shared/types/index.d.ts.map +1 -1
  89. package/dist/shared/types/options.d.ts +20 -0
  90. package/dist/shared/types/options.d.ts.map +1 -1
  91. package/dist/shared/types/options.js +11 -1
  92. package/dist/shared/types/options.js.map +1 -1
  93. package/dist/shared/types/responses.d.ts +5 -0
  94. package/dist/shared/types/responses.d.ts.map +1 -1
  95. package/dist/shared/utils/deprecation.d.ts +3 -0
  96. package/dist/shared/utils/deprecation.d.ts.map +1 -0
  97. package/dist/shared/utils/deprecation.js +25 -0
  98. package/dist/shared/utils/deprecation.js.map +1 -0
  99. package/package.json +23 -1
package/CHANGELOG.md CHANGED
@@ -5,13 +5,142 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased] — v0.1.8 Planned
8
+ ## [Unreleased]
9
9
 
10
- ### Planned
11
- - **Domain Availability**: `client.checkAvailability(domain)` — check if a domain is available via RDAP (404 = available, active = registered)
12
- - **Bulk Availability**: `client.checkAvailabilityBatch(domains[])` — check multiple domains in parallel
13
- - **Live Integration Tests**: opt-in via `LIVE_TESTS=1` environment variable
14
- - **Advanced Bootstrap Config**: custom bootstrap servers, TTL overrides, redundancy/fallback support
10
+ ## [1.0.0] - planned February 2027
11
+
12
+ ### Summary
13
+ API freeze release. `RDAPClient` interface is stable and guaranteed not to
14
+ have breaking changes in subsequent 1.x releases. All 83 public exports are
15
+ classified in `API_STABILITY_ANALYSIS.md`.
16
+
17
+ ### Highlights
18
+ - **Branch coverage**: ≥ 90% (1066 tests).
19
+ - **API freeze**: 83 exports locked; all deprecated APIs removed.
20
+ - **Runtime support**: Node.js (confirmed), Bun/Deno/Cloudflare Workers (verified externally).
21
+ - **Security Audit**: all critical/high findings resolved (requires external audit completion).
22
+ - **Documentation**: complete Arabic and English docs at rdapify.com.
23
+
24
+ ### Breaking Changes (from 0.3.1)
25
+ All APIs marked `@deprecated` in v0.3.1 are removed in v1.0.0.
26
+ See `MIGRATION_1_0.md` (to be published with release).
27
+
28
+ ## [0.3.1] - unreleased
29
+
30
+ ### Deprecated
31
+
32
+ The following APIs are deprecated as of v0.3.1 and will be removed or changed in v1.0.0.
33
+ Migration paths are listed. Warnings are emitted via `process.emitWarning` (Node.js)
34
+ or `console.warn` (other runtimes) at most once per process lifetime.
35
+
36
+ | API | Deprecation Code | Migration |
37
+ |-----|-----------------|-----------|
38
+ | `client.getBatchProcessor()` | `DEP_RDAPIFY_0001` | Use `client.streamBatch()` for streaming results, or call `processBatch()` via the batch processor. In v1.0.0, `processBatch()` will be a direct method on `RDAPClient`. |
39
+
40
+ ### Added
41
+
42
+ - **API Stability Analysis** — `API_STABILITY_ANALYSIS.md` in the internal planning directory classifies all 83 public exports as Stable / Evolving / Deprecated for the v1.0.0 API freeze; details migration paths for each deprecated API
43
+ - **`BrowserFetcher`** — browser-compatible RDAP fetcher that routes requests through a developer-supplied CORS-enabled reverse proxy; uses only Web-standard APIs (`fetch`, `AbortSignal`, `URLSearchParams`); enables rdapify in React, Vue, Angular, and vanilla browser environments
44
+ - **`BrowserFetcherOptions`** type — `{ proxyUrl: string; timeout?: number; headers?: Record<string, string> }`
45
+
46
+ ### Changed
47
+
48
+ - `BatchProcessor` class JSDoc updated to reflect its evolving status; direct class imports should prefer `client.streamBatch()` or the convenience methods added in v1.0.0
49
+ - Fixed unhandled promise rejection in `BatchProcessor.processBatch()` when `continueOnError: false` — `.finally()` on the inner promise was creating a dangling rejected promise; replaced with `.then(cleanup, cleanup)` to safely remove completed items from the in-progress list
50
+
51
+ ### Coverage
52
+
53
+ - Branch coverage increased to **80.25%** (above the 80% jest threshold) by adding targeted tests for previously uncovered branches across `Logger`, `MetricsCollector`, `nestjs.ts`, `nameserver.ts`, `express.ts`, `BatchProcessor`, and `QueryPriority` modules
54
+
55
+ ## [0.3.0] - unreleased
56
+
57
+ ### Added
58
+
59
+ - **Streaming batch API** — `client.streamBatch(requests, options?)` is an async generator that yields `BatchQueryResult` items as each query completes; processes queries in concurrency-bounded chunks so at most `concurrency` (default 5) requests are ever in-flight simultaneously; suitable for 1000+ query sets with no memory overflow; `continueOnError: true` by default isolates per-query failures; exports new `StreamBatchOptions` type
60
+ - **Prometheus exporter** — `PrometheusExporter` converts internal `MetricsCollector` data to the [Prometheus text-based exposition format v0.0.4](https://prometheus.io/docs/instrumenting/exposition_formats/); supports custom metric prefix, constant labels, and `createHttpHandler()` which returns a request handler compatible with Node.js, Express, and Fastify; `PrometheusExporter.CONTENT_TYPE` constant provides the correct `Content-Type` header value
61
+ - **Grafana dashboard template** — `RDAPIFY_GRAFANA_DASHBOARD` is a ready-to-import Grafana dashboard JSON with panels for total queries, success rate, cache hit rate, average response time, P50/P90/P99 latency percentiles, queries by type, and error breakdown by error type
62
+ - **OpenTelemetry OTLP trace exporter** — `TelemetryExporter` ships RDAP query spans to any OTLP/HTTP JSON endpoint (Jaeger, Grafana Tempo, Honeycomb, etc.); zero `@opentelemetry/sdk-node` dependency — uses Web-standard `fetch`; `client.startSpan()` / `client.endSpan()` API; enabled via `ClientConfig.telemetry.endpoint`; errors silently swallowed to avoid disrupting query path
63
+ - **Multi-region bootstrap** — `BootstrapOptions.regions?: Array<'us' | 'eu' | 'ap'>` configures preferred regional IANA bootstrap mirror order; `BootstrapDiscovery` tries each regional URL in order and falls back to the primary IANA endpoint on network failure; duplicate URLs (same region mapping) are de-duplicated automatically
64
+ - **Deprecation warning utility** — `deprecated(name, alternative?, code?)` emits a Node.js `DeprecationWarning` via `process.emitWarning` (or `console.warn` in Deno/Bun/CF Workers); each unique `code` is emitted at most once per process lifetime; `_resetDeprecationState()` available for tests
65
+ - **`TelemetryOptions` type exported** — new configuration interface in `RDAPClientOptions.telemetry`
66
+ - **42 new unit tests**: streaming batch (10), Prometheus exporter (10), TelemetryExporter (9), deprecation (7), multi-region bootstrap (5)
67
+ - **API snapshot updated** — 82 exported symbols
68
+
69
+ ## [0.2.3] - unreleased
70
+
71
+ ### Added
72
+
73
+ - **GraphQL integration** — `createRdapifySchema(client)` returns a `{ typeDefs, resolvers }` object compatible with graphql-yoga, Apollo Server, and any standards-compliant GraphQL runtime; no `graphql` peer dependency required at import time; exports `RDAPIFY_TYPE_DEFS` (SDL string) and `RdapifyResolvers` type
74
+ - `Query.domain(name: String!)` — resolves `ldhName`, `registrar` (flattened to name string), `status`, `expiresAt`, `createdAt`, `updatedAt` (dates extracted from `events[]`)
75
+ - `Query.ip(address: String!)` — resolves `country`, `name`, `startAddress`, `endAddress`, `status`
76
+ - `Query.asn(number: String!)` — resolves `name`, `status`, `startAutnum`, `endAutnum`
77
+ - **Express.js integration** — `rdapifyExpress(client, router?)` registers `GET /domain/:name`, `GET /ip/:address`, `GET /asn/:number` routes on any Express-compatible router; when no router is provided, creates a `MinimalRouter` (duck-typed; no `express` peer dependency required); errors are returned as `{ error: string }` with status 500
78
+ - **NestJS integration** — `RdapifyModule.forRoot(options?)` returns a NestJS-compatible `DynamicModule` that provides `RDAPClient` via the `RDAPIFY_CLIENT_TOKEN` symbol; `@InjectRdapClient()` is a `ParameterDecorator` factory that marks constructor parameters for injection; zero `@nestjs/common` dependency
79
+ - **24 new unit tests**: GraphQL schema (9), Express routes (8), NestJS module + decorator (7)
80
+ - **7 new public exports**: `createRdapifySchema`, `RDAPIFY_TYPE_DEFS`, `RdapifyResolvers` (type), `rdapifyExpress`, `MinimalRouter`, `RouterLike` (type), `RequestLike` (type), `ResponseLike` (type), `RdapifyModule`, `InjectRdapClient`, `RDAPIFY_CLIENT_TOKEN`, `RdapifyModuleOptions` (type), `RdapifyDynamicModule` (type)
81
+ - **API snapshot updated** — 78 exported symbols
82
+
83
+ ## [0.2.2] - unreleased
84
+
85
+ ### Added
86
+
87
+ - **Deno Support** — `DenoFetcher` implements `IFetcherPort` using the Web-standard `fetch` built into Deno; `RDAPClient` auto-selects `DenoFetcher` when `isDeno()` is true; uses no Node.js-specific APIs
88
+ - **Cloudflare Workers Support** — `CloudflareWorkersFetcher` implements `IFetcherPort` for the Edge runtime; zero Node.js-specific code (`require`, `process`, `Buffer`, `fs` are absent from the implementation); `RDAPClient` auto-selects it when `isCloudflareWorkers()` is true
89
+ - **Subpath exports** — `package.json` now exports `./node`, `./deno`, and `./worker` subpath conditions; all currently point to the main bundle (auto-detection handles runtime selection internally)
90
+ - **Priority order** — fetcher auto-selection order: Cloudflare Workers → Deno → Bun → Node.js (standard `Fetcher`)
91
+ - **22 new unit tests**: DenoFetcher (9 tests), CloudflareWorkersFetcher (13 tests)
92
+
93
+ ## [0.2.1] - unreleased
94
+
95
+ ### Added
96
+
97
+ - **Bun Runtime Support** — `BunFetcher` implements `IFetcherPort` using `Bun.fetch` when running under the Bun runtime; `RDAPClient` auto-detects Bun via `isBun()` and selects `BunFetcher` automatically — no configuration needed
98
+ - **`BunFetcher` exported** — available for direct instantiation when custom Bun-specific setups are required; accepts `timeout`, `userAgent`, `headers`, and `ssrfProtection` options
99
+ - **CI Bun job** — `.github/workflows/ci.yml` now includes a `test-bun` job that installs dependencies with `bun install` and runs the unit test suite under Bun
100
+ - **14 unit tests** for `BunFetcher`: `resolveFetch()` detection (Bun present / absent / non-function), successful fetch, header forwarding, custom headers, 4xx/5xx → `RDAPServerError`, timeout → `TimeoutError`, generic error → `NetworkError`, SSRF protection integration, Bun.fetch preference over global fetch
101
+
102
+ ## [0.2.0] - unreleased
103
+
104
+ ### Added
105
+
106
+ - **Circuit Breaker** — `CircuitBreaker` class with full state machine: `closed → open → half-open → closed/open`; configurable `failureThreshold`, `successThreshold`, `halfOpenTimeout`, `window`; exported as `CircuitBreaker`, `CircuitOpenError`, `CircuitState`, `CircuitBreakerOptions`
107
+ - **Middleware abort** — `ctx.abort()` in any `beforeQuery` hook now stops the query pipeline; `MiddlewareManager.runBeforeQuery()` returns `Promise<boolean>` (true = aborted); aborted queries throw `QueryAbortedError`
108
+ - **Middleware priority ordering** — `manager.use(hooks, priority)` registers hooks at a specific priority level (lower number = runs first); multiple hooks for the same lifecycle event run in priority order; hooks registered without a priority use the existing merge/override behaviour
109
+ - **Redis key compression** — `RedisCacheOptions.keyMaxLength` (default 200); keys longer than the threshold are hashed to a SHA-256 hex digest before being stored in Redis; prevents oversized key errors
110
+ - **Redis pipeline** — `RedisCache.getMany(keys)` batch-retrieves multiple responses using `mget` when available, falling back to individual `get` calls; `RedisCache.setMany(entries)` batch-stores multiple responses
111
+ - **HTTP/2 opt-in** — `RDAPClientOptions.http2: boolean` (default `false`); when `true`, the fetcher sets `Upgrade: h2c` and `HTTP2-Settings` headers to signal HTTP/2 preference to supporting registries
112
+ - **`QueryAbortedError`** exported from public API
113
+ - **63 new unit tests**: circuit breaker state transitions (14), middleware abort + priority (14), Redis key compression + pipeline (17), HTTP/2 (5), middleware hooks compatibility fix (2)
114
+
115
+ ## [0.1.9] - unreleased
116
+
117
+ ### Added
118
+
119
+ - **Domain Availability Check** — `client.checkAvailability(domain): Promise<AvailabilityResult>` parses the RDAP response to determine if a domain is registered; returns `available: true` when the registry responds with HTTP 404, and extracts `expiresAt` from the RDAP expiration event when available
120
+ - **Batch Availability Check** — `client.checkAvailabilityBatch(domains[]): Promise<Map<string, AvailabilityResult>>` checks multiple domains in parallel and returns a Map keyed by domain name
121
+ - **`AvailabilityResult` type** exported from the public API: `{ domain: string; available: boolean; expiresAt?: Date }`
122
+ - **Live Integration Tests** — `npm run test:live` (requires `LIVE_TESTS=1`); tests Verisign (.com/.net), ARIN (IPv4), RIPE (European IPv4), and ASN 15169; excluded from regular `npm test`; `.github/workflows/live-tests.yml` runs weekly on Sunday
123
+ - **Advanced Bootstrap Configuration** — new `bootstrap` option on `RDAPClientOptions`:
124
+ - `bootstrap.customServers: { tld: string; url: string }[]` — custom RDAP endpoints per TLD; take priority over IANA, no network call needed
125
+ - `bootstrap.ttl: number` — override the default 24-hour bootstrap cache TTL (in seconds)
126
+ - `bootstrap.fallback: boolean` — set to `false` to disable IANA lookup entirely (useful for private registries); default `true`
127
+ - **`BootstrapOptions` type** exported from the public API
128
+ - 17 unit tests for the new features (8 availability + 9 bootstrap advanced)
129
+
130
+ ## [0.1.8] - 2026-03-21
131
+
132
+ ### Added
133
+
134
+ - **Rust native backend** — when `rdapify-nd` (optional peer dependency) is installed, the five core query methods (`domain`, `ip`, `asn`, `nameserver`, `entity`) are dispatched to a compiled Rust binary, reducing per-call overhead for high-throughput scenarios
135
+ - **`backend` option** on `RDAPClientOptions`: `'auto'` (default — uses native if available, falls back to TypeScript silently), `'native'` (requires `rdapify-nd`, throws at construction if absent), `'typescript'` (always uses the TypeScript pipeline regardless of what is installed)
136
+ - **`isNativeAvailable()`** utility — runtime detection of whether `rdapify-nd` is installed and loadable
137
+ - **`NativeBackend`** class exported for advanced use cases (direct access to the adapter)
138
+ - **28 unit tests** added for the NativeBackend adapter: field mapping (`meta`→`metadata`, `queried_at`→`timestamp`), `objectClass` injection, numeric ASN coercion, and module-absent fallback
139
+
140
+ ### Notes
141
+
142
+ - The native backend bypasses the TypeScript pipeline (middleware hooks, rate limiting, audit logging, deduplication); best suited for latency-sensitive, high-throughput scenarios where those features are not required
143
+ - Response shapes are fully compatible: the adapter normalises Rust snake_case fields to match TypeScript interfaces exactly
15
144
 
16
145
  ## [0.1.7] - 2026-03-19
17
146
 
package/README.md CHANGED
@@ -79,8 +79,8 @@ console.log({
79
79
  registrar: result.registrar?.name,
80
80
  status: result.status,
81
81
  nameservers: result.nameservers,
82
- created: result.events.find((e) => e.type === 'created')?.date,
83
- expires: result.events.find((e) => e.type === 'expiration')?.date,
82
+ created: result.events.find((e) => e.eventAction === 'registration')?.eventDate,
83
+ expires: result.events.find((e) => e.eventAction === 'expiration')?.eventDate,
84
84
  });
85
85
  ```
86
86
 
@@ -91,10 +91,9 @@ import { RDAPClient } from 'rdapify';
91
91
 
92
92
  // Create a secure client with optimized defaults
93
93
  const client = new RDAPClient({
94
- cache: true, // Automatic caching (1 hour TTL)
95
- redactPII: true, // Automatically redact personal information
94
+ cache: true, // In-memory LRU cache (1 hour TTL)
95
+ privacy: true, // Automatic PII redaction (GDPR/CCPA)
96
96
  retry: {
97
- // Smart retries for transient failures
98
97
  maxAttempts: 3,
99
98
  backoff: 'exponential',
100
99
  },
@@ -112,7 +111,7 @@ const entity = await client.entity('ARIN-HN-1', 'https://rdap.arin.net/registry'
112
111
 
113
112
  ```json
114
113
  {
115
- "domain": "example.com",
114
+ "query": "example.com",
116
115
  "registrar": "Internet Assigned Numbers Authority",
117
116
  "status": ["clientDeleteProhibited", "clientTransferProhibited", "clientUpdateProhibited"],
118
117
  "nameservers": ["a.iana-servers.net", "b.iana-servers.net"],
@@ -339,7 +338,7 @@ We don't treat security as an add-on feature — it's fundamental to our design.
339
338
  | MitM | Mandatory HTTPS, certificate validation | 🟠 Important |
340
339
  | Data Injection | Schema validation, strict parsing | 🟠 Important |
341
340
 
342
- Read our [Security Whitepaper](security/whitepaper.md) for deeper technical details and advanced scenarios.
341
+ Read our [Security Whitepaper](docs/security/whitepaper.md) for deeper technical details and advanced scenarios.
343
342
 
344
343
  ## 📚 Documentation
345
344
 
@@ -352,7 +351,7 @@ RDAPify provides comprehensive documentation in the repository:
352
351
  - **[Guides](docs/guides/)** - Error handling, caching strategies, and performance optimization
353
352
  - **[Examples](examples/)** - Real-world code examples and use cases
354
353
 
355
- > **Note**: Full documentation site is planned for future release. For now, browse the [docs/](docs/) directory in the repository.
354
+ > **Tip**: Full API and guide documentation is available in the [`docs/`](docs/) directory.
356
355
 
357
356
  ## 🌐 Interactive Playground
358
357
 
@@ -360,7 +359,22 @@ Try RDAPify directly in your browser — no installation required: **[rdapify.co
360
359
 
361
360
  ## 📊 Performance Benchmarks
362
361
 
363
- > **Coming Soon**: Comprehensive benchmarks with real-world data will be published in future releases. Current alpha focuses on correctness and security over performance optimization.
362
+ Measured on the **native backend** (`rdapify-nd`, `cargo bench`, Criterion, Linux x86-64, mock HTTP server). TypeScript pipeline benchmarks are ~10-20× higher latency:
363
+
364
+ | Scenario | Latency |
365
+ |----------|---------|
366
+ | Query — no cache (bootstrap + fetch + normalise) | ~180 µs |
367
+ | Query — **cache hit** | **~2.3 µs** (~80× faster) |
368
+ | Cache read (DashMap, fresh TTL) | ~124 ns |
369
+ | SSRF URL validation | ~141–295 ns |
370
+
371
+ > **With the native backend** (`npm install rdapify-nd`), the five core query methods
372
+ > run inside compiled Rust rather than the TypeScript pipeline — lower per-call
373
+ > overhead for high-throughput scenarios.
374
+ >
375
+ > ```ts
376
+ > const client = new RDAPClient({ backend: 'auto' }); // uses rdapify-nd if installed
377
+ > ```
364
378
 
365
379
  ## 👥 Community & Support
366
380
 
@@ -381,21 +395,9 @@ RDAPify is an open source project. Get help or contribute:
381
395
  - **[CONTRIBUTING.md](CONTRIBUTING.md)** - Contribution guidelines
382
396
  - **[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)** - Community standards
383
397
 
384
-
385
- ## 🤝 Contributing
386
-
387
- We welcome contributions! Whether you're a:
388
-
389
- - Developer wanting to fix bugs or add features
390
- - Writer improving documentation
391
- - Tester reporting issues
392
- - Security engineer reviewing code
393
-
394
- Start by reading our [Contribution Guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md).
395
-
396
398
  ## 🚧 Project Status
397
399
 
398
- **Current Release**: v0.1.7 (Alpha)
400
+ **Current Release**: v0.1.8 (Alpha)
399
401
 
400
402
  ### 🎉 What's New in v0.1.7
401
403
 
@@ -436,7 +438,7 @@ Start by reading our [Contribution Guide](CONTRIBUTING.md) and [Code of Conduct]
436
438
 
437
439
  See [CHANGELOG.md](CHANGELOG.md) for detailed version history.
438
440
 
439
- ### ✅ Full Feature Set (v0.1.7)
441
+ ### ✅ Full Feature Set (v0.1.8)
440
442
 
441
443
  - ✅ **RDAP Client**: Domain, IP, ASN, Nameserver, and Entity queries with automatic IANA bootstrap discovery
442
444
  - ✅ **CLI Tool**: Command-line interface with human-readable and JSON output (`domain`, `ip`, `asn`, `nameserver`, `entity`)
@@ -459,11 +461,30 @@ See [CHANGELOG.md](CHANGELOG.md) for detailed version history.
459
461
  - ✅ **Authentication**: Basic, Bearer, API Key, OAuth2
460
462
  - ✅ **Proxy Support**: HTTP/HTTPS/SOCKS4/SOCKS5 with bypass patterns
461
463
  - ✅ **Response Compression**: gzip, brotli, deflate (60-80% bandwidth reduction)
464
+ - ✅ **Rust Native Backend**: optional `rdapify-nd` for lower-latency queries via compiled Rust (`backend: 'auto' | 'native' | 'typescript'`)
462
465
  - ✅ **Multi-runtime**: Node.js 20+, Bun, Deno, Cloudflare Workers
463
466
  - ✅ **TypeScript Strict**: Full type definitions with strict mode
464
467
  - ✅ **Test Coverage**: 34 test files, 620+ tests (unit + integration)
465
468
 
466
- ### 🔜 Coming in v0.1.8
469
+ ### 🎉 What's New in v0.1.8
470
+
471
+ **Rust Native Backend (`rdapify-nd`)**
472
+ - ✅ **Optional native backend**: install `rdapify-nd` alongside `rdapify` for lower-latency queries powered by compiled Rust
473
+ - ✅ **`backend` option**: `'auto'` (default, uses native if available), `'native'` (require native), `'typescript'` (always use TS pipeline)
474
+ - ✅ **`isNativeAvailable()`**: runtime detection utility to check if native binary is loaded
475
+ - ✅ **Transparent fallback**: when `rdapify-nd` is absent, all existing behaviour is preserved with zero configuration change
476
+
477
+ ```ts
478
+ import { RDAPClient, isNativeAvailable } from 'rdapify';
479
+
480
+ console.log(isNativeAvailable()); // true if rdapify-nd is installed
481
+
482
+ const client = new RDAPClient({ backend: 'auto' }); // transparent
483
+ const client2 = new RDAPClient({ backend: 'native' }); // throws if not installed
484
+ const client3 = new RDAPClient({ backend: 'typescript' }); // always TS pipeline
485
+ ```
486
+
487
+ ### 🔜 Coming in v0.1.9
467
488
 
468
489
  - ⏳ **Domain Availability**: `client.checkAvailability('example.com')` — instant availability check via RDAP
469
490
  - ⏳ **Bulk Availability**: `client.checkAvailabilityBatch(['a.com', 'b.com'])` — check multiple domains at once
@@ -551,13 +572,11 @@ src/
551
572
 
552
573
  ## 📚 Additional Documentation
553
574
 
554
- - **[Release Documentation](./docs/releases/)** - Complete phase documentation
555
- - **[ALL_PHASES_COMPLETE.md](./docs/releases/ALL_PHASES_COMPLETE.md)** - Complete overview
556
- - **[PHASE_1_COMPLETE.md](./docs/releases/PHASE_1_COMPLETE.md)** - Core improvements
557
- - **[PHASE_2_COMPLETE.md](./docs/releases/PHASE_2_COMPLETE.md)** - Advanced features
558
- - **[PHASE_3_COMPLETE.md](./docs/releases/PHASE_3_COMPLETE.md)** - Authentication & network
559
- - **[CHANGELOG.md](./CHANGELOG.md)** - Detailed version history
560
- - **[ADDITIONAL_IMPROVEMENTS.md](./ADDITIONAL_IMPROVEMENTS.md)** - Implementation status
575
+ - **[Getting Started](./docs/getting-started/)** Installation, quick start, first query
576
+ - **[API Reference](./docs/api-reference/)** Full TypeScript API documentation
577
+ - **[Guides](./docs/guides/)** Caching, error handling, performance, observability
578
+ - **[Security](./docs/security/)** SSRF protection, PII redaction, threat model
579
+ - **[CHANGELOG.md](./CHANGELOG.md)** Detailed version history
561
580
 
562
581
  ## 🔍 Version Verification
563
582
 
@@ -1,8 +1,10 @@
1
1
  import { RateLimiter } from '../../infrastructure/http/RateLimiter';
2
2
  import { Logger } from '../../infrastructure/logging/Logger';
3
- import type { DomainResponse, IPResponse, ASNResponse, NameserverResponse, EntityResponse } from '../../shared/types';
3
+ import type { DomainResponse, IPResponse, ASNResponse, NameserverResponse, EntityResponse, AvailabilityResult } from '../../shared/types';
4
4
  import type { RDAPClientOptions } from '../../shared/types/options';
5
5
  import { BatchProcessor } from '../services/BatchProcessor';
6
+ import type { BatchQueryRequest, StreamBatchOptions } from '../services/BatchProcessor';
7
+ import type { QueryTypeLiteral, BatchQueryResult } from '../../shared/types/generics';
6
8
  import { MiddlewareManager } from '../hooks/MiddlewareHooks';
7
9
  import type { MiddlewareOptions } from '../hooks/MiddlewareHooks';
8
10
  export declare class RDAPClient {
@@ -23,12 +25,15 @@ export declare class RDAPClient {
23
25
  private readonly queryDeduplicator;
24
26
  private readonly debugEnabled;
25
27
  private readonly debugLogger?;
28
+ private readonly nativeBackend;
26
29
  constructor(options?: RDAPClientOptions);
27
30
  domain(domain: string): Promise<DomainResponse>;
28
31
  ip(ip: string): Promise<IPResponse>;
29
32
  asn(asn: string | number): Promise<ASNResponse>;
30
33
  nameserver(nameserver: string): Promise<NameserverResponse>;
31
34
  entity(handle: string, serverUrl: string): Promise<EntityResponse>;
35
+ checkAvailability(domain: string): Promise<AvailabilityResult>;
36
+ checkAvailabilityBatch(domains: string[]): Promise<Map<string, AvailabilityResult>>;
32
37
  private fetchWithRetry;
33
38
  private normalizeOptions;
34
39
  clearCache(): Promise<void>;
@@ -46,6 +51,7 @@ export declare class RDAPClient {
46
51
  getConfig(): Required<RDAPClientOptions>;
47
52
  getRateLimiter(): RateLimiter;
48
53
  getBatchProcessor(): BatchProcessor;
54
+ streamBatch<T extends QueryTypeLiteral>(requests: BatchQueryRequest<T>[], options?: StreamBatchOptions): AsyncGenerator<BatchQueryResult<T>, void, unknown>;
49
55
  getMetrics(since?: number): import("../../infrastructure/monitoring/MetricsCollector").MetricsSummary;
50
56
  getConnectionPoolStats(): {
51
57
  totalConnections: number;
@@ -1 +1 @@
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;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGtH,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAyClE,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;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAK3B;gBACU,OAAO,GAAE,iBAAsB;IAkJrC,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;IAgB/C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmB3D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAO1D,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;;;;;;IActB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAQ5C,oBAAoB,IAAI,iBAAiB;IAOzC,oBAAoB;;;;;IAOpB,SAAS,IAAI,MAAM;IAOnB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM;IAOhB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,OAAO,IAAI,IAAI;CAIhB"}
1
+ {"version":3,"file":"RDAPClient.d.ts","sourceRoot":"","sources":["../../../src/application/client/RDAPClient.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RDAPClient = void 0;
4
4
  const cache_1 = require("../../infrastructure/cache");
5
5
  const http_1 = require("../../infrastructure/http");
6
+ const BunFetcher_1 = require("../../infrastructure/http/BunFetcher");
7
+ const DenoFetcher_1 = require("../../infrastructure/http/DenoFetcher");
8
+ const CloudflareWorkersFetcher_1 = require("../../infrastructure/http/CloudflareWorkersFetcher");
6
9
  const RateLimiter_1 = require("../../infrastructure/http/RateLimiter");
7
10
  const ConnectionPool_1 = require("../../infrastructure/http/ConnectionPool");
11
+ const runtime_1 = require("../../shared/utils/helpers/runtime");
8
12
  const security_1 = require("../../infrastructure/security");
9
13
  const MetricsCollector_1 = require("../../infrastructure/monitoring/MetricsCollector");
10
14
  const Logger_1 = require("../../infrastructure/logging/Logger");
@@ -15,6 +19,7 @@ const services_1 = require("../services");
15
19
  const BatchProcessor_1 = require("../services/BatchProcessor");
16
20
  const MiddlewareHooks_1 = require("../hooks/MiddlewareHooks");
17
21
  const QueryDeduplicator_1 = require("../deduplication/QueryDeduplicator");
22
+ const NativeBackend_1 = require("../../infrastructure/native/NativeBackend");
18
23
  class RDAPClient {
19
24
  constructor(options = {}) {
20
25
  this.options = this.normalizeOptions(options);
@@ -22,30 +27,63 @@ class RDAPClient {
22
27
  ? { enabled: this.options.ssrfProtection }
23
28
  : this.options.ssrfProtection;
24
29
  this.ssrfProtection = new security_1.SSRFProtection(ssrfOptions);
25
- this.fetcher = new http_1.Fetcher({
26
- timeout: typeof this.options.timeout === 'number'
27
- ? {
28
- request: this.options.timeout,
29
- connect: this.options.timeout,
30
- dns: this.options.timeout,
31
- }
32
- : this.options.timeout,
33
- userAgent: this.options.userAgent,
34
- headers: this.options.headers,
35
- followRedirects: this.options.followRedirects,
36
- maxRedirects: this.options.maxRedirects,
37
- ssrfProtection: this.ssrfProtection,
38
- logRedirect: (fromUrl, toUrl) => {
39
- this.logger?.warn(`Redirect: ${fromUrl} → ${toUrl}`);
40
- if (this.debugEnabled && this.debugLogger) {
41
- this.debugLogger.debug('Redirect occurred', {
42
- fromUrl,
43
- toUrl,
44
- });
45
- }
46
- },
47
- });
48
- this.bootstrap = new http_1.BootstrapDiscovery(this.options.bootstrapUrl, this.fetcher);
30
+ const timeoutMs = typeof this.options.timeout === 'number'
31
+ ? this.options.timeout
32
+ : this.options.timeout?.request ?? 10000;
33
+ if ((0, runtime_1.isCloudflareWorkers)()) {
34
+ this.fetcher = new CloudflareWorkersFetcher_1.CloudflareWorkersFetcher({
35
+ timeout: timeoutMs,
36
+ userAgent: this.options.userAgent,
37
+ headers: this.options.headers,
38
+ ssrfProtection: this.ssrfProtection,
39
+ });
40
+ }
41
+ else if ((0, runtime_1.isDeno)()) {
42
+ this.fetcher = new DenoFetcher_1.DenoFetcher({
43
+ timeout: timeoutMs,
44
+ userAgent: this.options.userAgent,
45
+ headers: this.options.headers,
46
+ ssrfProtection: this.ssrfProtection,
47
+ });
48
+ }
49
+ else if ((0, runtime_1.isBun)()) {
50
+ this.fetcher = new BunFetcher_1.BunFetcher({
51
+ timeout: timeoutMs,
52
+ userAgent: this.options.userAgent,
53
+ headers: this.options.headers,
54
+ ssrfProtection: this.ssrfProtection,
55
+ });
56
+ }
57
+ else {
58
+ this.fetcher = new http_1.Fetcher({
59
+ timeout: typeof this.options.timeout === 'number'
60
+ ? {
61
+ request: this.options.timeout,
62
+ connect: this.options.timeout,
63
+ dns: this.options.timeout,
64
+ }
65
+ : this.options.timeout,
66
+ userAgent: this.options.userAgent,
67
+ headers: this.options.headers,
68
+ followRedirects: this.options.followRedirects,
69
+ maxRedirects: this.options.maxRedirects,
70
+ ssrfProtection: this.ssrfProtection,
71
+ http2: this.options.http2,
72
+ logRedirect: (fromUrl, toUrl) => {
73
+ this.logger?.warn(`Redirect: ${fromUrl} → ${toUrl}`);
74
+ if (this.debugEnabled && this.debugLogger) {
75
+ this.debugLogger.debug('Redirect occurred', {
76
+ fromUrl,
77
+ toUrl,
78
+ });
79
+ }
80
+ },
81
+ });
82
+ }
83
+ const bootstrapOpts = this.options.bootstrap && typeof this.options.bootstrap === 'object'
84
+ ? this.options.bootstrap
85
+ : undefined;
86
+ this.bootstrap = new http_1.BootstrapDiscovery(this.options.bootstrapUrl, this.fetcher, bootstrapOpts);
49
87
  const cacheOptions = typeof this.options.cache === 'boolean'
50
88
  ? this.options.cache
51
89
  ? options_1.DEFAULT_OPTIONS.cache
@@ -108,22 +146,58 @@ class RDAPClient {
108
146
  middleware: this.middlewareManager,
109
147
  deduplicator: this.queryDeduplicator,
110
148
  });
149
+ const backendMode = this.options.backend;
150
+ this.nativeBackend =
151
+ backendMode === 'typescript'
152
+ ? null
153
+ : NativeBackend_1.NativeBackend.create(backendMode === 'native' ? 'native' : 'auto');
111
154
  }
112
155
  async domain(domain) {
156
+ if (this.nativeBackend)
157
+ return this.nativeBackend.domain(domain);
113
158
  return this.orchestrator.queryDomain(domain);
114
159
  }
115
160
  async ip(ip) {
161
+ if (this.nativeBackend)
162
+ return this.nativeBackend.ip(ip);
116
163
  return this.orchestrator.queryIP(ip);
117
164
  }
118
165
  async asn(asn) {
166
+ if (this.nativeBackend)
167
+ return this.nativeBackend.asn(asn);
119
168
  return this.orchestrator.queryASN(asn);
120
169
  }
121
170
  async nameserver(nameserver) {
171
+ if (this.nativeBackend)
172
+ return this.nativeBackend.nameserver(nameserver);
122
173
  return this.orchestrator.queryNameserver(nameserver);
123
174
  }
124
175
  async entity(handle, serverUrl) {
176
+ if (this.nativeBackend)
177
+ return this.nativeBackend.entity(handle, serverUrl);
125
178
  return this.orchestrator.queryEntity(handle, serverUrl);
126
179
  }
180
+ async checkAvailability(domain) {
181
+ try {
182
+ const response = await this.domain(domain);
183
+ const expirationEvent = response.events?.find(e => e.type === 'expiration');
184
+ const expiresAt = expirationEvent ? new Date(expirationEvent.date) : undefined;
185
+ return { domain: response.query, available: false, expiresAt };
186
+ }
187
+ catch (error) {
188
+ if (error instanceof errors_1.RDAPServerError && error.statusCode === 404) {
189
+ return { domain, available: true };
190
+ }
191
+ throw error;
192
+ }
193
+ }
194
+ async checkAvailabilityBatch(domains) {
195
+ const entries = await Promise.all(domains.map(async (domain) => {
196
+ const result = await this.checkAvailability(domain);
197
+ return [domain, result];
198
+ }));
199
+ return new Map(entries);
200
+ }
127
201
  async fetchWithRetry(url) {
128
202
  const retryOptions = typeof this.options.retry === 'boolean'
129
203
  ? this.options.retry
@@ -171,6 +245,9 @@ class RDAPClient {
171
245
  getBatchProcessor() {
172
246
  return this.batchProcessor;
173
247
  }
248
+ streamBatch(requests, options) {
249
+ return this.batchProcessor.streamBatch(requests, options);
250
+ }
174
251
  getMetrics(since) {
175
252
  return this.metricsCollector.getSummary(since);
176
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RDAPClient.js","sourceRoot":"","sources":["../../../src/application/client/RDAPClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RDAPClient.js","sourceRoot":"","sources":["../../../src/application/client/RDAPClient.ts"],"names":[],"mappings":";;;AAKA,sDAA0D;AAC1D,oDAAoF;AACpF,qEAAkE;AAClE,uEAAoE;AACpE,iGAA8F;AAE9F,uEAAoE;AACpE,6EAA0E;AAC1E,gEAAwF;AACxF,4DAA4E;AAC5E,uFAAoF;AACpF,gEAA6D;AAG7D,gDAAuE;AACvE,wDAA6D;AAO7D,wDAAgF;AAChF,0CAAgD;AAChD,+DAA4D;AAG5D,8DAA6D;AAE7D,0EAAuE;AACvE,6EAA0E;AAwC1E,MAAa,UAAU;IAyBrB,YAAY,UAA6B,EAAE;QAEzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAG9C,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC1C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAc,CAAC,WAAW,CAAC,CAAC;QAGtD,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;YACtC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YACtB,CAAC,CAAE,IAAI,CAAC,OAAO,CAAC,OAA4C,EAAE,OAAO,IAAI,KAAM,CAAC;QAEpF,IAAI,IAAA,6BAAmB,GAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,mDAAwB,CAAC;gBAC1C,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAA,gBAAM,GAAE,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAW,CAAC;gBAC7B,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAA,eAAK,GAAE,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAU,CAAC;gBAC5B,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,IAAI,cAAO,CAAC;gBACzB,OAAO,EACL,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;oBACtC,CAAC,CAAC;wBACE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;wBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;wBAC7B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;qBAC1B;oBACH,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;gBAC7C,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;gBACvC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBAC9B,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC;oBACrD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBAC1C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE;4BAC1C,OAAO;4BACP,KAAK;yBACN,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ;YACxF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;YACxB,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,yBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAGhG,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;YACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;gBAClB,CAAC,CAAE,yBAAe,CAAC,KAAsB;gBACzC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAe,EAAE;YACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAY,CAAC,YAAY,CAAC,CAAC;QAG5C,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAU,EAAE,CAAC;QAGnC,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,sBAAW,CAAC,cAAc,CAAC,CAAC;QAGnD,MAAM,gBAAgB,GACpB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;YACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;gBACtB,CAAC,CAAE,yBAAe,CAAC,SAA8B;gBACjD,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;YACtB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,gBAAgB,CAAC,CAAC;QAGrD,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC;YACvC,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAGH,IAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAgB,CAAC;YAC3C,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAGH,MAAM,cAAc,GAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAA2B,CAAC;QAC1E,MAAM,QAAQ,GACZ,eAAe,IAAK,cAA2B,CAAC,QAAQ,CAAC,eAAe,CAAC;YACvE,CAAC,CAAE,eAA4B;YAC/B,CAAC,CAAC,MAAM,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC;YACvB,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAGH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,IAAI,KAAK,CAAC;QACtG,IAAI,CAAC,WAAW,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAG9G,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAA2C,CAAC;QAChF,IAAI,CAAC,iBAAiB,GAAG,IAAI,mCAAiB,CAAC,cAAc,CAAC,CAAC;QAG/D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,CAC5C,OAAO,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE;YACxB,CAAC,CAAE,SAAkE,CACxE,CAAC;QAGF,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QAG/C,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAiB,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,iBAAiB;YAClC,YAAY,EAAE,IAAI,CAAC,iBAAiB;SACrC,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,aAAa;YAChB,WAAW,KAAK,YAAY;gBAC1B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,6BAAa,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;IAeD,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAeD,KAAK,CAAC,EAAE,CAAC,EAAU;QACjB,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAcD,KAAK,CAAC,GAAG,CAAC,GAAoB;QAC5B,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAcD,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAiBD,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,SAAiB;QAC5C,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAoBD,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,wBAAe,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACjE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACrC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAgBD,KAAK,CAAC,sBAAsB,CAAC,OAAiB;QAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAiC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;QACF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAKO,KAAK,CAAC,cAAc,CAAC,GAAW;QACtC,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;YACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;gBAClB,CAAC,CAAE,yBAAe,CAAC,KAAsB;gBACzC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;YACtB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAEzB,IAAI,SAA4B,CAAC;QAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5E,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAc,CAAC;gBAG3B,IAAI,KAAK,YAAY,wBAAe,EAAE,CAAC;oBACrC,MAAM,KAAK,CAAC;gBACd,CAAC;gBAGD,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC9C,MAAM,KAAK,GAAG,IAAA,0BAAgB,EAC5B,OAAO,EACP,YAAY,CAAC,OAAO,IAAI,aAAa,EACrC,YAAY,CAAC,YAAY,IAAI,IAAI,EACjC,YAAY,CAAC,QAAQ,IAAI,KAAK,CAC/B,CAAC;oBAEF,MAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC;oBACnB,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,CAAC;IAClB,CAAC;IAKO,gBAAgB,CAAC,OAA0B;QACjD,OAAO,IAAA,mBAAS,EAAC,yBAAe,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAKD,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;IAKD,KAAK,CAAC,QAAQ;QAWZ,OAAO;YACL,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;SAC1C,CAAC;IACJ,CAAC;IAKD,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAKD,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAUD,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAsBD,WAAW,CACT,QAAgC,EAChC,OAA4B;QAE5B,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAKD,UAAU,CAAC,KAAc;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAKD,sBAAsB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAYD,GAAG,CAAC,KAAiC;QACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAKD,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAKD,OAAO,CAAC,KAAc;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAKD,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAKD,OAAO;QACL,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;CACF;AAniBD,gCAmiBC"}
@@ -7,6 +7,7 @@ export interface QueryContext {
7
7
  cached?: boolean;
8
8
  serverUrl?: string;
9
9
  attempt?: number;
10
+ abort?: () => void;
10
11
  }
11
12
  export interface QueryResultContext extends QueryContext {
12
13
  duration: number;
@@ -30,9 +31,10 @@ export interface MiddlewareOptions {
30
31
  }
31
32
  export declare class MiddlewareManager {
32
33
  private hooks;
34
+ private priorityEntries;
33
35
  constructor(hooks?: MiddlewareOptions);
34
36
  private safeRun;
35
- runBeforeQuery(ctx: QueryContext): Promise<void>;
37
+ runBeforeQuery(ctx: QueryContext): Promise<boolean>;
36
38
  runAfterQuery(ctx: QueryResultContext): Promise<void>;
37
39
  runOnError(ctx: QueryResultContext): Promise<void>;
38
40
  runOnCacheHit(ctx: QueryContext): Promise<void>;
@@ -41,7 +43,7 @@ export declare class MiddlewareManager {
41
43
  attempt: number;
42
44
  delay: number;
43
45
  }): Promise<void>;
44
- use(hooks: Partial<MiddlewareOptions>): void;
46
+ use(hooks: Partial<MiddlewareOptions>, priority?: number): void;
45
47
  clear(): void;
46
48
  getRegisteredHooks(): string[];
47
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MiddlewareHooks.d.ts","sourceRoot":"","sources":["../../../src/application/hooks/MiddlewareHooks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKjE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAKD,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,IAAI;IAC9B,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC;AAKD,MAAM,WAAW,iBAAiB;IAEhC,WAAW,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEnC,UAAU,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAExC,OAAO,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAErC,UAAU,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAElC,WAAW,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEnC,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAoB;gBAErB,KAAK,CAAC,EAAE,iBAAiB;YAMvB,OAAO;IAcf,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,UAAU,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,UAAU,CACd,GAAG,EAAE,YAAY,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACrD,OAAO,CAAC,IAAI,CAAC;IAUhB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAK5C,KAAK,IAAI,IAAI;IAKb,kBAAkB,IAAI,MAAM,EAAE;CAK/B"}
1
+ {"version":3,"file":"MiddlewareHooks.d.ts","sourceRoot":"","sources":["../../../src/application/hooks/MiddlewareHooks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKjE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAKD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAKD,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,IAAI;IAC9B,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC;AAKD,MAAM,WAAW,iBAAiB;IAEhC,WAAW,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEnC,UAAU,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAExC,OAAO,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAErC,UAAU,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAElC,WAAW,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEnC,OAAO,CAAC,EAAE,MAAM,CAAC,YAAY,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAkBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,eAAe,CAAuB;gBAElC,KAAK,CAAC,EAAE,iBAAiB;YAMvB,OAAO;IAqBf,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBnD,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,UAAU,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,UAAU,CACd,GAAG,EAAE,YAAY,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACrD,OAAO,CAAC,IAAI,CAAC;IAkBhB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAU/D,KAAK,IAAI,IAAI;IAMb,kBAAkB,IAAI,MAAM,EAAE;CAK/B"}