-
#3682
6c9f0dfThanks @yaacovCR! - Support v17 ofgraphql-jsfrom17.0.0-alpha.2forward.Includes support for the latest incremental delivery response format. For further details, see graphql/defer-stream-wg#69.
- Updated dependencies [
6c9f0df]:- graphql-language-service@5.3.0
-
#3647
ba5720bThanks @acao! - several LSP fixes and improvements:Bugfixes
debounce schema change events to fix codegen bugs to fix #3622
on mass file changes, network schema is overfetching because the schema cache is now invalidated on every watched schema file change
to address this, we debounce the new
onSchemaChangeevent by 400msnote that
schemaCacheTTLcan only be set in extension settings or graphql config at the top level - it will be ignored if configured per-project in the graphql configCode Improvements
- Fixes flaky tests, and
schemaCacheTTLsetting not being passed to the cache - Adds a test to validate network schema changes are reflected in the cache
- Fixes flaky tests, and
-
#3637
fdec377Thanks @dimaMachina! - update eslint plugins and fix errors -
#3671
e2c04c7Thanks @acao! - - switch to using just @astrojs/compiler instead of the more complex "sync" adaptation using workers- upgrade vue SFC parser to use the new reccomended import from vue package itself
- fix prettier config related to prettier & format on save for parseDocument tests
- fix jest/babel config related to some of the parsers
-
Updated dependencies [
fdec377]:- graphql-language-service@5.2.2
-
#3521
aa6dbbb4Thanks @acao! - Fix many schema and fragment lifecycle issues, not all of them, but many related to cacheing. Note: this makescacheSchemaForLookupenabled by default again for schema first contexts.This fixes multiple cacheing bugs, upon addomg some in-depth integration test coverage for the LSP server. It also solves several bugs regarding loading config types, and properly restarts the server and invalidates schema when there are config changes.
- configurable polling updates for network and other code first schema configuration, set to a 30s interval by default. powered by
schemaCacheTTLwhich can be configured in the IDE settings (vscode, nvim) or in the graphql config file. (1) - jump to definition in embedded files offset bug, for both fragments and code files with SDL strings
- cache invalidation for fragments (fragment lookup/autcoomplete data is more accurate, but incomplete/invalid fragments still do not autocomplete or validate, and remember fragment options always filter/validate by the
ontype!) - schema cache invalidation for schema files - schema updates as you change the SDL files, and the generated file for code first by the
schemaCacheTTLsetting - schema definition lookups & autocomplete crossing over into the wrong project
Notes
- If possible, configuring for your locally running framework or a schema registry client to handle schema updates and output to a
schema.graphqlorintrospection.jsonwill always provide a better experience. many graphql frameworks have this built in! Otherwise, we must use this new lazy polling approach if you provide a url schema (this includes both introspection URLs and remote file URLs, and the combination of these).
- #3318
- #2357
- #3469
- #2422
- #2820
- many more!
- new, high level integration spec suite for the LSP with a matching test utility
- more unit test coverage
- total increased test coverage of about 25% in the LSP server codebase.
- many "happy paths" covered for both schema and code first contexts
- many bugs revealed (and their source)
Another stage of the rewrite is already almost ready. This will fix even more bugs and improve memory usage, eliminate redundant parsing and ensure that graphql config's loaders do all of the parsing and heavy lifting, thus honoring all the configs as well. It also significantly reduces the code complexity.
There is also a plan to match Relay LSP's lookup config for either IDE (vscode, nvm, etc) settings as they provide, or by loading modules into your
graphql-config! - configurable polling updates for network and other code first schema configuration, set to a 30s interval by default. powered by
-
#3521
aa6dbbb4Thanks @acao! - IntroducelocateCommandbased on Relay LSPpathToLocateCommand:Now with
<graphql config>.extensions.languageService.locateCommand, you can specify either the existing signature for relay, with the same callback parameters and return signature (of a string delimited by:characters), or you can return an object with {uri, range} for the exact set of coordinates for the destination range. the function can be sync or async.Relay LSP currently supports
TypeandType.fieldfor the 2nd argument. Ours also returnsType.field(argument)as a point of reference. It works with object types, input types, fragments, executable definitions and their fields, and should work for directive definitions as well.In the case of unnamed types such as fragment spreads, they return the name of the implemented type currently, but I'm curious what users prefer here. I assumed that some people may want to not be limited to only using this for SDL type definition lookups. Also look soon to see
locateCommandsupport added for symbols, outline, and coming references and implementations.The module at the path you specify in relay LSP for
pathToLocateCommandshould work as such.// import it import { locateCommand } from './graphql/tooling/lsp/locate.js'; export default { languageService: { locateCommand, }, projects: { a: { schema: 'https://localhost:8000/graphql', documents: './a/**/*.{ts,tsx,jsx,js,graphql}', }, b: { schema: './schema/ascode.ts', documents: './b/**/*.{ts,tsx,jsx,js,graphql}', }, }, };
// or define it inline import { type LocateCommand } from 'graphql-language-service-server'; // relay LSP style const locateCommand = (projectName: string, typePath: string) => { const { path, startLine, endLine } = ourLookupUtility( projectName, typePath, ); return `${path}:${startLine}:${endLine}`; }; // an example with our alternative return signature const locateCommand: LocateCommand = (projectName, typePath, info) => { // pass more info, such as GraphQLType with the ast node. info.project is also available if you need it const { path, range } = ourLookupUtility( projectName, typePath, info.type.node, ); return { uri: path, range }; // range.start.line/range.end.line }; export default { languageService: { locateCommand, }, schema: 'https://localhost:8000/graphql', documents: './**/*.{ts,tsx,jsx,js,graphql}', };
Passing a string as a module path to resolve is coming in a follow-up release. Then it can be used with
.yml,.toml,.json,package.json#graphql, etcFor now this was a quick baseline for a feature asked for in multiple channels!
Let us know how this works, and about any other interoperability improvements between our graphql LSP and other language servers (relay, intellij, etc) used by you and colleauges in your engineering organisations. We are trying our best to keep up with the awesome innovations they have 👀!
-
#3521
aa6dbbb4Thanks @acao! - Fixes several issues with Type System (SDL) completion across the ecosystem:- restores completion for object and input type fields when the document context is not detectable or parseable
- correct top-level completions for either of the unknown, type system or executable definitions. this leads to mixed top level completions when the document is unparseable, but now you are not seemingly restricted to only executable top level definitions
.graphqlsad-hoc standard functionality remains, but is not required, as it is not part of the official spec, and the spec also allows mixed mode documents in theory, and this concept is required when the type is unknown
-
Updated dependencies [
aa6dbbb4]:- graphql-language-service@5.2.1
-
#3514
36c7f25cThanks @acao! - fix svelte parsing, re-load config only on config changes- fix esbuild bundling of
typescriptforsvelte2tsx! - confirm with manual testing of the vsix extension bundle ✅
- ensure that the server only attemps to parse opened/saved files when the server is activated or the file is a config file
- fix esbuild bundling of
- #3503
6c7adf85Thanks @acao! - Temporarily revert svelte parsing until we can fix bundling issues with svelte2tsx. For now we return to using the vue parser to parse svelte files which will invariably cause some issues, such as being off by several characters
-
#3488
d5028be2Thanks @acao! - Bump graphql & graphql-tools version to fix potential runtime security bugs -
22771f35Thanks @acao! - Fixes to svelte parsing, tag parsing refactor
- #3467
75ccd72cThanks @A-N-uraag! - Fixed crashing of LSP server on saving a schema with errors
- #3322
6939bac4Thanks @acao! - Bypass babel typescript parsing errors to continue extracting graphql strings
-
#3224
5971d528Thanks @acao! - try removing some packages from pre.json -
#3216
55135804Thanks @simowe! - fix: reload schema when a change to the schema file is detected -
Updated dependencies [
5971d528,d9e5089f]:- graphql-language-service@5.1.7
-
#3224
5971d528Thanks @acao! - try removing some packages from pre.json -
#3216
55135804Thanks @simowe! - fix: reload schema when a change to the schema file is detected -
Updated dependencies [
5971d528,d9e5089f]:- graphql-language-service@5.1.7-alpha.0
- #3143
4c3a08b1Thanks @B2o5T! - [ESLint] enablesonar/prefer-promise-shorthandandsonar/no-dead-storerules
- #3148
06007498Thanks @mskelton! - Use native LSP logger instead of manual file based logging. This fixes errors in Neovim when using the GraphQL LSP.
-
#3135
28b1b5a0Thanks @KammererTob! - fixed wrong script tag offset for vue-sfc -
Updated dependencies [
06007498]:- graphql-language-service@5.1.6
- #3163
f2040452Thanks @AaronMoat! - Fix GraphQLCache to read both documents and schema
-
#3150
4d33b221Thanks @AaronMoat! - fix(graphql-language-service-server): allow getDefinition to work for unionsFixes the issue where a schema like the one below won't allow you to click through to X.
union X = A | B type A { x: String } type B { x: String } type Query { a: X }
-
Updated dependencies [
4d33b221]:- graphql-language-service@5.1.5
-
#3113
2e477eb2Thanks @B2o5T! - replace.forEachwithfor..of -
#3157
06d39823Thanks @jycouet! - fix:.vueand.sveltefiles doesn't log errors anymore when parsing with no script tag (#2836) -
#3109
51007002Thanks @B2o5T! - enableno-floating-promiseseslint rule -
Updated dependencies [
2e477eb2]:- graphql-language-service@5.1.4
-
#3088
9d9478aeThanks @B2o5T! - remove nowhere usednode-fetchdependency -
#3046
b9c13328Thanks @B2o5T! - Prefer .at() method for index access -
Updated dependencies [
b9c13328,881a2024]:- graphql-language-service@5.1.3
-
#2993
bdc966cbThanks @B2o5T! - addunicorn/consistent-destructuringrule -
#2962
db2a0982Thanks @B2o5T! - clean all ESLint warnings, add--max-warnings=0and--cacheflags -
#3051
90350022Thanks @B2o5T! - update babel, supportsatisfiesoperator -
#2940
8725d1b6Thanks @B2o5T! - enableunicorn/prefer-node-protocolrule -
Updated dependencies [
e68cb8bc,f788e65a,bdc966cb,db2a0982,8725d1b6]:- graphql-language-service@5.1.2
-
#2931
f7addb20Thanks @B2o5T! - enableno-negated-conditionandno-else-returnrules -
#2922
d1fcad72Thanks @B2o5T! - extendsplugin:import/recommendedand fix warnings -
#2966
f9aa87dcThanks @B2o5T! - enablesonarjs/no-small-switchandsonarjs/no-duplicated-branchesrules -
#2926
10e97bbeThanks @elijaholmos! - support cts and mts file extensions -
#2937
c70d9165Thanks @B2o5T! - enableunicorn/prefer-includes -
#2933
d502a33bThanks @B2o5T! - enable @typescript-eslint/no-unused-expressions -
#2965
0669767eThanks @B2o5T! - enableunicorn/prefer-optional-catch-bindingrule -
#2963
f263f778Thanks @B2o5T! - enableprefer-destructuringrule -
#2942
4ff2794cThanks @B2o5T! - enablesonarjs/no-redundant-jumprule -
Updated dependencies [
f7addb20,d1fcad72,4a8b2e17,c70d9165,c44ea4f1,0669767e,18f8e80a,f263f778,6a9d913f]:- graphql-language-service@5.1.1
- #2901
eff4fd6bThanks @acao! - Reload the language service when a legacy format .graphqlconfig file has changed
- #2900
8989ffceThanks @acao! - use decorators-legacy @babel/parser plugin so that all styles of decorator usage are supported
-
#2488
967006a6Thanks @acao! - DisablefillLeafsOnCompleteby defaultUsers found this generally annoying by default, especially when there are required arguments
Without automatically prompting autocompletion of required arguments as well as lead expansion, it makes the extension harder to use
You can now supply this in your graphql config:
config.extensions.languageService.fillLeafsOnCompleteSetting it to to
truewill enable this feature. Will soon add the ability to manually enable this inmonaco-graphqlas well.For both, this kind of behavior would be better as a keyboard command, context menu item &/or codelens prompt
- #2829
c835ca87Thanks @acao! - svelte language support, using the vue sfc parser introduced for vue support
- #2818
929152f8Thanks @acao! - Workspaces support introduced a regression for no-config scenario. Reverting to fix bugs with no graphql config crashing the server.
- #2810
f688422eThanks @acao! - fix graphql exec extension, upgradegraphql-config, fix issue with graphql-config cosmiconfig typescript config loader.
-
#2616
b0d7f06cThanks @acao! - support vscode multi-root workspaces! creates an LSP server instance for each workspace.WARNING: large-scale vscode workspaces usage, and this in tandem with
graphql.config.*multi-project configs could lead to excessive system resource usage. Optimizations coming soon.
- Updated dependencies [
d6ff4d7a]:- graphql-language-service@5.1.0
- #2664
721425b3Thanks @acao! - This reverts the bugfix for .graphqlrc.ts users, which broke the extension for schema url users
- #2660
34d31fbcThanks @acao! - bumpts-nodeto 10.x, so that TypeScript based configs (i.e..graphqlrc.ts) will continue to work. It also bumps to the latest patch releases ofgraphql-configfixed several issues with TypeScript loading (v4.3.2, v4.3.3). We tested manually, but please open a bug if you encounter any with schema-as-url configs & schema introspection.
- #2623
12cf4db0Thanks @acao! - In #2624, fix introspection schema fetching regression in lsp server, and fix for users writing new .gql/.graphql files
-
#2557
3304606dThanks @acao! - upgrades thevscode-languageserverandvscode-jsonrpcreference implementations for the lsp server to the latest. also upgradesvscode-languageclientinvscode-graphqlto the latest 8.0.1. seems to work fine for IPC invscode-graphqlat least!hopefully this solves #2230 once and for all!
- #2553
edc1c964Thanks @acao! - Fix error with LSP crash for CLI users #2230.vscode-graphqlnot impacted - rather,nvim.coc, maybe other clients who use CLI directly). recreation of #2546 by [@xuanduc987](https://github.com/xuanduc987, thank you!)
- #2509
737d4184Thanks @Chnapy! - Addgql(``),graphql(``)call expressions support for highlighting & language
-
#2506
cccefa70Thanks @acao! - Remove redundant check, trigger LSP release -
Updated dependencies [
cccefa70]:- graphql-language-service@5.0.6
-
#2486
c9c51b8aThanks @stonexer! - definition support for operation fields ✨you can now jump to the applicable object type definition for query/mutation/subscription fields!
-
Updated dependencies [
c9c51b8a]:- graphql-language-service@5.0.5
-
#2470
d0017a93Thanks @acao! - Aims to resolve #2421- graphql config errors only log to output channel, no longer crash the LSP
- more performant LSP request no-ops for failing/missing config
this used to fail silently in the output channel, but vscode introduced a new retry and notification for this
would like to provide more helpful graphql config DX in the future but this should be better for now
-
#2382
1bea864dThanks @acao! - allow disabling query/SDL validation withgraphql-configsetting{ extensions: { languageService: { enableValidation: false } } }.Currently, users receive duplicate validation messages when using our LSP alongside existing validation tools like
graphql-eslint, and this allows them to disable the LSP feature in that case.
-
#2378
d22f6111Thanks @acao! - Trap all graphql parsing exceptions from (relatively) newly added logic. This should clear up bugs that have been plaguing users for two years now, sorry! -
Updated dependencies [
d22f6111]:- graphql-language-service@5.0.4
- Updated dependencies [
45cbc759]:- graphql-language-service@5.0.3
c36504a8Thanks @acao! - - upgradegraphql-configto latest in server- remove
graphql-configdependency fromvscode-graphqlandgraphql-language-service - fix
vscode-graphqlesbuild bundling bug invscode-graphql#2269 by fixingesbuildversion
- remove
- Updated dependencies [
c36504a8]:- graphql-language-service@5.0.2
- #2271
e15d1daeThanks @acao! - a few bugfixes related to config handling impacting vim and potentially other LSP server users
- Updated dependencies [
2502a364]:- graphql-language-service@5.0.0
-
#2175
48c5df65Thanks @orta! - Better handling of unparsable babel JS/TS files -
Updated dependencies [
484c0523,5852ba47,48c5df65]:- graphql-language-service@4.1.5
-
#2111
08ff6dceThanks @acao! - Support template literals and tagged template literals with replacement expressions -
Updated dependencies []:
- graphql-language-service@4.1.4
- Updated dependencies [
a44772d6]:- graphql-language-service@4.1.3
- Updated dependencies [
e20760fb]:- graphql-language-service@4.1.2
-
#2091
ff9cebe5Thanks @acao! - Fix graphql 15 related issues. Should now build & test interchangeably. -
Updated dependencies [
ff9cebe5]:- graphql-language-service-utils@2.7.1
- graphql-language-service@4.1.1
- Updated dependencies [
0f1f90ce]:- graphql-language-service@4.1.0
- Updated dependencies [
9df315b4]:- graphql-language-service-utils@2.7.0
- graphql-language-service@4.0.0
-
c4236190#2072 Thanks @acao! - this fixes the parsing of file URIs bygraphql-language-service-serverin cases such as:- windows without WSL
- special characters in filenames
- likely other cases
previously we were using the old approach of
URL(uri).pathnamewhich was not working! now using the standardvscode-uriapproach ofURI.parse(uri).fsName.this should fix issues with object and fragment type completion as well I think
also for #2066 made it so that graphql config is not loaded into the file cache unnecessarily, and that it's only loaded on editor save events rather than on file changed events
fixes #1644 and #2066
-
df57cd25#2065 Thanks @acao! - Add an opt-in feature to generate markdown in hover elements, starting with highlighting type information. Enabled for the language server and also the language service and thusmonaco-graphqlas well. -
Updated dependencies [
df57cd25]:- graphql-language-service@3.2.5
-
f82bd7a9#2055 Thanks @acao! - this fixes the URI scheme related bugs and make sure schema as sdl config works again.fileURLToPathhad been introduced by a contributor and I didn't test properly, it broke sdl file loading!definitions, autocomplete, diagnostics, etc should work again also hides the more verbose logging output for now
-
Updated dependencies []:
- graphql-language-service@3.2.4
- graphql-language-service-utils@2.6.3
-
bdd57312#2047 Thanks @willstott101! - Source code included in all packages to fix source maps. codemirror-graphql includes esm build in package. -
Updated dependencies [
bdd57312]:- graphql-language-service@3.2.3
- graphql-language-service-utils@2.6.2
-
858907d2#2045 Thanks @acao! - fix graphql-js peer dependencies - #2044 -
Updated dependencies [
858907d2]:- graphql-language-service@3.2.2
- graphql-language-service-utils@2.6.1
7e98c6ffThanks @acao! - upgrade graphql-language-service-server to use graphql-config 4.1.0! adds support for .ts and .toml config files in the language server, amongst many other improvements!
-
Updated dependencies [
9a6ed03f,9a6ed03f]:- graphql-language-service-utils@2.6.0
- graphql-language-service@3.2.1
716cf786#2010 Thanks @acao! - upgrade tographql@16.0.0-experimental-stream-defer.5. thanks @saihaj!
- Updated dependencies [
716cf786]:- graphql-language-service@3.2.0
83c4a007#1964 Thanks @patrickszmucer! - Fix unknown fragment errors on save
-
75dbb0b1#1777 Thanks @dwwoelfel! - adopt block string parsing for variables in language parser -
Updated dependencies [
0e2c1a02,75dbb0b1]:- graphql-language-service@3.1.6
72bff0e7#1951 Thanks @GoodForOneFare! - fix: skip config updates when no custom filename is defined
-
2fd5bf72#1941 Thanks @arcanis! - Adds support for#graphqland/* GraphQL */in the language server -
Updated dependencies [
2fd5bf72]:- graphql-language-service@3.1.5
6869ce77#1816 Thanks @acao! - improve peer resolutions for graphql 14 & 15.14.5.0minimum is for built-in typescript types, and another method only available in14.4.0
2.6.2 (2021-01-07)
Note: Version bump only for package graphql-language-service-server
2.6.1 (2021-01-07)
Note: Version bump only for package graphql-language-service-server
2.6.0 (2021-01-07)
2.5.9 (2021-01-03)
Note: Version bump only for package graphql-language-service-server
2.5.8 (2020-12-28)
Note: Version bump only for package graphql-language-service-server
2.5.7 (2020-12-08)
Note: Version bump only for package graphql-language-service-server
2.5.6 (2020-11-28)
- crash on receiving an LSP message in "stream" mode (1238075), closes #1708
- languageserver filepath on Windows (#1715) (d2feff9)
2.5.5 (2020-10-20)
Note: Version bump only for package graphql-language-service-server
2.5.4 (2020-09-23)
2.5.3 (2020-09-23)
Note: Version bump only for package graphql-language-service-server
2.5.2 (2020-09-20)
2.5.1 (2020-09-20)
2.5.0 (2020-09-18)
Note: Version bump only for package graphql-language-service-server
2.5.0-alpha.5 (2020-09-11)
Note: Version bump only for package graphql-language-service-server
2.5.0-alpha.4 (2020-08-26)
2.5.0-alpha.3 (2020-08-22)
Note: Version bump only for package graphql-language-service-server
2.5.0-alpha.2 (2020-08-12)
Note: Version bump only for package graphql-language-service-server
2.5.0-alpha.1 (2020-08-12)
2.5.0-alpha.0 (2020-08-10)
2.4.1 (2020-08-06)
Note: Version bump only for package graphql-language-service-server
2.4.0 (2020-06-11)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.12 (2020-06-04)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.11 (2020-06-04)
- cleanup cache entry from lerna publish (4a26218)
2.4.0-alpha.10 (2020-05-28)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.9 (2020-05-19)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.8 (2020-05-17)
- remove problematic file resolution module from webpack sco… (#1489) (8dab038)
- repair CLI, handle all schema and LSP errors (#1482) (992f384)
2.4.0-alpha.7 (2020-04-10)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.6 (2020-04-10)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.5 (2020-04-06)
2.4.0-alpha.4 (2020-04-03)
2.4.0-alpha.3 (2020-03-20)
Note: Version bump only for package graphql-language-service-server
2.4.0-alpha.2 (2020-03-20)
- eslint warnings (#1360) (84d4821)
- initial request cache set, import tsc bugs (#1266) (6b98f8a)
- restore error handling for server #1306 (#1425) (c12d975)
- type check (#1374) (84cc41e)
- typo to fix hover (#1426) (1fdcb28)
- optionally provide LSP an instantiated GraphQLConfig (#1432) (012db2a)
- typescript, tsx, jsx support for LSP server using babel (#1427) (ee06123)
- graphql-config: add graphql config extensions (#1118) (2a77e47)
- Symbol support for single document (#1244) (f729f9a)
- use new GraphQL Config (#1342) (e45838f)
2.4.0-alpha.1 (2020-01-18)
2.3.3 (2019-12-09)
- a few more tweaks to babel ignore (e0ad2c6)
2.3.2 (2019-12-03)
2.3.1 (2019-11-26)
Note: Version bump only for package graphql-language-service-server
Note: Version bump only for package graphql-language-service-server
Note: Version bump only for package graphql-language-service-server
Note: Version bump only for package graphql-language-service-server