UNPKG

@devcycle/nodejs-server-sdk

Version:

The DevCycle NodeJS Server SDK used for feature management.

86 lines (85 loc) 3.46 kB
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; }