@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
31 lines (30 loc) • 1.3 kB
TypeScript
export declare class QueryBuilder<S extends Record<string, any> = Record<string, any>> {
chain: Set<string>;
edges: Map<string, Function>;
object: Record<string, any>;
query: string;
builder: (data: GraphGetData<S>) => Array<any>;
constructor(builder: (data: GraphGetData<S>) => Array<any>);
read: () => string;
build: (parent?: string[]) => any;
}
export declare function graphGet<T extends Record<string, any>>(builder: (data: GraphGetData<T>) => Array<any>): QueryBuilder<T>;
export type Utils<T extends Readonly<Record<string, unknown>>> = {
$aliasFor: (alias: string) => GraphGetData<T>;
$all_on: (args: string[]) => GraphGetData<T>;
$args: (args: Record<string, any>) => GraphGetData<T>;
$directives: (args: Record<string, any>) => GraphGetData<T>;
$name: (alias: string) => GraphGetData<T>;
$on: (record: {
[K: string]: unknown;
__typeName: string;
} | {
[K: string]: unknown;
__typeName: string;
}[]) => GraphGetData<T>;
$val: T;
$variables: (args: Record<string, any>) => GraphGetData<T>;
};
export type GraphGetData<O extends Readonly<Record<string, any>>> = {
[K in keyof O]: ((...args: any[]) => Utils<GraphGetData<O[K]>> & GraphGetData<O[K]>) & Utils<O[K]> & GraphGetData<O[K]>;
};