UNPKG

hypertune

Version:

[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt

118 lines 4.33 kB
import { ArithmeticOperator, BaseExpressionFields, BooleanExpression, BooleanValueType, ComparisonOperator, ContinuousDimensionType, DiscreteDimensionType, EnumExpression, Expression, FloatExpression, FloatValueType, FunctionValueType, IntExpression, IntValueType, ListValueType, NoOpExpression, ObjectValueType, Parameter, RegexExpression, StringExpression, StringValueType, ValueType, VariableExpression, VoidValueType } from "../types"; type FoldPartialResult<TFoldResult> = null | NoOpExpression | BooleanExpression | IntExpression | FloatExpression | StringExpression | RegexExpression | EnumExpression | (BaseExpressionFields & { type: "ObjectExpression"; valueType: ObjectValueType; objectTypeName: string; fields: { [fieldName: string]: TFoldResult; }; }) | (BaseExpressionFields & { type: "GetFieldExpression"; valueType: ValueType; object: TFoldResult; fieldPath: string | null; }) | (BaseExpressionFields & { type: "UpdateObjectExpression"; valueType: ObjectValueType; object: TFoldResult; updates: { [fieldName: string]: TFoldResult; }; }) | (BaseExpressionFields & { type: "ListExpression"; valueType: ListValueType; items: TFoldResult[]; }) | (BaseExpressionFields & { type: "SwitchExpression"; valueType: ValueType; control: TFoldResult; cases: { id: string; when: TFoldResult; then: TFoldResult; }[]; default: TFoldResult; }) | (BaseExpressionFields & { type: "EnumSwitchExpression"; valueType: ValueType; control: TFoldResult; cases: { [enumValue: string]: TFoldResult; }; }) | (BaseExpressionFields & { type: "ComparisonExpression"; valueType: BooleanValueType; operator: ComparisonOperator | null; a: TFoldResult; b: TFoldResult; }) | (BaseExpressionFields & { type: "ArithmeticExpression"; valueType: IntValueType | FloatValueType; operator: ArithmeticOperator | null; a: TFoldResult; b: TFoldResult; }) | (BaseExpressionFields & { type: "RoundNumberExpression"; valueType: IntValueType; number: TFoldResult; }) | (BaseExpressionFields & { type: "StringifyNumberExpression"; valueType: StringValueType; number: TFoldResult; }) | (BaseExpressionFields & { type: "StringConcatExpression"; valueType: StringValueType; strings: TFoldResult; }) | (BaseExpressionFields & { type: "GetUrlQueryParameterExpression"; valueType: StringValueType; url: TFoldResult; queryParameterName: TFoldResult; }) | (BaseExpressionFields & { type: "SplitExpression"; valueType: ValueType; splitId: string | null; dimensionId: string | null; expose: TFoldResult; unitId: TFoldResult; dimensionMapping: { type: typeof DiscreteDimensionType; cases: { [armId: string]: TFoldResult; }; } | { type: typeof ContinuousDimensionType; function: TFoldResult; }; eventObjectTypeName: string | null; eventPayload: TFoldResult; }) | (BaseExpressionFields & { type: "LogEventExpression"; valueType: VoidValueType; eventObjectTypeName: string | null; eventPayload: TFoldResult; eventTypeId: string | null; unitId: TFoldResult; }) | (BaseExpressionFields & { type: "FunctionExpression"; valueType: FunctionValueType; parameters: Parameter[]; body: TFoldResult; }) | VariableExpression | (BaseExpressionFields & { type: "ApplicationExpression"; valueType: ValueType; function: TFoldResult; arguments: TFoldResult[]; }); type FoldFunction<TFoldResult> = (partialResult: FoldPartialResult<TFoldResult>) => TFoldResult; export default function fold<TFoldResult>(f: FoldFunction<TFoldResult>, expression: Expression | null): TFoldResult; export declare function mapExpressionWithResult<TMapResult>(fn: (expr: Expression | null) => { newExpression: Expression | null; mapResult: TMapResult; }, combineResults: (...results: TMapResult[]) => TMapResult, expression: Expression | null): { newExpression: Expression | null; mapResult: TMapResult; }; export declare function mapExpression(mapper: (expr: Expression | null) => Expression | null, expression: Expression | null): Expression | null; export {}; //# sourceMappingURL=fold.d.ts.map