जब से हमने पिछले साल पहली बार टाइपआईडी की घोषणा की है, हमने समुदाय से महत्वपूर्ण स्वीकृति और रुचि देखी है, समुदाय द्वारा 23 अलग-अलग भाषा के ग्राहकों का योगदान है और हमारे टाइपस्क्रिप्ट कार्यान्वयन के 90,000 साप्ताहिक एनपीएम डाउनलोड हैं। .
पिछले हफ्ते, हमने अपने टाइपस्क्रिप्ट कार्यान्वयन, टाइपआईडी-जेएस का संस्करण 1.0 जारी किया। इस रिलीज़ का जश्न मनाने के लिए, हम इस बारे में और अधिक जानकारी साझा करना चाहते थे कि हमने टाइपआईडी क्यों लिखा, और जेटीफाई पर टाइप सुरक्षा सुनिश्चित करने के लिए हम इसका उपयोग कैसे करते हैं।
हमने आपकी टीम में डेवबॉक्स या डॉकर आधारित परियोजनाओं को तैनात करने और प्रबंधित करने के लिए जेटीफाई क्लाउड का निर्माण करते समय टाइपआईडी का विचार विकसित किया। Jetify Cloud के आर्किटेक्चर में कई अलग-अलग इकाइयाँ हैं जिन्हें हमें प्रबंधित करने की आवश्यकता है: संगठन, उपयोगकर्ता, परिनियोजन, रहस्य और प्रोजेक्ट, जिनमें से सभी को अलग करने के लिए अद्वितीय पहचानकर्ताओं की आवश्यकता होती है।
मूल रूप से, हमने सर्वोत्तम प्रथाओं का पालन करके और एक इकाई के प्रत्येक उदाहरण के लिए एक यूयूआईडी निर्दिष्ट करके शुरुआत की थी। फिर भी, हमें तुरंत एक समस्या का सामना करना पड़ा: UUIDv7 में प्रकार की सुरक्षा का अभाव है! उदाहरण के तौर पर नीचे दिए गए कोड को लें:
export const getMember = async ( memberId: UUID, orgId: UUID, ) => { const { member, organization } = await authClient.organizations.members.get({ organization_id: orgId, member_id: memberId, }); return { member, organization }; };
यह फ़ंक्शन किसी सदस्य और संगठन को देखने के लिए दो यूयूआईडी का उपयोग करता है। हालाँकि, फ़ंक्शन यह सुनिश्चित नहीं कर सकता कि सदस्यआईडी और ऑर्गआईडी सही इकाई का प्रतिनिधित्व करते हैं! यदि कोई डेवलपर गलती से उस सदस्यआईडी का उपयोग करता है जहां हम एक ऑर्गआईडी की उम्मीद कर रहे थे, तो हम केवल रनटाइम पर समस्या का पता लगाएंगे।
जैसा कि हम इस समस्या का समाधान ढूंढ रहे थे, हमें स्ट्राइप की ऑब्जेक्ट आईडी का सामना करना पड़ा, जो एक उपसर्ग का उपयोग करके प्रकार की जानकारी को आईडी में एन्कोड करता है। यह एक बेहतरीन समाधान प्रतीत होता है, लेकिन दुर्भाग्य से, हमें कई भाषाओं में टाइप की गई आईडी को लगातार लागू करने के लिए एक अच्छी तरह से परिभाषित मानक नहीं मिल सका।
TypeID एक ऐसा सुसंगत मानक बनाने का हमारा प्रयास है। टाइपआईडी एक प्रकार-सुरक्षित, के-सॉर्टेबल, विश्व स्तर पर अद्वितीय पहचानकर्ता है जो स्ट्राइप के उपसर्ग प्रकारों से प्रेरित है। टाइपआईडी अन्य भाषाओं को अपने ग्राहकों और पुस्तकालयों को लागू करने के लिए एक सुसंगत मानक भी प्रदान करता है।
TypeIDs अद्वितीय पहचानकर्ताओं को तीन भागों के साथ लोअरकेस स्ट्रिंग के रूप में एन्कोड करते हैं:
user_2x4y6z8a0b1c2d3e4f5g6h7j8k └──┘ └────────────────────────┘ type uuid suffix (base32)
इस प्रारूप के साथ, एक टाइपआईडी-संगत क्लाइंट आपकी आईडी में प्रकार की जानकारी को एन्कोड और डीकोड कर सकता है और फिर बिल्ड या कंपाइल समय पर चेक चला सकता है ताकि यह सुनिश्चित हो सके कि आप सही आईडी का उपयोग कर रहे हैं। उदाहरण के लिए, यदि हम किसी उपयोगकर्ता इकाई के लिए एक यादृच्छिक टाइपआईडी बनाना चाहते हैं, तो हम ऐसा कुछ कर सकते हैं:
टाइपआईडी के साथ, हम अपने कार्यों में टाइप चेक भी जोड़ सकते हैं और रनटाइम पर त्रुटियां पकड़ सकते हैं। उपरोक्त उदाहरण को दोबारा लिखते हुए, अब हम यह सुनिश्चित कर सकते हैं कि डेवलपर्स उचित आईडी का सही जगह पर उपयोग करेंगे:
import { TypeID } from 'typeid-js'; export const getMember = async ( memberId: TypeID, orgId: TypeID, ) => { ... }
प्रकार की सुरक्षा के अलावा, इस प्रारूप में कुछ गुण हैं जो इसे डेवलपर्स के उपयोग के लिए अनुकूल बनाते हैं:
आज, हम अपनी टाइपआईडी-जेएस लाइब्रेरी के संस्करण 1.0 की घोषणा कर रहे हैं। यह अद्यतन प्रयोज्यता और प्रकार सुरक्षा में सुधार के लिए कई नई सुविधाएँ जोड़ता है, जिनमें शामिल हैं:
आप अपनी पसंद के NodeJS पैकेज मैनेजर का उपयोग करके अपने JS प्रोजेक्ट में टाइपआईडी जोड़ सकते हैं। जेएस का उपयोग नहीं कर रहे? टाइपआईडी में 26 अलग-अलग कार्यान्वयन हैं, जिनमें गो से लेकर ओकैमल और एसक्यूएल तक शामिल हैं। यदि आप टाइपआईडी का अपना स्वयं का कार्यान्वयन लिखने में रुचि रखते हैं, तो आप हमारे औपचारिक विनिर्देश की जांच कर सकते हैं।
Jetify पर हमारी टीम शक्तिशाली डेवलपर टूल बनाती है। Jetify Cloud के साथ अपनी तैनाती और परियोजनाओं को सरल बनाएं, या Devbox के साथ ऑनबोर्डिंग डेव वातावरण को स्वचालित करें। आप हमें ट्विटर पर फ़ॉलो कर सकते हैं, या हमारे डेवलपर्स के साथ हमारे डिस्कॉर्ड सर्वर पर लाइव चैट कर सकते हैं। हम अपने जीथब रेपो पर मुद्दों और पुल अनुरोधों का भी स्वागत करते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3