UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

60 lines (48 loc) 1.49 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); exports.assertEnumValueName = assertEnumValueName; exports.assertName = assertName; var _devAssert = require('../jsutils/devAssert.js'); var _GraphQLError = require('../error/GraphQLError.js'); var _characterClasses = require('../language/characterClasses.js'); /** * Upholds the spec rules about naming. */ function assertName(name) { name != null || (0, _devAssert.devAssert)(false, 'Must provide name.'); typeof name === 'string' || (0, _devAssert.devAssert)(false, 'Expected name to be a string.'); if (name.length === 0) { throw new _GraphQLError.GraphQLError( 'Expected name to be a non-empty string.', ); } for (let i = 1; i < name.length; ++i) { if (!(0, _characterClasses.isNameContinue)(name.charCodeAt(i))) { throw new _GraphQLError.GraphQLError( `Names must only contain [_a-zA-Z0-9] but "${name}" does not.`, ); } } if (!(0, _characterClasses.isNameStart)(name.charCodeAt(0))) { throw new _GraphQLError.GraphQLError( `Names must start with [_a-zA-Z] but "${name}" does not.`, ); } return name; } /** * Upholds the spec rules about naming enum values. * * @internal */ function assertEnumValueName(name) { if (name === 'true' || name === 'false' || name === 'null') { throw new _GraphQLError.GraphQLError( `Enum values cannot be named: ${name}`, ); } return assertName(name); }