BSO Resolver
BSO रिझॉल्व्हर .bso डोमेन नावांचे त्यांच्या संबंधित सार्वजनिक की मध्ये अनुवादित करतो, ENS वर संग्रहित Bitsocial TXT रेकॉर्ड वाचून. हे सामायिक viem क्लायंट, पर्सिस्टंट कॅशिंग, आणि Node.js आणि ब्राउझर या दोन्ही वातावरणात कार्य करते.
- GitHub: bitsocialnet/bso-resolver
- परवाना: GPL-2.0-केवळ
स्थापना
npm install @bitsocial/bso-resolver
रिझोल्व्हर तयार करणे
इंस्टनस्टन कॉन्फिगरेशनद्वारे ऑब्जेक्ट कॉन्फिगर करणे. constructor:
const resolver = new BsoResolver({ key, provider, dataPath });
| Parameter | Required | Description |
|---|---|---|
key | Yes | Identifier for the resolver instance. |
provider | Yes | Transport configuration (see below). |
dataPath | No SQLite कॅशे फाइलसाठी |
प्रदाता पर्याय
provider पॅरामीटर तीन फॉरमॅट्स स्वीकारतो:
"viem"-- viem द्वारे प्रदान केलेली डीफॉल्ट सार्वजनिक वाहतूक वापरते.- HTTP(S) URL -- JSON द्वारे कनेक्ट होते.
https://mainnet.infura.io/v3/YOUR_KEY). - WebSocket URL -- वेबसॉकेट RPC एंडपॉइंटद्वारे कनेक्ट होते (उदा.
wss://mainnet.infura.io/ws/v3/YOUR_KEY).
पद्धती
resolve({ name, abortSignal? })
एक .bso नाव शोधते आणि संबंधित सार्वजनिक की परत करते. दीर्घकाळ चालणाऱ्या विनंत्या रद्द करण्यासाठी पर्यायी AbortSignal पास केला जाऊ शकतो.
canResolve({ name })
रिझोल्व्हर दिलेले नाव हाताळण्यास सक्षम आहे की नाही हे दर्शविणारा बुलियन परत करतो. पूर्ण रिझोल्यूशनचा प्रयत्न करण्यापूर्वी समर्थन तपासण्यासाठी याचा वापर करा.
destroy()
रिझॉल्व्हर खाली पाडणे, डेटाबेस कनेक्शन बंद करणे आणि संसाधने सोडणे. रिझोल्व्हरची यापुढे आवश्यकता नसताना याला कॉल करा.
कॅशिंग
रिडंडंट नेटवर्क लुकअप कमी करण्यासाठी निराकरण केलेली नावे स्वयंचलितपणे कॅश केली जातात. कॅशिंग बॅकएंड रनटाइम वातावरणावर आधारित निवडला जातो:
| पर्यावरण | बॅकएंड | टिपा |
|---|---|---|
| Node.js | SQLite | dataPath वर संग्रहित. समवर्ती प्रवेशासाठी WAL मोड वापरते. |
| ब्राउझर | IndexedDB | मूळ IndexedDB व्यवहार वापरते. |
| फॉलबॅक | इन-मेमरी Map | SQLite किंवा IndexedDB उपलब्ध नसताना वापरले जाते. |
सर्व कॅशे एंट्रीजमध्ये एक-तास TTL असतो आणि कालबाह्य झाल्यानंतर आपोआप बाहेर काढले जाते.
pkc-js सह एकत्रीकरण
रिझॉल्व्हर nameResolvers पर्यायाद्वारे थेट pkc-js मध्ये प्लग केला जाऊ शकतो, ज्यामुळे की लुकअप दरम्यान .bso नावांचे पारदर्शक निराकरण होते:
const pkc = new Pkc({
nameResolvers: [resolver],
// ...other options
});
कन्करन्सी
समवर्ती वापरात सुरक्षित राहण्यासाठी रिझोल्व्हर डिझाइन केले आहे:
- एकल सामायिक viem क्लायंट निरर्थक कनेक्शन टाळतो.
- SQLite WAL मध्ये चालते (Wal-Ahead Logging, Concurrent Logging ला परवानगी द्या) अवरोधित करणे.
- ब्राउझर कॅशिंग आयसोलेशनसाठी मूळ IndexedDB व्यवहारांवर अवलंबून असते.
प्लॅटफॉर्म एंट्री पॉइंट
पॅकेज Node.js आणि ब्राउझर बिल्डसाठी वेगळे एंट्री पॉइंट पाठवते. package.json मधील exports फील्डला समर्थन देणारे बंडलर आपोआप योग्य निवडतील.