@@ -304,20 +304,46 @@ export interface GraphQLScalarTypeExtensions {
304304 * const OddType = new GraphQLScalarType({
305305 * name: 'Odd',
306306 * serialize(value) {
307- * return value % 2 === 1 ? value : null;
307+ * if (value % 2 === 1) {
308+ * return value;
309+ * }
310+ * },
311+ * parseValue(value) {
312+ * if (value % 2 === 1) {
313+ * return value;
314+ * }
308315 * }
309316 * });
310317 *
318+ * Custom scalars behavior is defined via the following functions:
319+ *
320+ * - serialize(value): Implements "Result Coercion". Given an internal value,
321+ * produces an external value valid for this type. Returns undefined or
322+ * throws an error to indicate invalid values.
323+ *
324+ * - parseValue(value): Implements "Input Coercion" for values. Given an
325+ * external value (for example, variable values), produces an internal value
326+ * valid for this type. Returns undefined or throws an error to indicate
327+ * invalid values.
328+ *
329+ * - parseLiteral(ast): Implements "Input Coercion" for literals. Given an
330+ * GraphQL literal (AST) (for example, an argument value), produces an
331+ * internal value valid for this type. Returns undefined or throws an error
332+ * to indicate invalid values.
333+ *
334+ * - valueToLiteral(value): Converts an external value to a GraphQL
335+ * literal (AST). Returns undefined or throws an error to indicate
336+ * invalid values.
337+ *
311338 */
312339export class GraphQLScalarType {
313340 name : string ;
314341 description : Maybe < string > ;
315342 specifiedByURL : Maybe < string > ;
316343 serialize : GraphQLScalarSerializer < unknown > ;
317344 parseValue : GraphQLScalarValueParser < unknown > ;
318- parseLiteral : Maybe < GraphQLScalarLiteralParser < unknown > > ;
345+ parseLiteral : GraphQLScalarLiteralParser < unknown > ;
319346 valueToLiteral : Maybe < GraphQLScalarValueToLiteral > ;
320- literalToValue : Maybe < GraphQLScalarLiteralToValue > ;
321347 extensions : Maybe < Readonly < GraphQLScalarTypeExtensions > > ;
322348 astNode : Maybe < ScalarTypeDefinitionNode > ;
323349 extensionASTNodes : ReadonlyArray < ScalarTypeExtensionNode > ;
@@ -328,9 +354,8 @@ export class GraphQLScalarType {
328354 specifiedByURL : Maybe < string > ;
329355 serialize : GraphQLScalarSerializer < unknown > ;
330356 parseValue : GraphQLScalarValueParser < unknown > ;
331- parseLiteral : Maybe < GraphQLScalarLiteralParser < unknown > > ;
357+ parseLiteral : GraphQLScalarLiteralParser < unknown > ;
332358 valueToLiteral : Maybe < GraphQLScalarValueToLiteral > ;
333- literalToValue : Maybe < GraphQLScalarLiteralToValue > ;
334359 extensions : Maybe < Readonly < GraphQLScalarTypeExtensions > > ;
335360 extensionASTNodes : ReadonlyArray < ScalarTypeExtensionNode > ;
336361 } ;
@@ -352,9 +377,6 @@ export type GraphQLScalarLiteralParser<TInternal> = (
352377export type GraphQLScalarValueToLiteral = (
353378 inputValue : unknown ,
354379) => Maybe < ConstValueNode > ;
355- export type GraphQLScalarLiteralToValue = (
356- valueNode : ConstValueNode ,
357- ) => unknown ;
358380
359381export interface GraphQLScalarTypeConfig < TInternal , TExternal > {
360382 name : string ;
@@ -366,10 +388,8 @@ export interface GraphQLScalarTypeConfig<TInternal, TExternal> {
366388 parseValue ?: GraphQLScalarValueParser < TInternal > ;
367389 // Parses an externally provided literal value to use as an input.
368390 parseLiteral ?: GraphQLScalarLiteralParser < TInternal > ;
369- // Translates an external input value to a literal (AST).
391+ // Translates an externally provided value to a literal (AST).
370392 valueToLiteral ?: Maybe < GraphQLScalarValueToLiteral > ;
371- // Translates a literal (AST) to external input value.
372- literalToValue ?: Maybe < GraphQLScalarLiteralToValue > ;
373393 extensions ?: Maybe < Readonly < GraphQLScalarTypeExtensions > > ;
374394 astNode ?: Maybe < ScalarTypeDefinitionNode > ;
375395 extensionASTNodes ?: Maybe < ReadonlyArray < ScalarTypeExtensionNode > > ;
@@ -802,7 +822,6 @@ export class GraphQLEnumType {
802822 parseValue ( value : unknown ) : Maybe < any > ;
803823 parseLiteral ( valueNode : ConstValueNode ) : Maybe < any > ;
804824 valueToLiteral ( value : unknown ) : Maybe < ConstValueNode > ;
805- literalToValue ( valueNode : ConstValueNode ) : unknown ;
806825
807826 toConfig ( ) : GraphQLEnumTypeConfig & {
808827 extensions : Maybe < Readonly < GraphQLEnumTypeExtensions > > ;
0 commit comments