@featurevisor/sdk
Version:
Featurevisor SDK for Node.js and the browser
60 lines (59 loc) • 2.04 kB
TypeScript
import { Feature, FeatureKey, Context, BucketKey, BucketValue, RuleKey, Traffic, Force, Required, OverrideFeature, Variation, VariationValue, VariableKey, VariableValue, VariableSchema, StickyFeatures, InitialFeatures } from "@featurevisor/types";
import { Logger } from "./logger";
import { DatafileReader } from "./datafileReader";
import { ConfigureBucketKey, ConfigureBucketValue } from "./bucket";
import type { Statuses, InterceptContext } from "./instance";
export declare enum EvaluationReason {
NOT_FOUND = "not_found",
NO_VARIATIONS = "no_variations",
NO_MATCH = "no_match",
DISABLED = "disabled",
REQUIRED = "required",
OUT_OF_RANGE = "out_of_range",
FORCED = "forced",
INITIAL = "initial",
STICKY = "sticky",
RULE = "rule",
ALLOCATED = "allocated",
DEFAULTED = "defaulted",
OVERRIDE = "override",
ERROR = "error"
}
type EvaluationType = "flag" | "variation" | "variable";
export interface Evaluation {
featureKey: FeatureKey;
reason: EvaluationReason;
bucketKey?: BucketKey;
bucketValue?: BucketValue;
ruleKey?: RuleKey;
error?: Error;
enabled?: boolean;
traffic?: Traffic;
forceIndex?: number;
force?: Force;
required?: Required[];
sticky?: OverrideFeature;
initial?: OverrideFeature;
variation?: Variation;
variationValue?: VariationValue;
variableKey?: VariableKey;
variableValue?: VariableValue;
variableSchema?: VariableSchema;
}
export interface EvaluateOptions {
type: EvaluationType;
featureKey: FeatureKey | Feature;
variableKey?: VariableKey;
context: Context;
logger: Logger;
datafileReader: DatafileReader;
statuses?: Statuses;
interceptContext?: InterceptContext;
stickyFeatures?: StickyFeatures;
initialFeatures?: InitialFeatures;
bucketKeySeparator?: string;
configureBucketKey?: ConfigureBucketKey;
configureBucketValue?: ConfigureBucketValue;
}
export declare function evaluate(options: EvaluateOptions): Evaluation;
export {};