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

Zod একটি TypeScript-প্রথম ভ্যালিডেশন লাইব্রেরি। আপনি একটি স্কিমা সংজ্ঞায়িত করেন, এটি দিয়ে ডেটা পার্স করেন এবং একটি শক্তিশালী টাইপযুক্ত, বৈধ ফলাফল পান। এটি Node.js এবং আধুনিক ব্রাউজারে কাজ করে, শূন্য বাহ্যিক ডিপেন্ডেন্সি রয়েছে এবং একটি ছোট কোর বান্ডল (প্রায় 2kb gzipped) পাঠায়। API অপরিবর্তনীয়: মেথডগুলি বিদ্যমান স্কিমাকে পরিবর্তন না করে একটি নতুন ইনস্ট্যান্স রিটার্ন করে। এটি TypeScript বা সাধারণ JavaScript থেকে ব্যবহার করা যায় এবং বিল্ট-ইন JSON Schema রূপান্তর অন্তর্ভুক্ত করে। মৌলিক ব্যবহার শুরু হয় একটি স্কিমা সংজ্ঞায়িত করার মাধ্যমে, উদাহরণস্বরূপ একটি স্ট্রিং এবং একটি সংখ্যা ফিল্ড সহ একটি অবজেক্ট। স্কিমায় `.parse` কল করলে ইনপুট ভ্যালিডেট হয় এবং একটি শক্তিশালী টাইপযুক্ত ডিপ ক্লোন রিটার্ন করে। যদি স্কিমাটি অ্যাসিঙ্ক্রোনাস রিফাইনমেন্ট বা ট্রান্সফর্ম ব্যবহার করে, তবে `.parseAsync()` প্রয়োজন। ভ্যালিডেশন ব্যর্থ হলে, `.parse()` একটি `ZodError` থ্রো করে যাতে প্রত্যাশিত টাইপ, একটি এরর কোড, সমস্যাযুক্ত ফিল্ডের পাথ এবং একটি মেসেজের মতো বিস্তারিত সমস্যা তথ্য থাকে। try/catch এড়াতে, `.safeParse()` একটি ডিসক্রিমিনেটেড ইউনিয়ন রিটার্ন করে যেখানে পার্স করা ডেটা বা এরর থাকে; `.safeParseAsync()` অ্যাসিঙ্ক্রোনাস স্কিমা কভার করে। `z.infer<>` ব্যবহার করে স্কিমা থেকে টাইপ অনুমান করা যায়। যখন ইনপুট এবং আউটপুট টাইপ ভিন্ন হয়, উদাহরণস্বরূপ `.transform()` এর মাধ্যমে, `z.input<>` এবং `z.output<>` সেগুলি স্বাধীনভাবে বের করে। একটি উল্লেখযোগ্য বৈশিষ্ট্য হলো আগে-থেকে-কম্পাইলেশন (ahead-of-time compilation)। `z.compile(schema)` একটি স্কিমা ক্লোন রিটার্ন করে যার বৈধ ইনপুটের জন্য একটি কম্পাইলড ফাস্ট পাথ থাকে, যখন অবৈধ ইনপুট নিয়মিত পার্সারে ফিরে যায়, তাই এরর রিপোর্টিং অভিন্ন থাকে। README-তে 55-স্কিমা বেঞ্চমার্কে মধ্যমা (median) 2.4x গতি বৃদ্ধির কথা বলা হয়েছে, যা স্কিমার জটিলতার সাথে স্কেল করে (বড় অবজেক্ট অ্যারে এবং 20-কী অবজেক্ট প্রায় 9x, নেস্টেড অবজেক্ট প্রায় 4.5x, যখন একটি সাধারণ স্ট্রিং স্কিমা কিছুই লাভ করে না)। `zod/compile` ইমপোর্ট করে স্কিমা সংজ্ঞায়িত মডিউলগুলির আগে কম্পাইলেশন গ্লোবালি সক্রিয় করা যায়। কম্পাইলেশন `new Function` ব্যবহার করে, এবং `z.config({ jitless: true })` সেট করা থাকলে গ্লোবাল মোড স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় হয়, যেমন CSP পরিবেশে; সরাসরি `z.compile()` কল করা একটি স্পষ্ট অপ্ট-ইন। অ্যাসিঙ্ক্রোনাস রিফাইনমেন্ট বা ট্রান্সফর্ম সহ স্কিমা এবং আরও কয়েকটি কনস্ট্রাক্ট কম্পাইল করা যায় না; সেক্ষেত্রে `z.compile()` স্কিমাটি অপরিবর্তিত রিটার্ন করে এবং এটি নিয়মিত পার্সার ব্যবহার করতে থাকে, যদি না `{ strict: true }` পাস করা হয় নির্দিষ্ট এরর থ্রো করার জন্য। অবৈধ ইনপুটে, রিফাইনমেন্ট এবং ট্রান্সফর্ম দুবার চলতে পারে। একটি কম্পাইলড স্কিমা থেকে নতুন স্কিমা ডেরাইভ করলে একটি অ-কম্পাইলড স্কিমা পাওয়া যায়, তাই চূড়ান্ত স্কিমাটি কম্পাইল করা উচিত। ইনস্টলেশন `npm install zod` এর মাধ্যমে। প্রকল্পটি zod.dev-এ ডকুমেন্টেশন, একটি Discord কমিউনিটি এবং সোশ্যাল চ্যানেলের লিঙ্ক দেয়। এটি MIT লাইসেন্সযুক্ত।