@devcycle/nodejs-server-sdk
Version:
The DevCycle NodeJS Server SDK used for feature management.
86 lines (85 loc) • 3.46 kB
TypeScript
import { Provider, ResolutionDetails, EvaluationContext, JsonValue, ProviderMetadata, ProviderStatus, TrackingEventDetails } from '@openfeature/server-sdk';
import { DevCycleClient, DevCycleCloudClient, DevCycleOptions, DevCycleOptionsLocalEnabled, DevCycleOptionsCloudEnabled } from '../index';
export declare class DevCycleProvider implements Provider {
readonly metadata: ProviderMetadata;
readonly runsOn = "server";
private readonly logger;
readonly devcycleClient: DevCycleClient | DevCycleCloudClient;
/**
* Create a DevCycleProvider from an existing DevCycle client
*/
constructor(devcycleClient: DevCycleClient | DevCycleCloudClient, options?: Pick<DevCycleOptions, 'logger' | 'logLevel'>);
/**
* Create a DevCycleProvider with a local bucketing client
*/
constructor(sdkKey: string, options?: DevCycleOptionsLocalEnabled);
/**
* Create a DevCycleProvider with a cloud bucketing client
*/
constructor(sdkKey: string, options: DevCycleOptionsCloudEnabled);
get status(): ProviderStatus;
initialize(context?: EvaluationContext): Promise<void>;
onClose(): Promise<void>;
track(trackingEventName: string, context?: EvaluationContext, trackingEventDetails?: TrackingEventDetails): void;
/**
* Generic function to retrieve a DVC variable and convert it to a ResolutionDetails.
* @param flagKey
* @param defaultValue
* @param context
* @private
*/
private getDVCVariable;
/**
* Resolve a boolean OpenFeature flag and its evaluation details.
* @param flagKey
* @param defaultValue
* @param context
*/
resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext): Promise<ResolutionDetails<boolean>>;
/**
* Resolve a string OpenFeature flag and its evaluation details.
* @param flagKey
* @param defaultValue
* @param context
*/
resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
/**
* Resolve a number OpenFeature flag and its evaluation details.
* @param flagKey
* @param defaultValue
* @param context
*/
resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
/**
* Resolve a object OpenFeature flag and its evaluation details.
* @param flagKey
* @param defaultValue
* @param context
*/
resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
/**
* Convert a OpenFeature JsonValue default value into DVCJSON default value for evaluation.
* @param jsonValue
* @private
*/
private defaultValueFromJsonValue;
/**
* Convert a DVCVariable result into a OpenFeature ResolutionDetails.
* TODO: add support for variant / reason / and more error codes from DVC.
* @param variable
* @private
*/
private resultFromDVCVariable;
/**
* Convert an OpenFeature EvaluationContext into a DevCycleUser.
* @param context
* @private
*/
private devcycleUserFromContext;
/**
* Convert customData from an OpenFeature EvaluationContextObject into a DevCycleUser customData.
* @param evaluationData
* @private
*/
private convertToDVCCustomDataJSON;
}