TypeScript
यह पेज अंग्रेज़ी से अनुवादित है। अगर दोनों में अंतर हो, तो अंग्रेज़ी पेज सही है। अंग्रेज़ी पेज पढ़ें
TypeScript लाइब्रेरी npm पर @lingara/api पैकेज है। यह Node.js 22 या उसके बाद के संस्करण पर चलती है, इसकी कोई रनटाइम डिपेंडेंसी नहीं है, और यह हर अनुरोध, रिस्पॉन्स और स्ट्रीम इवेंट के लिए टाइप डेफ़िनिशन के साथ आती है।
यह कहाँ चलती है
यह एक सर्वर-साइड लाइब्रेरी है। इसका कोई ब्राउज़र बिल्ड नहीं है, और जब क्लाइंट खुद को किसी वेब पेज के भीतर पाता है तो वह क्लाइंट सीक्रेट को अस्वीकार कर देता है: ब्राउज़र में क्लाइंट सीक्रेट एक प्रकाशित सीक्रेट है, जिसे पेज खोलने वाला कोई भी पढ़ सकता है। API को अपने सर्वर से कॉल करें और अपने उपयोगकर्ताओं को केवल वही भेजें जिसकी उन्हें ज़रूरत है।
इसे कैसे इस्तेमाल करें
- हर कॉल एक promise लौटाती है। किसी कॉल को रद्द करने के लिए
{ signal }पास करें, जिसमें एकAbortSignalहो; तब कॉल signal के अपने कारण के साथ reject होती है। - स्ट्रीम एक async iterable है, जिसे
for awaitसे पढ़ा जाता है। यह lazy है: अनुरोध तब भेजा जाता है जब आप पहला इवेंट माँगते हैं। - एरर
LingaraErrorको एक्सटेंड करते हैं, इसलिए एक हीinstanceofजाँच चारों को पकड़ लेती है। जब API ने कोई इंतज़ार बताया हो, तो हर एरर मेंretryAfterहोता है। - अपना खुद का HTTP स्टैक इस्तेमाल करने के लिए, विकल्पों में एक
fetchफ़ंक्शन पास करें। स्ट्रीम्स पर निष्क्रियता टाइमआउट तब भी लागू रहता है।
नीचे दिए उदाहरण पैकेज इंस्टॉल करते हैं, क्लाइंट बनाते हैं, शब्दावली सूची स्ट्रीम करते हैं और एक एरर संभालते हैं।
TypeScript
npm install @lingara/api@0.1.0-alpha.6TypeScript
import { Lingara } from "@lingara/api";
const client = new Lingara({
clientId: process.env.LINGARA_CLIENT_ID!,
clientSecret: process.env.LINGARA_CLIENT_SECRET!,
});TypeScript
const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}TypeScript
import { ApiError, MaintenanceError, OAuthError, TransportError } from "@lingara/api";
try {
await client.getUsage();
} catch (e) {
if (e instanceof ApiError) {
// A refusal from the API: e.status, e.code (stable) and e.message (localised).
console.error(e.status, e.code, e.message, e.retryAfter ?? "");
} else if (e instanceof OAuthError) {
// The token endpoint refused the credentials or the scopes.
console.error(e.status, e.error, e.description ?? "");
} else if (e instanceof MaintenanceError) {
console.error("under maintenance; retry after", e.retryAfter ?? "a while");
} else if (e instanceof TransportError) {
// No usable answer: connect, tls, reset, timeout, and so on.
console.error("transport:", e.kind);
} else {
throw e;
}
}