rdapify 0.3.0 → 0.3.1

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 (499) hide show
  1. package/README.ar.md +572 -0
  2. package/README.md +74 -77
  3. package/dist/{application → cjs/application}/client/RDAPClient.js +197 -6
  4. package/dist/{application → cjs/application}/client/index.js +0 -1
  5. package/dist/{application → cjs/application}/deduplication/QueryDeduplicator.js +0 -1
  6. package/dist/{application → cjs/application}/hooks/MiddlewareHooks.js +0 -1
  7. package/dist/{application → cjs/application}/services/BatchProcessor.js +0 -1
  8. package/dist/{application → cjs/application}/services/QueryOrchestrator.js +0 -1
  9. package/dist/{application → cjs/application}/services/QueryPriority.js +0 -1
  10. package/dist/{application → cjs/application}/services/index.js +0 -1
  11. package/dist/{cli → cjs/cli}/index.js +0 -1
  12. package/dist/cjs/core/ports/bootstrap.port.js +2 -0
  13. package/dist/cjs/core/ports/cache.port.js +2 -0
  14. package/dist/cjs/core/ports/fetcher.port.js +2 -0
  15. package/dist/{core → cjs/core}/ports/index.js +0 -1
  16. package/dist/cjs/core/ports/normalizer.port.js +2 -0
  17. package/dist/cjs/core/ports/pii-redactor.port.js +2 -0
  18. package/dist/{index.js → cjs/index.js} +8 -4
  19. package/dist/{infrastructure → cjs/infrastructure}/cache/CacheManager.js +4 -1
  20. package/dist/{infrastructure → cjs/infrastructure}/cache/InMemoryCache.js +0 -1
  21. package/dist/{infrastructure → cjs/infrastructure}/cache/PersistentCache.js +0 -1
  22. package/dist/{infrastructure → cjs/infrastructure}/cache/RedisCache.js +0 -1
  23. package/dist/cjs/infrastructure/cache/StaleWhileRevalidateCache.js +47 -0
  24. package/dist/{infrastructure → cjs/infrastructure}/cache/index.js +0 -1
  25. package/dist/{infrastructure → cjs/infrastructure}/http/AuthenticationManager.js +0 -1
  26. package/dist/{infrastructure → cjs/infrastructure}/http/BootstrapDiscovery.js +0 -1
  27. package/dist/{infrastructure → cjs/infrastructure}/http/BrowserFetcher.js +0 -1
  28. package/dist/{infrastructure → cjs/infrastructure}/http/BunFetcher.js +0 -1
  29. package/dist/{infrastructure → cjs/infrastructure}/http/CircuitBreaker.js +0 -1
  30. package/dist/{infrastructure → cjs/infrastructure}/http/CloudflareWorkersFetcher.js +0 -1
  31. package/dist/{infrastructure → cjs/infrastructure}/http/CompressionManager.js +0 -1
  32. package/dist/{infrastructure → cjs/infrastructure}/http/ConnectionPool.js +0 -1
  33. package/dist/{infrastructure → cjs/infrastructure}/http/DenoFetcher.js +0 -1
  34. package/dist/cjs/infrastructure/http/DistributedRateLimiter.js +26 -0
  35. package/dist/{infrastructure → cjs/infrastructure}/http/Fetcher.js +5 -1
  36. package/dist/{infrastructure → cjs/infrastructure}/http/Normalizer.js +23 -1
  37. package/dist/{infrastructure → cjs/infrastructure}/http/ProxyManager.js +0 -1
  38. package/dist/{infrastructure → cjs/infrastructure}/http/RateLimiter.js +6 -1
  39. package/dist/{infrastructure → cjs/infrastructure}/http/RetryStrategy.js +0 -1
  40. package/dist/{infrastructure → cjs/infrastructure}/http/index.js +0 -1
  41. package/dist/{infrastructure → cjs/infrastructure}/logging/AuditLogger.js +0 -1
  42. package/dist/{infrastructure → cjs/infrastructure}/logging/Logger.js +0 -1
  43. package/dist/{infrastructure → cjs/infrastructure}/monitoring/GrafanaDashboard.js +0 -1
  44. package/dist/{infrastructure → cjs/infrastructure}/monitoring/MetricsCollector.js +0 -1
  45. package/dist/{infrastructure → cjs/infrastructure}/monitoring/PrometheusExporter.js +0 -1
  46. package/dist/{infrastructure → cjs/infrastructure}/monitoring/TelemetryExporter.js +0 -1
  47. package/dist/{infrastructure → cjs/infrastructure}/native/NativeBackend.js +0 -1
  48. package/dist/{infrastructure → cjs/infrastructure}/security/PIIRedactor.js +0 -1
  49. package/dist/{infrastructure → cjs/infrastructure}/security/SSRFProtection.js +23 -1
  50. package/dist/{infrastructure → cjs/infrastructure}/security/index.js +0 -1
  51. package/dist/cjs/infrastructure/telemetry/UsageTelemetry.js +89 -0
  52. package/dist/{infrastructure → cjs/infrastructure}/validation/ResponseValidator.js +0 -1
  53. package/dist/{integrations → cjs/integrations}/express.js +0 -1
  54. package/dist/{integrations → cjs/integrations}/graphql.js +0 -1
  55. package/dist/{integrations → cjs/integrations}/nestjs.js +0 -1
  56. package/dist/{shared → cjs/shared}/constants/http.constants.js +0 -1
  57. package/dist/{shared → cjs/shared}/constants/index.js +0 -1
  58. package/dist/{shared → cjs/shared}/constants/rdap.constants.js +0 -1
  59. package/dist/{shared → cjs/shared}/errors/base.error.js +7 -2
  60. package/dist/{shared → cjs/shared}/errors/index.js +0 -1
  61. package/dist/{shared → cjs/shared}/types/entities.js +0 -1
  62. package/dist/{shared → cjs/shared}/types/enums.js +0 -1
  63. package/dist/{shared → cjs/shared}/types/errors.js +0 -1
  64. package/dist/{shared → cjs/shared}/types/generics.js +0 -1
  65. package/dist/{shared → cjs/shared}/types/index.js +0 -1
  66. package/dist/{shared → cjs/shared}/types/options.js +5 -1
  67. package/dist/cjs/shared/types/responses.js +2 -0
  68. package/dist/{shared → cjs/shared}/utils/deprecation.js +0 -1
  69. package/dist/{shared → cjs/shared}/utils/enhanced-validators.js +0 -1
  70. package/dist/{shared → cjs/shared}/utils/helpers/async.js +0 -1
  71. package/dist/{shared → cjs/shared}/utils/helpers/cache.js +0 -1
  72. package/dist/{shared → cjs/shared}/utils/helpers/format.js +0 -1
  73. package/dist/{shared → cjs/shared}/utils/helpers/http.js +0 -1
  74. package/dist/{shared → cjs/shared}/utils/helpers/index.js +0 -1
  75. package/dist/{shared → cjs/shared}/utils/helpers/object.js +0 -1
  76. package/dist/{shared → cjs/shared}/utils/helpers/runtime.js +0 -1
  77. package/dist/{shared → cjs/shared}/utils/helpers/string.js +0 -1
  78. package/dist/{shared → cjs/shared}/utils/validators/asn.js +0 -1
  79. package/dist/{shared → cjs/shared}/utils/validators/config-validation.js +0 -1
  80. package/dist/{shared → cjs/shared}/utils/validators/domain.js +0 -1
  81. package/dist/{shared → cjs/shared}/utils/validators/entity.js +0 -1
  82. package/dist/{shared → cjs/shared}/utils/validators/index.js +0 -1
  83. package/dist/{shared → cjs/shared}/utils/validators/ip.js +0 -1
  84. package/dist/{shared → cjs/shared}/utils/validators/nameserver.js +0 -1
  85. package/dist/{shared → cjs/shared}/utils/validators/network.js +0 -1
  86. package/dist/esm/application/client/RDAPClient.js +439 -0
  87. package/dist/esm/application/client/index.js +1 -0
  88. package/dist/esm/application/deduplication/QueryDeduplicator.js +41 -0
  89. package/dist/esm/application/hooks/MiddlewareHooks.js +79 -0
  90. package/dist/esm/application/services/BatchProcessor.js +145 -0
  91. package/dist/esm/application/services/QueryOrchestrator.js +615 -0
  92. package/dist/esm/application/services/QueryPriority.js +109 -0
  93. package/dist/esm/application/services/index.js +2 -0
  94. package/dist/esm/cli/index.js +297 -0
  95. package/dist/esm/core/ports/bootstrap.port.js +1 -0
  96. package/dist/esm/core/ports/cache.port.js +1 -0
  97. package/dist/esm/core/ports/fetcher.port.js +1 -0
  98. package/dist/esm/core/ports/index.js +5 -0
  99. package/dist/esm/core/ports/normalizer.port.js +1 -0
  100. package/dist/esm/core/ports/pii-redactor.port.js +1 -0
  101. package/dist/esm/index.js +40 -0
  102. package/dist/esm/infrastructure/cache/CacheManager.js +123 -0
  103. package/dist/esm/infrastructure/cache/InMemoryCache.js +91 -0
  104. package/dist/esm/infrastructure/cache/PersistentCache.js +188 -0
  105. package/dist/esm/infrastructure/cache/RedisCache.js +106 -0
  106. package/dist/esm/infrastructure/cache/StaleWhileRevalidateCache.js +43 -0
  107. package/dist/esm/infrastructure/cache/index.js +3 -0
  108. package/dist/esm/infrastructure/http/AuthenticationManager.js +94 -0
  109. package/dist/esm/infrastructure/http/BootstrapDiscovery.js +189 -0
  110. package/dist/esm/infrastructure/http/BrowserFetcher.js +42 -0
  111. package/dist/esm/infrastructure/http/BunFetcher.js +46 -0
  112. package/dist/esm/infrastructure/http/CircuitBreaker.js +98 -0
  113. package/dist/esm/infrastructure/http/CloudflareWorkersFetcher.js +39 -0
  114. package/dist/esm/infrastructure/http/CompressionManager.js +80 -0
  115. package/dist/esm/infrastructure/http/ConnectionPool.js +101 -0
  116. package/dist/esm/infrastructure/http/DenoFetcher.js +38 -0
  117. package/dist/esm/infrastructure/http/DistributedRateLimiter.js +22 -0
  118. package/dist/esm/infrastructure/http/Fetcher.js +127 -0
  119. package/dist/esm/infrastructure/http/Normalizer.js +233 -0
  120. package/dist/esm/infrastructure/http/ProxyManager.js +82 -0
  121. package/dist/esm/infrastructure/http/RateLimiter.js +102 -0
  122. package/dist/esm/infrastructure/http/RetryStrategy.js +131 -0
  123. package/dist/esm/infrastructure/http/index.js +3 -0
  124. package/dist/esm/infrastructure/logging/AuditLogger.js +187 -0
  125. package/dist/esm/infrastructure/logging/Logger.js +145 -0
  126. package/dist/esm/infrastructure/monitoring/GrafanaDashboard.js +115 -0
  127. package/dist/esm/infrastructure/monitoring/MetricsCollector.js +284 -0
  128. package/dist/esm/infrastructure/monitoring/PrometheusExporter.js +72 -0
  129. package/dist/esm/infrastructure/monitoring/TelemetryExporter.js +112 -0
  130. package/dist/esm/infrastructure/native/NativeBackend.js +86 -0
  131. package/dist/esm/infrastructure/security/PIIRedactor.js +85 -0
  132. package/dist/esm/infrastructure/security/SSRFProtection.js +162 -0
  133. package/dist/esm/infrastructure/security/index.js +2 -0
  134. package/dist/esm/infrastructure/telemetry/UsageTelemetry.js +84 -0
  135. package/dist/esm/infrastructure/validation/ResponseValidator.js +194 -0
  136. package/dist/esm/integrations/express.js +43 -0
  137. package/dist/esm/integrations/graphql.js +80 -0
  138. package/dist/esm/integrations/nestjs.js +23 -0
  139. package/dist/esm/shared/constants/http.constants.js +25 -0
  140. package/dist/esm/shared/constants/index.js +2 -0
  141. package/dist/esm/shared/constants/rdap.constants.js +17 -0
  142. package/dist/esm/shared/errors/base.error.js +140 -0
  143. package/dist/esm/shared/errors/index.js +1 -0
  144. package/dist/esm/shared/types/entities.js +1 -0
  145. package/dist/esm/shared/types/enums.js +1 -0
  146. package/dist/esm/shared/types/errors.js +82 -0
  147. package/dist/esm/shared/types/generics.js +1 -0
  148. package/dist/esm/shared/types/index.js +1 -0
  149. package/dist/esm/shared/types/options.js +66 -0
  150. package/dist/esm/shared/types/responses.js +1 -0
  151. package/dist/esm/shared/utils/deprecation.js +20 -0
  152. package/dist/esm/shared/utils/enhanced-validators.js +148 -0
  153. package/dist/esm/shared/utils/helpers/async.js +40 -0
  154. package/dist/esm/shared/utils/helpers/cache.js +3 -0
  155. package/dist/esm/shared/utils/helpers/format.js +17 -0
  156. package/dist/esm/shared/utils/helpers/http.js +13 -0
  157. package/dist/esm/shared/utils/helpers/index.js +7 -0
  158. package/dist/esm/shared/utils/helpers/object.js +19 -0
  159. package/dist/esm/shared/utils/helpers/runtime.js +34 -0
  160. package/dist/esm/shared/utils/helpers/string.js +23 -0
  161. package/dist/esm/shared/utils/validators/asn.js +25 -0
  162. package/dist/esm/shared/utils/validators/config-validation.js +93 -0
  163. package/dist/esm/shared/utils/validators/domain.js +29 -0
  164. package/dist/esm/shared/utils/validators/entity.js +22 -0
  165. package/dist/esm/shared/utils/validators/index.js +7 -0
  166. package/dist/esm/shared/utils/validators/ip.js +48 -0
  167. package/dist/esm/shared/utils/validators/nameserver.js +44 -0
  168. package/dist/esm/shared/utils/validators/network.js +42 -0
  169. package/dist/{application → types/application}/client/RDAPClient.d.ts +10 -1
  170. package/dist/types/application/client/RDAPClient.d.ts.map +1 -0
  171. package/dist/types/application/client/index.d.ts.map +1 -0
  172. package/dist/types/application/deduplication/QueryDeduplicator.d.ts.map +1 -0
  173. package/dist/types/application/hooks/MiddlewareHooks.d.ts.map +1 -0
  174. package/dist/types/application/services/BatchProcessor.d.ts.map +1 -0
  175. package/dist/types/application/services/QueryOrchestrator.d.ts.map +1 -0
  176. package/dist/types/application/services/QueryPriority.d.ts.map +1 -0
  177. package/dist/types/application/services/index.d.ts.map +1 -0
  178. package/dist/{cli → types/cli}/index.d.ts.map +1 -1
  179. package/dist/types/core/ports/bootstrap.port.d.ts.map +1 -0
  180. package/dist/types/core/ports/cache.port.d.ts.map +1 -0
  181. package/dist/types/core/ports/fetcher.port.d.ts.map +1 -0
  182. package/dist/types/core/ports/index.d.ts.map +1 -0
  183. package/dist/types/core/ports/normalizer.port.d.ts.map +1 -0
  184. package/dist/types/core/ports/pii-redactor.port.d.ts.map +1 -0
  185. package/dist/{index.d.ts → types/index.d.ts} +6 -3
  186. package/dist/types/index.d.ts.map +1 -0
  187. package/dist/types/infrastructure/cache/CacheManager.d.ts.map +1 -0
  188. package/dist/types/infrastructure/cache/InMemoryCache.d.ts.map +1 -0
  189. package/dist/types/infrastructure/cache/PersistentCache.d.ts.map +1 -0
  190. package/dist/types/infrastructure/cache/RedisCache.d.ts.map +1 -0
  191. package/dist/types/infrastructure/cache/StaleWhileRevalidateCache.d.ts +16 -0
  192. package/dist/types/infrastructure/cache/StaleWhileRevalidateCache.d.ts.map +1 -0
  193. package/dist/types/infrastructure/cache/index.d.ts.map +1 -0
  194. package/dist/types/infrastructure/http/AuthenticationManager.d.ts.map +1 -0
  195. package/dist/types/infrastructure/http/BootstrapDiscovery.d.ts.map +1 -0
  196. package/dist/types/infrastructure/http/BrowserFetcher.d.ts.map +1 -0
  197. package/dist/types/infrastructure/http/BunFetcher.d.ts.map +1 -0
  198. package/dist/types/infrastructure/http/CircuitBreaker.d.ts.map +1 -0
  199. package/dist/types/infrastructure/http/CloudflareWorkersFetcher.d.ts.map +1 -0
  200. package/dist/types/infrastructure/http/CompressionManager.d.ts.map +1 -0
  201. package/dist/types/infrastructure/http/ConnectionPool.d.ts.map +1 -0
  202. package/dist/types/infrastructure/http/DenoFetcher.d.ts.map +1 -0
  203. package/dist/types/infrastructure/http/DistributedRateLimiter.d.ts +12 -0
  204. package/dist/types/infrastructure/http/DistributedRateLimiter.d.ts.map +1 -0
  205. package/dist/{infrastructure → types/infrastructure}/http/Fetcher.d.ts +2 -0
  206. package/dist/types/infrastructure/http/Fetcher.d.ts.map +1 -0
  207. package/dist/types/infrastructure/http/Normalizer.d.ts.map +1 -0
  208. package/dist/types/infrastructure/http/ProxyManager.d.ts.map +1 -0
  209. package/dist/{infrastructure → types/infrastructure}/http/RateLimiter.d.ts +5 -0
  210. package/dist/types/infrastructure/http/RateLimiter.d.ts.map +1 -0
  211. package/dist/types/infrastructure/http/RetryStrategy.d.ts.map +1 -0
  212. package/dist/types/infrastructure/http/index.d.ts.map +1 -0
  213. package/dist/types/infrastructure/logging/AuditLogger.d.ts.map +1 -0
  214. package/dist/types/infrastructure/logging/Logger.d.ts.map +1 -0
  215. package/dist/{infrastructure → types/infrastructure}/monitoring/GrafanaDashboard.d.ts.map +1 -1
  216. package/dist/types/infrastructure/monitoring/MetricsCollector.d.ts.map +1 -0
  217. package/dist/types/infrastructure/monitoring/PrometheusExporter.d.ts.map +1 -0
  218. package/dist/types/infrastructure/monitoring/TelemetryExporter.d.ts.map +1 -0
  219. package/dist/types/infrastructure/native/NativeBackend.d.ts.map +1 -0
  220. package/dist/types/infrastructure/security/PIIRedactor.d.ts.map +1 -0
  221. package/dist/{infrastructure → types/infrastructure}/security/SSRFProtection.d.ts +1 -0
  222. package/dist/types/infrastructure/security/SSRFProtection.d.ts.map +1 -0
  223. package/dist/types/infrastructure/security/index.d.ts.map +1 -0
  224. package/dist/types/infrastructure/telemetry/UsageTelemetry.d.ts +13 -0
  225. package/dist/types/infrastructure/telemetry/UsageTelemetry.d.ts.map +1 -0
  226. package/dist/types/infrastructure/validation/ResponseValidator.d.ts.map +1 -0
  227. package/dist/types/integrations/express.d.ts.map +1 -0
  228. package/dist/types/integrations/graphql.d.ts.map +1 -0
  229. package/dist/types/integrations/nestjs.d.ts.map +1 -0
  230. package/dist/types/shared/constants/http.constants.d.ts.map +1 -0
  231. package/dist/types/shared/constants/index.d.ts.map +1 -0
  232. package/dist/types/shared/constants/rdap.constants.d.ts.map +1 -0
  233. package/dist/{shared → types/shared}/errors/base.error.d.ts +3 -0
  234. package/dist/types/shared/errors/base.error.d.ts.map +1 -0
  235. package/dist/types/shared/errors/index.d.ts.map +1 -0
  236. package/dist/types/shared/types/entities.d.ts.map +1 -0
  237. package/dist/{shared → types/shared}/types/enums.d.ts +1 -1
  238. package/dist/types/shared/types/enums.d.ts.map +1 -0
  239. package/dist/types/shared/types/errors.d.ts.map +1 -0
  240. package/dist/types/shared/types/generics.d.ts.map +1 -0
  241. package/dist/{shared → types/shared}/types/index.d.ts +1 -1
  242. package/dist/types/shared/types/index.d.ts.map +1 -0
  243. package/dist/{shared → types/shared}/types/options.d.ts +9 -0
  244. package/dist/types/shared/types/options.d.ts.map +1 -0
  245. package/dist/{shared → types/shared}/types/responses.d.ts +20 -0
  246. package/dist/types/shared/types/responses.d.ts.map +1 -0
  247. package/dist/types/shared/utils/deprecation.d.ts.map +1 -0
  248. package/dist/types/shared/utils/enhanced-validators.d.ts.map +1 -0
  249. package/dist/types/shared/utils/helpers/async.d.ts.map +1 -0
  250. package/dist/types/shared/utils/helpers/cache.d.ts.map +1 -0
  251. package/dist/types/shared/utils/helpers/format.d.ts.map +1 -0
  252. package/dist/types/shared/utils/helpers/http.d.ts.map +1 -0
  253. package/dist/types/shared/utils/helpers/index.d.ts.map +1 -0
  254. package/dist/types/shared/utils/helpers/object.d.ts.map +1 -0
  255. package/dist/types/shared/utils/helpers/runtime.d.ts.map +1 -0
  256. package/dist/types/shared/utils/helpers/string.d.ts.map +1 -0
  257. package/dist/types/shared/utils/validators/asn.d.ts.map +1 -0
  258. package/dist/types/shared/utils/validators/config-validation.d.ts.map +1 -0
  259. package/dist/types/shared/utils/validators/domain.d.ts.map +1 -0
  260. package/dist/types/shared/utils/validators/entity.d.ts.map +1 -0
  261. package/dist/types/shared/utils/validators/index.d.ts.map +1 -0
  262. package/dist/types/shared/utils/validators/ip.d.ts.map +1 -0
  263. package/dist/types/shared/utils/validators/nameserver.d.ts.map +1 -0
  264. package/dist/types/shared/utils/validators/network.d.ts.map +1 -0
  265. package/package.json +29 -25
  266. package/dist/application/client/RDAPClient.d.ts.map +0 -1
  267. package/dist/application/client/RDAPClient.js.map +0 -1
  268. package/dist/application/client/index.d.ts.map +0 -1
  269. package/dist/application/client/index.js.map +0 -1
  270. package/dist/application/deduplication/QueryDeduplicator.d.ts.map +0 -1
  271. package/dist/application/deduplication/QueryDeduplicator.js.map +0 -1
  272. package/dist/application/hooks/MiddlewareHooks.d.ts.map +0 -1
  273. package/dist/application/hooks/MiddlewareHooks.js.map +0 -1
  274. package/dist/application/services/BatchProcessor.d.ts.map +0 -1
  275. package/dist/application/services/BatchProcessor.js.map +0 -1
  276. package/dist/application/services/QueryOrchestrator.d.ts.map +0 -1
  277. package/dist/application/services/QueryOrchestrator.js.map +0 -1
  278. package/dist/application/services/QueryPriority.d.ts.map +0 -1
  279. package/dist/application/services/QueryPriority.js.map +0 -1
  280. package/dist/application/services/index.d.ts.map +0 -1
  281. package/dist/application/services/index.js.map +0 -1
  282. package/dist/cli/index.js.map +0 -1
  283. package/dist/core/ports/bootstrap.port.d.ts.map +0 -1
  284. package/dist/core/ports/bootstrap.port.js +0 -3
  285. package/dist/core/ports/bootstrap.port.js.map +0 -1
  286. package/dist/core/ports/cache.port.d.ts.map +0 -1
  287. package/dist/core/ports/cache.port.js +0 -3
  288. package/dist/core/ports/cache.port.js.map +0 -1
  289. package/dist/core/ports/fetcher.port.d.ts.map +0 -1
  290. package/dist/core/ports/fetcher.port.js +0 -3
  291. package/dist/core/ports/fetcher.port.js.map +0 -1
  292. package/dist/core/ports/index.d.ts.map +0 -1
  293. package/dist/core/ports/index.js.map +0 -1
  294. package/dist/core/ports/normalizer.port.d.ts.map +0 -1
  295. package/dist/core/ports/normalizer.port.js +0 -3
  296. package/dist/core/ports/normalizer.port.js.map +0 -1
  297. package/dist/core/ports/pii-redactor.port.d.ts.map +0 -1
  298. package/dist/core/ports/pii-redactor.port.js +0 -3
  299. package/dist/core/ports/pii-redactor.port.js.map +0 -1
  300. package/dist/index.d.ts.map +0 -1
  301. package/dist/index.js.map +0 -1
  302. package/dist/infrastructure/cache/CacheManager.d.ts.map +0 -1
  303. package/dist/infrastructure/cache/CacheManager.js.map +0 -1
  304. package/dist/infrastructure/cache/InMemoryCache.d.ts.map +0 -1
  305. package/dist/infrastructure/cache/InMemoryCache.js.map +0 -1
  306. package/dist/infrastructure/cache/PersistentCache.d.ts.map +0 -1
  307. package/dist/infrastructure/cache/PersistentCache.js.map +0 -1
  308. package/dist/infrastructure/cache/RedisCache.d.ts.map +0 -1
  309. package/dist/infrastructure/cache/RedisCache.js.map +0 -1
  310. package/dist/infrastructure/cache/index.d.ts.map +0 -1
  311. package/dist/infrastructure/cache/index.js.map +0 -1
  312. package/dist/infrastructure/http/AuthenticationManager.d.ts.map +0 -1
  313. package/dist/infrastructure/http/AuthenticationManager.js.map +0 -1
  314. package/dist/infrastructure/http/BootstrapDiscovery.d.ts.map +0 -1
  315. package/dist/infrastructure/http/BootstrapDiscovery.js.map +0 -1
  316. package/dist/infrastructure/http/BrowserFetcher.d.ts.map +0 -1
  317. package/dist/infrastructure/http/BrowserFetcher.js.map +0 -1
  318. package/dist/infrastructure/http/BunFetcher.d.ts.map +0 -1
  319. package/dist/infrastructure/http/BunFetcher.js.map +0 -1
  320. package/dist/infrastructure/http/CircuitBreaker.d.ts.map +0 -1
  321. package/dist/infrastructure/http/CircuitBreaker.js.map +0 -1
  322. package/dist/infrastructure/http/CloudflareWorkersFetcher.d.ts.map +0 -1
  323. package/dist/infrastructure/http/CloudflareWorkersFetcher.js.map +0 -1
  324. package/dist/infrastructure/http/CompressionManager.d.ts.map +0 -1
  325. package/dist/infrastructure/http/CompressionManager.js.map +0 -1
  326. package/dist/infrastructure/http/ConnectionPool.d.ts.map +0 -1
  327. package/dist/infrastructure/http/ConnectionPool.js.map +0 -1
  328. package/dist/infrastructure/http/DenoFetcher.d.ts.map +0 -1
  329. package/dist/infrastructure/http/DenoFetcher.js.map +0 -1
  330. package/dist/infrastructure/http/Fetcher.d.ts.map +0 -1
  331. package/dist/infrastructure/http/Fetcher.js.map +0 -1
  332. package/dist/infrastructure/http/Normalizer.d.ts.map +0 -1
  333. package/dist/infrastructure/http/Normalizer.js.map +0 -1
  334. package/dist/infrastructure/http/ProxyManager.d.ts.map +0 -1
  335. package/dist/infrastructure/http/ProxyManager.js.map +0 -1
  336. package/dist/infrastructure/http/RateLimiter.d.ts.map +0 -1
  337. package/dist/infrastructure/http/RateLimiter.js.map +0 -1
  338. package/dist/infrastructure/http/RetryStrategy.d.ts.map +0 -1
  339. package/dist/infrastructure/http/RetryStrategy.js.map +0 -1
  340. package/dist/infrastructure/http/index.d.ts.map +0 -1
  341. package/dist/infrastructure/http/index.js.map +0 -1
  342. package/dist/infrastructure/logging/AuditLogger.d.ts.map +0 -1
  343. package/dist/infrastructure/logging/AuditLogger.js.map +0 -1
  344. package/dist/infrastructure/logging/Logger.d.ts.map +0 -1
  345. package/dist/infrastructure/logging/Logger.js.map +0 -1
  346. package/dist/infrastructure/monitoring/GrafanaDashboard.js.map +0 -1
  347. package/dist/infrastructure/monitoring/MetricsCollector.d.ts.map +0 -1
  348. package/dist/infrastructure/monitoring/MetricsCollector.js.map +0 -1
  349. package/dist/infrastructure/monitoring/PrometheusExporter.d.ts.map +0 -1
  350. package/dist/infrastructure/monitoring/PrometheusExporter.js.map +0 -1
  351. package/dist/infrastructure/monitoring/TelemetryExporter.d.ts.map +0 -1
  352. package/dist/infrastructure/monitoring/TelemetryExporter.js.map +0 -1
  353. package/dist/infrastructure/native/NativeBackend.d.ts.map +0 -1
  354. package/dist/infrastructure/native/NativeBackend.js.map +0 -1
  355. package/dist/infrastructure/security/PIIRedactor.d.ts.map +0 -1
  356. package/dist/infrastructure/security/PIIRedactor.js.map +0 -1
  357. package/dist/infrastructure/security/SSRFProtection.d.ts.map +0 -1
  358. package/dist/infrastructure/security/SSRFProtection.js.map +0 -1
  359. package/dist/infrastructure/security/index.d.ts.map +0 -1
  360. package/dist/infrastructure/security/index.js.map +0 -1
  361. package/dist/infrastructure/validation/ResponseValidator.d.ts.map +0 -1
  362. package/dist/infrastructure/validation/ResponseValidator.js.map +0 -1
  363. package/dist/integrations/express.d.ts.map +0 -1
  364. package/dist/integrations/express.js.map +0 -1
  365. package/dist/integrations/graphql.d.ts.map +0 -1
  366. package/dist/integrations/graphql.js.map +0 -1
  367. package/dist/integrations/nestjs.d.ts.map +0 -1
  368. package/dist/integrations/nestjs.js.map +0 -1
  369. package/dist/shared/constants/http.constants.d.ts.map +0 -1
  370. package/dist/shared/constants/http.constants.js.map +0 -1
  371. package/dist/shared/constants/index.d.ts.map +0 -1
  372. package/dist/shared/constants/index.js.map +0 -1
  373. package/dist/shared/constants/rdap.constants.d.ts.map +0 -1
  374. package/dist/shared/constants/rdap.constants.js.map +0 -1
  375. package/dist/shared/errors/base.error.d.ts.map +0 -1
  376. package/dist/shared/errors/base.error.js.map +0 -1
  377. package/dist/shared/errors/index.d.ts.map +0 -1
  378. package/dist/shared/errors/index.js.map +0 -1
  379. package/dist/shared/types/entities.d.ts.map +0 -1
  380. package/dist/shared/types/entities.js.map +0 -1
  381. package/dist/shared/types/enums.d.ts.map +0 -1
  382. package/dist/shared/types/enums.js.map +0 -1
  383. package/dist/shared/types/errors.d.ts.map +0 -1
  384. package/dist/shared/types/errors.js.map +0 -1
  385. package/dist/shared/types/generics.d.ts.map +0 -1
  386. package/dist/shared/types/generics.js.map +0 -1
  387. package/dist/shared/types/index.d.ts.map +0 -1
  388. package/dist/shared/types/index.js.map +0 -1
  389. package/dist/shared/types/options.d.ts.map +0 -1
  390. package/dist/shared/types/options.js.map +0 -1
  391. package/dist/shared/types/responses.d.ts.map +0 -1
  392. package/dist/shared/types/responses.js +0 -3
  393. package/dist/shared/types/responses.js.map +0 -1
  394. package/dist/shared/utils/deprecation.d.ts.map +0 -1
  395. package/dist/shared/utils/deprecation.js.map +0 -1
  396. package/dist/shared/utils/enhanced-validators.d.ts.map +0 -1
  397. package/dist/shared/utils/enhanced-validators.js.map +0 -1
  398. package/dist/shared/utils/helpers/async.d.ts.map +0 -1
  399. package/dist/shared/utils/helpers/async.js.map +0 -1
  400. package/dist/shared/utils/helpers/cache.d.ts.map +0 -1
  401. package/dist/shared/utils/helpers/cache.js.map +0 -1
  402. package/dist/shared/utils/helpers/format.d.ts.map +0 -1
  403. package/dist/shared/utils/helpers/format.js.map +0 -1
  404. package/dist/shared/utils/helpers/http.d.ts.map +0 -1
  405. package/dist/shared/utils/helpers/http.js.map +0 -1
  406. package/dist/shared/utils/helpers/index.d.ts.map +0 -1
  407. package/dist/shared/utils/helpers/index.js.map +0 -1
  408. package/dist/shared/utils/helpers/object.d.ts.map +0 -1
  409. package/dist/shared/utils/helpers/object.js.map +0 -1
  410. package/dist/shared/utils/helpers/runtime.d.ts.map +0 -1
  411. package/dist/shared/utils/helpers/runtime.js.map +0 -1
  412. package/dist/shared/utils/helpers/string.d.ts.map +0 -1
  413. package/dist/shared/utils/helpers/string.js.map +0 -1
  414. package/dist/shared/utils/validators/asn.d.ts.map +0 -1
  415. package/dist/shared/utils/validators/asn.js.map +0 -1
  416. package/dist/shared/utils/validators/config-validation.d.ts.map +0 -1
  417. package/dist/shared/utils/validators/config-validation.js.map +0 -1
  418. package/dist/shared/utils/validators/domain.d.ts.map +0 -1
  419. package/dist/shared/utils/validators/domain.js.map +0 -1
  420. package/dist/shared/utils/validators/entity.d.ts.map +0 -1
  421. package/dist/shared/utils/validators/entity.js.map +0 -1
  422. package/dist/shared/utils/validators/index.d.ts.map +0 -1
  423. package/dist/shared/utils/validators/index.js.map +0 -1
  424. package/dist/shared/utils/validators/ip.d.ts.map +0 -1
  425. package/dist/shared/utils/validators/ip.js.map +0 -1
  426. package/dist/shared/utils/validators/nameserver.d.ts.map +0 -1
  427. package/dist/shared/utils/validators/nameserver.js.map +0 -1
  428. package/dist/shared/utils/validators/network.d.ts.map +0 -1
  429. package/dist/shared/utils/validators/network.js.map +0 -1
  430. /package/dist/{application → types/application}/client/index.d.ts +0 -0
  431. /package/dist/{application → types/application}/deduplication/QueryDeduplicator.d.ts +0 -0
  432. /package/dist/{application → types/application}/hooks/MiddlewareHooks.d.ts +0 -0
  433. /package/dist/{application → types/application}/services/BatchProcessor.d.ts +0 -0
  434. /package/dist/{application → types/application}/services/QueryOrchestrator.d.ts +0 -0
  435. /package/dist/{application → types/application}/services/QueryPriority.d.ts +0 -0
  436. /package/dist/{application → types/application}/services/index.d.ts +0 -0
  437. /package/dist/{cli → types/cli}/index.d.ts +0 -0
  438. /package/dist/{core → types/core}/ports/bootstrap.port.d.ts +0 -0
  439. /package/dist/{core → types/core}/ports/cache.port.d.ts +0 -0
  440. /package/dist/{core → types/core}/ports/fetcher.port.d.ts +0 -0
  441. /package/dist/{core → types/core}/ports/index.d.ts +0 -0
  442. /package/dist/{core → types/core}/ports/normalizer.port.d.ts +0 -0
  443. /package/dist/{core → types/core}/ports/pii-redactor.port.d.ts +0 -0
  444. /package/dist/{infrastructure → types/infrastructure}/cache/CacheManager.d.ts +0 -0
  445. /package/dist/{infrastructure → types/infrastructure}/cache/InMemoryCache.d.ts +0 -0
  446. /package/dist/{infrastructure → types/infrastructure}/cache/PersistentCache.d.ts +0 -0
  447. /package/dist/{infrastructure → types/infrastructure}/cache/RedisCache.d.ts +0 -0
  448. /package/dist/{infrastructure → types/infrastructure}/cache/index.d.ts +0 -0
  449. /package/dist/{infrastructure → types/infrastructure}/http/AuthenticationManager.d.ts +0 -0
  450. /package/dist/{infrastructure → types/infrastructure}/http/BootstrapDiscovery.d.ts +0 -0
  451. /package/dist/{infrastructure → types/infrastructure}/http/BrowserFetcher.d.ts +0 -0
  452. /package/dist/{infrastructure → types/infrastructure}/http/BunFetcher.d.ts +0 -0
  453. /package/dist/{infrastructure → types/infrastructure}/http/CircuitBreaker.d.ts +0 -0
  454. /package/dist/{infrastructure → types/infrastructure}/http/CloudflareWorkersFetcher.d.ts +0 -0
  455. /package/dist/{infrastructure → types/infrastructure}/http/CompressionManager.d.ts +0 -0
  456. /package/dist/{infrastructure → types/infrastructure}/http/ConnectionPool.d.ts +0 -0
  457. /package/dist/{infrastructure → types/infrastructure}/http/DenoFetcher.d.ts +0 -0
  458. /package/dist/{infrastructure → types/infrastructure}/http/Normalizer.d.ts +0 -0
  459. /package/dist/{infrastructure → types/infrastructure}/http/ProxyManager.d.ts +0 -0
  460. /package/dist/{infrastructure → types/infrastructure}/http/RetryStrategy.d.ts +0 -0
  461. /package/dist/{infrastructure → types/infrastructure}/http/index.d.ts +0 -0
  462. /package/dist/{infrastructure → types/infrastructure}/logging/AuditLogger.d.ts +0 -0
  463. /package/dist/{infrastructure → types/infrastructure}/logging/Logger.d.ts +0 -0
  464. /package/dist/{infrastructure → types/infrastructure}/monitoring/GrafanaDashboard.d.ts +0 -0
  465. /package/dist/{infrastructure → types/infrastructure}/monitoring/MetricsCollector.d.ts +0 -0
  466. /package/dist/{infrastructure → types/infrastructure}/monitoring/PrometheusExporter.d.ts +0 -0
  467. /package/dist/{infrastructure → types/infrastructure}/monitoring/TelemetryExporter.d.ts +0 -0
  468. /package/dist/{infrastructure → types/infrastructure}/native/NativeBackend.d.ts +0 -0
  469. /package/dist/{infrastructure → types/infrastructure}/security/PIIRedactor.d.ts +0 -0
  470. /package/dist/{infrastructure → types/infrastructure}/security/index.d.ts +0 -0
  471. /package/dist/{infrastructure → types/infrastructure}/validation/ResponseValidator.d.ts +0 -0
  472. /package/dist/{integrations → types/integrations}/express.d.ts +0 -0
  473. /package/dist/{integrations → types/integrations}/graphql.d.ts +0 -0
  474. /package/dist/{integrations → types/integrations}/nestjs.d.ts +0 -0
  475. /package/dist/{shared → types/shared}/constants/http.constants.d.ts +0 -0
  476. /package/dist/{shared → types/shared}/constants/index.d.ts +0 -0
  477. /package/dist/{shared → types/shared}/constants/rdap.constants.d.ts +0 -0
  478. /package/dist/{shared → types/shared}/errors/index.d.ts +0 -0
  479. /package/dist/{shared → types/shared}/types/entities.d.ts +0 -0
  480. /package/dist/{shared → types/shared}/types/errors.d.ts +0 -0
  481. /package/dist/{shared → types/shared}/types/generics.d.ts +0 -0
  482. /package/dist/{shared → types/shared}/utils/deprecation.d.ts +0 -0
  483. /package/dist/{shared → types/shared}/utils/enhanced-validators.d.ts +0 -0
  484. /package/dist/{shared → types/shared}/utils/helpers/async.d.ts +0 -0
  485. /package/dist/{shared → types/shared}/utils/helpers/cache.d.ts +0 -0
  486. /package/dist/{shared → types/shared}/utils/helpers/format.d.ts +0 -0
  487. /package/dist/{shared → types/shared}/utils/helpers/http.d.ts +0 -0
  488. /package/dist/{shared → types/shared}/utils/helpers/index.d.ts +0 -0
  489. /package/dist/{shared → types/shared}/utils/helpers/object.d.ts +0 -0
  490. /package/dist/{shared → types/shared}/utils/helpers/runtime.d.ts +0 -0
  491. /package/dist/{shared → types/shared}/utils/helpers/string.d.ts +0 -0
  492. /package/dist/{shared → types/shared}/utils/validators/asn.d.ts +0 -0
  493. /package/dist/{shared → types/shared}/utils/validators/config-validation.d.ts +0 -0
  494. /package/dist/{shared → types/shared}/utils/validators/domain.d.ts +0 -0
  495. /package/dist/{shared → types/shared}/utils/validators/entity.d.ts +0 -0
  496. /package/dist/{shared → types/shared}/utils/validators/index.d.ts +0 -0
  497. /package/dist/{shared → types/shared}/utils/validators/ip.d.ts +0 -0
  498. /package/dist/{shared → types/shared}/utils/validators/nameserver.d.ts +0 -0
  499. /package/dist/{shared → types/shared}/utils/validators/network.d.ts +0 -0
