Open
Description
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
- better error handling & logging
- customize/patch graphql-config file loader to continue parsing despite failures on getDocuments()
- SDL files just don't work...
- graphql-config in package.json doesn't work
- graphql-config in .ts/tsx files doesn't work (graphql-config upgrade)
- Small bug when autocompleting variables #2068
- Poor trigger characters for the language server #1894 (trigger characters implemented but should be revisted)
-
/* GraphiQL */
tag doesn't work for highlighting invscode-graphql
(link to PR) - Unable to resolve resource on Windows #2212
- LSP Server config doesn't work with customFetch #2018
- workspaces support related issues - load
graphql-config
from workspace root?vscode-graphql
may need proper handling of workspaces + graphql-config projects as well. - dotenv issues (currently the workaround is to import dotenv directly in graphql config files)
- Windows paths, replace URL().basename approach with
vscode-uri
for vscode uri string parsing - New whitespace characters trigger unnecessary autocompletion #2182
- !!! Autocomplete not working on Schema definition #2172
- !!! Parsing bug from getDocuments when
documents
is used (there are many duplicates) - if a user provides
documents
in config, then that is what triggersgraphqlConfig.getDocuments()
currently. we also call this excessively. there are many duplicates of this
💯 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
- schemaless validation rules
- minimal schemaless completion
- Use extension without config file #2174
- 💥 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 singlegraphql-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 ofgetAutocompleteSuggestions
is postwoman!
- leave some waypoint for direct users of the
- 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 fromgraphql-js
validateSchema
-
graphql-language-service-server
should send the lsp client instructive notifications aboutgraphql-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 ingraphql-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
andgraphql-config
completely, and replaceparseDocument
entirely withCodeFileLoader
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 forvscode-graphql
- deploy previews for
vscode-graphql
- canary releases to
graphql.vscode-graphql-insiders
(vsce
also seems to support pre-release flag now?)