Skip to content

vscode-graphql, LSP, IDE Roadmap 2022 #2062

Open
@acao

Description

@acao

The next chapter now that 2021/2020 LSP Roadmap is complete

This applies to graphql-language-service-server, vscode-graphql which will soon be merged with this monorepo, and many other IDE plugins who often utilize graphql-language-service-cli via python, lua, java, etc.

Suggestions are welcome in the comments, if you want to nominate any bugs, feature requests here or in vscode-graphql, or create an RFC and suggest one, please feel free to!

🐛 fixing bugs

💯 new features

when adding changes to getAutocompleteSuggestions and other parts of graphql-language-service-interface, monaco-graphql will benefit!

  • minimal schema-less support for all language features possible
  • 💥 breaking change: new major version of interface modules that accepts object parameters to make it easier to deprecate and provide alternatives such as documentAST input and new config and APIs
  • 💥 breaking change: graphql-language-service-interface, -types,, -parser and -utils should all be merged into the single graphql-language-service.
    • leave some waypoint for direct users of the -interface methods and other packages, for example a warning on install for the final release of these packages as they are deprecated. otherwise they will miss out on new features. a great example of one of our direct users of getAutocompleteSuggestions is postwoman!
  • allow disabling validation in the language server or vscode-graphql: Feature - Option to disable "validate against schema" #2363
  • support insertText for completion of object and list fields Wrap auto-completed list input values with square brackets if required #587
  • support vue, svelte for syntax highlighting at least
  • autocomplete field names for types/interface when using implements
  • jump to source field name on implemented interface fields
  • jump to definition for query fields and arguments
  • getDiagnostics should allow an option for schema validation, or detect whether schema types are present to provide additional schema validation rules, or gather errors from graphql-js validateSchema
  • graphql-language-service-server should send the lsp client instructive notifications about graphql-config - when it's detected, and when it's not, or when there are issues.
    • vscode-graphql should be configured to handle these notifications accordingly
  • additional language support - vscode-graphql grammars and in graphql-language-service-server for completion, diagnostics, etc
    • this is a complicated feature but it deserves prioritization!
  • TODO track down any new spec features that need to be implemented
  • investigate usage of notebooks API

🤝 merge vscode-graphql with graphiql monorepo

  • create issue menu & forms with options for reporting IDE vs web bugs/enhancement requests
  • migrate issues
  • migrate PRs
  • migrate github actions & other automation

🌀 refactors

  • refactor the language server to use graphql-tools and graphql-config completely, and replace parseDocument entirely with CodeFileLoader or a custom loader if needed.
  • refactor the extension client to make it easier to build behavior around graphql-config

💻 e2e suite for vscode-graphql

using https://github.com/microsoft/vscode-extension-samples/tree/main/lsp-sample as a fantastic point of reference:

  • test harness
  • diagnostics
  • completion
  • all supported schema config combinations
  • test configuration options
  • run in CI
  • test extension client behaviors

⚙️ automation

  • fix open-vsx publish for vscode-graphql
  • deploy previews for vscode-graphql
  • canary releases to graphql.vscode-graphql-insiders (vsce also seems to support pre-release flag now?)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions