node.d.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { GraphQLInterfaceType } from 'graphql';
  2. import type {
  3. GraphQLFieldConfig,
  4. GraphQLResolveInfo,
  5. GraphQLTypeResolver,
  6. } from 'graphql';
  7. interface GraphQLNodeDefinitions<TContext> {
  8. nodeInterface: GraphQLInterfaceType;
  9. nodeField: GraphQLFieldConfig<unknown, TContext>;
  10. nodesField: GraphQLFieldConfig<unknown, TContext>;
  11. }
  12. /**
  13. * Given a function to map from an ID to an underlying object, and a function
  14. * to map from an underlying object to the concrete GraphQLObjectType it
  15. * corresponds to, constructs a `Node` interface that objects can implement,
  16. * and a field config for a `node` root field.
  17. *
  18. * If the typeResolver is omitted, object resolution on the interface will be
  19. * handled with the `isTypeOf` method on object types, as with any GraphQL
  20. * interface without a provided `resolveType` method.
  21. */
  22. export declare function nodeDefinitions<TContext>(
  23. fetchById: (
  24. id: string,
  25. context: TContext,
  26. info: GraphQLResolveInfo,
  27. ) => unknown,
  28. typeResolver?: GraphQLTypeResolver<any, TContext>,
  29. ): GraphQLNodeDefinitions<TContext>;
  30. interface ResolvedGlobalId {
  31. type: string;
  32. id: string;
  33. }
  34. /**
  35. * Takes a type name and an ID specific to that type name, and returns a
  36. * "global ID" that is unique among all types.
  37. */
  38. export declare function toGlobalId(type: string, id: string | number): string;
  39. /**
  40. * Takes the "global ID" created by toGlobalID, and returns the type name and ID
  41. * used to create it.
  42. */
  43. export declare function fromGlobalId(globalId: string): ResolvedGlobalId;
  44. /**
  45. * Creates the configuration for an id field on a node, using `toGlobalId` to
  46. * construct the ID from the provided typename. The type-specific ID is fetched
  47. * by calling idFetcher on the object, or if not provided, by accessing the `id`
  48. * property on the object.
  49. */
  50. export declare function globalIdField<TContext>(
  51. typeName?: string,
  52. idFetcher?: (
  53. obj: any,
  54. context: TContext,
  55. info: GraphQLResolveInfo,
  56. ) => string | number,
  57. ): GraphQLFieldConfig<any, TContext>;
  58. export {};