UNPKG

@featurevisor/sdk

Version:

Featurevisor SDK for Node.js and the browser

47 lines (46 loc) 1.32 kB
import type { BucketBy, Context, FeatureKey } from "@featurevisor/types"; import type { EvaluateOptions, Evaluation } from "./evaluate"; import type { Logger } from "./logger"; import type { BucketKey, BucketValue } from "./bucketer"; /** * bucketKey */ export interface ConfigureBucketKeyOptions { featureKey: FeatureKey; context: Context; bucketBy: BucketBy; bucketKey: string; } export type ConfigureBucketKey = (options: ConfigureBucketKeyOptions) => BucketKey; /** * bucketValue */ export interface ConfigureBucketValueOptions { featureKey: FeatureKey; bucketKey: string; context: Context; bucketValue: number; } export type ConfigureBucketValue = (options: ConfigureBucketValueOptions) => BucketValue; /** * Hooks */ export interface Hook { name: string; before?: (options: EvaluateOptions) => EvaluateOptions; bucketKey?: ConfigureBucketKey; bucketValue?: ConfigureBucketValue; after?: (evaluation: Evaluation, options: EvaluateOptions) => Evaluation; } export interface HooksManagerOptions { hooks?: Hook[]; logger: Logger; } export declare class HooksManager { private hooks; private logger; constructor(options: HooksManagerOptions); add(hook: Hook): (() => void) | undefined; remove(name: string): void; getAll(): Hook[]; }