Skip to content

Commit be5ebb9

Browse files
committed
Allow for tree-shaking the Kind enum
1 parent 9153497 commit be5ebb9

File tree

2 files changed

+158
-68
lines changed

2 files changed

+158
-68
lines changed

src/language/_kinds.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/** Name */
2+
export const NAME = 'Name' as const;
3+
4+
/** Document */
5+
export const DOCUMENT = 'Document' as const;
6+
export const OPERATION_DEFINITION = 'OperationDefinition' as const;
7+
export const VARIABLE_DEFINITION = 'VariableDefinition' as const;
8+
export const SELECTION_SET = 'SelectionSet' as const;
9+
export const FIELD = 'Field' as const;
10+
export const ARGUMENT = 'Argument' as const;
11+
export const FRAGMENT_ARGUMENT = 'FragmentArgument' as const;
12+
13+
/** Fragments */
14+
export const FRAGMENT_SPREAD = 'FragmentSpread' as const;
15+
export const INLINE_FRAGMENT = 'InlineFragment' as const;
16+
export const FRAGMENT_DEFINITION = 'FragmentDefinition' as const;
17+
18+
/** Values */
19+
export const VARIABLE = 'Variable' as const;
20+
export const INT = 'IntValue' as const;
21+
export const FLOAT = 'FloatValue' as const;
22+
export const STRING = 'StringValue' as const;
23+
export const BOOLEAN = 'BooleanValue' as const;
24+
export const NULL = 'NullValue' as const;
25+
export const ENUM = 'EnumValue' as const;
26+
export const LIST = 'ListValue' as const;
27+
export const OBJECT = 'ObjectValue' as const;
28+
export const OBJECT_FIELD = 'ObjectField' as const;
29+
30+
/** Directives */
31+
export const DIRECTIVE = 'Directive' as const;
32+
33+
/** Types */
34+
export const NAMED_TYPE = 'NamedType' as const;
35+
export const LIST_TYPE = 'ListType' as const;
36+
export const NON_NULL_TYPE = 'NonNullType' as const;
37+
38+
/** Type System Definitions */
39+
export const SCHEMA_DEFINITION = 'SchemaDefinition' as const;
40+
export const OPERATION_TYPE_DEFINITION = 'OperationTypeDefinition' as const;
41+
42+
/** Type Definitions */
43+
export const SCALAR_TYPE_DEFINITION = 'ScalarTypeDefinition' as const;
44+
export const OBJECT_TYPE_DEFINITION = 'ObjectTypeDefinition' as const;
45+
export const FIELD_DEFINITION = 'FieldDefinition' as const;
46+
export const INPUT_VALUE_DEFINITION = 'InputValueDefinition' as const;
47+
export const INTERFACE_TYPE_DEFINITION = 'InterfaceTypeDefinition' as const;
48+
export const UNION_TYPE_DEFINITION = 'UnionTypeDefinition' as const;
49+
export const ENUM_TYPE_DEFINITION = 'EnumTypeDefinition' as const;
50+
export const ENUM_VALUE_DEFINITION = 'EnumValueDefinition' as const;
51+
export const INPUT_OBJECT_TYPE_DEFINITION = 'InputObjectTypeDefinition' as const;
52+
53+
/** Directive Definitions */
54+
export const DIRECTIVE_DEFINITION = 'DirectiveDefinition' as const;
55+
56+
/** Type System Extensions */
57+
export const SCHEMA_EXTENSION = 'SchemaExtension' as const;
58+
59+
/** Type Extensions */
60+
export const SCALAR_TYPE_EXTENSION = 'ScalarTypeExtension' as const;
61+
export const OBJECT_TYPE_EXTENSION = 'ObjectTypeExtension' as const;
62+
export const INTERFACE_TYPE_EXTENSION = 'InterfaceTypeExtension' as const;
63+
export const UNION_TYPE_EXTENSION = 'UnionTypeExtension' as const;
64+
export const ENUM_TYPE_EXTENSION = 'EnumTypeExtension' as const;
65+
export const INPUT_OBJECT_TYPE_EXTENSION = 'InputObjectTypeExtension' as const;

src/language/kinds.ts

