UNPKG

@overture-stack/sqon-builder

Version:
534 lines (533 loc) 16.2 kB
import { z as zod } from 'zod'; import { Clean, Values } from './util'; export declare const ArrayFilterKeys: { readonly In: "in"; }; export type ArrayFilterKey = Values<typeof ArrayFilterKeys>; export declare const ScalarFilterKeys: { readonly GreaterThan: "gt"; readonly LesserThan: "lt"; }; export type ScalarFilterKey = Values<typeof ScalarFilterKeys>; export type FilterKey = ScalarFilterKey | ArrayFilterKey; export declare const FilterKeys: { readonly In: "in"; } & { readonly GreaterThan: "gt"; readonly LesserThan: "lt"; }; export declare const CombinationKeys: { readonly And: "and"; readonly Or: "or"; readonly Not: "not"; }; export type CombinationKey = Values<typeof CombinationKeys>; export declare const Keys: { readonly In: "in"; } & { readonly GreaterThan: "gt"; readonly LesserThan: "lt"; } & { readonly And: "and"; readonly Or: "or"; readonly Not: "not"; }; export type ArrayFilterValue = zod.infer<typeof ArrayFilterValue>; export declare const ArrayFilterValue: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; export type ScalarFilterValue = zod.infer<typeof ScalarFilterValue>; export declare const ScalarFilterValue: zod.ZodNumber; export type FilterValue = zod.infer<typeof FilterValue>; export declare const FilterValue: zod.ZodUnion<[zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>, zod.ZodNumber]>; export type FilterTypeMap = { [ArrayFilterKeys.In]: InFilter; [ScalarFilterKeys.GreaterThan]: GreaterThanFilter; [ScalarFilterKeys.LesserThan]: LesserThanFilter; }; export type InFilterContent = zod.infer<typeof InFilterContent>; export declare const InFilterContent: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>; export type InFilter = zod.infer<typeof InFilter>; export declare const InFilter: zod.ZodObject<{ op: zod.ZodLiteral<"in">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }>; export type GreaterThanFilterContent = zod.infer<typeof GreaterThanFilterContent>; export declare const GreaterThanFilterContent: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; export type GreaterThanFilter = zod.infer<typeof GreaterThanFilter>; export declare const GreaterThanFilter: zod.ZodObject<{ op: zod.ZodLiteral<"gt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "gt"; content: { value: number; fieldName: string; }; }, { op: "gt"; content: { value: number; fieldName: string; }; }>; export type LesserThanFilterContent = zod.infer<typeof LesserThanFilterContent>; export declare const LesserThanFilterContent: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; export type LesserThanFilter = zod.infer<typeof LesserThanFilter>; export declare const LesserThanFilter: zod.ZodObject<{ op: zod.ZodLiteral<"lt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "lt"; content: { value: number; fieldName: string; }; }, { op: "lt"; content: { value: number; fieldName: string; }; }>; export type ArrayFilter = zod.infer<typeof ArrayFilter>; export declare const ArrayFilter: zod.ZodObject<{ op: zod.ZodLiteral<"in">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }>; export type ScalarFilter = zod.infer<typeof ScalarFilter>; export declare const ScalarFilter: zod.ZodUnion<[zod.ZodObject<{ op: zod.ZodLiteral<"gt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "gt"; content: { value: number; fieldName: string; }; }, { op: "gt"; content: { value: number; fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"lt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "lt"; content: { value: number; fieldName: string; }; }, { op: "lt"; content: { value: number; fieldName: string; }; }>]>; export type FilterContent = zod.infer<typeof FilterContent>; export declare const FilterContent: zod.ZodUnion<[zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>, zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>, zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>]>; export type FilterOperator = zod.infer<typeof FilterOperator>; export declare const FilterOperator: zod.ZodDiscriminatedUnion<"op", [zod.ZodObject<{ op: zod.ZodLiteral<"in">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"gt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "gt"; content: { value: number; fieldName: string; }; }, { op: "gt"; content: { value: number; fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"lt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "lt"; content: { value: number; fieldName: string; }; }, { op: "lt"; content: { value: number; fieldName: string; }; }>]>; export type CombinationOperator = { op: CombinationKey; content: (CombinationOperator | FilterOperator)[]; pivot?: string; }; export declare const CombinationOperator: zod.ZodType<CombinationOperator>; export declare const Operator: zod.ZodUnion<[zod.ZodType<CombinationOperator, zod.ZodTypeDef, CombinationOperator>, zod.ZodDiscriminatedUnion<"op", [zod.ZodObject<{ op: zod.ZodLiteral<"in">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"gt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "gt"; content: { value: number; fieldName: string; }; }, { op: "gt"; content: { value: number; fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"lt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "lt"; content: { value: number; fieldName: string; }; }, { op: "lt"; content: { value: number; fieldName: string; }; }>]>]>; export type Operator = zod.infer<typeof Operator>; export declare const SQON: zod.ZodUnion<[zod.ZodType<CombinationOperator, zod.ZodTypeDef, CombinationOperator>, zod.ZodDiscriminatedUnion<"op", [zod.ZodObject<{ op: zod.ZodLiteral<"in">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodUnion<[zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">, zod.ZodString, zod.ZodNumber]>; }, "strip", zod.ZodTypeAny, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }, { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }, { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"gt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "gt"; content: { value: number; fieldName: string; }; }, { op: "gt"; content: { value: number; fieldName: string; }; }>, zod.ZodObject<{ op: zod.ZodLiteral<"lt">; content: zod.ZodObject<{ fieldName: zod.ZodString; value: zod.ZodNumber; }, "strip", zod.ZodTypeAny, { value: number; fieldName: string; }, { value: number; fieldName: string; }>; }, "strip", zod.ZodTypeAny, { op: "lt"; content: { value: number; fieldName: string; }; }, { op: "lt"; content: { value: number; fieldName: string; }; }>]>]>; export type SQON = Clean<Operator>; export declare const isCombination: (operator: Operator) => operator is CombinationOperator; export declare const isFilter: (operator: Operator) => operator is { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; } | { op: "gt"; content: { value: number; fieldName: string; }; } | { op: "lt"; content: { value: number; fieldName: string; }; }; export declare const isArrayFilter: (operator: Operator) => operator is { op: "in"; content: { value: (string | number | (string | number)[]) & (string | number | (string | number)[] | undefined); fieldName: string; }; }; export declare const isScalarFilter: (operator: Operator) => operator is { op: "gt"; content: { value: number; fieldName: string; }; } | { op: "lt"; content: { value: number; fieldName: string; }; }; export declare const isArrayFilterKey: (input: unknown) => input is "in"; export declare const isScalarFilterKey: (input: unknown) => input is "gt" | "lt"; export declare const isArrayFilterValue: (value: unknown) => value is string | number | (string | number)[]; export declare const isScalarFilterValue: (value: unknown) => value is number;