-
#3682
6c9f0df
Thanks @yaacovCR! - Support v17 ofgraphql-js
from17.0.0-alpha.2
forward.Includes support for the latest incremental delivery response format. For further details, see graphql/defer-stream-wg#69.
- Updated dependencies [
6c9f0df
]:
-
#3647
ba5720b
Thanks @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
onSchemaChange
event by 400msnote that
schemaCacheTTL
can 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
schemaCacheTTL
setting not being passed to the cache - Adds a test to validate network schema changes are reflected in the cache
- Fixes flaky tests, and
-
#3637
fdec377
Thanks @dimaMachina! - update eslint plugins and fix errors -
#3671
e2c04c7
Thanks @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
]:
-
#3521
aa6dbbb4
Thanks @acao! - Fix many schema and fragment lifecycle issues, not all of them, but many related to cacheing. Note: this makescacheSchemaForLookup
enabled 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
schemaCacheTTL
which 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
on
type!) - schema cache invalidation for schema files - schema updates as you change the SDL files, and the generated file for code first by the
schemaCacheTTL
setting - 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.graphql
orintrospection.json
will 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
aa6dbbb4
Thanks @acao! - IntroducelocateCommand
based 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
Type
andType.field
for 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
locateCommand
support added for symbols, outline, and coming references and implementations.The module at the path you specify in relay LSP for
pathToLocateCommand
should 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
aa6dbbb4
Thanks @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
.graphqls
ad-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
]:
-
#3514
36c7f25c
Thanks @acao! - fix svelte parsing, re-load config only on config changes- fix esbuild bundling of
typescript
forsvelte2tsx
! - 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
6c7adf85
Thanks @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
d5028be2
Thanks @acao! - Bump graphql & graphql-tools version to fix potential runtime security bugs -
22771f35
Thanks @acao! - Fixes to svelte parsing, tag parsing refactor
- #3467
75ccd72c
Thanks @A-N-uraag! - Fixed crashing of LSP server on saving a schema with errors
- #3322
6939bac4
Thanks @acao! - Bypass babel typescript parsing errors to continue extracting graphql strings
-
#3224
5971d528
Thanks @acao! - try removing some packages from pre.json -
#3216
55135804
Thanks @simowe! - fix: reload schema when a change to the schema file is detected
-
#3224
5971d528
Thanks @acao! - try removing some packages from pre.json -
#3216
55135804
Thanks @simowe! - fix: reload schema when a change to the schema file is detected
- #3143
4c3a08b1
Thanks @B2o5T! - [ESLint] enablesonar/prefer-promise-shorthand
andsonar/no-dead-store
rules
- #3148
06007498
Thanks @mskelton! - Use native LSP logger instead of manual file based logging. This fixes errors in Neovim when using the GraphQL LSP.
-
#3135
28b1b5a0
Thanks @KammererTob! - fixed wrong script tag offset for vue-sfc -
Updated dependencies [
06007498
]:
- #3163
f2040452
Thanks @AaronMoat! - Fix GraphQLCache to read both documents and schema
-
#3150
4d33b221
Thanks @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
]:
-
#3113
2e477eb2
Thanks @B2o5T! - replace.forEach
withfor..of
-
#3157
06d39823
Thanks @jycouet! - fix:.vue
and.svelte
files doesn't log errors anymore when parsing with no script tag (#2836) -
#3109
51007002
Thanks @B2o5T! - enableno-floating-promises
eslint rule -
Updated dependencies [
2e477eb2
]:
-
#3088
9d9478ae
Thanks @B2o5T! - remove nowhere usednode-fetch
dependency -
#3046
b9c13328
Thanks @B2o5T! - Prefer .at() method for index access
-
#2993
bdc966cb
Thanks @B2o5T! - addunicorn/consistent-destructuring
rule -
#2962
db2a0982
Thanks @B2o5T! - clean all ESLint warnings, add--max-warnings=0
and--cache
flags -
#3051
90350022
Thanks @B2o5T! - update babel, supportsatisfies
operator -
#2940
8725d1b6
Thanks @B2o5T! - enableunicorn/prefer-node-protocol
rule -
Updated dependencies [
e68cb8bc
,f788e65a
,bdc966cb
,db2a0982
,8725d1b6
]:
-
#2931
f7addb20
Thanks @B2o5T! - enableno-negated-condition
andno-else-return
rules -
#2922
d1fcad72
Thanks @B2o5T! - extendsplugin:import/recommended
and fix warnings -
#2966
f9aa87dc
Thanks @B2o5T! - enablesonarjs/no-small-switch
andsonarjs/no-duplicated-branches
rules -
#2926
10e97bbe
Thanks @elijaholmos! - support cts and mts file extensions -
#2937
c70d9165
Thanks @B2o5T! - enableunicorn/prefer-includes
-
#2933
d502a33b
Thanks @B2o5T! - enable @typescript-eslint/no-unused-expressions -
#2965
0669767e
Thanks @B2o5T! - enableunicorn/prefer-optional-catch-binding
rule -
#2963
f263f778
Thanks @B2o5T! - enableprefer-destructuring
rule -
#2942
4ff2794c
Thanks @B2o5T! - enablesonarjs/no-redundant-jump
rule -
Updated dependencies [
f7addb20
,d1fcad72
,4a8b2e17
,c70d9165
,c44ea4f1
,0669767e
,18f8e80a
,f263f778
,6a9d913f
]:
- #2901
eff4fd6b
Thanks @acao! - Reload the language service when a legacy format .graphqlconfig file has changed
- #2900
8989ffce
Thanks @acao! - use decorators-legacy @babel/parser plugin so that all styles of decorator usage are supported
-
#2488
967006a6
Thanks @acao! - DisablefillLeafsOnComplete
by 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.fillLeafsOnComplete
Setting it to to
true
will enable this feature. Will soon add the ability to manually enable this inmonaco-graphql
as well.For both, this kind of behavior would be better as a keyboard command, context menu item &/or codelens prompt
- #2829
c835ca87
Thanks @acao! - svelte language support, using the vue sfc parser introduced for vue support
- #2818
929152f8
Thanks @acao! - Workspaces support introduced a regression for no-config scenario. Reverting to fix bugs with no graphql config crashing the server.
- #2810
f688422e
Thanks @acao! - fix graphql exec extension, upgradegraphql-config
, fix issue with graphql-config cosmiconfig typescript config loader.
-
#2616
b0d7f06c
Thanks @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
]:
- #2664
721425b3
Thanks @acao! - This reverts the bugfix for .graphqlrc.ts users, which broke the extension for schema url users
- #2660
34d31fbc
Thanks @acao! - bumpts-node
to 10.x, so that TypeScript based configs (i.e..graphqlrc.ts
) will continue to work. It also bumps to the latest patch releases ofgraphql-config
fixed 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
12cf4db0
Thanks @acao! - In #2624, fix introspection schema fetching regression in lsp server, and fix for users writing new .gql/.graphql files
-
#2557
3304606d
Thanks @acao! - upgrades thevscode-languageserver
andvscode-jsonrpc
reference implementations for the lsp server to the latest. also upgradesvscode-languageclient
invscode-graphql
to the latest 8.0.1. seems to work fine for IPC invscode-graphql
at least!hopefully this solves #2230 once and for all!
- #2553
edc1c964
Thanks @acao! - Fix error with LSP crash for CLI users #2230.vscode-graphql
not impacted - rather,nvim.coc
, maybe other clients who use CLI directly). recreation of #2546 by [@xuanduc987](https://github.com/xuanduc987, thank you!)
- #2509
737d4184
Thanks @Chnapy! - Addgql(``)
,graphql(``)
call expressions support for highlighting & language
-
#2506
cccefa70
Thanks @acao! - Remove redundant check, trigger LSP release -
Updated dependencies [
cccefa70
]:
-
#2486
c9c51b8a
Thanks @stonexer! - definition support for operation fields ✨you can now jump to the applicable object type definition for query/mutation/subscription fields!
-
Updated dependencies [
c9c51b8a
]:
-
#2470
d0017a93
Thanks @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
1bea864d
Thanks @acao! - allow disabling query/SDL validation withgraphql-config
setting{ 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
d22f6111
Thanks @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
]:
- Updated dependencies [
45cbc759
]:
c36504a8
Thanks @acao! - - upgradegraphql-config
to latest in server- remove
graphql-config
dependency fromvscode-graphql
andgraphql-language-service
- fix
vscode-graphql
esbuild bundling bug invscode-graphql
#2269 by fixingesbuild
version
- remove
- Updated dependencies [
c36504a8
]:
- #2271
e15d1dae
Thanks @acao! - a few bugfixes related to config handling impacting vim and potentially other LSP server users
- Updated dependencies [
2502a364
]:
-
#2111
08ff6dce
Thanks @acao! - Support template literals and tagged template literals with replacement expressions -
Updated dependencies []:
- Updated dependencies [
a44772d6
]:
- Updated dependencies [
e20760fb
]:
-
#2091
ff9cebe5
Thanks @acao! - Fix graphql 15 related issues. Should now build & test interchangeably. -
Updated dependencies [
ff9cebe5
]:
- Updated dependencies [
0f1f90ce
]:
- Updated dependencies [
9df315b4
]:
-
c4236190
#2072 Thanks @acao! - this fixes the parsing of file URIs bygraphql-language-service-server
in cases such as:- windows without WSL
- special characters in filenames
- likely other cases
previously we were using the old approach of
URL(uri).pathname
which was not working! now using the standardvscode-uri
approach 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-graphql
as well. -
Updated dependencies [
df57cd25
]:
-
f82bd7a9
#2055 Thanks @acao! - this fixes the URI scheme related bugs and make sure schema as sdl config works again.fileURLToPath
had 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 []:
-
bdd57312
#2047 Thanks @willstott101! - Source code included in all packages to fix source maps. codemirror-graphql includes esm build in package. -
Updated dependencies [
bdd57312
]:
-
858907d2
#2045 Thanks @acao! - fix graphql-js peer dependencies - #2044 -
Updated dependencies [
858907d2
]:
7e98c6ff
Thanks @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!
716cf786
#2010 Thanks @acao! - upgrade to[email protected]
. thanks @saihaj!
- Updated dependencies [
716cf786
]:
83c4a007
#1964 Thanks @patrickszmucer! - Fix unknown fragment errors on save
-
75dbb0b1
#1777 Thanks @dwwoelfel! - adopt block string parsing for variables in language parser
72bff0e7
#1951 Thanks @GoodForOneFare! - fix: skip config updates when no custom filename is defined
-
2fd5bf72
#1941 Thanks @arcanis! - Adds support for#graphql
and/* GraphQL */
in the language server -
Updated dependencies [
2fd5bf72
]:
6869ce77
#1816 Thanks @acao! - improve peer resolutions for graphql 14 & 15.14.5.0
minimum 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)
- upgrade to [email protected] for #1191 (#1204) (f13c8e9)
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