Lingara Lingara ドキュメント 学習ガイド API ライブラリ アプリ 作成 ウェブ版
言語: 日本語

TypeScript

このページは英語から翻訳されています。内容に相違がある場合は、英語のページが正しい内容です。 英語のページを読む

TypeScript ライブラリは npm の @lingara/api パッケージです。Node.js 22 以降で動作し、ランタイム依存関係はなく、すべてのリクエスト、レスポンス、ストリームイベントの型定義を同梱しています。

動作する場所

サーバーサイドのライブラリです。ブラウザー向けのビルドはなく、クライアントはページ内で実行されていることを検知するとクライアントシークレットを受け付けません。ブラウザー内のクライアントシークレットは公開されたシークレットであり、ページを開いた誰もが読み取れるからです。API は自分のサーバーから呼び出し、ユーザーには必要なものだけを送ってください。

使い方

  • すべての呼び出しは Promise を返します。キャンセルするには { signal } に AbortSignal を指定して渡します。すると呼び出しは、シグナル自身の理由で拒否されます。
  • ストリームは非同期イテラブルで、for await で読み取ります。遅延評価されるため、最初のイベントを要求した時点でリクエストが送信されます。
  • エラーは LingaraError を継承しているため、1 回の instanceof チェックで 4 種類すべてを捕捉できます。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;
  }
}

このページがラップするもの