Skip to content

Commit 7c1b5c5

Browse files
committed
feat: support interface definitions, full enum values for symbols
1 parent 629a733 commit 7c1b5c5

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

packages/graphql-language-service-interface/src/GraphQLLanguageService.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ const KIND_TO_SYMBOL_KIND: { [key: string]: SymbolKind } = {
8383
FragmentSpread: SymbolKind.Struct,
8484
ObjectTypeDefinition: SymbolKind.Class,
8585
EnumTypeDefinition: SymbolKind.Enum,
86+
EnumValueDefinition: SymbolKind.EnumMember,
8687
InputObjectTypeDefinition: SymbolKind.Class,
8788
InputValueDefinition: SymbolKind.Field,
8889
FieldDefinition: SymbolKind.Field,
@@ -158,7 +159,7 @@ export class GraphQLLanguageService {
158159
const range = getRange(error.locations[0], query);
159160
return [
160161
{
161-
severity: SEVERITY.ERROR as DiagnosticSeverity,
162+
severity: SEVERITY.ERROR,
162163
message: error.message,
163164
source: 'GraphQL: Syntax',
164165
range,
@@ -285,7 +286,7 @@ export class GraphQLLanguageService {
285286
return getDefinitionQueryResultForDefinitionNode(
286287
filePath,
287288
query,
288-
node as FragmentDefinitionNode | OperationDefinitionNode,
289+
node,
289290
);
290291

291292
case NAMED_TYPE:
@@ -370,7 +371,8 @@ export class GraphQLLanguageService {
370371
definition =>
371372
definition.kind === OBJECT_TYPE_DEFINITION ||
372373
definition.kind === INPUT_OBJECT_TYPE_DEFINITION ||
373-
definition.kind === ENUM_TYPE_DEFINITION,
374+
definition.kind === ENUM_TYPE_DEFINITION ||
375+
definition.kind === INTERFACE_TYPE_DEFINITION,
374376
);
375377

376378
const typeCastedDefs = (localObjectTypeDefinitions as any) as Array<

packages/graphql-language-service-interface/src/getOutline.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
DefinitionNode,
2929
InputValueDefinitionNode,
3030
FieldDefinitionNode,
31+
EnumValueDefinitionNode,
3132
} from 'graphql';
3233
import { offsetToPosition, Position } from 'graphql-language-service-utils';
3334

@@ -46,6 +47,7 @@ const OUTLINEABLE_KINDS = {
4647
InputObjectTypeDefinition: true,
4748
InterfaceTypeDefinition: true,
4849
EnumTypeDefinition: true,
50+
EnumValueDefinition: true,
4951
InputValueDefinition: true,
5052
FieldDefinition: true,
5153
};
@@ -105,7 +107,8 @@ function outlineTreeConverter(docText: string): OutlineTreeConverterType {
105107
startPosition: offsetToPosition(docText, node.loc.start),
106108
endPosition: offsetToPosition(docText, node.loc.end),
107109
kind: node.kind,
108-
children: node.selectionSet || node.fields || node.arguments || [],
110+
children:
111+
node.selectionSet || node.fields || node.values || node.arguments || [],
109112
};
110113
};
111114

@@ -156,6 +159,10 @@ function outlineTreeConverter(docText: string): OutlineTreeConverterType {
156159
],
157160
...meta(node),
158161
}),
162+
EnumValueDefinition: (node: EnumValueDefinitionNode) => ({
163+
tokenizedText: [buildToken('plain', node.name)],
164+
...meta(node),
165+
}),
159166
ObjectTypeDefinition: (node: ObjectTypeDefinitionNode) => ({
160167
tokenizedText: [
161168
buildToken('keyword', 'type'),

0 commit comments

Comments
 (0)