UNPKG

grafast

Version:

Cutting edge GraphQL planning and execution engine

94 lines 9.37 kB
import type { ExecutionDetails } from "../index.js"; import type { GrafastResultsList, Maybe, PromiseOrDirect } from "../interfaces.js"; import type { Multistep, UnwrapMultistep } from "../multistep.js"; import { Step } from "../step.js"; export interface LoadOptions<TItem, TParams extends Record<string, any>, TUnarySpec = never> { unary: TUnarySpec; attributes: ReadonlyArray<keyof TItem>; params: Partial<TParams>; } type LoadCallback<TSpec, TItem, TData extends Maybe<TItem> | Maybe<ReadonlyArray<Maybe<TItem>>>, // loadMany TParams extends Record<string, any>, TUnarySpec = never> = { (specs: ReadonlyArray<TSpec>, options: LoadOptions<TItem, TParams, TUnarySpec>): PromiseOrDirect<ReadonlyArray<TData>>; displayName?: string; }; export type LoadOneCallback<TSpec, TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>, TUnarySpec = never> = LoadCallback<TSpec, TItem, TData, TParams, TUnarySpec>; export type LoadManyCallback<TSpec, TItem, TData extends Maybe<ReadonlyArray<Maybe<TItem>>> = Maybe<ReadonlyArray<Maybe<TItem>>>, TParams extends Record<string, any> = Record<string, any>, TUnarySpec = never> = LoadCallback<TSpec, TItem, TData, TParams, TUnarySpec>; /** * A TypeScript Identity Function to help you strongly type your * LoadOneCallback. */ export declare function loadOneCallback<TSpec, TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>, TUnarySpec = never>(callback: LoadOneCallback<TSpec, TItem, TData, TParams, TUnarySpec>): LoadOneCallback<TSpec, TItem, TData, TParams, TUnarySpec>; /** * A TypeScript Identity Function to help you strongly type your * LoadManyCallback. */ export declare function loadManyCallback<TSpec, TItem, TData extends Maybe<ReadonlyArray<Maybe<TItem>>> = Maybe<ReadonlyArray<Maybe<TItem>>>, TParams extends Record<string, any> = Record<string, any>, TUnarySpec = never>(callback: LoadManyCallback<TSpec, TItem, TData, TParams, TUnarySpec>): LoadManyCallback<TSpec, TItem, TData, TParams, TUnarySpec>; /** * You shouldn't create instances of this yourself - use `loadOne` or `loadMany` instead. */ export declare class LoadedRecordStep<TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>> extends Step<TData> { private isSingle; private sourceDescription; private ioEquivalence; static $$export: { moduleName: string; exportName: string; }; isSyncAndSafe: boolean; attributes: Set<keyof TItem>; params: Partial<TParams>; constructor($data: Step<TData>, isSingle: boolean, sourceDescription: string, ioEquivalence: Record<string, Step>); toStringMeta(): string; get(attr: keyof TItem & (string | number)): Step<any>; private _getInner; setParam<TParamKey extends keyof TParams>(paramKey: TParamKey, value: TParams[TParamKey]): void; deduplicate(peers: LoadedRecordStep<any, any>[]): LoadedRecordStep<any, any, Record<string, any>>[]; deduplicatedWith(replacement: LoadedRecordStep<any, any>): void; optimize(): Step<any> | import("./__flag.js").__FlagStep<Step<any>>; execute({ count, values: [values0], }: ExecutionDetails<[TData]>): GrafastResultsList<TData>; } export declare class LoadStep<const TMultistep extends Multistep, TItem, TData extends Maybe<TItem> | Maybe<ReadonlyArray<Maybe<TItem>>>, // loadMany TParams extends Record<string, any>, const TUnaryMultistep extends Multistep = never> extends Step<TData> { private ioEquivalence; private load; static $$export: { moduleName: string; exportName: string; }; isSyncAndSafe: boolean; loadOptions: Omit<LoadOptions<TItem, TParams, UnwrapMultistep<TUnaryMultistep>>, "unary"> | null; loadOptionsKey: string; attributes: Set<keyof TItem>; params: Partial<TParams>; unaryDepId: number | null; constructor(spec: TMultistep, unarySpec: TUnaryMultistep | null, ioEquivalence: IOEquivalence<TMultistep>, load: LoadCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>); toStringMeta(): string; private makeAccessMap; listItem($item: Step): LoadedRecordStep<TItem, TData extends Maybe<readonly (infer U)[]> ? U extends Maybe<TItem> ? U : never : never, TParams>; single(): TData extends Maybe<TItem> ? LoadedRecordStep<TItem, TData, TParams> : never; setParam<TParamKey extends keyof TParams>(paramKey: TParamKey, value: TParams[TParamKey]): void; addAttributes(attributes: Set<keyof TItem>): void; deduplicate(peers: readonly LoadStep<any, any, any, any, any>[]): LoadStep<any, any, any, any, any>[]; deduplicatedWith(replacement: LoadStep<any, any, any, any, any>): void; finalize(): void; execute({ count, values: [values0, values1], extra, }: ExecutionDetails<[ UnwrapMultistep<TMultistep>, UnwrapMultistep<TUnaryMultistep> ]>): PromiseOrDirect<GrafastResultsList<TData>>; } export declare function loadMany<const TMultistep extends Multistep, TItem, TData extends Maybe<ReadonlyArray<Maybe<TItem>>> = Maybe<ReadonlyArray<Maybe<TItem>>>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, loadCallback: LoadManyCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadStep<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>; export declare function loadMany<const TMultistep extends Multistep, TItem, TData extends Maybe<ReadonlyArray<Maybe<TItem>>> = Maybe<ReadonlyArray<Maybe<TItem>>>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, ioEquivalence: IOEquivalence<TMultistep>, loadCallback: LoadManyCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadStep<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>; export declare function loadMany<const TMultistep extends Multistep, TItem, TData extends Maybe<ReadonlyArray<Maybe<TItem>>> = Maybe<ReadonlyArray<Maybe<TItem>>>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, unarySpec: TUnaryMultistep | null, loadCallback: LoadManyCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadStep<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>; export declare function loadMany<const TMultistep extends Multistep, TItem, TData extends Maybe<ReadonlyArray<Maybe<TItem>>> = Maybe<ReadonlyArray<Maybe<TItem>>>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, unarySpec: TUnaryMultistep | null, ioEquivalence: IOEquivalence<TMultistep>, loadCallback: LoadManyCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadStep<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>; type IOEquivalence<TMultistep extends Multistep> = null | string | (UnwrapMultistep<TMultistep> extends readonly [...(readonly any[])] ? { [key in Exclude<keyof UnwrapMultistep<TMultistep>, keyof any[]>]: string | null; } : UnwrapMultistep<TMultistep> extends Record<string, any> ? { [key in keyof UnwrapMultistep<TMultistep>]?: string | null; } : never); export declare function loadOne<const TMultistep extends Multistep, TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, loadCallback: LoadOneCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadedRecordStep<TItem, TData, TParams>; export declare function loadOne<const TMultistep extends Multistep, TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, ioEquivalence: IOEquivalence<TMultistep>, loadCallback: LoadOneCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadedRecordStep<TItem, TData, TParams>; export declare function loadOne<const TMultistep extends Multistep, TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, unarySpec: TUnaryMultistep | null, loadCallback: LoadOneCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadedRecordStep<TItem, TData, TParams>; export declare function loadOne<const TMultistep extends Multistep, TItem, TData extends Maybe<TItem> = Maybe<TItem>, TParams extends Record<string, any> = Record<string, any>, const TUnaryMultistep extends Multistep = never>(spec: TMultistep, unarySpec: TUnaryMultistep | null, ioEquivalence: IOEquivalence<TMultistep>, loadCallback: LoadOneCallback<UnwrapMultistep<TMultistep>, TItem, TData, TParams, UnwrapMultistep<TUnaryMultistep>>): LoadedRecordStep<TItem, TData, TParams>; export {}; //# sourceMappingURL=load.d.ts.map