package/README.ar.md ADDED
@@ -0,0 +1,572 @@
1
+ <p align="center">
2
+ <img src="website/static/img/logo-512.png" alt="RDAPify" width="80" />
3
+ </p>
4
+
5
+ <h1 align="center">RDAPify</h1>
6
+ <p align="center"><strong>عميل RDAP موحد وآمن وعالي الأداء</strong></p>
7
+
8
+ [![npm version](https://img.shields.io/npm/v/rdapify?style=flat-square)](https://www.npmjs.com/package/rdapify)
9
+ [![npm downloads](https://img.shields.io/npm/dm/rdapify?style=flat-square)](https://www.npmjs.com/package/rdapify)
10
+ [![License](https://img.shields.io/npm/l/rdapify?style=flat-square)](LICENSE)
11
+ [![CI](https://img.shields.io/github/actions/workflow/status/rdapify/RDAPify/ci.yml?style=flat-square&label=CI)](https://github.com/rdapify/RDAPify/actions/workflows/ci.yml)
12
+ [![Coverage](https://img.shields.io/codecov/c/github/rdapify/RDAPify?style=flat-square)](https://codecov.io/gh/rdapify/RDAPify)
13
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
14
+ [![Project Status](https://img.shields.io/badge/status-alpha-orange?style=flat-square)](https://github.com/rdapify/RDAPify/blob/main/CHANGELOG.md)
15
+ [![Security](https://img.shields.io/badge/security-SSRF%20Protected-brightgreen?style=flat-square)](SECURITY.md)
16
+ [![Website](https://img.shields.io/badge/website-rdapify.com-blue?style=flat-square)](https://rdapify.com)
17
+
18
+ > **برنامج Alpha**
19
+ >
20
+ > RDAPify قيد التطوير النشط. الوظائف الأساسية (استعلامات RDAP والتخزين المؤقت وحماية SSRF) مستقرة واختبارات شاملة، لكن الواجهات البرمجية قد تتغير قبل v1.0. نرحب بـ [المشاكل](https://github.com/rdapify/RDAPify/issues) و[التعليقات](https://github.com/rdapify/RDAPify/discussions) من المجتمع أثناء تطور المشروع.
21
+
22
+ **RDAPify** يوحد استعلامات RDAP عبر جميع السجلات العالمية (Verisign و ARIN و RIPE و APNIC و LACNIC) مع حماية أمان قوية وأداء استثنائية وتجربة مطور متكاملة. هذا ليس مجرد عميل RDAP آخر — إنه منصة كاملة لمعالجة بيانات التسجيل بأمان.
23
+
24
+ > **ملاحظة:** يزيل هذا المشروع الحاجة إلى بروتوكول WHOIS التقليدي، مع الحفاظ على التوافق العكسي عند الحاجة.
25
+
26
+ ## 🚀 لماذا RDAPify؟
27
+
28
+ استعلامات RDAP المباشرة معقدة — كل سجل يستخدم تنسيقات مختلفة وحدود معدل وإجراءات أمان. بدلاً من إعادة اختراع العجلة لكل مشروع:
29
+
30
+ ```diff
31
+ - الحفاظ على تطبيقات WHOIS/RDAP متعددة
32
+ - التعامل اليدوي مع الاختلافات بين السجلات
33
+ - القلق المستمر حول ضعف SSRF
34
+ - الأداء غير المتوقع بدون التخزين المؤقت
35
+ + حل موحد واحد، يختبر بصرامة، مفتوح المصدر
36
+ ```
37
+
38
+ يعالج RDAPify ذكياً هذه التحديات:
39
+
40
+ - ✅ **تطبيع البيانات**: استجابة متسقة بغض النظر عن سجل المصدر
41
+ - ✅ **حماية SSRF**: منع الهجمات على البنية التحتية الداخلية
42
+ - ✅ **أداء استثنائية**: التخزين المؤقت الذكي، المعالجة المتوازية، تحسين الذاكرة
43
+ - ✅ **توافق Node.js**: التحقق من العمل على Node.js 20+؛ Bun و Deno و Cloudflare Workers مدعومة أيضاً
44
+ - ✅ **جاهز للـ GDPR**: أدوات مدمجة لحذف البيانات الشخصية تلقائياً
45
+
46
+ ## 📦 التثبيت السريع
47
+
48
+ ```bash
49
+ # استخدام npm
50
+ npm install rdapify
51
+
52
+ # استخدام yarn
53
+ yarn add rdapify
54
+
55
+ # استخدام pnpm
56
+ pnpm add rdapify
57
+ ```
58
+
59
+ ```bash
60
+ # استخدام Bun
61
+ bun add rdapify
62
+ ```
63
+
64
+ ## ⚡ ابدأ في 30 ثانية
65
+
66
+ ### الاستخدام الأساسي
67
+
68
+ ```typescript
69
+ import { RDAPClient } from 'rdapify';
70
+
71
+ // إنشء عميل بالإعدادات الافتراضية
72
+ const client = new RDAPClient();
73
+
74
+ // استعلام عن نطاق
75
+ const result = await client.domain('example.com');
76
+
77
+ console.log({
78
+ domain: result.query,
79
+ registrar: result.registrar?.name,
80
+ status: result.status,
81
+ nameservers: result.nameservers,
82
+ created: result.events.find((e) => e.eventAction === 'registration')?.eventDate,
83
+ expires: result.events.find((e) => e.eventAction === 'expiration')?.eventDate,
84
+ });
85
+ ```
86
+
87
+ ### مع خيارات الأمان والأداء
88
+
89
+ ```typescript
90
+ import { RDAPClient } from 'rdapify';
91
+
92
+ // إنشاء عميل آمن مع إعدادات محسنة
93
+ const client = new RDAPClient({
94
+ cache: true, // ذاكرة تخزين مؤقت LRU (TTL ساعة واحدة)
95
+ privacy: true, // حذف PII تلقائي (GDPR/CCPA)
96
+ retry: {
97
+ maxAttempts: 3,
98
+ backoff: 'exponential',
99
+ },
100
+ });
101
+
102
+ // استعلام النطاق أو IP أو ASN أو nameserver أو entity
103
+ const domain = await client.domain('example.com');
104
+ const ip = await client.ip('8.8.8.8');
105
+ const asn = await client.asn('AS15169');
106
+ const ns = await client.nameserver('ns1.example.com');
107
+ const entity = await client.entity('ARIN-HN-1', 'https://rdap.arin.net/registry');
108
+ ```
109
+
110
+ **مثال الإخراج:**
111
+
112
+ ```json
113
+ {
114
+ "query": "example.com",
115
+ "registrar": "Internet Assigned Numbers Authority",
116
+ "status": ["clientDeleteProhibited", "clientTransferProhibited", "clientUpdateProhibited"],
117
+ "nameservers": ["a.iana-servers.net", "b.iana-servers.net"],
118
+ "created": "1995-08-14T04:00:00Z",
119
+ "expires": "2026-08-13T04:00:00Z"
120
+ }
121
+ ```
122
+
123
+ ### مع استعلامات Nameserver و Entity (v0.1.7+)
124
+
125
+ ```typescript
126
+ import { RDAPClient } from 'rdapify';
127
+
128
+ const client = new RDAPClient();
129
+
130
+ // استعلام عن nameserver — اكتشاف تلقائي عبر bootstrap IANA DNS
131
+ const ns = await client.nameserver('ns1.example.com');
132
+ console.log(ns.ldhName); // "ns1.example.com"
133
+ console.log(ns.ipAddresses); // { v4: ['93.184.216.34'], v6: [...] }
134
+ console.log(ns.status); // ['active']
135
+
136
+ // استعلام عن entity — يتطلب عنوان URL خادم صريح (لا توجد عمليات بحث عامة عن IANA)
137
+ const entity = await client.entity('ARIN-HN-1', 'https://rdap.arin.net/registry');
138
+ console.log(entity.handle); // "ARIN-HN-1"
139
+ console.log(entity.roles); // ['registrar', 'technical']
140
+ ```
141
+
142
+ ### مع المراقبة والمقاييس (v0.1.2+)
143
+
144
+ ```typescript
145
+ import { RDAPClient } from 'rdapify';
146
+
147
+ // إنشاء عميل مع تمكين المراقبة
148
+ const client = new RDAPClient({
149
+ cache: true,
150
+ logging: {
151
+ level: 'info', // debug, info, warn, error
152
+ enabled: true,
153
+ },
154
+ });
155
+
156
+ // تنفيذ الاستعلامات
157
+ await client.domain('example.com');
158
+ await client.ip('8.8.8.8');
159
+
160
+ // احصل على مقاييس الأداء
161
+ const metrics = client.getMetrics();
162
+ console.log(`معدل النجاح: ${metrics.successRate}%`);
163
+ console.log(`وقت الاستجابة المتوسط: ${metrics.avgResponseTime}ms`);
164
+ console.log(`معدل Cache Hit: ${metrics.cacheHitRate}%`);
165
+
166
+ // احصل على إحصائيات Connection Pool
167
+ const poolStats = client.getConnectionPoolStats();
168
+ console.log(`الاتصالات النشطة: ${poolStats.activeConnections}`);
169
+
170
+ // احصل على السجلات الأخيرة
171
+ const logs = client.getLogs(10);
172
+ logs.forEach((log) => {
173
+ console.log(`[${log.level}] ${log.message}`);
174
+ });
175
+
176
+ // تنظيف الموارد
177
+ client.destroy();
178
+ ```
179
+
180
+ ## 🌟 المميزات الأساسية
181
+
182
+ ### 🔒 أمان المؤسسات
183
+
184
+ - **حماية SSRF مدمجة**: منع الاستعلامات إلى عناوين IP الداخلية أو النطاقات الخطرة
185
+ - **التحقق من الشهادات**: رفض الاتصالات غير الآمنة بخوادم RDAP
186
+ - **تحديد المعدل**: منع حظر الخدمة بسبب الطلبات المفرطة
187
+ - **معالجة البيانات الآمنة**: حذف PII وفقاً لمتطلبات GDPR/CCPA
188
+ - **دعم المصادقة** (v0.1.1+): Basic و Bearer Token و API Key و OAuth2
189
+ - **دعم Proxy** (v0.1.1+): HTTP/HTTPS/SOCKS4/SOCKS5 مع المصادقة
190
+ - **مسار تدقيق كامل**: تتبع جميع العمليات الحرجة لأغراض الامتثال
191
+
192
+ ### ⚡ أداء استثنائية
193
+
194
+ - **التخزين المؤقت الذكي**: ذاكرة تخزين مؤقت LRU مع TTL قابل للتكوين
195
+ - **التخزين المؤقت الثابت** (v0.1.1+): ذاكرة تخزين مؤقت قائمة على الملفات تبقى بعد إعادة التشغيل
196
+ - **Connection Pooling** (v0.1.2+): إعادة استخدام اتصال HTTP لتحسين الأداء بنسبة 30-40٪
197
+ - **معالجة الدفعات**: معالجة الاستعلامات المتعددة بكفاءة (أسرع 5-10 مرات)
198
+ - **ضغط الاستجابة** (v0.1.1+): دعم gzip/brotli لتقليل النطاق الترددي بنسبة 60-80٪
199
+ - **استراتيجيات إعادة المحاولة** (v0.1.1+): قاطع الدائرة مع تراجع أسي
200
+ - **أولويات الاستعلام** (v0.1.1+): قائمة انتظار ذات أولوية عالية/عادية/منخفضة
201
+ - **اكتشاف السجل**: اكتشاف Bootstrap IANA التلقائي لإيجاد السجل الصحيح
202
+ - **التحليل المحسّن**: تطبيع JSONPath السريع
203
+
204
+ ### 📊 المراقبة والملاحظة (v0.1.2+)
205
+
206
+ - **جمع المقاييس**: تتبع أداء الاستعلام ومعدلات النجاح وفعالية الذاكرة المؤقتة
207
+ - **تسجيل الطلب/الاستجابة**: التسجيل المفصل مع مستويات قابلة للتكوين (debug و info و warn و error)
208
+ - **تحليل الأداء**: مراقبة أوقات الاستجابة والتعرف على الاختناقات وتحسين الاستعلامات
209
+ - **إحصائيات Connection Pool**: تتبع إعادة استخدام الاتصال واستخدام الموارد
210
+ - **التصفية الزمنية**: تحليل المقاييس خلال فترات زمنية محددة
211
+ - **إمكانيات التصدير**: تصدير المقاييس والسجلات للتحليل الخارجي
212
+
213
+ ### 🧩 التكامل السلس
214
+
215
+ - **دعم TypeScript الكامل**: مكتوب بقوة مع الوثائق المضمنة
216
+ - **دعم Node.js 20+**: التحقق من العمل (Node.js و Bun و Deno و Cloudflare Workers)
217
+ - **التحقق المحسّن** (v0.1.1+): نطاقات IDN و IPv6 والنطاقات و ASN
218
+ - **استعلامات Nameserver و Entity** (v0.1.7+): `client.nameserver()` و `client.entity()` مع دعم RDAP الكامل
219
+ - **أداة CLI** (v0.1.7+): `rdapify domain/ip/asn/nameserver/entity` مع `--json` و `--no-cache` و `--timeout` و `--server` flags
220
+ - **ملعب ويب**: جرب RDAPify مباشرة على [rdapify.com/playground](https://rdapify.com/playground)
221
+ - **قوالب مدمجة مسبقاً**: لـ AWS Lambda و Azure Functions و Kubernetes والمزيد (مخطط)
222
+
223
+ ### 📊 تحليلات متقدمة (مخطط)
224
+
225
+ الإصدارات المستقبلية ستشمل:
226
+
227
+ - **لوحات معلومات قابلة للتخصيص**: تتبع النطاقات والأصول الحرجة
228
+ - **تقارير آلية**: جدولة تنبيهات انتهاء الصلاحية والتغييرات المهمة
229
+ - **كشف النمط**: تحديد السلوكيات المريبة في التسجيل أو الهجمات المحتملة
230
+ - **تصور العلاقات**: فهم الملكية المعقدة وشبكات التسجيل
231
+
232
+ ## 🏗️ البنية الأساسية
233
+
234
+ ```mermaid
235
+ graph LR
236
+ A[التطبيق] --> B(عميل RDAP)
237
+ B --> C{اكتشاف السجل}
238
+ C -->|Bootstrap IANA| D[(طبقة الذاكرة المؤقتة)]
239
+ B --> E[التطبيع]
240
+ E -->|JSONPath| F[استجابات خام]
241
+ F --> G[تنسيق موحد]
242
+ G --> H[حذف PII]
243
+ H --> I[الاستجابة النهائية]
244
+ D -->|التحضير المسبق| C
245
+ style B fill:#4CAF50,stroke:#388E3C
246
+ style D fill:#FF9800,stroke:#F57C00
247
+ style G fill:#2196F3,stroke:#0D47A1
248
+ ```
249
+
250
+ ## 🛡️ الأمان كمبدأ أساسي
251
+
252
+ لا نتعامل مع الأمان كميزة إضافية — إنه أساسي لتصميمنا. يحمي RDAPify تطبيقاتك من:
253
+
254
+ | التهديد | آلية الحماية | الحرجية |
255
+ |--------|-------------|--------|
256
+ | SSRF | التحقق من النطاق وحظر IP الداخلية | 🔴 حرج |
257
+ | DoS | تحديد المعدل والمهل الزمنية | 🟠 مهم |
258
+ | تسرب البيانات | حذف PII وعدم تخزين الاستجابة الخام | 🔴 حرج |
259
+ | MitM | HTTPS إجباري والتحقق من الشهادة | 🟠 مهم |
260
+ | حقن البيانات | التحقق من المخطط والتحليل الصارم | 🟠 مهم |
261
+
262
+ اقرأ [وثيقة أمان RDAP الخاصة بنا](docs/security/whitepaper.md) لمزيد من التفاصيل التقنية والسيناريوهات المتقدمة.
263
+
264
+ ## 📚 التوثيق
265
+
266
+ يوفر RDAPify توثيقاً شاملاً في المستودع:
267
+
268
+ - **[البدء السريع](docs/getting_started/)** - التثبيت والبدء السريع والاستعلام الأول
269
+ - **[مرجع API](docs/api_reference/)** - توثيق API TypeScript الكامل
270
+ - **[المفاهيم الأساسية](docs/core_concepts/)** - أساسيات RDAP والبنية والتطبيع
271
+ - **[دليل الأمان](docs/security/)** - حماية SSRF وحذف PII وأفضل الممارسات
272
+ - **[الأدلة](docs/guides/)** - معالجة الأخطاء واستراتيجيات التخزين المؤقت وتحسين الأداء
273
+ - **[الأمثلة](examples/)** - أمثلة كود من العالم الحقيقي وحالات الاستخدام
274
+
275
+ > **نصيحة**: التوثيق الكامل للـ API والدليل متاح في دليل [`docs/`](docs/).
276
+
277
+ ## 🌐 ملعب تفاعلي
278
+
279
+ جرب RDAPify مباشرة في المتصفح — لا حاجة للتثبيت: **[rdapify.com/playground](https://rdapify.com/playground)**
280
+
281
+ ## 📊 معايير الأداء
282
+
283
+ تم قياسها على **النهاية الخلفية الأصلية** (`rdapify-nd` و `cargo bench` و Criterion و Linux x86-64 وخادم HTTP وهمي). معايير pipeline TypeScript أعلى بـ ~10-20×:
284
+
285
+ | السيناريو | الكمون |
286
+ |---------|--------|
287
+ | استعلام — بدون ذاكرة مؤقتة (bootstrap + fetch + normalize) | ~180 µs |
288
+ | استعلام — **cache hit** | **~2.3 µs** (~80× أسرع) |
289
+ | قراءة الذاكرة المؤقتة (DashMap و TTL جديد) | ~124 ns |
290
+ | التحقق من عنوان URL SSRF | ~141–295 ns |
291
+
292
+ > **مع النهاية الخلفية الأصلية** (`npm install rdapify-nd`)، تعمل الطرق الخمسة الأساسية
293
+ > استعلام داخل Rust المترجم بدلاً من pipeline TypeScript — أقل
294
+ > كمون لكل استدعاء للسيناريوهات عالية الإنتاجية.
295
+ >
296
+ > ```ts
297
+ > const client = new RDAPClient({ backend: 'auto' }); // يستخدم rdapify-nd إذا تم التثبيت
298
+ > ```
299
+
300
+ ## 👥 المجتمع والدعم
301
+
302
+ RDAPify مشروع مفتوح المصدر. احصل على المساعدة أو ساهم:
303
+
304
+ ### 🐛 تقارير الأخطاء وطلبات الميزات
305
+ - **[مشاكل GitHub](https://github.com/rdapify/RDAPify/issues)** - الإبلاغ عن الأخطاء أو طلب الميزات
306
+
307
+ ### 💬 الأسئلة والنقاشات
308
+ - **[نقاشات GitHub](https://github.com/rdapify/RDAPify/discussions)** - اطرح أسئلة وشارك الأفكار وأظهر ما بنيته
309
+
310
+ ### 📧 الاتصال المباشر
311
+ - **استفسارات عامة**: contact@rdapify.com
312
+ - **مشاكل الأمان**: security@rdapify.com (انظر [SECURITY.md](SECURITY.md))
313
+ - **الدعم**: support@rdapify.com
314
+
315
+ ### 🤝 المساهمة
316
+ - **[CONTRIBUTING.md](CONTRIBUTING.md)** - إرشادات المساهمة
317
+ - **[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)** - معايير المجتمع
318
+
319
+ ## 🚧 حالة المشروع
320
+
321
+ **الإصدار الحالي**: v0.3.0 (Alpha)
322
+
323
+ ### 🎉 ما هو جديد في v0.3.0
324
+
325
+ **Streaming و Monitoring و Runtime Maturity**
326
+ - ✅ **واجهة برمجية Streaming Batch**: `client.streamBatch(queries[])` — `AsyncIterable<QueryResult>` مع back-pressure (لا overflow في 1000+ استعلام)
327
+ - ✅ **Prometheus Exporter**: فئة `PrometheusExporter` مع `createHttpHandler()` لـ metrics scraping
328
+ - ✅ **لوحة معلومات Grafana**: قالب JSON مدمج `RDAPIFY_GRAFANA_DASHBOARD` — استيراد مباشر إلى Grafana
329
+ - ✅ **OpenTelemetry Traces**: `TelemetryExporter` + `ClientConfig.telemetry.endpoint` للتتبع الموزع
330
+ - ✅ **Bootstrap متعدد المناطق**: `ClientConfig.bootstrap.regions: ['us', 'eu', 'ap']` — اختيار تلقائي لأقرب مرآة IANA
331
+ - ✅ **محرك الإيقاف**: أداة `deprecated()` — تحذير وقت التشغيل عبر `process.emitWarning`، يُصدر مرة واحدة لكل مسار الكود
332
+ - ✅ **BrowserFetcher**: منتقي متوافق مع المتصفح بالكامل لبيئات المتصفح القائمة على الوكيل
333
+
334
+ ### v0.2.3 — تكاملات الإطار
335
+
336
+ - ✅ **مخطط GraphQL**: مستقل عن الإطار `{ typeDefs, resolvers }` — يعمل مع graphql-yoga وأي خادم GraphQL
337
+ - ✅ **وسيط Express**: `rdapifyExpress(client)` — `GET /domain/:name` و `/ip/:address` و `/asn/:number`
338
+ - ✅ **وحدة NestJS**: `RdapifyModule.forRoot(config)` + decorator `@InjectRdapClient()`
339
+
340
+ ### v0.2.2 — دعم Edge Runtime
341
+
342
+ - ✅ **دعم Deno**: `DenoFetcher` مع اكتشاف runtime `isDeno()`
343
+ - ✅ **Cloudflare Workers**: `CloudflareWorkersFetcher` — بدون اعتماديات `fs` أو `process`؛ متوافق مع الحافة
344
+ - ✅ **تصدير الحزمة**: نقاط دخول `./worker` و `./deno` و `./node`
345
+
346
+ ### v0.2.1 — Bun Runtime
347
+
348
+ - ✅ **BunFetcher**: `BunFetcher implements IFetcherPort` — استخدام `Bun.fetch`؛ اختيار تلقائي عند اكتشاف Bun
349
+ - ✅ **CI**: وظيفة Bun المضافة إلى `.github/workflows/ci.yml`
350
+
351
+ ### v0.2.0 — تحسينات أساسية
352
+
353
+ - ✅ **قاطع الدائرة**: الحالة الكاملة `closed → open → half-open → closed/open`
354
+ - ✅ **Redis Pipeline**: batch `getMany`/`setMany` + ضغط مفاتيح SHA-256 للمفاتيح الطويلة
355
+ - ✅ **Middleware `ctx.abort()`**: يمكن لخطافات `beforeQuery` الآن إيقاف الاستعلامات (`QueryAbortedError`)
356
+ - ✅ **أولوية Middleware**: ترتيب الأولوية الرقمي (الأقل = أولوية أعلى)
357
+ - ✅ **دعم HTTP/2**: اختياري عبر `ClientConfig.http2: boolean`
358
+
359
+ ### v0.1.9 — التوفر و Bootstrap
360
+
361
+ - ✅ **توفر النطاق**: `client.checkAvailability(domain)` — RDAP فقط، يعود `{ available, expiresAt? }`
362
+ - ✅ **التوفر بالدفعات**: `client.checkAvailabilityBatch(domains[])` — دفعة متزامنة
363
+ - ✅ **اختبارات التكامل المباشرة**: إختيار عبر `npm run test:live` و `LIVE_TESTS=1` (سير عمل CI أسبوعي، لا يحجب الدمج)
364
+ - ✅ **إعداد Bootstrap متقدم**: `customServers` و override `ttl` و `fallback` إلى IANA
365
+
366
+ **الإصدارات السابقة (v0.1.0–v0.1.8)**
367
+ - ✅ نهاية خلفية أصلية Rust (`rdapify-nd`)، أداة CLI، استعلامات nameserver/entity، وضع TypeScript الصارم
368
+ - ✅ Redis cache، خطافات middleware، إزالة الاستعلام المكرر، AuditLogger، التحقق من استجابة RFC 7483
369
+ - ✅ المصادقة (Basic/Bearer/API Key/OAuth2)، proxy (HTTP/HTTPS/SOCKS4/SOCKS5)، ضغط
370
+ - ✅ استراتيجيات إعادة المحاولة، قاطع الدائرة، أولويات الاستعلام، connection pooling، مقاييس ومراقبة
371
+
372
+ انظر [CHANGELOG.md](CHANGELOG.md) للحصول على سجل إصدارات مفصل.
373
+
374
+ ### ✅ مجموعة الميزات الكاملة (v0.3.0)
375
+
376
+ - ✅ **عميل RDAP**: استعلامات النطاق و IP و ASN و Nameserver و Entity مع اكتشاف bootstrap IANA التلقائي
377
+ - ✅ **توفر النطاق**: `client.checkAvailability()` + `client.checkAvailabilityBatch()` عبر RDAP
378
+ - ✅ **أداة CLI**: `rdapify domain/ip/asn/nameserver/entity` مع `--json` و `--no-cache` و `--timeout` و `--server` flags
379
+ - ✅ **حماية SSRF**: يحجب IPs الخاصة و localhost و link-local و مطابقة CIDR (IPv4/IPv6)
380
+ - ✅ **تطبيع البيانات**: تنسيق الاستجابة المتسق عبر جميع السجلات
381
+ - ✅ **حذف PII**: حذف تلقائي للبريد الإلكتروني والهواتف والعناوين (GDPR/CCPA)
382
+ - ✅ **تسجيل التدقيق**: مسار تدقيق معايير الامتثال (GDPR/SOC2/CCPA) مع محول ملف NDJSON
383
+ - ✅ **ذاكرة مؤقتة داخل الذاكرة**: ذاكرة مؤقتة LRU مع دعم TTL
384
+ - ✅ **ذاكرة مؤقتة ثابتة**: ذاكرة مؤقتة قائمة على ملف JSON
385
+ - ✅ **ذاكرة مؤقتة Redis**: محول Redis جاهز للإنتاج مع pipeline + ضغط مفاتيح
386
+ - ✅ **Connection Pooling**: إعادة استخدام اتصال HTTP (أسرع 30-40٪)
387
+ - ✅ **المقاييس والمراقبة**: تتبع الاستعلام الشامل والتحليل
388
+ - ✅ **Prometheus Exporter**: `PrometheusExporter` + `createHttpHandler()` لـ metrics scraping
389
+ - ✅ **لوحة معلومات Grafana**: قالب لوحة معلومات JSON مدمج
390
+ - ✅ **OpenTelemetry Traces**: التتبع الموزع عبر `TelemetryExporter`
391
+ - ✅ **تسجيل الطلب/الاستجابة**: تسجيل منظم مع مستويات قابلة للتكوين
392
+ - ✅ **استراتيجيات إعادة المحاولة**: قاطع الدائرة (closed/open/half-open) مع تراجع أسي
393
+ - ✅ **أولويات الاستعلام**: قائمة انتظار ذات أولوية عالية/عادية/منخفضة
394
+ - ✅ **إزالة الاستعلام المكرر**: طي الطلبات المتطابقة المتزامنة إلى واحد
395
+ - ✅ **خطافات Middleware**: خطافات دورة الحياة مع دعم `ctx.abort()` وترتيب الأولويات
396
+ - ✅ **التحقق من الاستجابة**: التحقق من مخطط RFC 7483
397
+ - ✅ **التحقق المحسّن**: نطاقات IDN و IPv6 و نطاقات و ASN
398
+ - ✅ **المصادقة**: Basic و Bearer و API Key و OAuth2
399
+ - ✅ **دعم Proxy**: HTTP/HTTPS/SOCKS4/SOCKS5 مع أنماط التجاوز
400
+ - ✅ **ضغط الاستجابة**: gzip و brotli و deflate (تقليل النطاق الترددي 60-80٪)
401
+ - ✅ **دعم HTTP/2**: اختياري عبر `ClientConfig.http2: boolean`
402
+ - ✅ **واجهة برمجية Streaming**: `client.streamBatch()` — `AsyncIterable<QueryResult>` مع back-pressure
403
+ - ✅ **Bootstrap متعدد المناطق**: `ClientConfig.bootstrap.regions` — اختيار مرآة IANA الأقرب
404
+ - ✅ **مخطط GraphQL**: قالب مستقل عن الإطار `{ typeDefs, resolvers }` لـ graphql-yoga والآخرين
405
+ - ✅ **وسيط Express**: `rdapifyExpress(client)` — توجيهات REST الجاهزة
406
+ - ✅ **وحدة NestJS**: `RdapifyModule.forRoot(config)` + decorator `@InjectRdapClient()`
407
+ - ✅ **نهاية خلفية أصلية Rust**: اختياري `rdapify-nd` (`backend: 'auto' | 'native' | 'typescript'`)
408
+ - ✅ **multi-runtime**: Node.js 20+، Bun (`BunFetcher`)، Deno (`DenoFetcher`)، Cloudflare Workers (`CloudflareWorkersFetcher`)، Browser (`BrowserFetcher`)
409
+ - ✅ **محرك الإيقاف**: تحذيرات وقت التشغيل عبر `process.emitWarning`، مرة واحدة لكل مسار الكود
410
+ - ✅ **TypeScript Strict**: تعريفات نوع كاملة مع وضع صارم
411
+ - ✅ **تغطية الاختبار**: 1066+ اختبارات (unit + integration + security) و 90.4% تغطية فرع
412
+
413
+ ### 🔜 قادم في v1.0.0-rc.1
414
+
415
+ - ⏳ **API Freeze**: جميع الصادرات العامة مقفولة — لا توجد تغييرات breaking بعد هذه النقطة
416
+ - ⏳ **تدقيق أمان خارجي**: مراجعة شركة تدقيق مستقلة لـ rdapify + rdapify-rust
417
+ - ⏳ **شهادة Runtime**: تم التحقق من Bun و Deno و Cloudflare Workers في بيئات مباشرة
418
+ - ⏳ **فترة ملاحظات RC**: نافذة ملاحظات مجتمع 4 أسابيع قبل الإصدار المستقر
419
+
420
+ انظر [CHANGELOG.md](CHANGELOG.md) لسجل إصدارات مفصل.
421
+
422
+ ## 🏗️ بنية الكود
423
+
424
+ يتبع RDAPify بنية نظيفة وحديثة مع الفصل الواضح للمخاوف:
425
+
426
+ ### هيكل المصدر (`/src`)
427
+
428
+ يتبع RDAPify بنية hexagonal (ports & adapters):
429
+
430
+ ```
431
+ src/
432
+ ├── application/ # طبقة التطبيق
433
+ │ ├── client/
434
+ │ │ └── RDAPClient.ts # نقطة دخول العميل الرئيسية
435
+ │ ├── services/
436
+ │ │ ├── QueryOrchestrator.ts # تنسيق pipeline الاستعلام
437
+ │ │ ├── BatchProcessor.ts # معالجة دفعات متزامنة
438
+ │ │ └── QueryPriority.ts # قائمة انتظار أولويات (high/normal/low)
439
+ │ ├── hooks/
440
+ │ │ └── MiddlewareHooks.ts # خطافات دورة الحياة
441
+ │ └── deduplication/
442
+ │ └── QueryDeduplicator.ts # إزالة الاستعلام المكرر في الرحلة
443
+
444
+ ├── infrastructure/ # طبقة البنية التحتية
445
+ │ ├── http/
446
+ │ │ ├── Fetcher.ts # عميل HTTP مع التحقق من SSRF
447
+ │ │ ├── BootstrapDiscovery.ts # اكتشاف سجل bootstrap IANA
448
+ │ │ ├── Normalizer.ts # تحويل الاستجابة الخام → مطبعة
449
+ │ │ ├── RateLimiter.ts # محدود معدل token-bucket
450
+ │ │ ├── ConnectionPool.ts # إعادة استخدام اتصال HTTP
451
+ │ │ ├── RetryStrategy.ts # إعادة محاولة + قاطع دائرة
452
+ │ │ ├── AuthenticationManager.ts # Basic/Bearer/APIKey/OAuth2
453
+ │ │ ├── ProxyManager.ts # دعم HTTP/HTTPS/SOCKS proxy
454
+ │ │ └── CompressionManager.ts # gzip/brotli/deflate
455
+ │ ├── cache/
456
+ │ │ ├── InMemoryCache.ts # ذاكرة مؤقتة LRU مع TTL
457
+ │ │ ├── CacheManager.ts # موزع خلفية الذاكرة المؤقتة
458
+ │ │ ├── PersistentCache.ts # ذاكرة مؤقتة بدعم الملفات JSON
459
+ │ │ └── RedisCache.ts # محول Redis (peer-dependency)
460
+ │ ├── security/
461
+ │ │ ├── SSRFProtection.ts # حجب RFC 1918 / link-local
462
+ │ │ └── PIIRedactor.ts # حذف PII GDPR/CCPA
463
+ │ ├── logging/
464
+ │ │ ├── Logger.ts • تسجيل الطلب/الاستجابة المنظم
465
+ │ │ └── AuditLogger.ts # مسار التدقيق الامتثال (NDJSON)
466
+ │ ├── monitoring/
467
+ │ │ └── MetricsCollector.ts # كمون الاستعلام و معدلات النجاح/الخطأ
468
+ │ └── validation/
469
+ │ └── ResponseValidator.ts # التحقق من مخطط RFC 7483
470
+
471
+ ├── shared/ # Shared kernel
472
+ │ ├── types/ # أنواع TypeScript والواجهات
473
+ │ ├── errors/ # التسلسل الهرمي للأخطاء المكتوبة (11 فئة خطأ)
474
+ │ └── utils/ # محققون ومساعدون وثوابت
475
+
476
+ ├── core/ports/ # عقود الواجهة (hexagonal ports)
477
+
478
+ └── cli/
479
+ └── index.ts # ثنائي CLI (rdapify domain/ip/asn)
480
+ ```
481
+
482
+ ### مبادئ التصميم الرئيسية
483
+
484
+ 1. **Hexagonal Architecture**: فصل نظيف بين طبقات التطبيق والبنية التحتية والـ shared
485
+ 2. **Ports & Adapters**: تصميم يقوده الواجهة لسهولة الاختبار وتبديل الخلفية
486
+ 3. **الأمان أولاً**: حماية SSRF وحذف PII مدمج في pipeline الاستعلام
487
+ 4. **سلامة النوع**: TypeScript صارم مع أنواع واضحة في جميع أنحاء
488
+ 5. **جاهز للامتثال**: تسجيل التدقيق لمتطلبات GDPR/SOC2/CCPA
489
+ 6. **Multi-runtime**: يعمل على Node.js 20+ و Bun و Deno و Cloudflare Workers
490
+
491
+ ## 📚 توثيق إضافية
492
+
493
+ - **[البدء السريع](./docs/getting-started/)** — التثبيت والبدء السريع والاستعلام الأول
494
+ - **[مرجع API](./docs/api-reference/)** — توثيق API TypeScript الكامل
495
+ - **[الأدلة](./docs/guides/)** — التخزين المؤقت ومعالجة الأخطاء والأداء والملاحظة
496
+ - **[الأمان](./docs/security/)** — حماية SSRF وحذف PII ونموذج التهديد
497
+ - **[CHANGELOG.md](./CHANGELOG.md)** — سجل إصدارات مفصل
498
+
499
+ ## 🔍 التحقق من الإصدار
500
+
501
+ لا يصدّر RDAPify `./package.json` عن قصد في تصدير الحزمة لأسباب أمان وتقليل السطح البرمجي. محاولة استيراده سيرمي خطأ متوقع:
502
+
503
+ ```javascript
504
+ // ❌ سيرمي ERR_PACKAGE_PATH_NOT_EXPORTED (السلوك المتوقع)
505
+ const pkg = require('rdapify/package.json');
506
+ // الخطأ: لم يتم تعريف مسار الحزمة './package.json' بواسطة "exports"
507
+ ```
508
+
509
+ ### طرق التحقق من الإصدار الآمن
510
+
511
+ **الطريقة 1: استخدام npm (موصى به)**
512
+ ```bash
513
+ npm ls rdapify
514
+ # الإخراج: rdapify@0.1.0
515
+ ```
516
+
517
+ **الطريقة 2: فحص برمجي عبر require.resolve**
518
+ ```javascript
519
+ const fs = require('fs');
520
+ const path = require('path');
521
+
522
+ const entry = require.resolve('rdapify');
523
+ const pkgPath = path.join(path.dirname(entry), '..', 'package.json');
524
+ const version = JSON.parse(fs.readFileSync(pkgPath, 'utf8')).version;
525
+
526
+ console.log('إصدار rdapify:', version);
527
+ // الإخراج: 0.1.0
528
+ ```
529
+
530
+ **الطريقة 3: تحقق من الإصدار المثبت في package.json**
531
+ ```bash
532
+ cat node_modules/rdapify/package.json | grep version
533
+ ```
534
+
535
+ يمنع هذا القرار التصميمي التعريض العرضي لبيانات وصفات الحزمة الداخلية ويحافظ على سطح برمجي عام أقل.
536
+
537
+ ## 🏢 المتبنون المبكرون والملاحظات
538
+
539
+ نبحث عن متبنين مبكرين واختبارات بيتا! إذا كنت مهتماً بـ:
540
+
541
+ - اختبار المكتبة في بيئتك
542
+ - تقديم تعليقات على تصميم API
543
+ - المساهمة في قاعدة الكود
544
+ - الإبلاغ عن الأخطاء أو اقتراح الميزات
545
+
546
+ **شارك**:
547
+ - 🌐 زيارة موقعنا: [rdapify.com](https://rdapify.com)
548
+ - 🐛 افتح [GitHub Issue](https://github.com/rdapify/RDAPify/issues) للأخطاء أو الميزات
549
+ - 💬 ابدأ [GitHub Discussion](https://github.com/rdapify/RDAPify/discussions) للأسئلة أو الأفكار
550
+ - 📖 اقرأ [التوثيق](https://rdapify.com/docs)
551
+ - 🤝 تحقق من [CONTRIBUTING.md](CONTRIBUTING.md) لإرشادات المساهمة
552
+
553
+ ### المشاكل المعروفة والقيود
554
+
555
+ - اختبارات خادم RDAP المباشرة معطلة افتراضياً (استخدم `LIVE_TESTS=1` لتفعيلها)
556
+ - لوحة معلومات التحليلات المتقدمة مخطط لـ v0.2.0
557
+ - التخزين المؤقت الموزع جغرافياً مخطط لـ v0.2.0
558
+
559
+ ## 📜 الترخيص
560
+
561
+ RDAPify مرخصة تحت [MIT License](LICENSE) — حرة للاستخدام الشخصي والتجاري مع قيود بسيطة.
562
+
563
+ ## 🙏 شكر خاص
564
+
565
+ نشكر مجتمع RDAP العالمي وفرق IANA ومطوري Regional Internet Registry (RIR) على عملهم المكثف لجعل الإنترنت أكثر شفافية وأماناً.
566
+
567
+ ---
568
+
569
+ > **ملاحظة:** RDAPify مشروع مستقل غير مرتبط بأي سجل نطاقات أو سلطة إنترنت رسمية. جميع العلامات التجارية والمنتجات المذكورة ملك أصحابها.
570
+ >
571
+ > © 2025 RDAPify Contributors — مبني للمؤسسات التي لا تنازل عنها في الجودة والأمان.
572
+ > [سياسة الأمان](SECURITY.md) • [سياسة الخصوصية](PRIVACY.md) • [الترخيص](LICENSE)