Skip to content

Commit a17aeea

Browse files
authored
Code complete default query variables (#516)
1 parent 42635af commit a17aeea

6 files changed

Lines changed: 60 additions & 73 deletions

File tree

package-lock.json

Lines changed: 37 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/apollo-language-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"core-js": "^2.5.7",
2929
"glob": "^7.1.2",
3030
"graphql": "^0.13.1",
31-
"graphql-language-service-server": "^1.1.2",
31+
"@apollographql/graphql-language-service-interface": "1.3.2",
3232
"graphql-tag": "^2.9.2",
3333
"minimatch": "^3.0.4",
3434
"moment": "^2.22.2",

packages/apollo-language-server/src/document.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
DiagnosticSeverity
99
} from "vscode-languageserver";
1010

11-
import { getRange as rangeOfTokenAtLocation } from "graphql-language-service-interface/dist/getDiagnostics";
11+
import { getRange as rangeOfTokenAtLocation } from "@apollographql/graphql-language-service-interface/dist/getDiagnostics";
1212

1313
import {
1414
positionFromSourceLocation,

packages/apollo-language-server/src/languageProvider.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import {
1111
InsertTextFormat
1212
} from "vscode-languageserver";
1313

14-
import { getAutocompleteSuggestions } from "graphql-language-service-interface";
14+
import { getAutocompleteSuggestions } from "@apollographql/graphql-language-service-interface";
1515
import {
1616
getTokenAtPosition,
1717
getTypeInfo
18-
} from "graphql-language-service-interface/dist/getAutocompleteSuggestions";
18+
} from "@apollographql/graphql-language-service-interface/dist/getAutocompleteSuggestions";
1919

2020
import { GraphQLWorkspace } from "./workspace";
2121
import { DocumentUri, GraphQLProject } from "./project";
@@ -114,6 +114,7 @@ export class GraphQLLanguageProvider {
114114
doc.source.body,
115115
positionInDocument
116116
).map(suggest => {
117+
// when code completing fields, expand out required variables and open braces
117118
const suggestedField = parentFields[suggest.label] as GraphQLField<
118119
void,
119120
void
@@ -203,8 +204,12 @@ export class GraphQLLanguageProvider {
203204
const fieldDef = typeInfo.getFieldDef();
204205

205206
if (parentType && fieldDef) {
206-
const argsString = fieldDef.args.length > 0 ?
207-
`(${fieldDef.args.map(a => `${a.name}: ${a.type}`).join(", ")})` : "";
207+
const argsString =
208+
fieldDef.args.length > 0
209+
? `(${fieldDef.args
210+
.map(a => `${a.name}: ${a.type}`)
211+
.join(", ")})`
212+
: "";
208213
return {
209214
contents: `
210215
\`\`\`graphql
@@ -220,7 +225,9 @@ ${fieldDef.description}
220225
}
221226

222227
case Kind.NAMED_TYPE: {
223-
const type = set.schema.getType(node.name.value) as GraphQLNamedType | void;
228+
const type = set.schema.getType(
229+
node.name.value
230+
) as GraphQLNamedType | void;
224231
if (!type) break;
225232

226233
return {
@@ -244,7 +251,7 @@ ${argumentNode.name}: ${argumentNode.type}
244251
${argumentNode.description}
245252
`,
246253
range: rangeForASTNode(highlightNodeForNode(node))
247-
}
254+
};
248255
}
249256
}
250257
}
@@ -390,7 +397,9 @@ ${argumentNode.description}
390397
for (const definition of doc.ast.definitions) {
391398
if (definition.kind === Kind.OPERATION_DEFINITION) {
392399
if (set.endpoint) {
393-
const fragmentSpreads: Set<graphql.FragmentDefinitionNode> = new Set();
400+
const fragmentSpreads: Set<
401+
graphql.FragmentDefinitionNode
402+
> = new Set();
394403
const searchForReferencedFragments = (node: graphql.ASTNode) => {
395404
visit(node, {
396405
FragmentSpread(node: FragmentSpreadNode) {
@@ -413,10 +422,7 @@ ${argumentNode.description}
413422
`Run ${definition.operation}`,
414423
"apollographql.runQuery",
415424
graphql.parse(
416-
[
417-
definition,
418-
...fragmentSpreads
419-
]
425+
[definition, ...fragmentSpreads]
420426
.map(n => graphql.print(n))
421427
.join("\n")
422428
),

packages/apollo-language-server/src/project.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
FragmentSpreadNode,
1111
TypeInfo,
1212
visitWithTypeInfo,
13-
GraphQLCompositeType,
1413
printSchema,
1514
buildSchema,
1615
Source
@@ -343,8 +342,7 @@ export class GraphQLProject {
343342
visitWithTypeInfo(typeInfo, {
344343
enter: node => {
345344
if (node.kind == "Field" && typeInfo.getParentType()) {
346-
const parentName = (typeInfo.getParentType() as GraphQLCompositeType)
347-
.name;
345+
const parentName = typeInfo.getParentType()!.name;
348346
const parentEngineStat = this.engineStats
349347
.get(set.engineKey!)!
350348
.get(parentName);

packages/apollo-language-server/src/typings/graphql-language-service.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare module "graphql-language-service-interface" {
1+
declare module "@apollographql/graphql-language-service-interface" {
22
import { DocumentNode, GraphQLSchema, Location } from "graphql";
33
import {
44
Diagnostic,
@@ -14,9 +14,9 @@ declare module "graphql-language-service-interface" {
1414
): CompletionItem[];
1515
}
1616

17-
declare module "graphql-language-service-interface/dist/getAutocompleteSuggestions";
17+
declare module "@apollographql/graphql-language-service-interface/dist/getAutocompleteSuggestions";
1818

19-
declare module "graphql-language-service-interface/dist/getDiagnostics" {
19+
declare module "@apollographql/graphql-language-service-interface/dist/getDiagnostics" {
2020
import { Location } from "graphql";
2121
import { Range } from "vscode-languageserver";
2222

0 commit comments

Comments
 (0)