প্রকল্প সম্পর্কে

Ky একটি ছোট, মার্জিত JavaScript HTTP ক্লায়েন্ট যা Fetch API-এর উপর ভিত্তি করে তৈরি। এটি আধুনিক ব্রাউজার, Node.js, Bun এবং Deno-কে লক্ষ্য করে এবং কোনো নির্ভরশীলতা ছাড়াই একটি ছোট প্যাকেজ হিসেবে সরবরাহ করা হয়। এটি npm (`npm install ky`) এর মাধ্যমে অথবা jsdelivr, unpkg এবং esm.sh-এর মতো CDN থেকে লোড করা যায়; Deno-তে এটি সরাসরি URL থেকে ইম্পোর্ট করা যায়। সাধারণ `fetch`-এর তুলনায়, Ky মেথড শর্টকাট (`ky.get()`, `ky.post()`, `ky.put()`, `ky.patch()`, `ky.head()`, `ky.delete()`, `ky.query()`) সহ একটি সহজ API অফার করে, রিডাইরেক্টের পরে নন-2xx স্ট্যাটাস কোডকে ত্রুটি হিসেবে গণ্য করে এবং সুবিধাজনক বডি মেথড (`.json()`, `.text()`, `.formData()`, `.arrayBuffer()`, `.blob()` এবং `.bytes()` যেখানে রানটাইম সমর্থন করে) সহ একটি বর্ধিত Response রিটার্ন করে। একটি `json` অপশন পেলোডকে স্ট্রিংজিফাই করে এবং Content-Type হেডার সেট করে, যখন `searchParams` রিকোয়েস্ট URL-এ কোয়েরি প্যারামিটার মার্জ করে। রিকোয়েস্টগুলি একটি `baseUrl` বা `prefix` দিয়ে কনফিগার করা যায় আপেক্ষিক URL সমাধানের জন্য, একটি প্রতি-প্রচেষ্টা `timeout` (ডিফল্ট 10000 ms) এবং একটি ঐচ্ছিক `totalTimeout` যা রিট্রাই সহ সম্পূর্ণ অপারেশন কভার করে এবং ডিকম্প্রেসড রেসপন্স বডি বাইট সীমিত করার জন্য `maxResponseSize`। স্বয়ংক্রিয় রিট্রাই অত্যন্ত কনফিগারযোগ্য: রিট্রাই সীমা, প্রযোজ্য মেথড এবং স্ট্যাটাস কোড, `backoffLimit` সহ এক্সপোনেনশিয়াল ব্যাকঅফ, কাস্টম `delay` ফাংশন, থান্ডারিং-হার্ড প্রভাব প্রতিরোধে `jitter`, `Retry-After` এবং রেট-লিমিট টাইমিং হেডার সম্মান করা, `retryOnTimeout` এবং সম্পূর্ণ কাস্টম রিট্রাই সিদ্ধান্তের জন্য একটি `shouldRetry` কলব্যাক। লাইফসাইকেল হুক (`init`, `beforeRequest`, `beforeRetry`, `beforeError`, `afterResponse`) রিকোয়েস্ট লাইফসাইকেলের সময় অপশন, রিকোয়েস্ট এবং রেসপন্স পরিবর্তন করার অনুমতি দেয় — উদাহরণস্বরূপ অথরাইজেশন হেডার সংযুক্ত করা, URL পুনর্লিখন করা বা `beforeRequest` হুক থেকে একটি Response রিটার্ন করে মক রেসপন্স তৈরি করা। `ky.extend()` কাস্টম ডিফল্ট সহ ইনস্ট্যান্স তৈরি করে, যা API-নির্দিষ্ট ক্লায়েন্ট তৈরির জন্য উপযোগী। TypeScript সমর্থনে `.json()`-এ জেনেরিক্স অন্তর্ভুক্ত (ডিফল্ট `unknown` হিসেবে, `any`-এর পরিবর্তে), এবং রেসপন্স বডি Zod-এর মতো স্ট্যান্ডার্ড স্কিমা-সামঞ্জস্যপূর্ণ ভ্যালিডেটর দিয়ে বৈধতা দেওয়া যায়, যা ভ্যালিডেশন ব্যর্থ হলে একটি `SchemaValidationError` থ্রো করে। আপলোড এবং ডাউনলোড প্রোগ্রেস সমর্থনও সাধারণ fetch-এর তুলনায় এর সুবিধার মধ্যে তালিকাভুক্ত।