@featurevisor/sdk
Version:
Featurevisor SDK for Node.js and the browser
47 lines (46 loc) • 1.32 kB
TypeScript
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[];
}