|
1 | 1 | import { inspect } from '../jsutils/inspect';
|
| 2 | +import { devAssert } from '../jsutils/devAssert'; |
2 | 3 |
|
3 | 4 | import type { ASTNode, ASTKindToNode } from './ast';
|
4 |
| -import { isNode } from './ast'; |
| 5 | +import { isNode, QueryDocumentKeys } from './ast'; |
5 | 6 | import { Kind } from './kinds';
|
6 | 7 |
|
7 | 8 | /**
|
@@ -83,84 +84,6 @@ export type ASTVisitorKeyMap = {
|
83 | 84 | [P in keyof ASTKindToNode]?: ReadonlyArray<keyof ASTKindToNode[P]>;
|
84 | 85 | };
|
85 | 86 |
|
86 |
| -export const QueryDocumentKeys: ASTVisitorKeyMap = { |
87 |
| - Document: ['definitions'], |
88 |
| - OperationDefinition: [ |
89 |
| - 'name', |
90 |
| - 'variableDefinitions', |
91 |
| - 'directives', |
92 |
| - 'selectionSet', |
93 |
| - ], |
94 |
| - VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'], |
95 |
| - Variable: ['name'], |
96 |
| - SelectionSet: ['selections'], |
97 |
| - Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'], |
98 |
| - Argument: ['name', 'value'], |
99 |
| - |
100 |
| - FragmentSpread: ['name', 'directives'], |
101 |
| - InlineFragment: ['typeCondition', 'directives', 'selectionSet'], |
102 |
| - FragmentDefinition: [ |
103 |
| - 'name', |
104 |
| - // Note: fragment variable definitions are deprecated and will removed in v17.0.0 |
105 |
| - 'variableDefinitions', |
106 |
| - 'typeCondition', |
107 |
| - 'directives', |
108 |
| - 'selectionSet', |
109 |
| - ], |
110 |
| - |
111 |
| - ListValue: ['values'], |
112 |
| - ObjectValue: ['fields'], |
113 |
| - ObjectField: ['name', 'value'], |
114 |
| - |
115 |
| - Directive: ['name', 'arguments'], |
116 |
| - |
117 |
| - NamedType: ['name'], |
118 |
| - ListType: ['type'], |
119 |
| - NonNullType: ['type'], |
120 |
| - |
121 |
| - SchemaDefinition: ['description', 'directives', 'operationTypes'], |
122 |
| - OperationTypeDefinition: ['type'], |
123 |
| - |
124 |
| - ScalarTypeDefinition: ['description', 'name', 'directives'], |
125 |
| - ObjectTypeDefinition: [ |
126 |
| - 'description', |
127 |
| - 'name', |
128 |
| - 'interfaces', |
129 |
| - 'directives', |
130 |
| - 'fields', |
131 |
| - ], |
132 |
| - FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'], |
133 |
| - InputValueDefinition: [ |
134 |
| - 'description', |
135 |
| - 'name', |
136 |
| - 'type', |
137 |
| - 'defaultValue', |
138 |
| - 'directives', |
139 |
| - ], |
140 |
| - InterfaceTypeDefinition: [ |
141 |
| - 'description', |
142 |
| - 'name', |
143 |
| - 'interfaces', |
144 |
| - 'directives', |
145 |
| - 'fields', |
146 |
| - ], |
147 |
| - UnionTypeDefinition: ['description', 'name', 'directives', 'types'], |
148 |
| - EnumTypeDefinition: ['description', 'name', 'directives', 'values'], |
149 |
| - EnumValueDefinition: ['description', 'name', 'directives'], |
150 |
| - InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'], |
151 |
| - |
152 |
| - DirectiveDefinition: ['description', 'name', 'arguments', 'locations'], |
153 |
| - |
154 |
| - SchemaExtension: ['directives', 'operationTypes'], |
155 |
| - |
156 |
| - ScalarTypeExtension: ['name', 'directives'], |
157 |
| - ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'], |
158 |
| - InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'], |
159 |
| - UnionTypeExtension: ['name', 'directives', 'types'], |
160 |
| - EnumTypeExtension: ['name', 'directives', 'values'], |
161 |
| - InputObjectTypeExtension: ['name', 'directives', 'fields'], |
162 |
| -}; |
163 |
| - |
164 | 87 | export const BREAK: unknown = Object.freeze({});
|
165 | 88 |
|
166 | 89 | /**
|
@@ -324,9 +247,8 @@ export function visit(
|
324 | 247 |
|
325 | 248 | let result;
|
326 | 249 | if (!Array.isArray(node)) {
|
327 |
| - if (!isNode(node)) { |
328 |
| - throw new Error(`Invalid AST Node: ${inspect(node)}.`); |
329 |
| - } |
| 250 | + devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`); |
| 251 | + |
330 | 252 | const visitFn = isLeaving
|
331 | 253 | ? enterLeaveMap.get(node.kind)?.leave
|
332 | 254 | : enterLeaveMap.get(node.kind)?.enter;
|
|
0 commit comments