Lines changed: 93 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,97 @@
1+
import type {
2+
ARGUMENT,
3+
BOOLEAN,
4+
DIRECTIVE,
5+
DIRECTIVE_DEFINITION,
6+
DOCUMENT,
7+
ENUM,
8+
ENUM_TYPE_DEFINITION,
9+
ENUM_TYPE_EXTENSION,
10+
ENUM_VALUE_DEFINITION,
11+
FIELD,
12+
FIELD_DEFINITION,
13+
FLOAT,
14+
FRAGMENT_ARGUMENT,
15+
FRAGMENT_DEFINITION,
16+
FRAGMENT_SPREAD,
17+
INLINE_FRAGMENT,
18+
INPUT_OBJECT_TYPE_DEFINITION,
19+
INPUT_OBJECT_TYPE_EXTENSION,
20+
INPUT_VALUE_DEFINITION,
21+
INT,
22+
INTERFACE_TYPE_DEFINITION,
23+
INTERFACE_TYPE_EXTENSION,
24+
LIST,
25+
LIST_TYPE,
26+
NAME,
27+
NAMED_TYPE,
28+
NON_NULL_TYPE,
29+
NULL,
30+
OBJECT,
31+
OBJECT_FIELD,
32+
OBJECT_TYPE_DEFINITION,
33+
OBJECT_TYPE_EXTENSION,
34+
OPERATION_DEFINITION,
35+
OPERATION_TYPE_DEFINITION,
36+
SCALAR_TYPE_DEFINITION,
37+
SCALAR_TYPE_EXTENSION,
38+
SCHEMA_DEFINITION,
39+
SCHEMA_EXTENSION,
40+
SELECTION_SET,
41+
STRING,
42+
UNION_TYPE_DEFINITION,
43+
UNION_TYPE_EXTENSION,
44+
VARIABLE,
45+
VARIABLE_DEFINITION,
46+
} from './_kinds.js';
47+
148
/**
249
* The set of allowed kind values for AST nodes.
350
*/
4-
export const Kind = {
5-
/** Name */
6-
NAME: 'Name' as const,
7-
8-
/** Document */
9-
DOCUMENT: 'Document' as const,
10-
OPERATION_DEFINITION: 'OperationDefinition' as const,
11-
VARIABLE_DEFINITION: 'VariableDefinition' as const,
12-
SELECTION_SET: 'SelectionSet' as const,
13-
FIELD: 'Field' as const,
14-
ARGUMENT: 'Argument' as const,
15-
FRAGMENT_ARGUMENT: 'FragmentArgument' as const,
16-
17-
/** Fragments */
18-
FRAGMENT_SPREAD: 'FragmentSpread' as const,
19-
INLINE_FRAGMENT: 'InlineFragment' as const,
20-
FRAGMENT_DEFINITION: 'FragmentDefinition' as const,
21-
22-
/** Values */
23-
VARIABLE: 'Variable' as const,
24-
INT: 'IntValue' as const,
25-
FLOAT: 'FloatValue' as const,
26-
STRING: 'StringValue' as const,
27-
BOOLEAN: 'BooleanValue' as const,
28-
NULL: 'NullValue' as const,
29-
ENUM: 'EnumValue' as const,
30-
LIST: 'ListValue' as const,
31-
OBJECT: 'ObjectValue' as const,
32-
OBJECT_FIELD: 'ObjectField' as const,
33-
34-
/** Directives */
35-
DIRECTIVE: 'Directive' as const,
36-
37-
/** Types */
38-
NAMED_TYPE: 'NamedType' as const,
39-
LIST_TYPE: 'ListType' as const,
40-
NON_NULL_TYPE: 'NonNullType' as const,
41-
42-
/** Type System Definitions */
43-
SCHEMA_DEFINITION: 'SchemaDefinition' as const,
44-
OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition' as const,
45-
46-
/** Type Definitions */
47-
SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition' as const,
48-
OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition' as const,
49-
FIELD_DEFINITION: 'FieldDefinition' as const,
50-
INPUT_VALUE_DEFINITION: 'InputValueDefinition' as const,
51-
INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition' as const,
52-
UNION_TYPE_DEFINITION: 'UnionTypeDefinition' as const,
53-
ENUM_TYPE_DEFINITION: 'EnumTypeDefinition' as const,
54-
ENUM_VALUE_DEFINITION: 'EnumValueDefinition' as const,
55-
INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition' as const,
56-
57-
/** Directive Definitions */
58-
DIRECTIVE_DEFINITION: 'DirectiveDefinition' as const,
59-
60-
/** Type System Extensions */
61-
SCHEMA_EXTENSION: 'SchemaExtension' as const,
51+
export * as Kind from './_kinds.js';
6252

63-
/** Type Extensions */
64-
SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension' as const,
65-
OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension' as const,
66-
INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension' as const,
67-
UNION_TYPE_EXTENSION: 'UnionTypeExtension' as const,
68-
ENUM_TYPE_EXTENSION: 'EnumTypeExtension' as const,
69-
INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension' as const,
70-
};
71-
// eslint-disable-next-line @typescript-eslint/no-redeclare
72-
export type Kind = (typeof Kind)[keyof typeof Kind];
53+
export type Kind =
54+
| typeof NAME
55+
| typeof DOCUMENT
56+
| typeof OPERATION_DEFINITION
57+
| typeof VARIABLE_DEFINITION
58+
| typeof SELECTION_SET
59+
| typeof FIELD
60+
| typeof ARGUMENT
61+
| typeof FRAGMENT_ARGUMENT
62+
| typeof FRAGMENT_SPREAD
63+
| typeof INLINE_FRAGMENT
64+
| typeof FRAGMENT_DEFINITION
65+
| typeof VARIABLE
66+
| typeof INT
67+
| typeof FLOAT
68+
| typeof STRING
69+
| typeof BOOLEAN
70+
| typeof NULL
71+
| typeof ENUM
72+
| typeof LIST
73+
| typeof OBJECT
74+
| typeof OBJECT_FIELD
75+
| typeof DIRECTIVE
76+
| typeof NAMED_TYPE
77+
| typeof LIST_TYPE
78+
| typeof NON_NULL_TYPE
79+
| typeof SCHEMA_DEFINITION
80+
| typeof OPERATION_TYPE_DEFINITION
81+
| typeof SCALAR_TYPE_DEFINITION
82+
| typeof OBJECT_TYPE_DEFINITION
83+
| typeof FIELD_DEFINITION
84+
| typeof INPUT_VALUE_DEFINITION
85+
| typeof INTERFACE_TYPE_DEFINITION
86+
| typeof UNION_TYPE_DEFINITION
87+
| typeof ENUM_TYPE_DEFINITION
88+
| typeof ENUM_VALUE_DEFINITION
89+
| typeof INPUT_OBJECT_TYPE_DEFINITION
90+
| typeof DIRECTIVE_DEFINITION
91+
| typeof SCHEMA_EXTENSION
92+
| typeof SCALAR_TYPE_EXTENSION
93+
| typeof OBJECT_TYPE_EXTENSION
94+
| typeof INTERFACE_TYPE_EXTENSION
95+
| typeof UNION_TYPE_EXTENSION
96+
| typeof ENUM_TYPE_EXTENSION
97+
| typeof INPUT_OBJECT_TYPE_EXTENSION;

0 commit comments

Comments
 (0)