@core-sdk/feature-flags-sdk
v0.8.3
Published
HTTP client + TTL cache for feature-flag APIs; browser (identify) vs Node services (request-scoped context, no identify). See featureFlagsSdk in this file for AI-friendly integration metadata.
Downloads
164
Readme
@core-sdk/feature-flags-sdk
Özellik bayrakları için HTTP istemcisi: runtime listeleme ve toplu değerlendirme sunucuya delege edilir; istemci tarafında TTL ile bellek önbelleği ve aynı tick içinde istek birleştirme (batch) vardır. Kural ayrıntısı ağ üzerinden “karar” için yalnızca POST …/evaluate yanıtı kullanılır; çekirdek paket @core-sdk/feature-flags-core ile aynı kural modelini paylaşır.
Özellikler
bootstrap: Projede tanımlı anahtarları listeler, ardından tekevaluateile önbelleği doldurur.isEnabled/prefetchServerEvaluations: Sunucu kararı; hata durumundaisEnabledgüvenli şekildefalsedöner.identify/reset: Kalıcı bağlam (distinctId+traits); önbellek ve bekleyen batch temizlenir.peekServerEnabled: Ağ atmadan önbellekten okuma (React hook ile uyumlu).invalidate: Önbellek veya tek bayrak önek temizliği.getHistory/getVersionDetail: Yalnızca admin sunucu yollarına gider (/admin/projects/...). Araç veya iç panel senaryoları içindir.
Kurulum
npm install @core-sdk/feature-flags-sdkPeer olarak Node 18+ ve ortamda fetch (veya fetchImpl) gerekir.
Entegrasyon profilleri (tarayıcı vs servis)
| Profil | identify | includeBrowserInfo | Not |
|--------|------------|----------------------|-----|
| Tarayıcı (SPA) | Oturum açıldığında traits ile kullanılabilir | Varsayılan true; gizlilik için false | Hook’larla birlikte tek client tipik. |
| Node HTTP servisi | Kullanmayın — paylaşımlı client’ta istekler arası sızıntı | false verin | Bağlamı her seferinde isEnabled(key, { userId, tenantId, … }) ile geçirin. |
| Worker / cron | Genelde yok | false | Job meta’sını context ile verin. |
Makine-okur ayrıntılar, configExample nesneleri ve AI asistanlarına yapıştırılmaya hazır İngilizce prompt metinleri: bu paketin package.json dosyasındaki featureFlagsSdk kök alanına bakın (integrationProfiles, aiPromptTemplates).
FeatureFlagsSdkConfig
| Alan | Zorunlu | Açıklama |
|------|---------|----------|
| baseUrl | Evet | Bayrak API kökü (şema + host, isteğe bağlı path). Sondaki / kırpılır. |
| projectKey | Evet | …/projects/{projectKey}/… segmenti. |
| apiKey | Hayır | Boş değilse Authorization: Bearer <apiKey> eklenir. Sunucu FLAGS_API_KEY kullanmıyorsa boş bırakılabilir. |
| getHeaders | Hayır | İstek başına ek başlık; döndürdüğü Authorization varsa apiKey üzerine yazılır (son yayılım kazanır). |
| fetchImpl | Hayır | Varsayılan globalThis.fetch. |
| cacheTtlMs | Hayır | Sunucu değerlendirme önbelleği (ms). Varsayılan 60000. |
| distinctIdKey | Hayır | identify için bağlam anahtarı; varsayılan "userId". Sunucu kurallarındaki field ile uyumlu olmalı. |
| includeBrowserInfo | Hayır | Varsayılan true (tarayıcıda ek context alanları). |
Sunucu uçları (referans: feature-flag-api)
| İstemci metodu / akış | HTTP |
|----------------------|------|
| bootstrap, runtime liste | GET /projects/{projectKey}/flags |
| isEnabled, prefetchServerEvaluations | POST /projects/{projectKey}/flags/evaluate |
| getHistory | GET /admin/projects/{projectKey}/flags/{flagKey}/history |
| getVersionDetail | GET /admin/projects/{projectKey}/flags/{flagKey}/versions/{version} |
includeBrowserInfo (varsayılan açık)
Tarayıcıda örnek alanlar: browserUserAgent, browserLanguage, browserTimezone, currentUrl, host, pathName, referrerUrl, ekran / viewport boyutları, isMobile / isTablet / isDesktop. Node ortamında window olmadığı için bu blok atlanır.
Kullanım örneği
import { FeatureFlagsClient } from "@core-sdk/feature-flags-sdk";
const client = new FeatureFlagsClient({
baseUrl: "https://flags.example.com",
apiKey: process.env.FEATURE_FLAGS_API_KEY ?? "",
projectKey: "checkout-service",
includeBrowserInfo: false,
});
await client.bootstrap();
client.identify("user-42", {
accountId: "acc-1001",
plan: "pro",
});
const on = await client.isEnabled("checkout_redesign", { channel: "web" });Ana metotlar
| Metot | Kısa açıklama |
|-------|----------------|
| bootstrap() | Anahtarları listeler, evaluate ile önbelleği doldurur, kayıt dizisi döner. |
| identify(distinctId, traits?) | Sonraki çağrılar için bağlamı sabitler; önbelleği sıfırlar. |
| reset() | Kimliği temizler. |
| isEnabled(flagKey, context?) | Sunucu (veya önbellek) ile açık/kapalı. |
| prefetchServerEvaluations(flagKeys, extraContext?) | Toplu evaluate + önbellek. |
| peekServerEnabled(flagKey, extraContext?) | Önbellekteki değer veya undefined. |
| invalidate(flagKey?) | Önbellek / bekleyen batch temizliği. |
| getHistory(flagKey) | Admin geçmiş JSON. |
| getVersionDetail(flagKey, version) | Admin sürüm anlık görüntüsü. |
Lisans
Kuruluşunuzun lisans kuralları geçerlidir.
