vscode-graphql, LSP, IDE Roadmap 2022
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 1.9k
- Avg merge
- 22h 45m
- Merged PRs (30d)
- 70
Description
The next chapter now that [2021/2020 LSP Roadmap](https://github.com/graphql/graphiql/issues/1615) 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
- [] https://github.com/graphql/graphiql/pull/2161
- [ ] customize/patch graphql-config file loader to continue parsing despite failures on getDocuments()
- [x] SDL files just don't work...
- [x] graphql-config in package.json doesn't work
- [x] graphql-config in .ts/tsx files doesn't work (graphql-config upgrade)
- [x] #2068
- [x] https://github.com/graphql/graphiql/issues/1894 (trigger characters implemented but should be revisted)
- [x] `/* GraphiQL */` tag doesn't work for highlighting in `vscode-graphql` (link to PR)
- [x] https://github.com/graphql/graphiql/issues/2212
- [ ] https://github.com/graphql/graphiql/issues/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
- [x] https://github.com/graphql/graphiql/issues/2182
- [ ] !!! https://github.com/graphql/graphiql/issues/2172
- [ ] !!! [Parsing bug from getDocuments when `documents` is used](https://github.com/graphql/graphiql/issues/2151) (there are many duplicates)
- if a user provides `documents` in config, then that is what triggers `graphqlConfig.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
- [x] **💥 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](https://postwoman.com.cn/)!
- [x] allow disabling validation in the language server or `vscode-graphql`: graphql/graphiql#2363
- [x] support `insertText` for 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
- [ ] `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
- [x] create issue menu & forms with options for reporting IDE vs web bugs/enhancement requests
- [x] migrate issues
- [x] migrate PRs
- [x] 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
- [x] 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?)
Contributor guide
Assessment
This issue has not been assessed yet.