help wantedlsp-serverroadmapvscode-graphql
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)
- #2068
- https://github.com/graphql/graphiql/issues/1894 (trigger characters implemented but should be revisted)
-
/* GraphiQL */tag doesn't work for highlighting invscode-graphql(link to PR) - https://github.com/graphql/graphiql/issues/2212
- https://github.com/graphql/graphiql/issues/2018
- workspaces support related issues - load
graphql-configfrom workspace root?vscode-graphqlmay 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-urifor vscode uri string parsing - https://github.com/graphql/graphiql/issues/2182
- !!! https://github.com/graphql/graphiql/issues/2172
- !!! Parsing bug from getDocuments when
documentsis used (there are many duplicates) - if a user provides
documentsin 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
- https://github.com/graphql/graphiql/issues/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,,-parserand-utilsshould all be merged into the singlegraphql-language-service.- leave some waypoint for direct users of the
-interfacemethods 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 ofgetAutocompleteSuggestionsis postwoman!
- leave some waypoint for direct users of the
- allow disabling validation in the language server or
vscode-graphql: graphql/graphiql#2363 - support
insertTextfor completion of object and list fields https://github.com/graphql/graphiql/issues/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
-
getDiagnosticsshould allow an option for schema validation, or detect whether schema types are present to provide additional schema validation rules, or gather errors fromgraphql-jsvalidateSchema -
graphql-language-service-servershould send the lsp client instructive notifications aboutgraphql-config- when it's detected, and when it's not, or when there are issues.-
vscode-graphqlshould be configured to handle these notifications accordingly
-
- additional language support -
vscode-graphqlgrammars and ingraphql-language-service-serverfor completion, diagnostics, etc- this is a complicated feature but it deserves prioritization!
-
TODOtrack 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-toolsandgraphql-configcompletely, and replaceparseDocumententirely withCodeFileLoaderor 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
schemaconfig combinations - test configuration options
- run in CI
- test extension client behaviors
⚙️ automation
- fix
open-vsxpublish forvscode-graphql - deploy previews for
vscode-graphql - canary releases to
graphql.vscode-graphql-insiders(vscealso seems to support pre-release flag now?)