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
TypeScript
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