JavaScript / TypeScript SDK
التثبيت
Section titled “التثبيت”npm install @tkawen/sdk# أوpnpm add @tkawen/sdk# أوbun add @tkawen/sdkيتطلّب Node 18+ (يستخدم native fetch). يعمل أيضاً في:
- ✅ Bun 1.0+
- ✅ Deno 1.30+
- ✅ المتصفّحات الحديثة
- ✅ Cloudflare Workers / Vercel Edge
التهيئة
Section titled “التهيئة”import { Tkawen } from '@tkawen/sdk';
const tk = new Tkawen({ key: process.env.TKAWEN_KEY!, // اختياري: baseUrl: 'https://api.tkawen.com', // افتراضي timeout: 30000, // ms retries: 3, // exponential backoff});::: تنبيه
لا تكشف sk_live_* على المتصفّح أبداً. استخدم pk_live_* للجوانب العامّة، و sk_live_* فقط على الخادم.
:::
الاستدعاء الأوّل
Section titled “الاستدعاء الأوّل”// أنشئ غرفة فيديوconst room = await tk.connect.rooms.create({ name: 'demo', maxParticipants: 4,});
console.log(room.joinUrl);// → https://meet.liqaa.io/rm_8x2k9dالتغطية
Section titled “التغطية”كلّ الطبقات السبع متاحة:
tk.identity.verify({ ... }); // 01tk.connect.rooms.create({ ... }); // 02tk.pay.checkouts.create({ ... }); // 03tk.commerce.stores.create({ ... }); // 04tk.knowledge.certificates.issue({}); // 05tk.logistics.shipments.create({}); // 06tk.usage.current(); // 07كلّ method:
- typed كاملاً (TypeScript strict)
- يرجع
Promise<T> - يرمي
TkawenErrorعند الفشل معcode,httpStatus,details
معالجة الأخطاء
Section titled “معالجة الأخطاء”import { Tkawen, TkawenError } from '@tkawen/sdk';
try { const room = await tk.connect.rooms.create({ name: 'x' });} catch (err) { if (err instanceof TkawenError) { console.error(err.code); // 'INVALID_PARAM' | 'QUOTA_EXCEEDED' | ... console.error(err.httpStatus); // 400, 429, ... console.error(err.details); // { field: 'maxParticipants', expected: 'number' } }}Webhooks (التحقّق من التوقيع)
Section titled “Webhooks (التحقّق من التوقيع)”import { Tkawen, verifyWebhook } from '@tkawen/sdk';
app.post('/tkawen-webhook', express.raw({ type: 'application/json' }), (req, res) => { const signature = req.headers['x-tkawen-signature'] as string; const verified = verifyWebhook(req.body, signature, process.env.TKAWEN_WEBHOOK_SECRET!);
if (!verified) return res.status(401).end();
const event = JSON.parse(req.body.toString()); switch (event.type) { case 'room.ended': /* ... */ break; case 'checkout.completed': /* ... */ break; } res.status(200).end();});Streaming (للـ AI Tutor + TTS)
Section titled “Streaming (للـ AI Tutor + TTS)”const stream = await tk.knowledge.aiTutor.stream({ courseId: 'crs_abc', question: 'اشرح TVA بالعربية',});
for await (const chunk of stream) { process.stdout.write(chunk.text);}React/Next.js hook
Section titled “React/Next.js hook”import { useTkawenCurrentUser } from '@tkawen/react';
function Profile() { const { user, loading } = useTkawenCurrentUser(); if (loading) return 'يحمّل...'; return <h1>مرحباً {user.firstName}</h1>;}أمثلة كاملة
Section titled “أمثلة كاملة”repo tkawen-js-examples يحوي:
examples/checkout-flow— Next.js كاملexamples/whatsapp-bot— Webhook + botexamples/identity-sso— OIDC integrationexamples/video-room-react— UI لـ LIQAA Cloud
git clone https://github.com/hartemyaakoub/tkawen-js-examplescd tkawen-js-examples/examples/checkout-flownpm install && npm run devالنسخة + التغيير
Section titled “النسخة + التغيير”- آخر إصدار: 1.0.x
- Stability: stable (API frozen)
- Changelog: github.com/hartemyaakoub/tkawen-js/releases
- Migration guides: سيُضاف عند أيّ breaking change
المساهمة
Section titled “المساهمة”المستودع مفتوح: github.com/hartemyaakoub/tkawen-js
- Issues: نقبل bug reports + feature requests
- PRs: نراجع خلال 48 ساعة (Builder/Enterprise يحصلون على أولويّة)
- License: MIT
- Discord: discord.gg/tkawen #js-sdk
- البريد: DIRECTION@takawen.dz
- Status: status.tkawen.com