Node.js SDK (polylingo)
Oficiální TypeScript klient pro PolyLingo REST API. Používá runtime fetch (Node.js 18+), dodává se jako ESM a CJS a nemá žádné runtime závislosti kromě Node.
- npm:
polylingo - Zdroj: UsePolyLingo/polylingo-node
Pro podrobnosti o surovém HTTP viz API reference.
Instalace
npm install polylingo
Node.js: >= 18
Konstruktor
import PolyLingo from 'polylingo'
const client = new PolyLingo({
apiKey: process.env.POLYLINGO_API_KEY!, // povinné
baseURL: 'https://api.usepolylingo.com/v1', // volitelné; toto je výchozí hodnota
timeout: 120_000, // volitelné; timeout požadavku v milisekundách (výchozí 120_000)
})
| Volba | Typ | Povinné | Popis |
|---|---|---|---|
apiKey | string | Ano | API klíč (Authorization: Bearer …). |
baseURL | string | Ne | Prefix API včetně /v1. Výchozí https://api.usepolylingo.com/v1. |
timeout | number | Ne | Timeout na požadavek v ms. Výchozí 120_000. |
Metody
client.health()
GET /health. Na serveru není vyžadována autentizace; klient stále posílá hlavičku Authorization, pokud je nakonfigurována.
Vrací { status, timestamp }.
const h = await client.health()
client.languages()
GET /languages. Vrací seznam podporovaných jazyků.
const { languages } = await client.languages()
client.translate(params)
POST /translate
const r = await client.translate({
content: '# Hello',
targets: ['es', 'fr'],
format: 'markdown', // volitelné; vynechat pro automatickou detekci API
source: 'en', // volitelná nápověda
model: 'standard', // volitelné: 'standard' | 'advanced'
})
r.translations.es // string
r.usage.total_tokens
r.usage.input_tokens
r.usage.output_tokens
client.batch(params)
POST /translate/batch
const b = await client.batch({
items: [
{ id: 'a', content: 'Hello' },
{ id: 'b', content: '## Title', format: 'markdown' },
],
targets: ['de'],
source: 'en', // volitelné
model: 'standard', // volitelné
})
b.results[0].translations.de
b.usage.total_tokens
client.usage()
GET /usage. Vrací využití plánu pro autentizovaný klíč.
const u = await client.usage()
Úlohy (client.jobs)
client.jobs.create(params)
POST /jobs. Zařadí asynchronní práci do fronty a vrátí JSON tělo s kódem 202 (job_id, status, created_at, …).
const job = await client.jobs.create({
content: longMarkdown,
targets: ['de', 'fr'],
format: 'markdown',
})
console.log(job.job_id)
client.jobs.get(jobId)
GET /jobs/:id. Polluje stav. Když status === 'completed', API vrací translations a usage na nejvyšší úrovni JSON objektu (neuvnitř result).
const status = await client.jobs.get(job.job_id)
client.jobs.translate(params) (pohodlí)
Odesílá úlohu, poté polluje, dokud není completed nebo failed, nebo dokud není dosaženo timeoutu.
const done = await client.jobs.translate({
content: longMarkdown,
targets: ['de', 'fr', 'es'],
format: 'markdown',
pollInterval: 10_000, // ms mezi pollováním; výchozí 5_000
timeout: 600_000, // **celkový** ms rozpočet pro pollování; výchozí 20 minut
onProgress: (pos) => console.log(`Queue position: ${pos}`), // volitelné; volá se během čekání/zpracování
})
done.translations.de
done.usage.total_tokens
Životní cyklus úlohy v API používá stavy pending, processing, completed a failed.
Zpracování chyb
Všechny chyby ze SDK (kromě chyb v kódu) dědí PolyLingoError:
| Třída | Kdy |
|---|---|
PolyLingoError | Základní. Má status, error (API kód jako řetězec), message. |
AuthError | HTTP 401. |
RateLimitError | HTTP 429. Volitelně retryAfter (v sekundách) z JSON retry_after nebo hlavičky Retry-After. |
JobFailedError | Pomocník pro pollování: stav úlohy status === 'failed', nebo chybějící výsledek při completed, nebo timeout pollování. Má jobId. |
import PolyLingo, {
PolyLingoError,
AuthError,
RateLimitError,
JobFailedError,
} from 'polylingo'
try {
await client.translate({ content: 'Hi', targets: ['es'] })
} catch (e) {
if (e instanceof AuthError) { /* neplatný klíč */ }
else if (e instanceof RateLimitError) { /* e.retryAfter */ }
else if (e instanceof JobFailedError) { /* e.jobId */ }
else if (e instanceof PolyLingoError) { /* e.status, e.error */ }
}
Vzor asynchronních úloh (shrnutí)
- Fire-and-forget polling:
jobs.create→ váš worker volájobs.getv intervalech, dokud nenícompletednebofailed. - Vestavěné pollování:
jobs.translate. Stejné sémantiky, spollInterval,timeoutaonProgress.
Velké payloady a dlouhotrvající překlady by měly preferovat jobs před synchronním translate, aby se zabránilo HTTP timeoutům.
TypeScript
Balíček exportuje typy pro možnosti, výsledky a chyby. Importujte pojmenované typy z polylingo podle potřeby (viz publikovaný dist/index.d.ts).
Změny
0.1.2
- Údržba: výchozí základní URL API je
https://api.usepolylingo.com/v1.
0.1.0
- První vydání:
health,languages,translate,batch,usage,jobs.create,jobs.get,jobs.translate.