groq-builder
Version:
A **schema-aware**, strongly-typed GROQ query builder. It enables you to build GROQ queries using **auto-completion**, **type-checking**, and **runtime validation**.
31 lines (30 loc) • 1.49 kB
TypeScript
import { InferParserInput, InferParserOutput, Parser, ParserFunction } from "../types/public-types";
import { Simplify } from "../types/utils";
/**
* Pretty-prints the value
*/
export declare function inspect(value: unknown): string;
/**
* Validates (and maps) each item in an array.
*/
export declare function simpleArrayParser<TItemInput, TItemOutput>(itemParser: null | ParserFunction<TItemInput, TItemOutput>): ParserFunction<Array<TItemInput>, Array<TItemOutput>>;
/**
* Validates (and maps) each key in an object.
*/
export declare function simpleObjectParser<TMap extends ObjectValidationMap>(objectMapper?: TMap): ParserFunction<Simplify<{
[P in keyof TMap]: TMap[P] extends Parser ? InferParserInput<TMap[P]> : unknown;
}>, Simplify<{
[P in keyof TMap]: TMap[P] extends Parser ? InferParserOutput<TMap[P]> : unknown;
}>>;
export type ObjectValidationMap = Record<string, Parser | null>;
type UnknownObject = Record<string, unknown>;
type UnknownObjectParser = (input: UnknownObject) => UnknownObject;
/**
* Combines multiple object parsers into a single parser
*/
export declare function combineObjectParsers(...objectParsers: UnknownObjectParser[]): UnknownObjectParser;
/**
* Returns a parser that works against an array or a single item.
*/
export declare function maybeArrayParser<TItemInput, TItemOutput>(parser: null | ParserFunction<TItemInput, TItemOutput>): ((input: TItemInput | Array<TItemInput>) => TItemOutput | TItemOutput[]) | null;
export {};