@flipt-io/flipt
v1.5.0
Published
Flipt Server SDK
Readme
Flipt Node
This directory contains the TypeScript source code for the Flipt server-side client.
Documentation
API documentation is available at https://www.flipt.io/docs/reference/overview.
Installation
npm i @flipt-io/flipt@{version}Usage
In your Node code you can import this client and use it as so:
import { FliptClient } from "@flipt-io/flipt";
const fliptClient = new FliptClient();
async function evaluate() {
const variantEvaluationResponse = await fliptClient.evaluation.variant({
namespaceKey: "default",
flagKey: "flag1",
entityId: "entity",
context: { fizz: "buzz" }
});
console.log(variantEvaluationResponse);
}There is a more detailed example in the examples directory.
Setting HTTP Headers
You can set custom HTTP headers for the client by using the headers parameter in the constructor.
const fliptClient = new FliptClient({
headers: { "X-Custom-Header": "Custom-Value" }
});Flipt V2 Environment Support
Flipt V2 introduces the concept of environments. This client supports evaluation of flags in a specific environment by using the X-Flipt-Environment header.
const fliptClient = new FliptClient({
headers: { "X-Flipt-Environment": "production" }
});Metrics
There is support for Datadog RUM through this client. This allows you to track the values of feature flag evaluation and how it relates to active browser sessions.
You can first install the datadog RUM client like so:
npm install --save @datadog/browser-rumTo start tracking feature flags on Datadog:
import { datadogRum } from "@datadog/browser-rum";
import { FliptClient, FliptMetrics } from "@flipt-io/flipt";
datadogRum.init({
applicationId: "<APPLICATION_ID>",
clientToken: "<CLIENT_TOKEN>",
site: "datadoghq.com",
service: "<SERVICE_NAME>",
env: "<ENV_NAME>",
enableExperimentalFeatures: ["feature_flags"],
sessionSampleRate: 100,
sessionReplaySampleRate: 20,
trackUserInteractions: true,
trackResources: true,
trackLongTasks: true,
defaultPrivacyLevel: "mask-user-input"
});
datadogRum.startSessionReplayRecording();
const metricsClient = new FliptMetrics(
new FliptClient({
url: "http://localhost:8080"
}).evaluation,
datadogRum
);
const response = await metricsClient.variant({
namespaceKey: "default",
flagKey: "hello-this",
entityId: uuidv4(),
context: {}
});