import { GraphQLError } from '../error/GraphQLError.js';
import { isNameContinue, isNameStart } from '../language/characterClasses.js';
export function assertName(name: string): string {
if (name.length === 0) {
throw new GraphQLError('Expected name to be a non-empty string.');
}
for (let i = 1; i < name.length; ++i) {
if (!isNameContinue(name.charCodeAt(i))) {
throw new GraphQLError(
`Names must only contain [_a-zA-Z0-9] but "${name}" does not.`,
);
}
}
if (!isNameStart(name.charCodeAt(0))) {
throw new GraphQLError(
`Names must start with [_a-zA-Z] but "${name}" does not.`,
);
}
return name;
}
export function assertEnumValueName(name: string): string {
if (name === 'true' || name === 'false' || name === 'null') {
throw new GraphQLError(`Enum values cannot be named: ${name}`);
}
return assertName(name);
}