TypeScript
دا پاڼه له انګلیسي ژبې ژباړل شوې ده. که دواړه سره توپیر ولري، انګلیسي پاڼه سمه ده. انګلیسي پاڼه ولولئ
د TypeScript کتابتون په npm کې د @lingara/api کڅوړه ده. دا په 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;
}
}