Skip to content

Commit d3aaf3e

Browse files
committedMay 13, 2021
Remove literalToValue
1 parent ba2d451 commit d3aaf3e

26 files changed

+160
-548
lines changed
 

‎src/index.d.ts

-3
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,6 @@ export {
410410
// Create a JavaScript value from a GraphQL language AST with a Type.
411411
valueFromAST,
412412
// Create a JavaScript value from a GraphQL language AST without a Type.
413-
// DEPRECATED: use literalToValue
414413
valueFromASTUntyped,
415414
// Create a GraphQL language AST from a JavaScript value.
416415
astFromValue,
@@ -422,8 +421,6 @@ export {
422421
replaceVariables,
423422
// Create a GraphQL Literal AST from a JavaScript input value.
424423
valueToLiteral,
425-
// Create a JavaScript input value from a GraphQL Literal AST.
426-
literalToValue,
427424
// Coerces a JavaScript value to a GraphQL type, or produces errors.
428425
coerceInputValue,
429426
// Concatenates multiple AST together.

‎src/index.js

-3
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,6 @@ export {
399399
// Create a JavaScript value from a GraphQL language AST with a Type.
400400
valueFromAST,
401401
// Create a JavaScript value from a GraphQL language AST without a Type.
402-
// DEPRECATED: use literalToValue
403402
valueFromASTUntyped,
404403
// Create a GraphQL language AST from a JavaScript value.
405404
astFromValue,
@@ -411,8 +410,6 @@ export {
411410
replaceVariables,
412411
// Create a GraphQL Literal AST from a JavaScript input value.
413412
valueToLiteral,
414-
// Create a JavaScript input value from a GraphQL Literal AST.
415-
literalToValue,
416413
// Coerces a JavaScript value to a GraphQL type, or produces errors.
417414
coerceInputValue,
418415
// Concatenates multiple AST together.

‎src/jsutils/deprecationWarning.js

-15
This file was deleted.

‎src/jsutils/isSignedInt32.d.ts

-8
This file was deleted.

‎src/jsutils/isSignedInt32.js

-18
This file was deleted.

‎src/type/__tests__/definition-test.js

+31
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { expect } from 'chai';
22
import { describe, it } from 'mocha';
33

4+
import { inspect } from '../../jsutils/inspect';
45
import { identityFunc } from '../../jsutils/identityFunc';
56

7+
import { parseConstValue } from '../../language/parser';
8+
69
import type { GraphQLType, GraphQLNullableType } from '../definition';
710
import {
811
GraphQLList,
@@ -69,6 +72,23 @@ describe('Type System: Scalars', () => {
6972

7073
expect(scalar.serialize).to.equal(identityFunc);
7174
expect(scalar.parseValue).to.equal(identityFunc);
75+
expect(scalar.parseLiteral).to.be.a('function');
76+
});
77+
78+
it('use parseValue for parsing literals if parseLiteral omitted', () => {
79+
const scalar = new GraphQLScalarType({
80+
name: 'Foo',
81+
parseValue(value) {
82+
return 'parseValue: ' + inspect(value);
83+
},
84+
});
85+
86+
expect(scalar.parseLiteral(parseConstValue('null'))).to.equal(
87+
'parseValue: null',
88+
);
89+
expect(scalar.parseLiteral(parseConstValue('{ foo: "bar" }'))).to.equal(
90+
'parseValue: { foo: "bar" }',
91+
);
7292
});
7393

7494
it('rejects a Scalar type without name', () => {
@@ -116,6 +136,17 @@ describe('Type System: Scalars', () => {
116136
);
117137
});
118138

139+
it('rejects a Scalar type defining valueToLiteral with an incorrect type', () => {
140+
expect(
141+
() =>
142+
new GraphQLScalarType({
143+
name: 'SomeScalar',
144+
// $FlowExpectedError[prop-missing]
145+
valueToLiteral: {},
146+
}),
147+
).to.throw('SomeScalar must provide "valueToLiteral" as a function.');
148+
});
149+
119150
it('rejects a Scalar type defining specifiedByURL with an incorrect type', () => {
120151
expect(
121152
() =>

‎src/type/__tests__/scalars-test.js

-5
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ describe('Type System: Specified scalar types', () => {
6666

6767
it('parseLiteral', () => {
6868
function parseLiteral(str: string) {
69-
// $FlowExpectedError[not-a-function]
7069
return GraphQLInt.parseLiteral(parseConstValue(str));
7170
}
7271

@@ -229,7 +228,6 @@ describe('Type System: Specified scalar types', () => {
229228

230229
it('parseLiteral', () => {
231230
function parseLiteral(str: string) {
232-
// $FlowExpectedError[not-a-function]
233231
return GraphQLFloat.parseLiteral(parseConstValue(str));
234232
}
235233

@@ -340,7 +338,6 @@ describe('Type System: Specified scalar types', () => {
340338

341339
it('parseLiteral', () => {
342340
function parseLiteral(str: string) {
343-
// $FlowExpectedError[not-a-function]
344341
return GraphQLString.parseLiteral(parseConstValue(str));
345342
}
346343

@@ -450,7 +447,6 @@ describe('Type System: Specified scalar types', () => {
450447

451448
it('parseLiteral', () => {
452449
function parseLiteral(str: string) {
453-
// $FlowExpectedError[not-a-function]
454450
return GraphQLBoolean.parseLiteral(parseConstValue(str));
455451
}
456452

@@ -563,7 +559,6 @@ describe('Type System: Specified scalar types', () => {
563559

564560
it('parseLiteral', () => {
565561
function parseLiteral(str: string) {
566-
// $FlowExpectedError[not-a-function]
567562
return GraphQLID.parseLiteral(parseConstValue(str));
568563
}
569564

‎src/type/definition.d.ts

+31-12
Original file line numberDiff line numberDiff line change
@@ -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
*/
312339
export 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> = (
352377
export type GraphQLScalarValueToLiteral = (
353378
inputValue: unknown,
354379
) => Maybe<ConstValueNode>;
355-
export type GraphQLScalarLiteralToValue = (
356-
valueNode: ConstValueNode,
357-
) => unknown;
358380

359381
export 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

Comments
 (0)