Skip to content

Latest commit

 

History

History
65 lines (55 loc) · 2.97 KB

TODO.md

File metadata and controls

65 lines (55 loc) · 2.97 KB
  • Input objects
  • Mutations
  • Subscriptions (definition, but behavior is broken)
  • Interfaces
  • Rethink root value for query/subscriptions/mutations
  • Validate that enums are only variant cases without payloads
  • Have some way to propagate diagnostics somewhere
  • Tag loc properly on all items
  • Fix all names (so they're uppercased)
  • Inject ctx
  • Clear up logic that handles when something is persisted. Just going from the types artifacts is probably not enough, we might need to ensure that we always find the correct module path from the right file.
  • Nullability in input object fields
  • Nullability in arguments
  • Runtime conversion for arguments to match ReScript representation
  • Runtime conversion for input objects to match ReScript representation
  • How to import and use existing things from the ecosystem?
  • Think about and fix compilation
  • Traverse structure cache/circuit breaker
  • Interface as root type -> add resolver/field to all implementors
  • Directives
  • Custom scalars
  • Custom scalars with custom serializer/parser
  • ~~Figure out a good way to bridge graphql-js validations (print dummy schema without resolvers and run validation on that?)~
  • Sort alphabetically in schema output to simplify conflicts/make regeneration stable
  • Write empty schema def to prevent type errors on errors from ResGraph
  • Fix so that the same diagnostic is never added more than once
  • Implement the most important schema validations from graphql-js directly in ResGraph.
  • Arguments in interface fields? Fields in interfaces to force implementation of for each type?
  • Interfaces picked up that nobody implements should not be printed at all
  • Optimize prop resolution
  • Valdiate duplicate names on adding things
  • Use resgraph.json as base everywhere, and allow CLI to override as needed
  • Allow dumping schema to SDL
  • Init command
  • CI check command
  • Allow abstract custom scalars to not have serialize/parse when we can inspect the implementation to be a serializable GraphQL type
  • Allow customizing enum case value via @as.
  • Config file JSON schema.
  • Query/mutation as abstract types.
  • Figure out how to do subscriptions properly. Async iterators? What else exists?
  • Should custom scalar parseValue/serialize have an explicit annotation?
  • Peer deps for graphql and graphql-yoga

Ideas

  • Inline records in unions to synthetsize types?
  • Shorthand resolver? Reusable resolver? Case is "I have a userId and just want to use an existing resolver fn to use it"

Project integration

  • Example with graphql-yoga, compression, and so on

Future

  • One-off generated types for polyvariants. Input objects, input enums, etc
  • Default values for arguments. Would need to parse the AST

For refactor

  • Synthetic types, type creators etc - clean up
  • Make id handling more sane

Documentation

  • Ensure snippets are covered