18 — @talost/app-sdk ve Starter Şablonları
Kimin için: Entegrasyon sürecini hızlandırmak ve doğrudan resmi kütüphaneleri kullanmak isteyen TypeScript/JavaScript geliştiricileri.
Ön koşul: Node.js 18+, TypeScript veya JavaScript.
Tahmini süre: 10 dakika.
Ne Öğreneceksiniz
- Resmi
@talost/app-sdkistemci kütüphanesinin yeteneklerini ve modüllerini, - Sıfırdan başlamak yerine hazır
talost-app-starter-nextjsşablonunu kullanmayı.
📦 `@talost/app-sdk` (Resmi Node.js & TypeScript SDK)
TALOST ID SDK'sı, OAuth PKCE üretiminden webhook imza doğrulamasına, feature flag değerlendirmesinden heartbeat ajanına kadar tüm ekosistem işlemlerini tek bir istemci altında toplar.
Kurulum
bash
npm install @talost/app-sdk
# veya
pnpm add @talost/app-sdk
SDK Kullanım Mimarisi
typescript
import { createTalostClient } from "@talost/app-sdk";
const talost = createTalostClient({
issuer: process.env.TALOST_ISSUER || "https://id.talost.com",
clientId: process.env.TALOST_CLIENT_ID!,
clientSecret: process.env.TALOST_CLIENT_SECRET, // Confidential ise
apiKey: process.env.TALOST_APP_API_KEY, // M2M API'ler için
environment: "PRODUCTION", // veya DEVELOPMENT
});
1. Kimlik Doğrulama (`talost.auth`)
typescript
// 1. Authorize URL ve PKCE Üretimi
const { url, codeVerifier, state } = await talost.auth.buildAuthorizeUrl({
redirectUri: "https://app.com/api/auth/callback",
scope: ["openid", "profile", "email", "subscription"],
});
// 2. Token Takası
const tokens = await talost.auth.exchangeCode({
code: "xyz...",
codeVerifier: codeVerifier,
redirectUri: "https://app.com/api/auth/callback",
});
// 3. Yerel Access Token Doğrulama (JWKS Cache)
const session = await talost.auth.verifyAccessToken(tokens.access_token);
console.log("Kullanıcı ID (sub):", session.sub);
2. Lisans ve Haklar (`talost.entitlements`)
typescript
const entitlement = await talost.entitlements.forUser(session.sub);
if (!entitlement.hasAccess) {
throw new Error("Aktif lisansınız bulunmuyor.");
}
if (!entitlement.features.includes("export_pdf")) {
throw new Error("Bu özellik mevcut planınızda bulunmuyor.");
}
3. Webhook İmza Doğrulama (`talost.webhooks`)
typescript
// İmza geçersizse veya zaman aşımı varsa otomatik hata fırlatır
const event = talost.webhooks.verify({
rawBody: requestBodyString,
signatureHeader: request.headers["x-talost-signature"],
secret: process.env.TALOST_WEBHOOK_SECRET!,
});
console.log("Doğrulanmış Olay:", event.type, event.data);
4. Sağlık ve Heartbeat (`talost.health`)
typescript
// Sunucu başlarken arka planda periyodik (60sn) heartbeat başlatır
const heartbeat = talost.health.startHeartbeat({
platform: "WEB",
version: "1.2.0",
instanceId: "prod-web-01",
});
// Kapatırken:
// heartbeat.stop();
5. Uzaktan Konfigürasyon ve Feature Flag (`talost.config` & `talost.flags`)
typescript
// Konfigürasyonu ETag önbelleği ile çeker
const config = await talost.config.get();
// Kullanıcı için bayrak aktif mi kontrol eder (Deterministik SHA-256 bucket)
const isBetaEnabled = await talost.flags.isEnabled("new_editor", session.sub);
🚀 `talost-app-starter-nextjs` Başlangıç Şablonu
Tüm bu standartları içeren, üretime hazır Next.js 15 App Router şablonu:
- Hazır
/api/auth/login,/api/auth/callback,/api/auth/logoutuç noktaları, - Şifreli HttpOnly çerez ile güvenli oturum sarmalayıcısı,
requireEntitlement("feature")sunucu fonksiyonları,- Webhook alıcısı ve
instrumentation.tsile otomatik heartbeat.
İlgili Sayfalar
Son doğrulama: 2026-10-04 · Kaynak: _envanter.md, @talost/app-sdk spec
Son doğrulama: 2026-10-04 · Kaynak: `_envanter.md`, `@talost/app-sdk` spec