একবার সংজ্ঞায়িত করুন, সর্বত্র আস্থা রাখুন: CtroEnv Deep Dive
CtroEnv-এর কোর API চারটি validator factory ব্যবহার করে। আপনি সহজেই আপনার environment variables সুরক্ষিত করতে এগুলো ব্যবহার করতে পারেন।
এগুলো যেভাবে কাজ করে:
• string() — এটি টেক্সটের জন্য ব্যবহার করুন। আপনি URL, ইমেল, পোর্ট বা নির্দিষ্ট দৈর্ঘ্যের জন্য নিয়ম (rules) যোগ করতে পারেন। এটি কাস্টম প্যাটার্নের জন্য regex সমর্থন করে।
• number() — এটি সংখ্যাসূচক মানের জন্য ব্যবহার করুন। এটি "3000"-এর মতো স্ট্রিংকে প্রকৃত সংখ্যায় রূপান্তর করে। আপনি integer, পজিটিভ ভ্যালু বা নির্দিষ্ট রেঞ্জ নির্ধারণ করতে পারেন।
• boolean() — এটি true/false মানের জন্য ব্যবহার করুন। এটি "true"-এর মতো স্ট্রিং বা "1"-এর মতো সংখ্যা স্বয়ংক্রিয়ভাবে হ্যান্ডেল করে। এটি feature flags-এর জন্য উপযুক্ত।
• pick() — এটি কোনো নির্দিষ্ট তালিকার মধ্যে মান সীমাবদ্ধ করতে ব্যবহার করুন। এটি literal types তৈরি করে যাতে আপনার কোড ঠিকভাবে জানে কোন স্ট্রিংগুলো অনুমোদিত। এমনকি টাইপো (typo) হলে এটি সংশোধনের পরামর্শও দেয়।
প্রতিটি validator-এর জন্য দরকারী মেথডসমূহ:
- .default(value) — ভেরিয়েবলটি না থাকলে একটি fallback সেট করে।
- .optional() — মানটিকে undefined হিসেবে গ্রহণ করে।
- .describe(text) — আপনার এরর মেসেজ এবং ডকুমেন্টেশনের জন্য বর্ণনা যোগ করে।
- .secret() — আপনার টার্মিনাল আউটপুটে সংবেদনশীল মানগুলোকে মাস্ক (mask) করে রাখে।
- .validate(fn) — আপনাকে বিশেষ নিয়মের জন্য কাস্টম লজিক লেখার সুযোগ দেয়।
CtroEnv বিভিন্ন এনভায়রনমেন্টে কাজ করে:
- Node.js:
process.envবা.envফাইল পড়ার জন্যnodeSource()বাloadEnv()ব্যবহার করুন। - Vite: ভেরিয়েবলগুলো ইনভ্যালিড হলে বিল্ড ফেইল করার জন্য Vite plugin ব্যবহার করুন।
- Next.js: সার্ভার এবং ক্লায়েন্ট ভেরিয়েবল আলাদা করতে এর বিল্ট-ইন সাপোর্ট ব্যবহার করুন। এটি ভুলবশত ব্রাউজারে সিক্রেট লিক হওয়া রোধ করে।
ভ্যালিডেশন ব্যর্থ হলে CtroEnv শুধু থেমে যায় না। এটি প্রতিটি এরর সংগ্রহ করে এবং একসাথে প্রদর্শন করে। আপনি কী (key), মেসেজ এবং এমনকি এটি কীভাবে ঠিক করা যায় তার পরামর্শসহ একটি পরিষ্কার রিপোর্ট পাবেন।
চূড়ান্ত আউটপুট হলো একটি frozen object। এর মানে হলো আপনার কনফিগারেশনটি read-only এবং রানটাইমে আকস্মিক পরিবর্তন থেকে সুরক্ষিত।
উৎস: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl