Node.js SDK (polylingo)
לקוח רשמי ב-TypeScript עבור PolyLingo REST API. משתמש ברuntime fetch (Node.js 18+), מגיע כ-ESM ו-CJS, ואין לו תלויות ריצה מעבר ל-Node.
- npm:
polylingo - מקור: UsePolyLingo/polylingo-node
לפרטים טכניים על HTTP גולמי, ראו API reference.
התקנה
npm install polylingo
Node.js: >= 18
בנאי
import PolyLingo from 'polylingo'
const client = new PolyLingo({
apiKey: process.env.POLYLINGO_API_KEY!, // חובה
baseURL: 'https://api.usepolylingo.com/v1', // אופציונלי; זה ברירת המחדל
timeout: 120_000, // אופציונלי; זמן המתנה בבקשה במילישניות (ברירת מחדל 120_000)
})
| אפשרות | סוג | חובה | תיאור |
|---|---|---|---|
apiKey | string | כן | מפתח API (Authorization: Bearer …). |
baseURL | string | לא | קידומת API כולל /v1. ברירת מחדל https://api.usepolylingo.com/v1. |
timeout | number | לא | זמן המתנה לכל בקשה בms. ברירת מחדל 120_000. |
שיטות
client.health()
GET /health. לא נדרש אימות בשרת; הלקוח עדיין שולח את כותרת Authorization אם מוגדר.
מחזיר { status, timestamp }.
const h = await client.health()
client.languages()
GET /languages. מחזיר את רשימת השפות הנתמכות.
const { languages } = await client.languages()
client.translate(params)
POST /translate
const r = await client.translate({
content: '# Hello',
targets: ['es', 'fr'],
format: 'markdown', // אופציונלי; השאר כדי שה-API יזהה אוטומטית
source: 'en', // רמז אופציונלי
model: 'standard', // אופציונלי: 'standard' | 'advanced'
})
r.translations.es // מחרוזת
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', // אופציונלי
model: 'standard', // אופציונלי
})
b.results[0].translations.de
b.usage.total_tokens
client.usage()
GET /usage. מחזיר שימוש בתוכנית עבור המפתח המאומת.
const u = await client.usage()
עבודות (client.jobs)
client.jobs.create(params)
POST /jobs. מוסיף עבודה אסינכרונית לתור ומחזיר את גוף ה-JSON עם סטטוס 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. בודק סטטוס. כאשר status === 'completed', ה-API מחזיר translations ו-usage ברמת השורש של אובייקט ה-JSON (לא מקונן תחת result).
const status = await client.jobs.get(job.job_id)
client.jobs.translate(params) (נוחות)
שולח עבודה, ואז בודק סטטוס עד שcompleted או failed, או עד שהזמן המוקצב נגמר.
const done = await client.jobs.translate({
content: longMarkdown,
targets: ['de', 'fr', 'es'],
format: 'markdown',
pollInterval: 10_000, // ms בין בדיקות; ברירת מחדל 5_000
timeout: 600_000, // תקציב זמן כולל ב-ms לבדיקה; ברירת מחדל 20 דקות
onProgress: (pos) => console.log(`Queue position: ${pos}`), // אופציונלי; נקרא בזמן שהעבודה בתור/מעובדת
})
done.translations.de
done.usage.total_tokens
מחזור החיים של עבודה ב-API משתמש בסטטוסים pending, processing, completed, ו-failed.
טיפול בשגיאות
כל הכשלים מה-SDK (למעט באגים) יורשים את PolyLingoError:
| מחלקה | מתי |
|---|---|
PolyLingoError | בסיס. מכיל status, error (מחרוזת קוד API), message. |
AuthError | HTTP 401. |
RateLimitError | HTTP 429. אופציונלי retryAfter (בשניות) מ-JSON retry_after או כותרת Retry-After. |
JobFailedError | עזר בדיקה: סטטוס עבודה status === 'failed', או תוצאה חסרה ב-completed, או זמן בדיקה נגמר. מכיל jobId. |
import PolyLingo, {
PolyLingoError,
AuthError,
RateLimitError,
JobFailedError,
} from 'polylingo'
try {
await client.translate({ content: 'Hi', targets: ['es'] })
} catch (e) {
if (e instanceof AuthError) { /* מפתח לא חוקי */ }
else if (e instanceof RateLimitError) { /* e.retryAfter */ }
else if (e instanceof JobFailedError) { /* e.jobId */ }
else if (e instanceof PolyLingoError) { /* e.status, e.error */ }
}
דפוס עבודות אסינכרוניות (סיכום)
- בדיקה ללא המתנה:
jobs.create→ העובד שלך קורא ל-jobs.getבפרקי זמן עד שcompletedאוfailed. - בדיקה מובנית:
jobs.translate. אותן סמנטיקות, עםpollInterval,timeout, ו-onProgress.
Payloads גדולים ותרגומים ארוכי טווח מומלץ לבצע באמצעות jobs במקום translate סינכרוני כדי למנוע תקלות HTTP.
TypeScript
החבילה מייצאת טיפוסים לאפשרויות, תוצאות, ושגיאות. ייבא טיפוסים בשם מ-polylingo לפי הצורך (ראה dist/index.d.ts שפורסם).
יומן שינויים
0.1.2
- תחזוקה: כתובת בסיס API ברירת מחדל היא
https://api.usepolylingo.com/v1.
0.1.0
- שחרור ראשוני:
health,languages,translate,batch,usage,jobs.create,jobs.get,jobs.translate.