Lingara Lingara مستندات رهنماها API کتابخانه‌ها اپلیکیشن‌ها ساختن اپلیکیشن وب
زبان: دری

TypeScript

این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم فرق داشته باشند، صفحهٔ انگلیسی درست است. صفحهٔ انگلیسی را بخوانید

کتابخانه TypeScript همان بسته @lingara/api در npm است. روی Node.js 22 یا بالاتر اجرا می‌شود، هیچ وابستگی وقت اجرا ندارد، و برای هر درخواست، جواب و رویداد جریان تعریف نوع همراه دارد.

کجا اجرا می‌شود

این یک کتابخانه سمت سرور است. نسخه‌ای برای براوزر وجود ندارد، و کلاینت وقتی خود را داخل یک صفحه ویب ببیند رمز کلاینت را قبول نمی‌کند: رمز کلاینت در براوزر رمزی نشرشده است که هر کسی صفحه را باز کند می‌تواند بخواند. API را از سرور خودتان صدا بزنید و تنها چیزی را که کاربران شما ضرورت دارند برایشان بفرستید.

در عمل چطور است

  • هر فراخوانی یک Promise برمی‌گرداند. برای لغو یک فراخوانی، { signal } را همراه یک AbortSignal بفرستید؛ آنگاه فراخوانی با دلیل خود همان سیگنال رد می‌شود.
  • جریان یک تکرارپذیر غیرهمزمان است که با for await خوانده می‌شود. تنبل است: درخواست وقتی فرستاده می‌شود که اولین رویداد را بخواهید.
  • خطاها از LingaraError میراث می‌برند، پس یک بررسی instanceof هر چهار را می‌گیرد. هر کدام وقتی API مدت انتظاری گفته باشد retryAfter را با خود دارد.
  • برای استفاده از پشته HTTP خودتان، یک تابع fetch در گزینه‌ها بدهید. مهلت بیکاری جریان‌ها باز هم تطبیق می‌شود.

نمونه‌های پایین بسته را نصب می‌کنند، یک کلاینت می‌سازند، لستی از لغات را جریانی دریافت می‌کنند و یک خطا را رسیدگی می‌کنند.

TypeScript

npm install @lingara/api@0.1.0-alpha.6

TypeScript

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;
  }
}

آنچه این صفحه دربر می‌گیرد