-
#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
-
#3628
7fad662f
Thanks @acao! - fix the lsp stream interface for stdin/out (neovim, etc) -
Updated dependencies [
7fad662f
]:
-
#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! - 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
-
#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 👀!
- Updated dependencies [
6c7adf85
]:
- Updated dependencies [
34d0a976
]:
- Updated dependencies [
3bfb2877
]:
-
#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
- Updated dependencies [
75ccd72c
]:
- Updated dependencies [
530ef47a
]:
-
#3322
6939bac4
Thanks @acao! - Bypass babel typescript parsing errors to continue extracting graphql strings -
Updated dependencies [
6939bac4
]:
- Updated dependencies [
4c3a08b1
]:
-
#3148
06007498
Thanks @mskelton! - Use native LSP logger instead of manual file based logging. This fixes errors in Neovim when using the GraphQL LSP.
- Updated dependencies [
f2040452
]:
- Updated dependencies [
4d33b221
]:
- Updated dependencies [
632a7c6b
]:
-
#3109
51007002
Thanks @B2o5T! - enableno-floating-promises
eslint rule -
Updated dependencies [
2e477eb2
,06d39823
,51007002
,15c26eb6
]:
-
#2940
8725d1b6
Thanks @B2o5T! - enableunicorn/prefer-node-protocol
rule -
Updated dependencies [
e68cb8bc
,f788e65a
,bdc966cb
,db2a0982
,90350022
,8725d1b6
]:
-
#2922
d1fcad72
Thanks @B2o5T! - extendsplugin:import/recommended
and fix warnings -
#2966
f9aa87dc
Thanks @B2o5T! - enablesonarjs/no-small-switch
andsonarjs/no-duplicated-branches
rules -
#2938
6a9d913f
Thanks @B2o5T! - enableunicorn/throw-new-error
rule -
Updated dependencies [
f7addb20
,d1fcad72
,4a8b2e17
,f9aa87dc
,10e97bbe
,c70d9165
,c44ea4f1
,d502a33b
,0669767e
,18f8e80a
,f263f778
,6a9d913f
,4ff2794c
]:
-
#2901
eff4fd6b
Thanks @acao! - Reload the language service when a legacy format .graphqlconfig file has changed -
Updated dependencies [
eff4fd6b
]:
- #2900
8989ffce
Thanks @acao! - use decorators-legacy @babel/parser plugin so that all styles of decorator usage are supported - Updated dependencies [
8989ffce
]:
-
#2829
c835ca87
Thanks @acao! - svelte language support, using the vue sfc parser introduced for vue support
- Updated dependencies [
b422003c
]:
- Updated dependencies [
929152f8
]:
-
#2812
cf2e3061
Thanks @acao! - fix a bundling bug for vscode, rolling back graphql-config upgrade -
Updated dependencies [
cf2e3061
]:
- Updated dependencies [
f688422e
]:
- Updated dependencies [
a2071504
]:
-
#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 [
b0d7f06c
]:
- Updated dependencies [
d6ff4d7a
]:
- Updated dependencies [
721425b3
]:
-
#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. -
Updated dependencies [
34d31fbc
]:
- Updated dependencies [
12cf4db0
]:
-
#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!
- Updated dependencies [
3304606d
]:
-
#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!) -
Updated dependencies [
edc1c964
]:
-
#2509
737d4184
Thanks @Chnapy! - Addgql(``)
,graphql(``)
call expressions support for highlighting & language
- 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
]:
- Updated dependencies [
cf092f59
]:
- Updated dependencies [
d0017a93
]:
- Updated dependencies [
6ca6a92d
]:
- Updated dependencies [
d22f6111
]:
-
#2291
45cbc759
Thanks @retrodaredevil! - Target es6 for the languages services -
Updated dependencies [
45cbc759
]:
- Updated dependencies [
c36504a8
]:
- Updated dependencies [
e15d1dae
]:
- #2267
fe441272
Thanks @elken! - Re-addgraphql-language-service-server
as a dep tographql-language-service-cli
- Updated dependencies [
2502a364
]:
- Updated dependencies [
ab83198f
]:
- Updated dependencies [
08ff6dce
]:
- Updated dependencies [
a44772d6
]:
- Updated dependencies [
e20760fb
]:
- Updated dependencies [
ff9cebe5
]:
- Updated dependencies [
0f1f90ce
]:
- Updated dependencies [
9df315b4
]:
- Updated dependencies [
4286185c
]:
-
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 [
f82bd7a9
]:
-
bdd57312
#2047 Thanks @willstott101! - Source code included in all packages to fix source maps. codemirror-graphql includes esm build in package. -
Updated dependencies [
bdd57312
]:
- Updated dependencies [
858907d2
]:
- Updated dependencies [
7e98c6ff
]:
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
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
3.1.12 (2021-01-07)
Note: Version bump only for package graphql-language-service-cli
3.1.11 (2021-01-07)
Note: Version bump only for package graphql-language-service-cli
3.1.10 (2021-01-07)
Note: Version bump only for package graphql-language-service-cli
3.1.9 (2021-01-03)
Note: Version bump only for package graphql-language-service-cli
3.1.8 (2020-12-28)
Note: Version bump only for package graphql-language-service-cli
3.1.7 (2020-12-08)
Note: Version bump only for package graphql-language-service-cli
3.1.6 (2020-11-28)
Note: Version bump only for package graphql-language-service-cli
3.1.5 (2020-10-20)
Note: Version bump only for package graphql-language-service-cli
3.1.4 (2020-09-23)
Note: Version bump only for package graphql-language-service-cli
3.1.3 (2020-09-23)
Note: Version bump only for package graphql-language-service-cli
3.1.2 (2020-09-20)
Note: Version bump only for package graphql-language-service-cli
3.1.1 (2020-09-20)
Note: Version bump only for package graphql-language-service-cli
3.1.0 (2020-09-18)
Note: Version bump only for package graphql-language-service-cli
3.1.0-alpha.5 (2020-09-11)
Note: Version bump only for package graphql-language-service-cli
3.1.0-alpha.4 (2020-08-26)
Note: Version bump only for package graphql-language-service-cli
3.1.0-alpha.3 (2020-08-22)
Note: Version bump only for package graphql-language-service-cli
3.1.0-alpha.2 (2020-08-12)
Note: Version bump only for package graphql-language-service-cli
3.1.0-alpha.1 (2020-08-12)
Note: Version bump only for package graphql-language-service-cli
3.1.0-alpha.0 (2020-08-10)
3.0.1 (2020-08-06)
Note: Version bump only for package graphql-language-service-cli
3.0.0 (2020-06-11)
Note: Version bump only for package graphql-language-service-cli
3.0.0-alpha.5 (2020-06-04)
Note: Version bump only for package graphql-language-service-cli
3.0.0-alpha.4 (2020-06-04)
- cleanup cache entry from lerna publish (4a26218)
3.0.0-alpha.3 (2020-05-28)
Note: Version bump only for package graphql-language-service-cli
Note: Version bump only for package graphql-language-service-cli
2.4.0-alpha.8 (2020-05-17)
2.4.0-alpha.7 (2020-04-10)
Note: Version bump only for package graphql-language-service
2.4.0-alpha.6 (2020-04-10)
Note: Version bump only for package graphql-language-service
2.4.0-alpha.5 (2020-04-06)
- upgrade to [email protected] for #1191 (#1204) (f13c8e9)
2.4.0-alpha.4 (2020-04-03)
Note: Version bump only for package graphql-language-service
2.4.0-alpha.3 (2020-03-20)
Note: Version bump only for package graphql-language-service
2.4.0-alpha.2 (2020-03-20)
- cli: recommend matching commands (#1420) (0fbae82)
- graphql-config: add graphql config extensions (#1118) (2a77e47)
- capture unknown commands making use of the in-house s… (#1417) (dd12a6b)
- use new GraphQL Config (#1342) (e45838f)
2.4.0-alpha.1 (2020-01-18)
2.3.4 (2019-12-09)
Note: Version bump only for package graphql-language-service
2.3.3 (2019-12-09)
Note: Version bump only for package graphql-language-service
2.3.2 (2019-12-03)
Note: Version bump only for package graphql-language-service
2.3.1 (2019-11-26)
Note: Version bump only for package graphql-language-service
Note: Version bump only for package graphql-language-service
Note: Version bump only for package graphql-language-service
Note: Version bump only for package graphql-language-service