@dossierhq/graphql
Version:
A library for creating GraphQL servers with Dossier.
57 lines (56 loc) • 4.94 kB
TypeScript
import { type Component, type ComponentTypeSpecification, type DossierClient, type Entity, type EntityCreate, type EntityTypeSpecification, type EntityUpdate, type ErrorType, type PublishedComponentTypeSpecification, type PublishedDossierClient, type PublishedEntity, type PublishedEntityTypeSpecification, type PublishedSchema, type Result, type Schema } from '@dossierhq/core';
import { GraphQLObjectType, GraphQLSchema, type GraphQLFieldConfig, type GraphQLFieldConfigMap, type GraphQLInputFieldConfigMap, type GraphQLSchemaConfig } from 'graphql';
import { TypeRepository } from './TypeRepository.js';
export interface SessionGraphQLContext {
client: Result<DossierClient<Entity> | DossierClient<Entity<string, object>, Component<string, object>>, typeof ErrorType.NotAuthenticated>;
publishedClient: Result<PublishedDossierClient<PublishedEntity> | PublishedDossierClient<PublishedEntity<string, object>, Component<string, object>>, typeof ErrorType.NotAuthenticated>;
}
export declare class GraphQLSchemaGenerator<TContext extends SessionGraphQLContext> extends TypeRepository {
private readonly schema;
private readonly publishedSchema;
constructor({ schema, publishedSchema, }: {
schema: Schema | null;
publishedSchema: PublishedSchema | null;
});
addSharedSupportingTypes(): void;
addPublishedSupportingTypes(publishedSchema: PublishedSchema): void;
addPublishedEntityTypes(publishedSchema: PublishedSchema): void;
addPublishedEntityType(entitySpec: PublishedEntityTypeSpecification): void;
addPublishedComponentTypes(publishedSchema: PublishedSchema): void;
addPublishedComponentType(componentSpec: PublishedComponentTypeSpecification): void;
addAdminSupportingTypes(schema: Schema): void;
addChangelogSupportingTypes(): void;
addEntityTypes(schema: Schema): void;
addEntityType(entitySpec: EntityTypeSpecification): void;
addAdminComponentTypes(schema: Schema): void;
addAdminComponentType(componentSpec: ComponentTypeSpecification): void;
addTypeSpecificationOutputFields<TSource>(typeSpec: PublishedEntityTypeSpecification | PublishedComponentTypeSpecification | EntityTypeSpecification | ComponentTypeSpecification, fields: GraphQLFieldConfigMap<TSource, TContext>, isAdmin: boolean): void;
addTypeSpecificationInputFields(typeSpec: EntityTypeSpecification | ComponentTypeSpecification, fields: GraphQLInputFieldConfigMap): void;
buildQueryFieldNode<TSource>(publishedSchema: PublishedSchema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldNodes<TSource>(publishedSchema: PublishedSchema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldPublishedEntity<TSource>(publishedSchema: PublishedSchema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldAdminEntity<TSource>(schema: Schema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldAdminEntityList<TSource>(schema: Schema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldAdminEntitiesSample<TSource>(schema: Schema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldAdminEntities<TSource>(schema: Schema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldPublishedSampleEntities<TSource>(publishedSchema: PublishedSchema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldPublishedEntities<TSource>(publishedSchema: PublishedSchema): GraphQLFieldConfig<TSource, TContext>;
buildQueryFieldChangelogEvents<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildQueryType<TSource>(): GraphQLObjectType;
buildMutationCreateEntity<TSource>(schema: Schema, entityName: string): GraphQLFieldConfig<TSource, TContext>;
buildMutationUpdateEntity<TSource>(schema: Schema, entityName: string): GraphQLFieldConfig<TSource, TContext>;
buildMutationUpsertEntity<TSource>(schema: Schema, entityName: string): GraphQLFieldConfig<TSource, TContext>;
buildMutationAcquireAdvisoryLock<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationRenewAdvisoryLock<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationReleaseAdvisoryLock<TSource>(): GraphQLFieldConfig<TSource, TContext>;
resolveJsonInputFields(schema: Schema, entity: EntityCreate | EntityUpdate, entityTypeName: string): void;
decodeJsonInputField(fieldPrefix: string, fieldValue: unknown): unknown;
buildMutationPublishEntities<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationUnpublishEntities<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationArchiveEntity<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationUnarchiveEntity<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationDeleteEntities<TSource>(): GraphQLFieldConfig<TSource, TContext>;
buildMutationType<TSource>(schema: Schema): GraphQLObjectType | null;
buildSchemaConfig<TSource>(): GraphQLSchemaConfig;
buildSchema<TSource>(): GraphQLSchema;
}