منصوبے کے بارے میں

Croco Framework ایک Node.js پر مبنی TypeScript فریم ورک ہے جو AWS Lambda اور API Gateway کو اول درجہ شہری (first-class citizens) کے طور پر تسلیم کرتا ہے۔ README اسے ایک 'opinionated' فریم ورک کے طور پر پیش کرتا ہے، جو بڑے منصوبوں میں آرکیٹیکچرل تسلسل برقرار رکھنے کے لیے پیکج کی حدود کو واضح طور پر تقسیم کرتا ہے۔ پیکجز کو چھ کرداروں میں تقسیم کیا گیا ہے: Kernel (فریم ورک رن ٹائم کی بنیاد)، Contracts (پرووائیڈر اور رن ٹائم سے آزاد ڈومین/پروٹوکول معاہدے)، Plugins (معاہدوں کا نفاذ اور ماحول کی بائنڈنگ)، Application (ایپ کے مالکانہ ماڈیولز اور composition root)، Profiles (تصدیق شدہ پلگ ان/ماڈیول مجموعے)، اور Tooling (بلڈ، کوڈ جنریشن، ٹیسٹنگ، CLI)۔ Kernel اور Contracts کسی مخصوص پلگ ان پر منحصر نہیں ہوتے۔ اس کی ایک نمایاں خصوصیت Host، Transport، اور Build Target کے درمیان فرق کرنا ہے۔ Host (جیسے preset-node, preset-lambda, preset-cloudflare) لائف سائیکل کا مالک ہوتا ہے، Transport (جیسے HTTP, GraphQL, RPC) پروٹوکول کی سطح پر کام کرتا ہے، اور Build Target انٹری پوائنٹ اور بنڈلنگ کی پابندیوں کا تعین کرتا ہے۔ ایک Host متعدد Transport کال بیکس کو بائنڈ کر سکتا ہے۔ دیگر خصوصیات میں DDD ڈومین ایونٹس (events-core)، Unit of Work طرز کی ٹرانزیکشنز (tx-core)، RFC 7807 پر مبنی Problem جوابات (problems-core)، ری ٹرائی اور ریکوری ڈیکوریٹرز (Retryable, Recover)، OpenTelemetry اسپینز کے لیے Trace (telemetry-api)، اور ڈیکوریٹر پر مبنی DI کنٹینر (framework-context) شامل ہیں۔ REST کنٹرولرز کو Controller/Get/Post ڈیکوریٹرز کے ذریعے تعریف کیا جاتا ہے اور Lambda ہینڈلرز کو createApp اور createLambdaHost کے ذریعے ترتیب دیا جاتا ہے۔ SaaS ڈومین کے لیے، یہ بلنگ، اینٹائٹلمنٹ، کریڈٹ، میٹرنگ اور کسٹمر اسٹیٹس کے پیکجز کے ساتھ Polar, Clerk, Drizzle, PostHog, اور QStash جیسے پرووائیڈر انٹیگریشنز فراہم کرتا ہے۔ فریم ورک کا اصول ہے کہ ناکامیوں کو عام Error کے طور پر چھپانے کے بجائے Problem, retry, timeout, circuit breaker, اور idempotency کے ذریعے ماڈل کیا جائے۔ اسے npx create-croco-app@latest کے ذریعے شروع کیا جا سکتا ہے (مثلاً --goal saas-api)۔ pnpm demo:smoke کے ذریعے REST معاہدوں اور ان-میموری SaaS فلو کی تصدیق کی جا سکتی ہے، جبکہ examples/quick-start-lambda میں Auth اور Metering کی مثالیں موجود ہیں۔ README کے مطابق، کیٹلاگ 120 پبلک پیکجز کو ٹریک کرتا ہے، جن میں سے 18 پیکجز کو 1.0 spine کے طور پر ریلیز-کریٹیکل ہم آہنگی کے لیے مقرر کیا گیا ہے۔ ان میں سے 10 پروڈکشن کے لیے تیار ہیں اور 8 بیٹا مرحلے میں ہیں۔ بینچ مارکنگ benchmarks/ ڈائریکٹری میں مینیج کی جاتی ہے اور ایک مخصوص ورک فلو کے ذریعے بلاکنگ گیٹ کے طور پر کام کرتی ہے، اگرچہ README میں مخصوص کارکردگی کے اعداد و شمار نہیں دیے گئے ہیں۔ NestJS، Hono، اور tRPC کے ساتھ موازنہ صرف ڈیزائن کے فرق کو واضح کرنے کے لیے ہے، نہ کہ کارکردگی کی درجہ بندی کے لیے۔