Releases: 0no-co/GraphQLSP
Releases · 0no-co/GraphQLSP
Release list
@0no-co/graphqlsp@1.17.5
Immutable
release. Only release title and notes can be modified.
Patch Changes
- Avoid rewriting unchanged
tadaOutputLocationfiles during schema revalidation
Submitted by @JoviDeCroock (See #427)
@0no-co/graphqlsp@1.17.4
Immutable
release. Only release title and notes can be modified.
Patch Changes
- Update dependencies. The bundled
graphql-language-servicehas been updated to 5.5, which addslabel,detail,type,documentation, and deprecation metadata to GraphQL completion entries, and the bundledlru-cachehas been updated to v11, which requires Node.js 20 or higher
Submitted by @JoviDeCroock (See #417) - Validate
graphql()documents with statically resolvable template interpolation and warn when interpolation cannot be resolved statically
Submitted by @JoviDeCroock (See #424)
@0no-co/graphqlsp@1.17.3
Immutable
release. Only release title and notes can be modified.
Patch Changes
- Add go-to-definition support for gql.tada result fields and GraphQL document fields
Submitted by @JoviDeCroock (See #404)
@0no-co/graphqlsp@1.17.2
Immutable
release. Only release title and notes can be modified.
@0no-co/graphqlsp@1.17.1
Immutable
release. Only release title and notes can be modified.
@0no-co/graphqlsp@1.17.0
Immutable
release. Only release title and notes can be modified.
Minor Changes
- Surface plugin misconfiguration and schema failures as editor diagnostics instead of failing silently with errors only visible in the tsserver log. The plugin configuration is now validated with
@gql.tada/internal'sparseConfig(adding${configDir}substitution and consistent validation with the gql.tada CLI), and the following are reported on a file's first GraphQL document: invalid configuration (code 52006), schema load and reload failures (52006, attributed per schema where possible), typings files that fail to be written or that aren't part of the TypeScript project (52006), documents naming an unconfigured schema (52008), and GraphQL documents written in the mode the plugin isn't configured for, e.g. tagged templates whiletemplateIsCallExpressionis on (52007). The plugin also detects schema file changes that the file watcher missed and force-reloads them, and exceptions in plugin code no longer fail whole tsserver requests but fall back to the underlying language service
Submitted by @JoviDeCroock (See #398)
Patch Changes
- Upgrade
@gql.tada/internaland@0no-co/graphql.web
Submitted by @kitten (See #399) - Reject call expressions whose first argument cannot start a GraphQL document (after ignored tokens, a document must begin with
{or a definition keyword) before resolving the callee's type in call discovery. Ordinary string-argument calls — translations, test titles, event names — no longer touch the type checker at all, which speeds up scanning codebases where GraphQL files are a small fraction of all files. Note that documents passed to a gql.tada function under a non-default name are now only discovered when they start with a valid document prefix; functions matching configuredtemplatesnames are unaffected
Submitted by @JoviDeCroock (See #397) - Treat
||and??as value pass-throughs in unused-field tracking:fn(a.b || fallback)now marksa.b's sub-selections as used, like other escapes of an access chain.&&keeps its guard semantics, soa?.b && a?.b.cretains leaf-level precision
Submitted by @JoviDeCroock (See #395)
@0no-co/graphqlsp@1.16.0
Immutable
release. Only release title and notes can be modified.
Minor Changes
- Reduce type-checker work in
findAllCallExpressions. The gql.tada function detection and schema-name lookups are now memoized per callee, so ordinary calls with a string-literal first argument (e.g.t('key'),it('name', fn)) no longer trigger a type probe per call site. Fragment unrolling is deduplicated for repeated references to the same fragment, and the third argument offindAllCallExpressionsnow also accepts an options object ({ searchExternal?: boolean; collectFragments?: boolean }), wherecollectFragments: falseskips fragment collection entirely for callers that only consumenodes
Submitted by @JoviDeCroock (See #392) - Rewrite unused field detection as a single-pass, symbol-driven analysis. Instead of issuing a find-all-references request per binding and enumerating the lexical scope per reference, the file's AST is walked once to index identifier occurrences, and query-result bindings are resolved through
getSymbolAtLocationagainst a selection-set trie. This removes the quadratic language-service calls fromgetSemanticDiagnostics, scales to files with many documents and consumers, and makes the analysis work without resolved document types.
The analysis also tracks more usage patterns, reducing false positives: values passed as function arguments (including property chains likeformat(data.pokemon.weight)), spreads and object-literal assignments now mark the affected sub-selections as used,for...ofloop bindings are followed like array-method callbacks, and assignments (existing = result.data.pokemon) and conditional expressions now alias like variable declarations
Submitted by @JoviDeCroock (See #393)
Patch Changes
⚠️ Fix multi-level property accessor when resolving fragments in gql.tada generate-persisted
Submitted by @felamaslen (See #389)
@0no-co/graphqlsp@1.15.4
Immutable
release. Only release title and notes can be modified.
Patch Changes
- Forward all arguments from the
getQuickInfoAtPositionproxy to the underlying TypeScript language service, so that theverbosityLevelargument (added in TypeScript 5.9 for expandable hovers) is no longer stripped when GraphQLSP delegates back to TypeScript
Submitted by @JoviDeCroock (See #384)
@0no-co/graphqlsp@1.15.3
Immutable
release. Only release title and notes can be modified.
Patch Changes
- Update TypeScript peer dependency range to allow for TS v6
Submitted by @JoviDeCroock (See #382)
@0no-co/graphqlsp@1.15.2
Immutable
release. Only release title and notes can be modified.
Patch Changes
- Detect fragment usage in
maskFragmentscalls to prevent false positive unused fragment warnings
Submitted by @takumiyoshikawa (See #379)