इस प्रोजेक्ट के बारे में

GraphQL.js, GraphQL का JavaScript संदर्भ कार्यान्वयन है, जो मूल रूप से Facebook में बनाया गया APIs के लिए एक क्वेरी लैंग्वेज है। README भाषा के सामान्य अवलोकन के लिए GraphQL specification रिपॉजिटरी की ओर संकेत करता है, और उल्लेख करता है कि वहां वर्णित उदाहरण इस रिपॉजिटरी के अंदर परीक्षणों (tests) के रूप में दिखाई देते हैं — नए लोगों के लिए सुझाव है कि वे संबंधित परीक्षणों के साथ उस अवलोकन को पढ़ें। मुख्य क्षमताएं यह लाइब्रेरी दो केंद्रीय क्षमताएं प्रदान करती है: एक टाइप स्कीमा बनाना और उस स्कीमा के विरुद्ध क्वेरी सर्व करना। एक स्कीमा को GraphQLSchema और GraphQLObjectType के साथ परिभाषित किया जाता है, जिसमें फ़ील्ड्स का प्रकार GraphQLString जैसे बिल्ट-इन स्कैलर्स में से एक होता है; प्रत्येक फ़ील्ड एक resolve फ़ंक्शन प्रदान कर सकता है। README बताता है कि एक रिज़ॉल्वर एक वैल्यू, एक प्रॉमिस, या प्रॉमिस की एक ऐरे लौटा सकता है। क्वेरीज़ को graphql फ़ंक्शन के माध्यम से चलाया जाता है, जो एक स्कीमा और एक सोर्स स्ट्रिंग स्वीकार करता है और परिणाम का एक प्रॉमिस लौटाता है। निष्पादित करने से पहले, फ़ंक्शन यह सत्यापित करता है कि क्वेरी सिंटैक्टिक और सिमेंटिक रूप से मान्य है या नहीं और अन्यथा त्रुटियों की रिपोर्ट करता है, जिसे एक उदाहरण द्वारा दर्शाया गया है जो स्थान की जानकारी के साथ "Cannot query field" त्रुटि लौटाता है। इंस्टॉलेशन GraphQL.js को npm, yarn, या bun का उपयोग करके npm से `graphql` पैकेज के रूप में इंस्टॉल किया जाता है। README रिपॉजिटरी की एक स्वचालित रूप से अनुरक्षित `npm` शाखा का भी उल्लेख करता है जो सभी परीक्षणों को पास करने वाली 17.x.x लाइन के अंतिम कमिट को ट्रैक करती है; उस शाखा पर सीधे निर्भर रहना अभी तक रिलीज़ न हुए कोड का उपयोग करने के तरीके के रूप में पेश किया गया है, जबकि README प्रकाशित npm बिल्ड्स का उपयोग करने की सिफारिश करता है। ब्राउज़र और बंडलर उपयोग README नोट करता है कि लाइब्रेरी सामान्य उद्देश्य वाली है और इसे Node सर्वर और ब्राउज़र दोनों में उपयोग किया जा सकता है, उदाहरण के रूप में GraphiQL का उल्लेख किया गया है। webpack या rollup का उपयोग करने वाले प्रोजेक्ट्स बिना किसी विशेष कॉन्फ़िगरेशन के काम करने चाहिए और लाइब्रेरी के केवल उन्हीं हिस्सों को शामिल करना चाहिए जिनका वे उपयोग करते हैं, क्योंकि GraphQL.js CommonJS (`require()`) और ESModule (`import`) दोनों फ़ाइलों के साथ वितरित किया जाता है। `package.json` में एक `exports` मैप रनटाइम और बंडलर को उचित फ़ाइलों की ओर निर्देशित करता है; `exports` समर्थन के बिना टूलिंग `.js` फ़ाइलों में CommonJS बिल्ड्स और `.mjs` फ़ाइलों में ESModule बिल्ड पाती है। प्रोजेक्ट गवर्नेंस और सपोर्ट पुल रिक्वेस्ट के माध्यम से योगदान का स्वागत है, और रिपॉजिटरी को EasyCLA द्वारा प्रबंधित किया जाता है: प्रतिभागियों को योगदान करने से पहले, व्यक्तिगत रूप से या नियोक्ता के माध्यम से, एक GraphQL Specification Membership समझौते पर हस्ताक्षर करने होंगे। README समुदाय को वित्तीय सहायता देने के तरीके के रूप में GraphQL Foundation सदस्यता का भी उल्लेख करता है। परिवर्तनों को GitHub रिलीज़ के रूप में ट्रैक किया जाता है। प्रोजेक्ट MIT-लाइसेंस प्राप्त है। यह Semantic Versioning का पालन करता है, जिसमें नवीनतम मेजर वर्जन के लिए पूर्ण समर्थन (बग फिक्स और सुरक्षा अपडेट), नए मेजर रिलीज़ के 12 महीने बाद पिछले मेजर वर्जन के लिए फीचर सपोर्ट (स्पेसिफिकेशन परिवर्तनों को केवल तभी बैकपोर्ट करना जब वे ब्रेकिंग न हों), और पुराने वर्जनों के लिए कोई सक्रिय रखरखाव नहीं है — सिवाय इसके कि एक साल से कम समय पहले रिलीज़ किया गया वर्जन पिछले मेजर वर्जन के रूप में माना जाता है। वर्तमान में कोई Long-Term Support रिलीज़ नहीं है; उपयोगकर्ताओं को नवीनतम स्थिर वर्जन पर अपग्रेड करने के लिए प्रोत्साहित किया जाता है। मेजर वर्जन के लिए एंड-ऑफ-लाइफ तारीखों की घोषणा कम से कम छह महीने पहले की जाती है, जिसके बाद उस वर्जन को महत्वपूर्ण सुरक्षा मुद्दों के लिए भी कोई अपडेट नहीं मिलता है। महत्वपूर्ण सुरक्षा अपडेट वर्तमान और पिछले दोनों मेजर वर्जनों पर लागू होते हैं। अपग्रेड सहायता प्रति-वर्जन रिलीज़ नोट्स, दस्तावेज़ीकरण साइट में माइग्रेशन गाइड और एक कम्युनिटी Discord चैनल के माध्यम से प्रदान की जाती है।