TypeScript
هذه الصفحة مترجمة من الإنجليزية. إذا اختلفت النسختان، فالصفحة الإنجليزية هي الصحيحة. اقرأ الصفحة الإنجليزية
مكتبة TypeScript هي الحزمة @lingara/api على npm. تعمل على Node.js 22 أو أحدث، وليست لها أي اعتماديات وقت التشغيل، وتأتي مع تعريفات أنواع لكل طلب واستجابة وحدث تدفق.
أين تعمل
إنها مكتبة لجهة الخادم. لا يوجد إصدار للمتصفح، ويرفض العميل سر العميل عندما يجد نفسه داخل صفحة ويب: فسر العميل في المتصفح سرٌّ منشور، يقرؤه كل من يفتح الصفحة. استدعِ الـ API من خادمك الخاص وأرسل لمستخدميك ما يحتاجونه فقط.
كيف تبدو في الاستخدام
- كل استدعاء يعيد Promise. مرّر
{ signal }معAbortSignalلإلغاء أحدها؛ عندها يُرفض الاستدعاء بالسبب الخاص بالإشارة نفسها. - التدفق كائن قابل للتكرار غير المتزامن، يُقرأ باستخدام
for await. وهو كسول: يُرسَل الطلب عندما تطلب الحدث الأول. - ترث الأخطاء من
LingaraError، لذا يلتقط فحصinstanceofواحد الأربعة جميعًا. يحمل كل منهاretryAfterعندما يحدد الـ API مدة انتظار. - لاستخدام مكدّس 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;
}
}