INTEGRITY Документация

TypeScript Client SDK

FlagshipClientProvider реализует интерфейс веб-провайдера OpenFeature для приложений в браузере. Он заранее загружает заявленный набор значений флагов при инициализации и синхронно разрешает их из кэша в памяти.

Благодаря этому поставщик подходит для клиентского рендеринга, где требуется синхронный доступ к значениям флагов.

prefetchFlags

prefetchFlags это обязательный массив ключей флагов, которые провайдер загружает при инициализации и при каждом изменении контекста. Только флаги, перечисленные в этом массиве, доступны для синхронной оценки: любой не включенный в него ключ флага возвращает FLAG_NOT_FOUND ошибку во время разрешения значения.

Поведение загрузки:

Настройка

В следующем примере провайдер инициализируется с набором заранее полученных флагов и оценивает их в браузерном приложении.

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";
}

Параметры настройки

Опция Тип Обязательный Описание
appId string Да Идентификатор приложения Flagship из панели управления Cloudflare.
accountId string Да Идентификатор вашего аккаунта Cloudflare.
authToken string Да Cloudflare API-токен с разрешением Flagship Evaluate или Flagship App Evaluate.
fetchOptions RequestInit Нет Пользовательские параметры fetch, применяемые к HTTP-запросам.
timeout number Нет Тайм-аут запроса в миллисекундах. По умолчанию 5000.
retries number Нет Попытки повтора при временных ошибках. По умолчанию 1 и ограничено значением 10.
retryDelay number Нет Задержка между повторными попытками в миллисекундах. По умолчанию 1000 и ограничено значением 30000.
prefetchFlags string[] Да Ключи флагов, которые нужно загружать при инициализации и при каждом изменении контекста. Для флагов, не входящих в этот список, возвращается FLAG_NOT_FOUND во время оценки.

Когда использовать клиентский поставщик

Используйте клиентский поставщик в браузерных приложениях, одностраничных приложениях (SPA) или в любой клиентской среде JavaScript.

Оценка выполняется синхронно, поэтому она не блокирует рендеринг. Значения флагов загружаются один раз при инициализации и повторно при каждом изменении контекста оценки. Чтобы принудительно обновить значения, измените контекст через OpenFeature.setContext(...).