From d7df0b8177ce84262cda8ab074c0bec2df8800ff Mon Sep 17 00:00:00 2001 From: Jason Kuhrt Date: Tue, 29 Oct 2024 10:56:04 -0400 Subject: [PATCH] refactor: treeshakable kind enum --- src/language/kinds.ts | 74 +++--------------------------------------- src/language/kinds_.ts | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 69 deletions(-) create mode 100644 src/language/kinds_.ts diff --git a/src/language/kinds.ts b/src/language/kinds.ts index 52aa7c167a..5bb125d5a8 100644 --- a/src/language/kinds.ts +++ b/src/language/kinds.ts @@ -1,72 +1,8 @@ +import * as kinds_ from './kinds_.js'; // eslint-disable-line + +export * as Kind from './kinds_.js'; + /** * The set of allowed kind values for AST nodes. */ -enum Kind { - /** Name */ - NAME = 'Name', - - /** Document */ - DOCUMENT = 'Document', - OPERATION_DEFINITION = 'OperationDefinition', - VARIABLE_DEFINITION = 'VariableDefinition', - SELECTION_SET = 'SelectionSet', - FIELD = 'Field', - ARGUMENT = 'Argument', - FRAGMENT_ARGUMENT = 'FragmentArgument', - - /** Fragments */ - FRAGMENT_SPREAD = 'FragmentSpread', - INLINE_FRAGMENT = 'InlineFragment', - FRAGMENT_DEFINITION = 'FragmentDefinition', - - /** Values */ - VARIABLE = 'Variable', - INT = 'IntValue', - FLOAT = 'FloatValue', - STRING = 'StringValue', - BOOLEAN = 'BooleanValue', - NULL = 'NullValue', - ENUM = 'EnumValue', - LIST = 'ListValue', - OBJECT = 'ObjectValue', - OBJECT_FIELD = 'ObjectField', - - /** Directives */ - DIRECTIVE = 'Directive', - - /** Types */ - NAMED_TYPE = 'NamedType', - LIST_TYPE = 'ListType', - NON_NULL_TYPE = 'NonNullType', - - /** Type System Definitions */ - SCHEMA_DEFINITION = 'SchemaDefinition', - OPERATION_TYPE_DEFINITION = 'OperationTypeDefinition', - - /** Type Definitions */ - SCALAR_TYPE_DEFINITION = 'ScalarTypeDefinition', - OBJECT_TYPE_DEFINITION = 'ObjectTypeDefinition', - FIELD_DEFINITION = 'FieldDefinition', - INPUT_VALUE_DEFINITION = 'InputValueDefinition', - INTERFACE_TYPE_DEFINITION = 'InterfaceTypeDefinition', - UNION_TYPE_DEFINITION = 'UnionTypeDefinition', - ENUM_TYPE_DEFINITION = 'EnumTypeDefinition', - ENUM_VALUE_DEFINITION = 'EnumValueDefinition', - INPUT_OBJECT_TYPE_DEFINITION = 'InputObjectTypeDefinition', - - /** Directive Definitions */ - DIRECTIVE_DEFINITION = 'DirectiveDefinition', - - /** Type System Extensions */ - SCHEMA_EXTENSION = 'SchemaExtension', - - /** Type Extensions */ - SCALAR_TYPE_EXTENSION = 'ScalarTypeExtension', - OBJECT_TYPE_EXTENSION = 'ObjectTypeExtension', - INTERFACE_TYPE_EXTENSION = 'InterfaceTypeExtension', - UNION_TYPE_EXTENSION = 'UnionTypeExtension', - ENUM_TYPE_EXTENSION = 'EnumTypeExtension', - INPUT_OBJECT_TYPE_EXTENSION = 'InputObjectTypeExtension', -} - -export { Kind }; +export type Kind = (typeof kinds_)[keyof typeof kinds_]; diff --git a/src/language/kinds_.ts b/src/language/kinds_.ts new file mode 100644 index 0000000000..55b073e5cb --- /dev/null +++ b/src/language/kinds_.ts @@ -0,0 +1,65 @@ +/** Name */ +export const NAME = 'Name'; + +/** Document */ +export const DOCUMENT = 'Document'; +export const OPERATION_DEFINITION = 'OperationDefinition'; +export const VARIABLE_DEFINITION = 'VariableDefinition'; +export const SELECTION_SET = 'SelectionSet'; +export const FIELD = 'Field'; +export const ARGUMENT = 'Argument'; +export const FRAGMENT_ARGUMENT = 'FragmentArgument'; + +/** Fragments */ +export const FRAGMENT_SPREAD = 'FragmentSpread'; +export const INLINE_FRAGMENT = 'InlineFragment'; +export const FRAGMENT_DEFINITION = 'FragmentDefinition'; + +/** Values */ +export const VARIABLE = 'Variable'; +export const INT = 'IntValue'; +export const FLOAT = 'FloatValue'; +export const STRING = 'StringValue'; +export const BOOLEAN = 'BooleanValue'; +export const NULL = 'NullValue'; +export const ENUM = 'EnumValue'; +export const LIST = 'ListValue'; +export const OBJECT = 'ObjectValue'; +export const OBJECT_FIELD = 'ObjectField'; + +/** Directives */ +export const DIRECTIVE = 'Directive'; + +/** Types */ +export const NAMED_TYPE = 'NamedType'; +export const LIST_TYPE = 'ListType'; +export const NON_NULL_TYPE = 'NonNullType'; + +/** Type System Definitions */ +export const SCHEMA_DEFINITION = 'SchemaDefinition'; +export const OPERATION_TYPE_DEFINITION = 'OperationTypeDefinition'; + +/** Type Definitions */ +export const SCALAR_TYPE_DEFINITION = 'ScalarTypeDefinition'; +export const OBJECT_TYPE_DEFINITION = 'ObjectTypeDefinition'; +export const FIELD_DEFINITION = 'FieldDefinition'; +export const INPUT_VALUE_DEFINITION = 'InputValueDefinition'; +export const INTERFACE_TYPE_DEFINITION = 'InterfaceTypeDefinition'; +export const UNION_TYPE_DEFINITION = 'UnionTypeDefinition'; +export const ENUM_TYPE_DEFINITION = 'EnumTypeDefinition'; +export const ENUM_VALUE_DEFINITION = 'EnumValueDefinition'; +export const INPUT_OBJECT_TYPE_DEFINITION = 'InputObjectTypeDefinition'; + +/** Directive Definitions */ +export const DIRECTIVE_DEFINITION = 'DirectiveDefinition'; + +/** Type System Extensions */ +export const SCHEMA_EXTENSION = 'SchemaExtension'; + +/** Type Extensions */ +export const SCALAR_TYPE_EXTENSION = 'ScalarTypeExtension'; +export const OBJECT_TYPE_EXTENSION = 'ObjectTypeExtension'; +export const INTERFACE_TYPE_EXTENSION = 'InterfaceTypeExtension'; +export const UNION_TYPE_EXTENSION = 'UnionTypeExtension'; +export const ENUM_TYPE_EXTENSION = 'EnumTypeExtension'; +export const INPUT_OBJECT_TYPE_EXTENSION = 'InputObjectTypeExtension';