الإعدادات
يُدمج الإعداد من افتراضيات العميل وخيارات كل استدعاء عبر mergeConfig (انظر قواعد الدمج أدناه). للصورة الكاملة للمسار والميزات الجديدة راجع الميزات ومسار الطلب.
OpenFetchConfig (الطلب)
العنوان وسلسلة الاستعلام
url— مطلق أو نسبي (معbaseURL).baseURL— يُسبق للمسارات غير المطلقة.params— كائن عادي يُسلسل كسلسلة استعلام (يمكن استبدال المسلسل بـparamsSerializer).
الطريقة والجسم
method— طريقة HTTP؛ المساعدات تضبطها تلقائياً.data— الحمولة المنطقية: بعد خطافاتtransformRequest، تُسلسل الكائنات (ما عداFormData،URLSearchParams،Blob،ArrayBuffer، المصفوفات المشاهَدة) كـ JSON؛ يُضبطcontent-typeعلىapplication/jsonإن كان ناقصاً.body— جسمfetchالخام عند عدم استخدامdataبنفس الطريقة؛ يستخدمdispatchقيمةdataإن وُجدت وإلاbody.
الرؤوس والمصادقة
headers—Record<string, string>(تُطبَّع المفاتيح إلى أحرف صغيرة داخلياً للطلب الصادر).auth—{ username, password }→Authorization: Basic ….withCredentials: true— يضبطcredentials: 'include'ما لم يُضبطcredentialsصراحة.
المهلات والإلغاء
timeout— بالمللي ثانية؛ يُدمج معsignal. إن انتهت المهلة الداخلية أولاً →ERR_TIMEOUT؛ إلغاء المستخدم علىsignal→ERR_CANCELED.signal—AbortSignalخارجي؛ يُدمج مع مهلة الإلغاء.
معالجة الاستجابة
responseType—"json"|"text"|"arraybuffer"|"blob"|"stream".
إن وُجد، يستنتج JSON منContent-Type: application/json، وإلا يُقرأ كنص.validateStatus—(status: number) => boolean. الافتراضي: 200–299. إن رجعfalse، يُرمىOpenFetchErrorبرمزERR_BAD_RESPONSEمع إرفاق الاستجابة.throwHttpErrors— يُستخدم فقط عند عدم تعيينvalidateStatus: مثل Ky (falseلا يرمي على حالة HTTP؛ دالة ترجعtrueتعني «ارمِ لهذه الحالة»). إن وُجدvalidateStatusيُتجاهلthrowHttpErrors.jsonSchema— Standard Schema اختياري على JSON المحلّل بعد نجاح الحالة؛ الفشل →SchemaValidationError(قبلtransformResponse).init— مصفوفة(config) => voidمتزامنة على الإعداد المدمج قبل معترضات الطلب.
مدخل Request
client.request(Request, تجاوزات?)— يدمج عنوان الطلب والطريقة والرؤوس والجسم والإشارة مع الافتراضيات ثم التجاوزات.
التحويلات
transformRequest— مصفوفة(data, headers) => unknownتُنفَّذ بالترتيب قبل بناء جسمfetch.transformResponse— مصفوفة(data) => Tعلى الاستجابات الناجحة بعد التحليل.
الوسيط وإعادة المحاولة وتلميحات التخزين المؤقت
middlewares— مصفوفة دوال وسيط (تُلحق بالافتراضيات).retry— دمج سطحي لخياراتcreateRetryMiddleware(افتراضيات + لكل طلب).memoryCache— تجاوزات لكل طلب لوسيط التخزين المؤقت:ttlMs،staleWhileRevalidateMs،skip.
مريحة الاستخدام
unwrapResponse— عندtrue، تُرجعget/post/…dataفقط بدلاً منOpenFetchResponseالكامل. مفيد لـ RSC.
تمرير RequestInit
تُمرَّر هذه الحقول إلى fetch:cache، credentials، integrity، keepalive، mode، redirect، referrer، referrerPolicy.
OpenFetchResponse
ts
type OpenFetchResponse<T = unknown> = {
data: T;
status: number;
statusText: string;
headers: Record<string, string>;
config: OpenFetchConfig;
};سلوك الدمج (mergeConfig)
- المفاتيح على المستوى الأعلى: الإعداد الأحدث يغلب.
headers: دمج سطحي؛ رؤوس الاستدعاء تغلب الافتراضيات.middlewares،transformRequest،transformResponse،init: تُلحق (الافتراضيات أولاً ثم الخاصة بالاستدعاء).retry،memoryCache: دمج سطحي لحقول الكائن؛retry.onBeforeRetryوretry.onAfterResponseيُركّبان (الافتراضيات ثم لكل استدعاء).- تُزال مفاتيح تلوث النموذج الأولي (
__proto__،constructor،prototype) من الكائنات المدمجة والرؤوس /retry/memoryCacheالمتداخلة.
