يبدو رفع الصور بسيطًا، إلى أن تبدأ الحالات الحدّية بالظهور.
نشرت مؤخرًا حزمة npm صغيرة اسمها browser-image-guard، جاءت من مشكلة كنت أواجهها مرارًا أثناء بناء تدفقات رفع الصور.

في البداية، يبدو رفع الصور بسيطًا: تختار ملفًا وتضغطه وترسله إلى الخادم. لكن سرعان ما تبدأ الحالات الحدّية بالظهور. بعض الملفات تحمل أنواع MIME زائفة، ومستخدمو iPhone يرفعون صور HEIC، وقد تبقى بيانات EXIF وGPS مرفقة بالصور. وقد يفشل الضغط داخل Web Worker، أو تعلق متصفحات الهواتف القديمة في حالة التحميل، أو تعطّل قواعد CSP الصارمة الـWeb Worker تمامًا.
كنت قد بنيت مسار معالجة موثوقًا لهذه الحالات داخل أحد مشاريعي، فاستخرجته في حزمة قابلة لإعادة الاستخدام بدلًا من صيانة المنطق نفسه في مكانين.
تتولى الحزمة اكتشاف نوع الملف الحقيقي عبر البايتات المميِّزة (magic bytes)، وتحويل HEIC/HEIF، وإزالة بيانات EXIF وGPS، وتغيير الأبعاد والضغط، وتصحيح اتجاه الصورة، والرجوع إلى مسار بديل عند تعذّر تشغيل Web Worker، وفرض حدود صارمة لحجم الملف، وتنقية اسم الملف.
واجهة API بسيطة عمدًا: processImage(file). تعيد الدالة صورة JPEG نظيفة ومضغوطة وجاهزة للرفع، أو تطرح خطأً محدد النوع يمكن ربطه برسالة في الواجهة.