@overture-stack/sqon-builder
Version:
SQON creation and manipulation library
534 lines (533 loc) • 16.2 kB
TypeScript
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;