All files / domains/enum index.ts

100% Statements 18/18
100% Branches 4/4
100% Functions 1/1
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3220x 20x 20x 20x 20x 20x 20x   6x 2x   6x 6x 1x   5x 5x         5x 5x   20x              
import { GraphQLEnumType } from 'graphql';
import { EnumError } from './error';
 
import { enumsRegistry } from './registry';
export { enumsRegistry } from './registry';
import { convertNativeEnumToGraphQLEnumValues } from './services';
 
export interface EnumOptions {
  name: string;
  description?: string;
}
 
export function registerEnum(enumDef: Object, options: EnumOptions | string) {
  if (typeof options === 'string') {
    options = { name: options };
  }
  const { name, description }: EnumOptions = options;
 
  if (enumsRegistry.has(enumDef)) {
    throw new EnumError(name, `Enum is already registered`);
  }
 
  const values = convertNativeEnumToGraphQLEnumValues(enumDef);
  const enumType = new GraphQLEnumType({
    name,
    description,
    values,
  });
  enumsRegistry.set(enumDef, enumType);
  return enumType;
}