Skip to content

Commit

Permalink
refactor: treeshakable kind enum
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonkuhrt committed Oct 29, 2024
1 parent d59c725 commit d7df0b8
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 69 deletions.
74 changes: 5 additions & 69 deletions src/language/kinds.ts
Original file line number Diff line number Diff line change
@@ -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_];
65 changes: 65 additions & 0 deletions src/language/kinds_.ts
Original file line number Diff line number Diff line change
@@ -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';

0 comments on commit d7df0b8

Please sign in to comment.