UNPKG

@featurevisor/core

Version:

Core package of Featurevisor for Node.js usage

647 lines (646 loc) 27.9 kB
import { z } from "zod"; import { ProjectConfig } from "../config"; export declare function getFeatureZodSchema(projectConfig: ProjectConfig, conditionsZodSchema: any, availableAttributeKeys: [string, ...string[]], availableSegmentKeys: [string, ...string[]], availableFeatureKeys: [string, ...string[]]): z.ZodEffects<z.ZodObject<{ archived: z.ZodOptional<z.ZodBoolean>; deprecated: z.ZodOptional<z.ZodBoolean>; description: z.ZodString; tags: z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, string[], string[]>; required: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodObject<{ key: z.ZodEffects<z.ZodString, string, string>; variation: z.ZodOptional<z.ZodString>; }, "strict", z.ZodTypeAny, { key?: string; variation?: string; }, { key?: string; variation?: string; }>]>, "many">>; bucketBy: z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, z.ZodObject<{ or: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">; }, "strict", z.ZodTypeAny, { or?: string[]; }, { or?: string[]; }>]>; variablesSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{ deprecated: z.ZodOptional<z.ZodBoolean>; type: z.ZodEnum<["string", "integer", "boolean", "double", "array", "object", "json"]>; description: z.ZodOptional<z.ZodString>; defaultValue: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>; useDefaultWhenDisabled: z.ZodOptional<z.ZodBoolean>; disabledValue: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>; }, "strict", z.ZodTypeAny, { deprecated?: boolean; type?: "string" | "boolean" | "object" | "json" | "integer" | "double" | "array"; description?: string; defaultValue?: string | number | boolean | string[] | Record<string, unknown>; useDefaultWhenDisabled?: boolean; disabledValue?: string | number | boolean | string[] | Record<string, unknown>; }, { deprecated?: boolean; type?: "string" | "boolean" | "object" | "json" | "integer" | "double" | "array"; description?: string; defaultValue?: string | number | boolean | string[] | Record<string, unknown>; useDefaultWhenDisabled?: boolean; disabledValue?: string | number | boolean | string[] | Record<string, unknown>; }>>>; disabledVariationValue: z.ZodOptional<z.ZodString>; variations: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{ description: z.ZodOptional<z.ZodString>; value: z.ZodString; weight: z.ZodNumber; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; variableOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodObject<{ conditions: any; value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>; }, "strict", z.ZodTypeAny, { conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; }, { conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; }>, z.ZodObject<{ segments: z.ZodUnion<[z.ZodArray<any, "many">, any]>; value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>; }, "strict", z.ZodTypeAny, { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; }, { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; }>]>, "many">>>; }, "strict", z.ZodTypeAny, { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }, { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }>, "many">, { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }[], { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }[]>>; expose: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">]>>> | z.ZodOptional<z.ZodRecord<z.ZodEnum<[string, ...string[]]>, z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">]>>>>; force: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{ segments: z.ZodUnion<[z.ZodArray<any, "many">, any]>; enabled: z.ZodOptional<z.ZodBoolean>; variation: z.ZodOptional<z.ZodString>; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; }, "strict", z.ZodTypeAny, { segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }, { segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }>, z.ZodObject<{ conditions: any; enabled: z.ZodOptional<z.ZodBoolean>; variation: z.ZodOptional<z.ZodString>; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; }, "strict", z.ZodTypeAny, { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }, { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }>]>, "many">> | z.ZodOptional<z.ZodRecord<z.ZodEnum<[string, ...string[]]>, z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodObject<{ segments: z.ZodUnion<[z.ZodArray<any, "many">, any]>; enabled: z.ZodOptional<z.ZodBoolean>; variation: z.ZodOptional<z.ZodString>; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; }, "strict", z.ZodTypeAny, { segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }, { segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }>, z.ZodObject<{ conditions: any; enabled: z.ZodOptional<z.ZodBoolean>; variation: z.ZodOptional<z.ZodString>; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; }, "strict", z.ZodTypeAny, { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }, { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; }>]>, "many">>>>; rules: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodObject<{ key: z.ZodString; description: z.ZodOptional<z.ZodString>; segments: z.ZodUnion<[z.ZodArray<any, "many">, any]>; percentage: z.ZodNumber; enabled: z.ZodOptional<z.ZodBoolean>; variation: z.ZodOptional<z.ZodString>; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; variationWeights: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>; }, "strict", z.ZodTypeAny, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }>, "many">, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[], { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[], { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[], { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]> | z.ZodRecord<z.ZodEnum<[string, ...string[]]>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodArray<z.ZodObject<{ key: z.ZodString; description: z.ZodOptional<z.ZodString>; segments: z.ZodUnion<[z.ZodArray<any, "many">, any]>; percentage: z.ZodNumber; enabled: z.ZodOptional<z.ZodBoolean>; variation: z.ZodOptional<z.ZodString>; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>]>>>; variationWeights: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>; }, "strict", z.ZodTypeAny, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }>, "many">, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[], { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[], { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[], { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>>; }, "strict", z.ZodTypeAny, { archived?: boolean; deprecated?: boolean; description?: string; tags?: string[]; required?: (string | { key?: string; variation?: string; })[]; bucketBy?: string | string[] | { or?: string[]; }; variablesSchema?: Record<string, { deprecated?: boolean; type?: "string" | "boolean" | "object" | "json" | "integer" | "double" | "array"; description?: string; defaultValue?: string | number | boolean | string[] | Record<string, unknown>; useDefaultWhenDisabled?: boolean; disabledValue?: string | number | boolean | string[] | Record<string, unknown>; }>; disabledVariationValue?: string; variations?: { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }[]; expose?: boolean | string[] | Record<string, boolean | string[]>; force?: ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[] | Record<string, ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[]>; rules?: { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[] | Record<string, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>; }, { archived?: boolean; deprecated?: boolean; description?: string; tags?: string[]; required?: (string | { key?: string; variation?: string; })[]; bucketBy?: string | string[] | { or?: string[]; }; variablesSchema?: Record<string, { deprecated?: boolean; type?: "string" | "boolean" | "object" | "json" | "integer" | "double" | "array"; description?: string; defaultValue?: string | number | boolean | string[] | Record<string, unknown>; useDefaultWhenDisabled?: boolean; disabledValue?: string | number | boolean | string[] | Record<string, unknown>; }>; disabledVariationValue?: string; variations?: { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }[]; expose?: boolean | string[] | Record<string, boolean | string[]>; force?: ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[] | Record<string, ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[]>; rules?: { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[] | Record<string, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>; }>, { archived?: boolean; deprecated?: boolean; description?: string; tags?: string[]; required?: (string | { key?: string; variation?: string; })[]; bucketBy?: string | string[] | { or?: string[]; }; variablesSchema?: Record<string, { deprecated?: boolean; type?: "string" | "boolean" | "object" | "json" | "integer" | "double" | "array"; description?: string; defaultValue?: string | number | boolean | string[] | Record<string, unknown>; useDefaultWhenDisabled?: boolean; disabledValue?: string | number | boolean | string[] | Record<string, unknown>; }>; disabledVariationValue?: string; variations?: { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }[]; expose?: boolean | string[] | Record<string, boolean | string[]>; force?: ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[] | Record<string, ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[]>; rules?: { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[] | Record<string, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>; }, { archived?: boolean; deprecated?: boolean; description?: string; tags?: string[]; required?: (string | { key?: string; variation?: string; })[]; bucketBy?: string | string[] | { or?: string[]; }; variablesSchema?: Record<string, { deprecated?: boolean; type?: "string" | "boolean" | "object" | "json" | "integer" | "double" | "array"; description?: string; defaultValue?: string | number | boolean | string[] | Record<string, unknown>; useDefaultWhenDisabled?: boolean; disabledValue?: string | number | boolean | string[] | Record<string, unknown>; }>; disabledVariationValue?: string; variations?: { description?: string; value?: string; weight?: number; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variableOverrides?: Record<string, ({ conditions?: any; value?: string | number | boolean | string[] | Record<string, unknown>; } | { segments?: any; value?: string | number | boolean | string[] | Record<string, unknown>; })[]>; }[]; expose?: boolean | string[] | Record<string, boolean | string[]>; force?: ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[] | Record<string, ({ segments?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; } | { conditions?: any; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; })[]>; rules?: { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[] | Record<string, { key?: string; description?: string; segments?: any; percentage?: number; enabled?: boolean; variation?: string; variables?: Record<string, string | number | boolean | string[] | Record<string, unknown>>; variationWeights?: Record<string, number>; }[]>; }>;