منصوبے کے بارے میں
GraphQL.js، GraphQL کی JavaScript ریفرنس امپلیمنٹیشن ہے، جو کہ APIs کے لیے ایک کوئری لینگویج ہے جسے اصل میں Facebook میں بنایا گیا تھا۔ README زبان کے عمومی جائزہ کے لیے GraphQL specification ریپوزٹری کی طرف اشارہ کرتا ہے، اور نوٹ کرتا ہے کہ وہاں بیان کردہ مثالیں اس ریپوزٹری کے اندر ٹیسٹ کے طور پر موجود ہیں — نئے آنے والوں کے لیے تجویز ہے کہ وہ اس جائزے کو متعلقہ ٹیسٹ کے ساتھ پڑھیں۔
بنیادی صلاحیتیں
یہ لائبریری دو مرکزی صلاحیتیں فراہم کرتی ہے: ٹائپ اسکیمہ بنانا اور اس اسکیمہ کے خلاف کوئریز فراہم کرنا۔ ایک اسکیمہ کو GraphQLSchema اور GraphQLObjectType کے ذریعے بیان کیا جاتا ہے، جس میں فیلڈز کی ٹائپ بلٹ ان اسکیلرز جیسے GraphQLString میں سے ایک ہوتی ہے؛ ہر فیلڈ ایک resolve فنکشن فراہم کر سکتی ہے۔ README بیان کرتا ہے کہ ایک ریزولور ویلیو، پرومس، یا پرومسز کی ایک ارے واپس کر سکتا ہے۔ کوئریز graphql فنکشن کے ذریعے چلائی جاتی ہیں، جو ایک اسکیمہ اور سورس اسٹرنگ قبول کرتا ہے اور نتیجے کا پرومس واپس کرتا ہے۔ چلانے سے پہلے، فنکشن تصدیق کرتا ہے کہ کوئری سنٹیکٹک اور سیمنٹک طور پر درست ہے، ورنہ غلطیوں کی رپورٹ کرتا ہے، جیسا کہ ایک مثال سے واضح ہے جو لوکیشن معلومات کے ساتھ "Cannot query field" ایرر واپس کرتی ہے۔
انسٹالیشن
GraphQL.js کو npm سے `graphql` پیکیج کے طور پر npm، yarn، یا bun کے ذریعے انسٹال کیا جاتا ہے۔ README ریپوزٹری کی ایک خودکار طور پر برقرار رکھی گئی `npm` برانچ کا بھی ذکر کرتا ہے جو 17.x.x لائن کے آخری کمٹ کو ٹریک کرتی ہے جس نے تمام ٹیسٹ پاس کیے ہوں؛ اس برانچ پر براہ راست انحصار کرنا ابھی تک ریلیز نہ ہونے والے کوڈ کو استعمال کرنے کے ایک طریقے کے طور پر پیش کیا گیا ہے، جبکہ README شائع شدہ npm بلڈز استعمال کرنے کی سفارش کرتا ہے۔
براؤزر اور بنڈلر کا استعمال
README نوٹ کرتا ہے کہ یہ لائبریری جنرل پرپز ہے اور اسے Node سرور اور براؤزر دونوں میں استعمال کیا جا سکتا ہے، جس کی مثال کے طور پر GraphiQL کا ذکر کیا گیا ہے۔ webpack یا rollup استعمال کرنے والے پروجیکٹس کو کسی خاص کنفیگریشن کے بغیر کام کرنا چاہیے اور لائبریری کے صرف وہی حصے شامل کرنے چاہئیں جو وہ استعمال کرتے ہیں، کیونکہ GraphQL.js CommonJS (`require()`) اور ESModule (`import`) دونوں فائلوں کے ساتھ تقسیم کیا گیا ہے۔ `package.json` میں ایک `exports` میپ رن ٹائمز اور بنڈلرز کو مناسب فائلوں کی طرف بھیجتا ہے؛ وہ ٹولنگ جن میں `exports` سپورٹ نہیں ہے، CommonJS بلڈز کو `.js` فائلوں میں اور ESModule بلڈ کو `.mjs` فائلوں میں تلاش کرتی ہے۔
پروجیکٹ گورننس اور سپورٹ
پل ریکویسٹ کے ذریعے تعاون کا خیرمقدم کیا جاتا ہے، اور ریپوزٹری کو EasyCLA کے ذریعے منظم کیا جاتا ہے: شرکاء کو تعاون کرنے سے پہلے انفرادی طور پر یا کسی آجر کے ذریعے GraphQL Specification Membership معاہدے پر دستخط کرنے ہوں گے۔ README کمیونٹی کی مالی مدد کے لیے GraphQL Foundation کی رکنیت کا بھی ذکر کرتا ہے۔
تبدیلیوں کو GitHub ریلیزز کے طور پر ٹریک کیا جاتا ہے۔ پروجیکٹ MIT-licensed ہے۔ یہ Semantic Versioning پر عمل کرتا ہے، جس میں تازہ ترین میجر ورژن کے لیے مکمل سپورٹ (بگ فکسز اور سیکیورٹی اپ ڈیٹس)، نئے میجر ریلیز کے بعد 12 مہینوں تک پچھلے میجر ورژن کے لیے فیچر سپورٹ (اسپیسی فیکیشن تبدیلیوں کو صرف تب بیک پورٹ کرنا جب وہ بریکنگ نہ ہوں)، اور پرانے ورژنز کے لیے کوئی فعال مینٹیننس نہیں ہے — سوائے اس کے کہ ایک سال سے کم وقت پہلے ریلیز ہونے والے ورژن کو پچھلا میجر ورژن سمجھا جاتا ہے۔ فی الحال کوئی Long-Term Support ریلیز نہیں ہے؛ صارفین کو تازہ ترین مستحکم ورژن پر اپ گریڈ کرنے کی ترغیب دی جاتی ہے۔ میجر ورژن کے لیے اینڈ-آف-لائف تاریخوں کا اعلان کم از کم چھ ماہ پہلے کیا جاتا ہے، جس کے بعد اس ورژن کو اہم سیکیورٹی مسائل کے لیے بھی کوئی اپ ڈیٹ نہیں ملتی۔ اہم سیکیورٹی اپ ڈیٹس موجودہ اور پچھلے دونوں میجر ورژنز پر لاگو ہوتی ہیں۔ اپ گریڈ میں مدد ہر ورژن کے ریلیز نوٹس، ڈاکومنٹیشن سائٹ میں مائیگریشن گائیڈز، اور کمیونٹی Discord چینل کے ذریعے فراہم کی جاتی ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.