|
1 | 1 | # سجل التغييرات |
2 | 2 |
|
3 | | -توثيق جميع التغييرات الملحوظة في هذا المشروع في هذا الملف. |
| 3 | +توثيق جميع التغييرات الملحوظة في هذا المشروع. |
4 | 4 |
|
5 | 5 | الصيغة مبنية على [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
6 | 6 | وهذا المشروع يتبع [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
7 | 7 |
|
8 | 8 | ## [غير مُصدّر] |
9 | 9 |
|
10 | | -## [1.0.0] - مخطط فبراير 2027 |
| 10 | +## [0.3.2] - 2026-03-24 |
11 | 11 |
|
12 | | -### الملخص |
13 | | -إصدار API freeze. واجهة `RDAPClient` مستقرة ومضمونة عدم وجود تغييرات breaking في الإصدارات اللاحقة 1.x. جميع 83 تصديراً عاماً مصنفة في `API_STABILITY_ANALYSIS.md`. |
| 12 | +### تم إصلاحه |
| 13 | +- `TelemetryExporter`: `RDAPIFY_VERSION` يُقرأ الآن من `package.json` (كان `'0.2.3'`) |
| 14 | +- `src/index.ts`: JSDoc `@version` صُحّح إلى `0.3.2` |
| 15 | +- تصدير `VERSION` حُدّث إلى `'0.3.2'` |
| 16 | +- قوالب cloud ومثال `express_app` حُدّثت إلى `^0.3.1` |
| 17 | +- `SECURITY.md`: 0.2.x و 0.3.x مدعومان الآن |
14 | 18 |
|
15 | | -### الميزات البارزة |
16 | | -- **تغطية الفروع**: ≥ 90% (1066 اختبار). |
17 | | -- **API freeze**: 83 تصديراً مقفولة؛ جميع APIs المهملة محذوفة. |
18 | | -- **دعم Runtime**: Node.js (مؤكد)، Bun/Deno/Cloudflare Workers (تم التحقق خارجياً). |
19 | | -- **تدقيق الأمان**: تم حل جميع النتائج الحرجة/العالية (يتطلب اكتمال التدقيق الخارجي). |
20 | | -- **التوثيق**: وثائق عربية وإنجليزية كاملة على rdapify.com. |
| 19 | +### داخلي |
| 20 | +- خطاف `prepublishOnly` أُعيد تفعيله |
| 21 | +- `docs.yml`: أُزيلت حلول `|| true` |
21 | 22 |
|
22 | | -### تغييرات Breaking (من 0.3.1) |
23 | | -جميع APIs المجهزة بـ `@deprecated` في v0.3.1 محذوفة في v1.0.0. |
24 | | -انظر `MIGRATION_1_0.md` (سيتم نشره مع الإصدار). |
25 | | - |
26 | | -## [0.3.1] - غير مُصدّر |
| 23 | +## [0.3.1] - 2026-03-23 |
27 | 24 |
|
28 | 25 | ### مهملة |
29 | | - |
30 | | -APIs التالية مهملة اعتباراً من v0.3.1 وسيتم إزالتها أو تغييرها في v1.0.0. |
31 | | -قوائم المسارات البديلة مدرجة. التحذيرات صادرة عبر `process.emitWarning` (Node.js) |
32 | | -أو `console.warn` (runtimes أخرى) في معظم الأحوال مرة واحدة لكل lifetime العملية. |
33 | | - |
34 | | -| API | كود الإيقاف | الهجرة | |
35 | | -|-----|-----------|--------| |
36 | | -| `client.getBatchProcessor()` | `DEP_RDAPIFY_0001` | استخدم `client.streamBatch()` للحصول على نتائج streaming أو استدعاء `processBatch()` عبر معالج الدفعات. في v1.0.0، ستكون `processBatch()` طريقة مباشرة على `RDAPClient`. | |
| 26 | +- `client.getBatchProcessor()` (`DEP_RDAPIFY_0001`) — استخدم `client.streamBatch()` |
37 | 27 |
|
38 | 28 | ### مضاف |
39 | | - |
40 | | -- **تحليل استقرار API** — `API_STABILITY_ANALYSIS.md` في دليل التخطيط الداخلي يصنف جميع 83 تصديراً عاماً كـ Stable / Evolving / Deprecated لـ API freeze v1.0.0؛ تفاصيل مسارات الهجرة لكل API مهملة |
41 | | -- **`BrowserFetcher`** — منتقي RDAP متوافق مع المتصفح يوجه الطلبات عبر وكيل عكسي يدعم CORS من المطور؛ يستخدم فقط Web-standard APIs (`fetch` و `AbortSignal` و `URLSearchParams`)؛ يفعّل rdapify في بيئات React و Vue و Angular و vanilla browser |
42 | | -- **نوع `BrowserFetcherOptions`** — `{ proxyUrl: string; timeout?: number; headers?: Record<string, string> }` |
| 29 | +- تحليل استقرار API — 83 تصديراً مصنّفاً |
| 30 | +- `BrowserFetcher` — منتقي RDAP متوافق مع المتصفح |
43 | 31 |
|
44 | 32 | ### تم تغييره |
| 33 | +- إصلاح promise rejection غير معالج في `BatchProcessor.processBatch()` |
45 | 34 |
|
46 | | -- تم تحديث JSDoc فئة `BatchProcessor` ليعكس حالتها المتطورة؛ استيرادات فئة مباشرة يجب أن تفضّل `client.streamBatch()` أو طرق الراحة المضافة في v1.0.0 |
47 | | -- تم إصلاح promise rejection غير معالج في `BatchProcessor.processBatch()` عند `continueOnError: false` — `.finally()` على promise الداخلي كان ينشئ promise مرفوض معلق؛ تم استبداله بـ `.then(cleanup, cleanup)` لإزالة آمنة للعناصر المكتملة من قائمة في-التقدم |
48 | | - |
49 | | -## [0.3.0] - أكتوبر 2026 |
| 35 | +## [0.3.0] - 2026-03-22 |
50 | 36 |
|
51 | 37 | ### مضاف |
| 38 | +- **Streaming Batch API** — `client.streamBatch()` مولّد async |
| 39 | +- **Prometheus Exporter** — مع `createHttpHandler()` |
| 40 | +- **قالب Grafana** — `RDAPIFY_GRAFANA_DASHBOARD` |
| 41 | +- **OpenTelemetry OTLP** — `TelemetryExporter` |
| 42 | +- **Bootstrap متعدد المناطق** — `regions` |
| 43 | +- **أداة الإيقاف** — `deprecated()` |
| 44 | +- 42 اختبار جديد |
52 | 45 |
|
53 | | -- **Streaming Batch API**: `client.streamBatch(queries[])` — `AsyncIterable<QueryResult>` مع back-pressure (لا overflow في 1000+ استعلام) |
54 | | -- **Prometheus Exporter**: فئة `PrometheusExporter` مع `createHttpHandler()` لـ metrics scraping |
55 | | -- **لوحة معلومات Grafana**: قالب JSON مدمج `RDAPIFY_GRAFANA_DASHBOARD` — استيراد مباشر إلى Grafana |
56 | | -- **OpenTelemetry Traces**: `TelemetryExporter` + `ClientConfig.telemetry.endpoint` للتتبع الموزع |
57 | | -- **Bootstrap متعدد المناطق**: `ClientConfig.bootstrap.regions: ['us', 'eu', 'ap']` — اختيار تلقائي لأقرب مرآة IANA |
58 | | -- **محرك الإيقاف**: أداة `deprecated()` — تحذير وقت التشغيل عبر `process.emitWarning` |
59 | | -- **BrowserFetcher**: منتقي متوافق مع المتصفح لبيئات proxy-based browser |
| 46 | +## [0.2.3] - 2026-03-22 |
60 | 47 |
|
61 | | -### تم تصحيحه |
| 48 | +### مضاف |
| 49 | +- **مخطط GraphQL** — `createRdapifySchema(client)` |
| 50 | +- **وسيط Express** — `rdapifyExpress(client)` |
| 51 | +- **وحدة NestJS** — `RdapifyModule.forRoot()` |
| 52 | +- 24 اختبار جديد |
62 | 53 |
|
63 | | -- تم إصلاح promise rejection غير معالج في batch processor |
64 | | -- تحسينات الأداء على connection pooling |
65 | | -- تحسينات دقة اختبار التغطية |
| 54 | +## [0.2.2] - 2026-03-22 |
66 | 55 |
|
67 | | -## [0.2.3] - سبتمبر 2026 |
| 56 | +> **ملاحظة:** الإصدارات 0.1.9 إلى 0.2.2 نُشرت دفعة واحدة (2026-03-22) من نفس الـ commit. |
68 | 57 |
|
69 | 58 | ### مضاف |
| 59 | +- **دعم Deno** — `DenoFetcher` |
| 60 | +- **Cloudflare Workers** — `CloudflareWorkersFetcher` |
| 61 | +- **تصدير الحزمة** — `./worker` و `./deno` و `./node` |
| 62 | +- 22 اختبار جديد |
70 | 63 |
|
71 | | -- **مخطط GraphQL**: `{ typeDefs, resolvers }` — يعمل مع graphql-yoga وأي خادم GraphQL |
72 | | -- **وسيط Express**: `rdapifyExpress(client)` — `GET /domain/:name` و `/ip/:address` و `/asn/:number` |
73 | | -- **وحدة NestJS**: `RdapifyModule.forRoot(config)` + decorator `@InjectRdapClient()` |
74 | | - |
75 | | -## [0.2.2] - أغسطس 2026 |
| 64 | +## [0.2.1] - 2026-03-22 |
76 | 65 |
|
77 | 66 | ### مضاف |
| 67 | +- **دعم Bun** — `BunFetcher` مع `isBun()` |
| 68 | +- 14 اختبار جديد |
78 | 69 |
|
79 | | -- **دعم Deno**: `DenoFetcher` مع اكتشاف runtime `isDeno()` |
80 | | -- **Cloudflare Workers**: `CloudflareWorkersFetcher` — بدون اعتماديات `fs` أو `process` |
81 | | -- **تصدير الحزمة**: نقاط دخول `./worker` و `./deno` و `./node` |
82 | | - |
83 | | -## [0.2.1] - يوليو 2026 |
| 70 | +## [0.2.0] - 2026-03-22 |
84 | 71 |
|
85 | 72 | ### مضاف |
| 73 | +- **قاطع الدائرة** — `CircuitBreaker` |
| 74 | +- **إيقاف Middleware** — `ctx.abort()` |
| 75 | +- **أولوية Middleware** — ترتيب رقمي |
| 76 | +- **ضغط مفاتيح Redis** — SHA-256 |
| 77 | +- **Redis pipeline** — `getMany`/`setMany` |
| 78 | +- **HTTP/2** — اختياري |
| 79 | +- 63 اختبار جديد |
86 | 80 |
|
87 | | -- **BunFetcher**: `BunFetcher implements IFetcherPort` — استخدام `Bun.fetch` |
88 | | -- **CI**: وظيفة Bun المضافة إلى `.github/workflows/ci.yml` |
89 | | - |
90 | | -## [0.2.0] - يونيو 2026 |
| 81 | +## [0.1.9] - 2026-03-22 |
91 | 82 |
|
92 | 83 | ### مضاف |
| 84 | +- **توفر النطاق** — `client.checkAvailability()` و `checkAvailabilityBatch()` |
| 85 | +- **اختبارات تكامل مباشرة** — `LIVE_TESTS=1` |
| 86 | +- **إعداد Bootstrap متقدم** — `customServers` و `ttl` و `fallback` |
| 87 | +- 17 اختبار جديد |
93 | 88 |
|
94 | | -- **قاطع الدائرة**: الحالة الكاملة `closed → open → half-open → closed/open` |
95 | | -- **Redis Pipeline**: batch `getMany`/`setMany` + ضغط مفاتيح SHA-256 |
96 | | -- **Middleware `ctx.abort()`**: يمكن لخطافات `beforeQuery` إيقاف الاستعلامات |
97 | | -- **أولوية Middleware**: ترتيب الأولوية الرقمي (الأقل = أولوية أعلى) |
98 | | -- **دعم HTTP/2**: اختياري عبر `ClientConfig.http2: boolean` |
99 | | - |
100 | | -## [0.1.9] - إبريل 2026 |
| 89 | +## [0.1.8] - 2026-03-21 |
101 | 90 |
|
102 | 91 | ### مضاف |
| 92 | +- **Rust native backend** — عبر `rdapify-nd` |
| 93 | +- **خيار `backend`** — `'auto'` | `'native'` | `'typescript'` |
| 94 | +- 28 اختبار جديد |
103 | 95 |
|
104 | | -- **توفر النطاق**: `client.checkAvailability(domain)` — RDAP فقط |
105 | | -- **التوفر بالدفعات**: `client.checkAvailabilityBatch(domains[])` — دفعة متزامنة |
106 | | -- **اختبارات التكامل المباشرة**: إختيار عبر `LIVE_TESTS=1` |
107 | | -- **إعداد Bootstrap متقدم**: `customServers` و override `ttl` |
| 96 | +## [0.1.7] - 2026-03-19 |
108 | 97 |
|
109 | | -## [0.1.8] - مارس 2026 |
| 98 | +### تم إصلاحه |
| 99 | +- مزامنة Playground، Jest forceExit، اختبارات redis-cache |
110 | 100 |
|
111 | 101 | ### مضاف |
| 102 | +- استعلامات Nameserver و Entity مع أوامر CLI |
112 | 103 |
|
113 | | -- **CLI Tool**: `rdapify domain/ip/asn/nameserver/entity` مع flags |
114 | | -- **استعلامات Nameserver و Entity**: `client.nameserver()` و `client.entity()` مع دعم RDAP الكامل |
115 | | - |
116 | | -## [0.1.7] - فبراير 2026 |
| 104 | +## [0.1.6] - 2026-03-17 |
117 | 105 |
|
118 | 106 | ### مضاف |
| 107 | +- أداة CLI — `rdapify domain/ip/asn` |
| 108 | +- كشف Cloudflare Workers |
119 | 109 |
|
120 | | -- **أداة CLI**: دعم domain و ip و asn |
121 | | -- **مسارات دخول معكوسة**: تحسينات إضافية |
| 110 | +### تم إصلاحه |
| 111 | +- RedisCache.clear() و size() (حرج) — إصلاح مسح DB الكامل |
122 | 112 |
|
123 | | -## [0.1.6] - يناير 2026 |
| 113 | +## [0.1.5] - 2026-03-14 |
124 | 114 |
|
125 | 115 | ### مضاف |
| 116 | +- RedisCache، AuthenticationManager، ProxyManager، CompressionManager |
| 117 | +- PersistentCache، MiddlewareManager، QueryDeduplicator، AuditLogger، ResponseValidator |
126 | 118 |
|
127 | | -- **دعم IPv6**: معالجة كاملة للعناوين IPv6 |
128 | | -- **تحسينات التحقق**: تحسينات validation |
129 | | - |
130 | | -## [0.1.5] - ديسمبر 2025 |
| 119 | +## [0.1.4] - 2026-03-13 |
131 | 120 |
|
132 | 121 | ### مضاف |
| 122 | +- MiddlewareHooks، QueryDeduplicator، AuditLogger، ResponseValidator |
133 | 123 |
|
134 | | -- **Audit Logging**: مسار تدقيق GDPR/SOC2/CCPA |
135 | | -- **تحسينات الأداء**: تحسينات connection pooling |
| 124 | +## [0.1.3] - 2026-03-12 |
136 | 125 |
|
137 | | -## [0.1.4] - نوفمبر 2025 |
| 126 | +### تم إصلاحه |
| 127 | +- فحوصات null دفاعية في Normalizer و BootstrapDiscovery و Fetcher |
| 128 | +- مهلة ConnectionPool، نسخ عميق PIIRedactor، أقواس IPv6، حماية القسمة على صفر |
138 | 129 |
|
139 | | -### مضاف |
| 130 | +## [0.1.2] - 2026-01-28 |
140 | 131 |
|
141 | | -- **دعم Proxy**: HTTP/HTTPS/SOCKS4/SOCKS5 |
142 | | -- **مصادقة متقدمة**: Basic/Bearer/API Key/OAuth2 |
| 132 | +### مضاف |
| 133 | +- Playground تفاعلي، Connection Pooling، مقاييس ومراقبة، تسجيل منظم |
143 | 134 |
|
144 | | -## [0.1.3] - أكتوبر 2025 |
| 135 | +## [0.1.1] - 2026-01-25 |
145 | 136 |
|
146 | 137 | ### مضاف |
| 138 | +- مصادقة، دعم Proxy، ضغط الاستجابة، استراتيجيات إعادة المحاولة |
| 139 | +- أولوية الاستعلامات، التحقق المحسّن، Persistent Cache، Rate Limiting |
147 | 140 |
|
148 | | -- **ضغط الاستجابة**: gzip/brotli/deflate |
149 | | -- **استراتيجيات إعادة المحاولة**: Circuit breaker مع exponential backoff |
150 | | - |
151 | | -## [0.1.2] - سبتمبر 2025 |
| 141 | +## [0.1.0] - 2025-12-05 |
152 | 142 |
|
153 | 143 | ### مضاف |
| 144 | +- الإصدار العام الأول — عميل RDAP مع domain و IP و ASN |
| 145 | +- IANA Bootstrap، حماية SSRF، حذف PII، ذاكرة مؤقتة، 146 اختبار |
154 | 146 |
|
155 | | -- **Connection Pooling**: إعادة استخدام اتصال HTTP |
156 | | -- **مراقبة ومقاييس**: جمع مقاييس شامل |
157 | | -- **تسجيل منظم**: مستويات قابلة للتكوين |
158 | | - |
159 | | -## [0.1.1] - أغسطس 2025 |
| 147 | +## [0.1.0-alpha.4] - 2026-01-23 |
160 | 148 |
|
161 | 149 | ### مضاف |
| 150 | +- Dependabot، CI/CD محسّن، CodeQL، Playground، ملفات صحة المجتمع |
162 | 151 |
|
163 | | -- **Persistent Cache**: ذاكرة مؤقتة قائمة على ملفات JSON |
164 | | -- **Redis Cache**: محول Redis |
165 | | -- **مصادقة**: Basic و Bearer Token و API Key |
| 152 | +## [0.1.0-alpha.2] - 2026-01-22 |
166 | 153 |
|
167 | | -## [0.1.0] - يوليو 2025 |
| 154 | +### تم إصلاحه |
| 155 | +- إلغاء مؤقت timeout في `withTimeout()` |
168 | 156 |
|
169 | | -### مضاف |
| 157 | +## [0.1.0-alpha.1] - 2026-01-22 |
170 | 158 |
|
171 | | -- **عميل RDAP الأساسي**: استعلامات Domain و IP و ASN |
172 | | -- **حماية SSRF**: حجب IPs الخاصة والداخلية |
173 | | -- **حذف PII**: حذف تلقائي للبيانات الشخصية |
174 | | -- **ذاكرة مؤقتة داخل الذاكرة**: ذاكرة مؤقتة LRU مع TTL |
175 | | -- **Normalization**: تطبيع الاستجابة عبر السجلات |
176 | | -- **TypeScript Strict**: تعريفات نوع كاملة |
| 159 | +### مضاف |
| 160 | +- إصدار alpha الأول — عميل RDAP، حماية SSRF، حذف PII، 146 اختبار |
177 | 161 |
|
178 | 162 | --- |
179 | 163 |
|
180 | | -تم تعديل آخر: مارس 2026 |
| 164 | +[Unreleased]: https://github.com/rdapify/RDAPify/compare/v0.3.2...HEAD |
| 165 | +[0.3.2]: https://github.com/rdapify/RDAPify/compare/v0.3.1...v0.3.2 |
| 166 | +[0.3.1]: https://github.com/rdapify/RDAPify/compare/v0.3.0...v0.3.1 |
| 167 | +[0.3.0]: https://github.com/rdapify/RDAPify/compare/v0.2.3...v0.3.0 |
| 168 | +[0.2.3]: https://github.com/rdapify/RDAPify/compare/v0.2.2...v0.2.3 |
| 169 | +[0.2.2]: https://github.com/rdapify/RDAPify/compare/v0.2.1...v0.2.2 |
| 170 | +[0.2.1]: https://github.com/rdapify/RDAPify/compare/v0.2.0...v0.2.1 |
| 171 | +[0.2.0]: https://github.com/rdapify/RDAPify/compare/v0.1.9...v0.2.0 |
| 172 | +[0.1.9]: https://github.com/rdapify/RDAPify/compare/v0.1.8...v0.1.9 |
| 173 | +[0.1.8]: https://github.com/rdapify/RDAPify/compare/v0.1.7...v0.1.8 |
| 174 | +[0.1.7]: https://github.com/rdapify/RDAPify/compare/v0.1.6...v0.1.7 |
| 175 | +[0.1.6]: https://github.com/rdapify/RDAPify/compare/v0.1.5...v0.1.6 |
| 176 | +[0.1.5]: https://github.com/rdapify/RDAPify/compare/v0.1.4...v0.1.5 |
| 177 | +[0.1.4]: https://github.com/rdapify/RDAPify/compare/v0.1.3...v0.1.4 |
| 178 | +[0.1.3]: https://github.com/rdapify/RDAPify/compare/v0.1.2...v0.1.3 |
| 179 | +[0.1.2]: https://github.com/rdapify/RDAPify/compare/v0.1.1...v0.1.2 |
| 180 | +[0.1.1]: https://github.com/rdapify/RDAPify/compare/v0.1.0...v0.1.1 |
| 181 | +[0.1.0]: https://github.com/rdapify/RDAPify/compare/v0.1.0-alpha.4...v0.1.0 |
| 182 | +[0.1.0-alpha.4]: https://github.com/rdapify/RDAPify/compare/v0.1.0-alpha.2...v0.1.0-alpha.4 |
| 183 | +[0.1.0-alpha.2]: https://github.com/rdapify/RDAPify/compare/v0.1.0-alpha.1...v0.1.0-alpha.2 |
| 184 | +[0.1.0-alpha.1]: https://github.com/rdapify/RDAPify/releases/tag/v0.1.0-alpha.1 |
0 commit comments