TypeScript
Esta página está traducida del inglés. Si ambas difieren, la página en inglés es la correcta. Leer la página en inglés
La biblioteca de TypeScript es el paquete @lingara/api en npm. Funciona con Node.js 22 o posterior, no tiene dependencias en tiempo de ejecución e incluye definiciones de tipos para cada petición, respuesta y evento de flujo.
Dónde se ejecuta
Es una biblioteca del lado del servidor. No hay versión para navegador, y el cliente rechaza un secreto de cliente cuando detecta que está dentro de una página: un secreto de cliente en un navegador es un secreto publicado, que puede leer cualquiera que abra la página. Llama a la API desde tu propio servidor y envía a tus usuarios solo lo que necesitan.
Cómo se usa
- Cada llamada devuelve una promesa. Pasa
{ signal }con unAbortSignalpara cancelar una; la llamada se rechaza entonces con el motivo propio de la señal. - Un flujo es un iterable asíncrono que se lee con
for await. Es perezoso: la petición se envía cuando pides el primer evento. - Los errores extienden
LingaraError, así que una sola comprobación coninstanceofcaptura los cuatro. Cada uno incluyeretryAftercuando la API indicó una espera. - Para usar tu propia pila HTTP, pasa una función
fetchen las opciones. El tiempo de inactividad de los flujos sigue aplicándose.
Los ejemplos de abajo instalan el paquete, crean un cliente, reciben en flujo una lista de vocabulario y gestionan un error.
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;
}
}