Lingara Lingara Documentatie Gidsen API Bibliotheken Apps Bouwen Webapp
Taal: Nederlands

TypeScript

Deze pagina is vertaald uit het Engels. Als de twee verschillen, is de Engelse pagina juist. Lees de Engelse pagina

De TypeScript-bibliotheek is het pakket @lingara/api op npm. Het draait op Node.js 22 of hoger, heeft geen runtime-afhankelijkheden en levert typedefinities voor elk verzoek, elk antwoord en elk stream-event.

Waar het draait

Het is een server-side bibliotheek. Er is geen browserbuild, en de client weigert een client secret wanneer hij merkt dat hij in een pagina draait: een client secret in een browser is een gepubliceerd secret, leesbaar voor iedereen die de pagina opent. Roep de API aan vanaf je eigen server en stuur je gebruikers alleen wat ze nodig hebben.

Hoe het leest

  • Elke aanroep geeft een promise terug. Geef { signal } met een AbortSignal mee om er een te annuleren; de aanroep wordt dan afgewezen met de eigen reden van het signaal.
  • Een stream is een async iterable, gelezen met for await. Hij is lui: het verzoek wordt verstuurd wanneer je om het eerste event vraagt.
  • Fouten breiden LingaraError uit, dus één instanceof-controle vangt alle vier. Elke fout bevat retryAfter wanneer de API een wachttijd noemde.
  • Om je eigen HTTP-stack te gebruiken, geef je een fetch-functie mee in de opties. De inactiviteitstime-out op streams blijft gelden.

De voorbeelden hieronder installeren het pakket, maken een client aan, streamen een woordenlijst en handelen een fout af.

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

Wat deze pagina omvat