← Cloudflare Flagship / flagship / sdk
TypeScript Client SDK
FlagshipClientProvider implementuje rozhraní webového poskytovatele OpenFeature pro aplikace v prohlížeči. Při inicializaci předem načte deklarovanou sadu hodnot flagů a vyhodnocení pak řeší synchronně z cache v paměti.
Díky tomu je poskytovatel vhodný pro rendering na straně klienta, kde je potřeba synchronní přístup k hodnotám flagů.
prefetchFlags
prefetchFlags je povinné pole klíčů flagů, které poskytovatel načítá při inicializaci a při každé změně kontextu. Synchronně lze vyhodnotit jen flagy uvedené v tomto poli, pro jakýkoli klíč flagu mimo něj se vrátí FLAG_NOT_FOUND chybu v době vyhodnocení.
Chování při načítání:
- Při inicializaci : všechny příznaky v
prefetchFlagsse načtou paralelně a uloží do cache v paměti. Poskytovatel pak přejde do stavuREADYjakmile se dokončí všechna načítání (jednotlivá selhání nejsou kritická). - Při změně kontextu : mezipaměť se invaliduje a všechny příznaky se znovu načtou pro nový kontext. Toto vyžaduje paradigma statického kontextu ↗ používaný webovým SDK OpenFeature, kde se kontext nastavuje globálně a od poskytovatelů se očekává, že jej při změně znovu vyhodnotí.
- V okamžiku vyhodnocení : vyhodnocení se zobrazují synchronně z mezipaměti. Žádný síťový požadavek se neprovádí během
getBooleanValue,getStringValue, atd.
Nastavení
Následující příklad inicializuje poskytovatele se sadou předem načtených příznaků a vyhodnocuje je v prohlížečové aplikaci.
import { OpenFeature } from "@openfeature/web-sdk";
import { FlagshipClientProvider } from "@cloudflare/flagship/web";
await OpenFeature.setProviderAndWait(
new FlagshipClientProvider({
appId: "<APP_ID>",
accountId: "<ACCOUNT_ID>",
authToken: "<API_TOKEN>",
prefetchFlags: ["promo-banner", "dark-mode", "max-uploads"],
}),
);
// Set evaluation context globally. The provider re-fetches all prefetchFlags
// whenever the context changes.
await OpenFeature.setContext({ targetingKey: "user-42", plan: "enterprise" });
const client = OpenFeature.getClient();
// Synchronous — served from the in-memory cache.
const showBanner = client.getBooleanValue("promo-banner", false);
if (showBanner) {
document.getElementById("banner").style.display = "block";
}import { OpenFeature } from "@openfeature/web-sdk";
import { FlagshipClientProvider } from "@cloudflare/flagship/web";
await OpenFeature.setProviderAndWait(
new FlagshipClientProvider({
appId: "<APP_ID>",
accountId: "<ACCOUNT_ID>",
authToken: "<API_TOKEN>",
prefetchFlags: ["promo-banner", "dark-mode", "max-uploads"],
}),
);
// Set evaluation context globally. The provider re-fetches all prefetchFlags
// whenever the context changes.
await OpenFeature.setContext({ targetingKey: "user-42", plan: "enterprise" });
const client = OpenFeature.getClient();
// Synchronous — served from the in-memory cache.
const showBanner = client.getBooleanValue("promo-banner", false);
if (showBanner) {
document.getElementById("banner").style.display = "block";
}Možnosti konfigurace
| Možnost | Typ | Povinné | Popis |
|---|---|---|---|
appId |
string |
Ano | ID aplikace Flagship z Cloudflare dashboardu. |
accountId |
string |
Ano | ID vašeho účtu Cloudflare. |
authToken |
string |
Ano | Cloudflare API token s oprávněním Flagship Evaluate nebo Flagship App Evaluate. |
fetchOptions |
RequestInit |
Ne | Vlastní možnosti fetch aplikované na HTTP požadavky. |
timeout |
number |
Ne | Časový limit požadavku v milisekundách. Výchozí hodnota je 5000. |
retries |
number |
Ne | Počet opakování při dočasných chybách. Výchozí hodnota je 1 a je omezeno na 10. |
retryDelay |
number |
Ne | Prodleva mezi opakováními v milisekundách. Výchozí hodnota je 1000 a je omezeno na 30000. |
prefetchFlags |
string[] |
Ano | Klíče příznaků, které se načtou při inicializaci a při každé změně kontextu. Příznaky, které nejsou v tomto seznamu, vrátí FLAG_NOT_FOUND v době vyhodnocení. |
Kdy použít klientského poskytovatele
Klientského poskytovatele použijte v prohlížečových aplikacích, single-page aplikacích nebo v jakémkoli JavaScriptovém prostředí na straně klienta.
Vyhodnocení probíhají synchronně, takže neblokují vykreslování. Hodnoty příznaků se načtou jednou při inicializaci a znovu se načtou při každé změně kontextu vyhodnocení. Vynucené obnovení provedete aktualizací kontextu prostřednictvím OpenFeature.setContext(...).