iOSDevelopmentTools
فحص طلبات الشبكة (network requests) وسجلات (logs) تطبيقك وحالة الجهاز في console داخل التطبيق، مع إخفاء الأسرار (secrets redacted).
الترخيص: MIT
حزمة Swift بلا اعتماديات لـ iOS 17+ وmacOS 14+، تُسجِّل الطلبات التي ينفّذها التطبيق عبر URLSession، وتحفظ رسائل السجل (log messages) الخاصة به، وتجمع تقرير جهاز (device report)، وتعرض الثلاثة في console بـ SwiftUI يُفتَح بالهزّ (shake) أو بزر أو في نافذة. تُستبدَل كلمات المرور وtokens وcookies ومفاتيح API قبل حفظ أي شيء، ويمكن مشاركة الطلبات كأوامر cURL أو ملفات HAR. مُصمَّمة لبنايات (builds) التصحيح والاختبار، ومكتوبة وفق strict concurrency في Swift 6.
الميزات
- سطر واحد للتسجيل: NetworkCapture.start() يسجِّل URLSession.shared وكل session يُنشَأ بعده من configuration من نوع default أو ephemeral؛ الاستجابات (responses) تصل إلى التطبيق دون تغيير
- الإخفاء (redaction) قبل التخزين: قيم header وquery وform وmultipart وJSON ذات الأسماء الحساسة تُستبدَل بغض النظر عن كتابة الاسم؛ أي body مُهيكَل (structured) لا يمكن فحصه يُحجَب بالكامل
- تخزين محدود: 500 طلب كحد أقصى و256 KiB من كل body افتراضيًا، رسائل السجل في ring buffer، عمليات الرفع (uploads) التي تتجاوز 4 MiB تُبَثّ (streamed) بدل أن تُنسَخ
- تصدير أي طلب كأمر curl آمن لـ shell، وتصدير أي قائمة طلبات كـ HTTP Archive (HAR 1.2)
- LogStore يحتفظ برسائل مُصنَّفة بمستويات (leveled) وفئات (categorized)، ويكتبها أيضًا إلى unified logging system؛ DeviceSnapshot يُقرِّر الإصدار ونظام التشغيل والموديل واستخدام الذاكرة والحالة الحرارية (thermal state) وحالة debugger
- console بـ SwiftUI بتبويبات (tabs) Network وLogs وDevice، وبحث، وفلاتر، وقوائم مشاركة؛ يُفتَح بالهزّ (shake) على iOS، أو من زر، أو في نافذة macOS
- 148 اختبار Swift Testing؛ تنتقل الطلبات من session التطبيق عبر capture إلى خادم stub، وتفحص الاختبارات ما استلمه الخادم وما استلمه التطبيق وما خُزِّن
- كتالوج DocC بأربع مقالات وتطبيق المثال DevToolsDemo لـ iOS وmacOS
البدء السريع
1@main2struct MyApp: App {3 init() {4 #if DEBUG5 NetworkCapture.start()6 #endif7 }8 9 var body: some Scene {10 WindowGroup {11 ContentView()12 #if DEBUG13 .devToolsConsoleOnShake()14 #endif15 }16 }17}التثبيت
Xcode (File › Add Package Dependencies…)
1https://github.com/muhittincamdali/iOSDevelopmentTools.gitSwift Package Manager
1.package(url: "https://github.com/muhittincamdali/iOSDevelopmentTools.git", from: "2.0.0")لقطات الشاشة

![طلب تسجيل دخول مفتوح في الـ console: header من نوع Authorization وكلمة المرور في body من نوع JSON تظهران كـ [REDACTED]](/_next/image/?url=%2Fopen-source%2Fiosdevelopmenttools%2Frequest-light.png&w=3840&q=75)


الجدول الزمني
فُتح المستودع بوحدات (modules) network وstorage وanalytics وdebug وutility
وُسم v1.0.0: network client مبني على Alamofire، إضافة إلى مديري storage وanalytics وlogging في خمس وحدات
تبسيط: أُزيلت وحدات 1.0.0 واستُبدلت بكود placeholder
v2.0.0: أُعيد البناء من الصفر كـ network inspector وconsole للسجل وتقرير جهاز داخل التطبيق، مع الإخفاء (redaction) وDocC وتطبيق مثال