@dossierhq/graphql
Version:
A library for creating GraphQL servers with Dossier.
37 lines (36 loc) • 3.93 kB
TypeScript
import { type ChangelogEvent, type ChangelogEventQuery, type Component, type Entity, type EntityCreate, type EntityQuery, type EntityReference, type EntitySamplingOptions, type EntitySamplingPayload, type EntitySharedQuery, type EntityUpdate, type EntityVersionReference, type PageInfo, type Paging, type PublishedEntity, type PublishedEntityQuery, type PublishedEntitySharedQuery, type PublishedSchema, type Schema, type UniqueIndexReference } from '@dossierhq/core';
import type { GraphQLResolveInfo } from 'graphql';
import type { SessionGraphQLContext } from './GraphQLSchemaGenerator.js';
interface Connection<TContext, T extends Edge<TContext, unknown>> {
pageInfo?: PageInfo;
edges?: T[];
}
type FieldValueOrResolver<TContext, TPayload, TArgs = unknown> = TPayload | Error | Promise<TPayload> | ((args: TArgs, context: TContext, info: GraphQLResolveInfo) => TPayload | Promise<TPayload>);
interface ConnectionWithTotalCount<T extends Edge<TContext, unknown>, TContext> extends Connection<TContext, T> {
totalCount?: FieldValueOrResolver<TContext, number> | null;
}
interface Edge<TContext, T> {
node: FieldValueOrResolver<TContext, T | null>;
cursor: string;
}
type AdminEntityPayload<TContext> = Entity & {
changelogEvents: FieldValueOrResolver<TContext, Connection<TContext, Edge<TContext, ChangelogEvent>> | null, {
query?: ChangelogEventQuery;
first?: number;
after?: string;
last?: number;
before?: string;
}>;
};
export declare function loadPublishedEntity<TContext extends SessionGraphQLContext>(schema: PublishedSchema, context: TContext, reference: EntityReference | UniqueIndexReference): Promise<PublishedEntity>;
export declare function loadPublishedEntityList<TContext extends SessionGraphQLContext>(schema: PublishedSchema, context: TContext, ids: string[]): Promise<FieldValueOrResolver<TContext, PublishedEntity | null>[]>;
export declare function loadPublishedEntitiesSample<TContext extends SessionGraphQLContext>(schema: PublishedSchema, context: TContext, query: PublishedEntitySharedQuery | undefined, options: EntitySamplingOptions | undefined): Promise<EntitySamplingPayload<PublishedEntity>>;
export declare function loadPublishedEntities<TContext extends SessionGraphQLContext>(schema: PublishedSchema, context: TContext, query: PublishedEntityQuery | undefined, paging: Paging, info: GraphQLResolveInfo): Promise<ConnectionWithTotalCount<Edge<TContext, PublishedEntity>, TContext> | null>;
export declare function loadAdminEntity<TContext extends SessionGraphQLContext>(schema: Schema, context: TContext, reference: EntityReference | EntityVersionReference | UniqueIndexReference): Promise<Entity>;
export declare function loadAdminEntityList<TContext extends SessionGraphQLContext>(schema: Schema, context: TContext, ids: string[]): Promise<FieldValueOrResolver<TContext, Entity | null>[]>;
export declare function buildResolversForAdminEntity<TContext extends SessionGraphQLContext>(schema: Schema, entity: Entity): AdminEntityPayload<TContext>;
export declare function loadAdminEntitiesSample<TContext extends SessionGraphQLContext>(schema: Schema, context: TContext, query: EntitySharedQuery | undefined, options: EntitySamplingOptions | undefined): Promise<EntitySamplingPayload<Entity>>;
export declare function loadAdminEntities<TContext extends SessionGraphQLContext>(schema: Schema, context: TContext, query: EntityQuery | undefined, paging: Paging, info: GraphQLResolveInfo): Promise<ConnectionWithTotalCount<Edge<TContext, Entity>, TContext> | null>;
export declare function loadChangelogEvents<TContext extends SessionGraphQLContext>(context: TContext, query: ChangelogEventQuery | undefined, paging: Paging, info: GraphQLResolveInfo): Promise<Connection<TContext, Edge<TContext, ChangelogEvent>> | null>;
export declare function isComponent(item: Component | EntityCreate | EntityUpdate): item is Component;
export {};