Node.js SDK (polylingo)
Virallinen TypeScript-ensimmäinen asiakas PolyLingo REST API:lle. Käyttää runtimea fetch (Node.js 18+), toimitetaan ESM- ja CJS-muodossa, eikä sillä ole ajonaikaisia riippuvuuksia Nodea lukuun ottamatta.
- npm:
polylingo - Lähdekoodi: UsePolyLingo/polylingo-node
Raakaa HTTP-tietoa varten katso API reference.
Asennus
npm install polylingo
Node.js: >= 18
Konstruktor
import PolyLingo from 'polylingo'
const client = new PolyLingo({
apiKey: process.env.POLYLINGO_API_KEY!, // pakollinen
baseURL: 'https://api.usepolylingo.com/v1', // valinnainen; tämä on oletus
timeout: 120_000, // valinnainen; pyynnön aikakatkaisu millisekunteina (oletus 120_000)
})
| Vaihtoehto | Tyyppi | Pakollinen | Kuvaus |
|---|---|---|---|
apiKey | string | Kyllä | API-avain (Authorization: Bearer …). |
baseURL | string | Ei | API-etuliite, sisältää /v1. Oletus https://api.usepolylingo.com/v1. |
timeout | number | Ei | Pyynnön aikakatkaisu ms-yksikössä. Oletus 120_000. |
Metodit
client.health()
GET /health — palvelimella ei vaadita autentikointia; asiakas kuitenkin lähettää Authorization-otsikon, jos se on määritetty.
Palauttaa { status, timestamp }.
const h = await client.health()
client.languages()
GET /languages — tuettujen kielten lista.
const { languages } = await client.languages()
client.translate(params)
POST /translate
const r = await client.translate({
content: '# Hello',
targets: ['es', 'fr'],
format: 'markdown', // valinnainen — jätetty pois = automaattinen tunnistus API:ssa
source: 'en', // valinnainen vihje
model: 'standard', // valinnainen: 'standard' | 'advanced'
})
r.translations.es // merkkijono
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', // valinnainen
model: 'standard', // valinnainen
})
b.results[0].translations.de
b.usage.total_tokens
client.usage()
GET /usage — suunnitelman käyttö valtuutetulle avaimelle.
const u = await client.usage()
Työt — client.jobs
client.jobs.create(params)
POST /jobs — lisää asynkroninen työ jonoon. Palauttaa 202 JSON-vastauksen (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 — tarkistaa tilan. Kun status === 'completed', API palauttaa translations ja usage JSON-objektin ylimmäisellä tasolla (ei result-kohdan alla).
const status = await client.jobs.get(job.job_id)
client.jobs.translate(params) — kätevyys
Lähettää työn ja kysyy tilaa, kunnes se on completed tai failed, tai kunnes kyselybudjetti loppuu.
const done = await client.jobs.translate({
content: longMarkdown,
targets: ['de', 'fr', 'es'],
format: 'markdown',
pollInterval: 10_000, // ms kyselyjen välillä; oletus 5_000
timeout: 600_000, // **kokonais** ms-budjetti kyselyille; oletus 20 minuuttia
onProgress: (pos) => console.log(`Queue position: ${pos}`), // valinnainen; kutsutaan jonossa/työstössä ollessa
})
done.translations.de
done.usage.total_tokens
Työn elinkaari API:ssa käyttää tiloja pending, processing, completed ja failed.
Virheenkäsittely
Kaikki SDK:n virheet (paitsi bugit) periytyvät PolyLingoError:
| Luokka | Milloin |
|---|---|
PolyLingoError | Perusluokka — sisältää status, error (API-koodin), message. |
AuthError | HTTP 401. |
RateLimitError | HTTP 429 — valinnainen retryAfter (sekunteina) JSON-kohteesta retry_after tai otsikosta Retry-After. |
JobFailedError | Kyselyapuri: työ status === 'failed', tai tulos puuttuu completed-tilassa, tai kyselyn aikakatkaisu. Sisältää jobId. |
import PolyLingo, {
PolyLingoError,
AuthError,
RateLimitError,
JobFailedError,
} from 'polylingo'
try {
await client.translate({ content: 'Hi', targets: ['es'] })
} catch (e) {
if (e instanceof AuthError) { /* virheellinen avain */ }
else if (e instanceof RateLimitError) { /* e.retryAfter */ }
else if (e instanceof JobFailedError) { /* e.jobId */ }
else if (e instanceof PolyLingoError) { /* e.status, e.error */ }
}
Asynkronisten töiden malli (yhteenveto)
- Fire-and-forget-kysely:
jobs.create→ työntekijäsi kutsuujobs.getsäännöllisesti, kunnes tila oncompletedtaifailed. - Sisäänrakennettu kysely:
jobs.translate— sama semantiikka, mukanapollInterval,timeoutjaonProgress.
Suuret kuormat ja pitkät käännökset kannattaa tehdä töinä synkronisen translate-kutsun sijaan HTTP-aikakatkosten välttämiseksi.
TypeScript
Paketti vie tyypit vaihtoehdoille, tuloksille ja virheille. Tuo nimettyjä tyyppejä polylingo-kirjastosta tarpeen mukaan (katso julkaistu dist/index.d.ts).
Muutokset
0.1.0
- Alkuperäinen julkaisu:
health,languages,translate,batch,usage,jobs.create,jobs.get,jobs.translate.