UNPKG

@featurevisor/sdk

Version:

Featurevisor SDK for Node.js and the browser

63 lines (62 loc) 2.76 kB
import type { FeatureKey, Context, RuleKey, Traffic, Force, Required, Variation, VariationValue, VariableKey, VariableValue, VariableSchema, EvaluatedFeature, StickyFeatures } from "@featurevisor/types"; import { Logger } from "./logger"; import { HooksManager } from "./hooks"; import { DatafileReader } from "./datafileReader"; import { BucketKey, BucketValue } from "./bucketer"; export declare enum EvaluationReason { FEATURE_NOT_FOUND = "feature_not_found",// feature is not found in datafile DISABLED = "disabled",// feature is disabled REQUIRED = "required",// required features are not enabled OUT_OF_RANGE = "out_of_range",// out of range when mutually exclusive experiments are involved via Groups NO_VARIATIONS = "no_variations",// feature has no variations VARIATION_DISABLED = "variation_disabled",// feature is disabled, and variation's disabledVariationValue is used VARIABLE_NOT_FOUND = "variable_not_found",// variable's schema is not defined in the feature VARIABLE_DEFAULT = "variable_default",// default variable value used VARIABLE_DISABLED = "variable_disabled",// feature is disabled, and variable's disabledValue is used VARIABLE_OVERRIDE = "variable_override",// variable overridden from inside a variation NO_MATCH = "no_match",// no rules matched FORCED = "forced",// against a forced rule STICKY = "sticky",// against a sticky feature RULE = "rule",// against a regular rule ALLOCATED = "allocated",// regular allocation based on bucketing ERROR = "error" } type EvaluationType = "flag" | "variation" | "variable"; export interface Evaluation { type: EvaluationType; featureKey: FeatureKey; reason: EvaluationReason; bucketKey?: BucketKey; bucketValue?: BucketValue; ruleKey?: RuleKey; error?: Error; enabled?: boolean; traffic?: Traffic; forceIndex?: number; force?: Force; required?: Required[]; sticky?: EvaluatedFeature; variation?: Variation; variationValue?: VariationValue; variableKey?: VariableKey; variableValue?: VariableValue; variableSchema?: VariableSchema; } export interface EvaluateDependencies { context: Context; logger: Logger; hooksManager: HooksManager; datafileReader: DatafileReader; sticky?: StickyFeatures; defaultVariationValue?: VariationValue; defaultVariableValue?: VariableValue; } export interface EvaluateParams { type: EvaluationType; featureKey: FeatureKey; variableKey?: VariableKey; } export type EvaluateOptions = EvaluateParams & EvaluateDependencies; export declare function evaluateWithHooks(opts: EvaluateOptions): Evaluation; export declare function evaluate(options: EvaluateOptions): Evaluation; export {};