@launchdarkly/js-server-sdk-common
Version:
LaunchDarkly Server SDK for JavaScript - common code
80 lines • 3.98 kB
TypeScript
import { LDClientContext } from '@launchdarkly/js-sdk-common';
import { BigSegmentStore } from '../interfaces';
/**
* Additional parameters for configuring the SDK's Big Segments behavior.
*
* Big Segments are a specific type of user segments. For more information, read the LaunchDarkly
* documentation: https://docs.launchdarkly.com/home/users/big-segments
*
* @see {@link LDOptions.bigSegments}
*/
export interface LDBigSegmentsOptions {
/**
* Specifies the storage component that provides Big Segments data.
*
* This property is mandatory. It must be obtained from one of the SDK's database integrations,
* such as https://github.com/launchdarkly/node-server-sdk-redis. You will normally specify a
* database implementation that matches how the LaunchDarkly Relay Proxy is configured, since the
* Relay Proxy manages the Big Segment data.
*/
store: (clientContext: LDClientContext) => BigSegmentStore;
/**
* The maximum number of users whose Big Segment state will be cached by the SDK at any given
* time.
*
* To reduce database traffic, the SDK maintains a least-recently-used cache by user key. When a
* feature flag that references a Big Segment is evaluated for some user who is not currently in
* the cache, the SDK queries the database for all Big Segment memberships of that user, and
* stores them together in a single cache entry. If the cache is full, the oldest entry is
* dropped.
*
* A higher value for `userCacheSize` means that database queries for Big Segments will be done
* less often for recently-referenced users, if the application has many users, at the cost of
* increased memory used by the cache.
*
* Cache entries can also expire based on the setting of {@link userCacheTime}.
*
* If not specified, the default value is 1000.
*/
userCacheSize?: number;
/**
* The maximum length of time that the Big Segment state for a user will be cached by the SDK,
* in seconds.
*
* See {@link userCacheSize} for more about this cache. A higher value for `userCacheTime` means
* that database queries for the Big Segment state of any given user will be done less often, but
* that changes to segment membership may not be detected as soon.
*
* If not specified, the default value is 5. Negative values are changed to the default.
*/
userCacheTime?: number;
/**
* The interval at which the SDK will poll the Big Segment store to make sure it is available
* and to determine how long ago it was updated, in seconds.
*
* If not specified, the default value is 5. Zero or negative values are changed to the default.
*/
statusPollInterval?: number;
/**
* The maximum length of time between updates of the Big Segments data before the data is
* considered out of date, in seconds.
*
* Normally, the LaunchDarkly Relay Proxy updates a timestamp in the Big Segment store at
* intervals to confirm that it is still in sync with the LaunchDarkly data, even if there have
* been no changes to the store.
* If the timestamp falls behind the current time by the amount specified in `staleAfter`, the
* SDK assumes that something is not working correctly in this process and that the data may not
* be accurate.
*
* While in a stale state, the SDK will still continue using the last known data, but the status
* from
* {@link interfaces.BigSegmentStoreStatusProvider.getStatus} will have `stale: true`, and any
* {@link LDEvaluationReason} generated from a feature flag that references a Big Segment will
* have a `bigSegmentsStatus` of `"STALE"`.
*
* If not specified, the default value is 120 (two minutes). Zero or negative values are changed
* to the default.
*/
staleAfter?: number;
}
//# sourceMappingURL=LDBigSegmentsOptions.d.ts.map