graphql 14.0.0 → 14.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/error/GraphQLError.js +1 -1
- package/error/GraphQLError.js.flow +3 -3
- package/error/GraphQLError.mjs +1 -1
- package/error/formatError.js +1 -1
- package/error/formatError.mjs +1 -1
- package/error/index.mjs +1 -1
- package/error/locatedError.js +1 -1
- package/error/locatedError.mjs +1 -1
- package/error/printError.js +1 -1
- package/error/printError.mjs +1 -1
- package/error/syntaxError.js +1 -1
- package/error/syntaxError.mjs +1 -1
- package/execution/execute.js +4 -4
- package/execution/execute.js.flow +4 -6
- package/execution/execute.mjs +5 -5
- package/execution/index.mjs +1 -1
- package/execution/values.js +4 -4
- package/execution/values.js.flow +3 -3
- package/execution/values.mjs +3 -3
- package/graphql.js +1 -1
- package/graphql.mjs +1 -1
- package/index.js +12 -0
- package/index.js.flow +4 -0
- package/index.mjs +4 -4
- package/jsutils/dedent.js +2 -2
- package/jsutils/dedent.js.flow +1 -1
- package/jsutils/dedent.mjs +2 -2
- package/jsutils/defineToJSON.js +17 -6
- package/jsutils/defineToJSON.js.flow +14 -5
- package/jsutils/defineToJSON.mjs +14 -6
- package/jsutils/defineToStringTag.js +5 -5
- package/jsutils/defineToStringTag.js.flow +3 -3
- package/jsutils/defineToStringTag.mjs +4 -4
- package/jsutils/inspect.js +46 -12
- package/jsutils/inspect.js.flow +42 -15
- package/jsutils/inspect.mjs +45 -5
- package/jsutils/instanceOf.js +1 -1
- package/jsutils/instanceOf.mjs +1 -1
- package/jsutils/invariant.js +1 -1
- package/jsutils/invariant.mjs +1 -1
- package/jsutils/isInvalid.js +1 -1
- package/jsutils/isInvalid.mjs +1 -1
- package/jsutils/isNullish.js +1 -1
- package/jsutils/isNullish.mjs +1 -1
- package/jsutils/isPromise.js +1 -1
- package/jsutils/isPromise.mjs +1 -1
- package/jsutils/keyMap.js +1 -1
- package/jsutils/keyMap.mjs +1 -1
- package/jsutils/keyValMap.js +1 -1
- package/jsutils/keyValMap.mjs +1 -1
- package/jsutils/mapValue.js +54 -0
- package/jsutils/mapValue.js.flow +27 -0
- package/jsutils/mapValue.mjs +44 -0
- package/jsutils/memoize3.js +1 -1
- package/jsutils/memoize3.mjs +1 -1
- package/jsutils/nodejsCustomInspectSymbol.js +18 -0
- package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
- package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
- package/jsutils/orList.js +17 -4
- package/jsutils/orList.js.flow +13 -7
- package/jsutils/orList.mjs +14 -4
- package/jsutils/promiseForObject.js +1 -1
- package/jsutils/promiseForObject.mjs +1 -1
- package/jsutils/promiseReduce.js +1 -1
- package/jsutils/promiseReduce.mjs +1 -1
- package/jsutils/quotedOrList.js +1 -1
- package/jsutils/quotedOrList.mjs +1 -1
- package/jsutils/suggestionList.js +1 -1
- package/jsutils/suggestionList.mjs +1 -1
- package/language/blockStringValue.js +2 -2
- package/language/blockStringValue.js.flow +1 -1
- package/language/blockStringValue.mjs +2 -2
- package/language/directiveLocation.js +1 -1
- package/language/directiveLocation.mjs +1 -1
- package/language/index.mjs +1 -1
- package/language/kinds.js +1 -1
- package/language/kinds.mjs +1 -1
- package/language/lexer.js +29 -13
- package/language/lexer.js.flow +34 -20
- package/language/lexer.mjs +28 -13
- package/language/location.js +1 -1
- package/language/location.mjs +1 -1
- package/language/parser.js +31 -38
- package/language/parser.js.flow +32 -48
- package/language/parser.mjs +30 -38
- package/language/predicates.js +1 -1
- package/language/predicates.mjs +1 -1
- package/language/printer.js +13 -7
- package/language/printer.js.flow +19 -9
- package/language/printer.mjs +13 -7
- package/language/source.js +8 -7
- package/language/source.mjs +1 -9
- package/language/visitor.js +11 -20
- package/language/visitor.js.flow +4 -5
- package/language/visitor.mjs +8 -20
- package/package.json +10 -3
- package/polyfills/find.js +31 -0
- package/polyfills/find.js.flow +29 -0
- package/polyfills/find.mjs +23 -0
- package/{jsutils → polyfills}/isFinite.js +1 -1
- package/{jsutils → polyfills}/isFinite.js.flow +0 -0
- package/{jsutils → polyfills}/isFinite.mjs +1 -1
- package/{jsutils → polyfills}/isInteger.js +1 -1
- package/{jsutils → polyfills}/isInteger.js.flow +0 -0
- package/{jsutils → polyfills}/isInteger.mjs +1 -1
- package/polyfills/objectEntries.js +26 -0
- package/polyfills/objectEntries.js.flow +19 -0
- package/polyfills/objectEntries.mjs +18 -0
- package/{jsutils → polyfills}/objectValues.js +1 -1
- package/{jsutils → polyfills}/objectValues.js.flow +1 -1
- package/{jsutils → polyfills}/objectValues.mjs +1 -1
- package/subscription/asyncIteratorReject.mjs +1 -1
- package/subscription/index.mjs +1 -1
- package/subscription/mapAsyncIterator.mjs +1 -1
- package/subscription/subscribe.js +1 -1
- package/subscription/subscribe.js.flow +1 -1
- package/subscription/subscribe.mjs +2 -2
- package/type/definition.js +31 -130
- package/type/definition.js.flow +35 -47
- package/type/definition.mjs +30 -131
- package/type/directives.js +25 -29
- package/type/directives.js.flow +24 -20
- package/type/directives.mjs +22 -30
- package/type/index.js +12 -0
- package/type/index.js.flow +4 -0
- package/type/index.mjs +5 -3
- package/type/introspection.js +3 -3
- package/type/introspection.js.flow +1 -1
- package/type/introspection.mjs +2 -2
- package/type/scalars.js +45 -34
- package/type/scalars.js.flow +40 -26
- package/type/scalars.mjs +44 -26
- package/type/schema.js +82 -87
- package/type/schema.js.flow +17 -9
- package/type/schema.mjs +79 -86
- package/type/validate.js +168 -175
- package/type/validate.js.flow +8 -49
- package/type/validate.mjs +159 -175
- package/utilities/TypeInfo.js +10 -23
- package/utilities/TypeInfo.js.flow +1 -1
- package/utilities/TypeInfo.mjs +2 -24
- package/utilities/assertValidName.js +1 -1
- package/utilities/assertValidName.mjs +1 -1
- package/utilities/astFromValue.js +2 -2
- package/utilities/astFromValue.js.flow +1 -1
- package/utilities/astFromValue.mjs +2 -2
- package/utilities/buildASTSchema.js +169 -152
- package/utilities/buildASTSchema.js.flow +117 -113
- package/utilities/buildASTSchema.mjs +160 -152
- package/utilities/buildClientSchema.js +24 -14
- package/utilities/buildClientSchema.js.flow +24 -14
- package/utilities/buildClientSchema.mjs +23 -14
- package/utilities/coerceValue.js +38 -19
- package/utilities/coerceValue.js.flow +41 -47
- package/utilities/coerceValue.mjs +38 -20
- package/utilities/concatAST.js +1 -1
- package/utilities/concatAST.mjs +1 -1
- package/utilities/extendSchema.js +228 -312
- package/utilities/extendSchema.js.flow +27 -152
- package/utilities/extendSchema.mjs +229 -312
- package/utilities/findBreakingChanges.js +7 -5
- package/utilities/findBreakingChanges.js.flow +3 -2
- package/utilities/findBreakingChanges.mjs +6 -5
- package/utilities/findDeprecatedUsages.js +1 -1
- package/utilities/findDeprecatedUsages.mjs +1 -1
- package/utilities/getOperationAST.js +1 -1
- package/utilities/getOperationAST.mjs +1 -1
- package/utilities/getOperationRootType.js +1 -1
- package/utilities/getOperationRootType.mjs +1 -1
- package/utilities/index.mjs +1 -1
- package/utilities/introspectionFromSchema.js +1 -1
- package/utilities/introspectionFromSchema.mjs +1 -1
- package/utilities/introspectionQuery.js +1 -1
- package/utilities/introspectionQuery.mjs +1 -1
- package/utilities/isValidJSValue.js +1 -1
- package/utilities/isValidJSValue.mjs +1 -1
- package/utilities/isValidLiteralValue.js +1 -1
- package/utilities/isValidLiteralValue.mjs +1 -1
- package/utilities/lexicographicSortSchema.js +2 -2
- package/utilities/lexicographicSortSchema.js.flow +1 -1
- package/utilities/lexicographicSortSchema.mjs +2 -2
- package/utilities/schemaPrinter.js +3 -3
- package/utilities/schemaPrinter.js.flow +1 -1
- package/utilities/schemaPrinter.mjs +2 -2
- package/utilities/separateOperations.js +1 -1
- package/utilities/separateOperations.mjs +1 -1
- package/utilities/typeComparators.js +1 -1
- package/utilities/typeComparators.mjs +1 -1
- package/utilities/typeFromAST.js +1 -1
- package/utilities/typeFromAST.mjs +1 -1
- package/utilities/valueFromAST.js +3 -3
- package/utilities/valueFromAST.js.flow +1 -1
- package/utilities/valueFromAST.mjs +2 -2
- package/utilities/valueFromASTUntyped.js +1 -1
- package/utilities/valueFromASTUntyped.mjs +1 -1
- package/validation/ValidationContext.js +57 -82
- package/validation/ValidationContext.js.flow +52 -49
- package/validation/ValidationContext.mjs +52 -77
- package/validation/index.js.flow +1 -0
- package/validation/index.mjs +1 -1
- package/validation/rules/ExecutableDefinitions.js +1 -1
- package/validation/rules/ExecutableDefinitions.js.flow +1 -1
- package/validation/rules/ExecutableDefinitions.mjs +1 -1
- package/validation/rules/FieldsOnCorrectType.js +1 -1
- package/validation/rules/FieldsOnCorrectType.mjs +1 -1
- package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
- package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
- package/validation/rules/KnownArgumentNames.mjs +1 -1
- package/validation/rules/KnownDirectives.js +1 -1
- package/validation/rules/KnownDirectives.mjs +1 -1
- package/validation/rules/KnownFragmentNames.js +1 -1
- package/validation/rules/KnownFragmentNames.mjs +1 -1
- package/validation/rules/KnownTypeNames.js +59 -21
- package/validation/rules/KnownTypeNames.js.flow +54 -20
- package/validation/rules/KnownTypeNames.mjs +56 -21
- package/validation/rules/LoneAnonymousOperation.js +1 -1
- package/validation/rules/LoneAnonymousOperation.mjs +1 -1
- package/validation/rules/LoneSchemaDefinition.js +1 -1
- package/validation/rules/LoneSchemaDefinition.mjs +1 -1
- package/validation/rules/NoFragmentCycles.js +1 -1
- package/validation/rules/NoFragmentCycles.js.flow +2 -2
- package/validation/rules/NoFragmentCycles.mjs +1 -1
- package/validation/rules/NoUndefinedVariables.js +1 -1
- package/validation/rules/NoUndefinedVariables.mjs +1 -1
- package/validation/rules/NoUnusedFragments.js +1 -1
- package/validation/rules/NoUnusedFragments.js.flow +2 -2
- package/validation/rules/NoUnusedFragments.mjs +1 -1
- package/validation/rules/NoUnusedVariables.js +1 -1
- package/validation/rules/NoUnusedVariables.mjs +1 -1
- package/validation/rules/OverlappingFieldsCanBeMerged.js +57 -33
- package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +5 -6
- package/validation/rules/OverlappingFieldsCanBeMerged.mjs +48 -33
- package/validation/rules/PossibleFragmentSpreads.js +1 -1
- package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
- package/validation/rules/PossibleTypeExtensions.js +158 -0
- package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
- package/validation/rules/PossibleTypeExtensions.mjs +146 -0
- package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
- package/validation/rules/ScalarLeafs.js +1 -1
- package/validation/rules/ScalarLeafs.mjs +1 -1
- package/validation/rules/SingleFieldSubscriptions.js +1 -1
- package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
- package/validation/rules/UniqueArgumentNames.js +1 -1
- package/validation/rules/UniqueArgumentNames.mjs +1 -1
- package/validation/rules/UniqueDirectiveNames.js +55 -0
- package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
- package/validation/rules/UniqueDirectiveNames.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
- package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
- package/validation/rules/UniqueEnumValueNames.js +94 -0
- package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
- package/validation/rules/UniqueEnumValueNames.mjs +81 -0
- package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
- package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
- package/validation/rules/UniqueFragmentNames.js +1 -1
- package/validation/rules/UniqueFragmentNames.mjs +1 -1
- package/validation/rules/UniqueInputFieldNames.js +1 -1
- package/validation/rules/UniqueInputFieldNames.mjs +1 -1
- package/validation/rules/UniqueOperationNames.js +1 -1
- package/validation/rules/UniqueOperationNames.mjs +1 -1
- package/validation/rules/UniqueOperationTypes.js +85 -0
- package/validation/rules/UniqueOperationTypes.js.flow +76 -0
- package/validation/rules/UniqueOperationTypes.mjs +73 -0
- package/validation/rules/UniqueTypeNames.js +62 -0
- package/validation/rules/UniqueTypeNames.js.flow +67 -0
- package/validation/rules/UniqueTypeNames.mjs +50 -0
- package/validation/rules/UniqueVariableNames.js +1 -1
- package/validation/rules/UniqueVariableNames.mjs +1 -1
- package/validation/rules/ValuesOfCorrectType.js +29 -13
- package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
- package/validation/rules/ValuesOfCorrectType.mjs +28 -13
- package/validation/rules/VariablesAreInputTypes.js +1 -1
- package/validation/rules/VariablesAreInputTypes.mjs +1 -1
- package/validation/rules/VariablesInAllowedPosition.js +4 -4
- package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
- package/validation/specifiedRules.js +14 -2
- package/validation/specifiedRules.js.flow +13 -0
- package/validation/specifiedRules.mjs +8 -2
- package/validation/validate.js +1 -1
- package/validation/validate.mjs +1 -1
- package/jsutils/find.js +0 -22
- package/jsutils/find.js.flow +0 -19
- package/jsutils/find.mjs +0 -15
package/type/validate.js
CHANGED
|
@@ -6,6 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.validateSchema = validateSchema;
|
|
7
7
|
exports.assertValidSchema = assertValidSchema;
|
|
8
8
|
|
|
9
|
+
var _find = _interopRequireDefault(require("../polyfills/find"));
|
|
10
|
+
|
|
11
|
+
var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
|
|
12
|
+
|
|
13
|
+
var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries"));
|
|
14
|
+
|
|
9
15
|
var _definition = require("./definition");
|
|
10
16
|
|
|
11
17
|
var _directives = require("./directives");
|
|
@@ -16,12 +22,6 @@ var _schema = require("./schema");
|
|
|
16
22
|
|
|
17
23
|
var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
|
|
18
24
|
|
|
19
|
-
var _find = _interopRequireDefault(require("../jsutils/find"));
|
|
20
|
-
|
|
21
|
-
var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
|
|
22
|
-
|
|
23
|
-
var _objectValues = _interopRequireDefault(require("../jsutils/objectValues"));
|
|
24
|
-
|
|
25
25
|
var _GraphQLError = require("../error/GraphQLError");
|
|
26
26
|
|
|
27
27
|
var _assertValidName = require("../utilities/assertValidName");
|
|
@@ -30,7 +30,14 @@ var _typeComparators = require("../utilities/typeComparators");
|
|
|
30
30
|
|
|
31
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Copyright (c) 2015-present, Facebook, Inc.
|
|
35
|
+
*
|
|
36
|
+
* This source code is licensed under the MIT license found in the
|
|
37
|
+
* LICENSE file in the root directory of this source tree.
|
|
38
|
+
*
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
34
41
|
|
|
35
42
|
/**
|
|
36
43
|
* Implements the "Type Validation" sub-sections of the specification's
|
|
@@ -41,7 +48,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
41
48
|
*/
|
|
42
49
|
function validateSchema(schema) {
|
|
43
50
|
// First check to ensure the provided value is in fact a GraphQLSchema.
|
|
44
|
-
|
|
51
|
+
(0, _schema.assertSchema)(schema); // If this Schema has already been validated, return the previous results.
|
|
45
52
|
|
|
46
53
|
if (schema.__validationErrors) {
|
|
47
54
|
return schema.__validationErrors;
|
|
@@ -78,10 +85,6 @@ var SchemaValidationContext =
|
|
|
78
85
|
/*#__PURE__*/
|
|
79
86
|
function () {
|
|
80
87
|
function SchemaValidationContext(schema) {
|
|
81
|
-
_defineProperty(this, "_errors", void 0);
|
|
82
|
-
|
|
83
|
-
_defineProperty(this, "schema", void 0);
|
|
84
|
-
|
|
85
88
|
this._errors = [];
|
|
86
89
|
this.schema = schema;
|
|
87
90
|
}
|
|
@@ -321,15 +324,7 @@ function validateFields(context, type) {
|
|
|
321
324
|
for (var _iterator5 = fields[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
|
322
325
|
var field = _step5.value;
|
|
323
326
|
// Ensure they are named correctly.
|
|
324
|
-
validateName(context, field); // Ensure
|
|
325
|
-
|
|
326
|
-
var fieldNodes = getAllFieldNodes(type, field.name);
|
|
327
|
-
|
|
328
|
-
if (fieldNodes.length > 1) {
|
|
329
|
-
context.reportError("Field ".concat(type.name, ".").concat(field.name, " can only be defined once."), fieldNodes);
|
|
330
|
-
continue;
|
|
331
|
-
} // Ensure the type is an output type
|
|
332
|
-
|
|
327
|
+
validateName(context, field); // Ensure the type is an output type
|
|
333
328
|
|
|
334
329
|
if (!(0, _definition.isOutputType)(field.type)) {
|
|
335
330
|
context.reportError("The type of ".concat(type.name, ".").concat(field.name, " must be Output Type ") + "but got: ".concat((0, _inspect.default)(field.type), "."), getFieldTypeNode(type, field.name));
|
|
@@ -432,104 +427,122 @@ function validateObjectImplementsInterface(context, object, iface) {
|
|
|
432
427
|
var objectFieldMap = object.getFields();
|
|
433
428
|
var ifaceFieldMap = iface.getFields(); // Assert each interface field is implemented.
|
|
434
429
|
|
|
435
|
-
var
|
|
430
|
+
var _iteratorNormalCompletion8 = true;
|
|
431
|
+
var _didIteratorError8 = false;
|
|
432
|
+
var _iteratorError8 = undefined;
|
|
436
433
|
|
|
437
|
-
|
|
438
|
-
var
|
|
439
|
-
|
|
440
|
-
|
|
434
|
+
try {
|
|
435
|
+
for (var _iterator8 = (0, _objectEntries.default)(ifaceFieldMap)[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
|
|
436
|
+
var _ref2 = _step8.value;
|
|
437
|
+
var fieldName = _ref2[0];
|
|
438
|
+
var ifaceField = _ref2[1];
|
|
439
|
+
var objectField = objectFieldMap[fieldName]; // Assert interface field exists on object.
|
|
440
|
+
|
|
441
|
+
if (!objectField) {
|
|
442
|
+
context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expected but ") + "".concat(object.name, " does not provide it."), [getFieldNode(iface, fieldName)].concat(getAllNodes(object)));
|
|
443
|
+
continue;
|
|
444
|
+
} // Assert interface field type is satisfied by object field type, by being
|
|
445
|
+
// a valid subtype. (covariant)
|
|
441
446
|
|
|
442
|
-
if (!objectField) {
|
|
443
|
-
context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expected but ") + "".concat(object.name, " does not provide it."), [getFieldNode(iface, fieldName)].concat(getAllNodes(object)));
|
|
444
|
-
continue;
|
|
445
|
-
} // Assert interface field type is satisfied by object field type, by being
|
|
446
|
-
// a valid subtype. (covariant)
|
|
447
447
|
|
|
448
|
+
if (!(0, _typeComparators.isTypeSubTypeOf)(context.schema, objectField.type, ifaceField.type)) {
|
|
449
|
+
context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expects type ") + "".concat((0, _inspect.default)(ifaceField.type), " but ").concat(object.name, ".").concat(fieldName, " ") + "is type ".concat((0, _inspect.default)(objectField.type), "."), [getFieldTypeNode(iface, fieldName), getFieldTypeNode(object, fieldName)]);
|
|
450
|
+
} // Assert each interface field arg is implemented.
|
|
448
451
|
|
|
449
|
-
if (!(0, _typeComparators.isTypeSubTypeOf)(context.schema, objectField.type, ifaceField.type)) {
|
|
450
|
-
context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expects type ") + "".concat((0, _inspect.default)(ifaceField.type), " but ").concat(object.name, ".").concat(fieldName, " ") + "is type ".concat((0, _inspect.default)(objectField.type), "."), [getFieldTypeNode(iface, fieldName), getFieldTypeNode(object, fieldName)]);
|
|
451
|
-
} // Assert each interface field arg is implemented.
|
|
452
452
|
|
|
453
|
+
var _iteratorNormalCompletion9 = true;
|
|
454
|
+
var _didIteratorError9 = false;
|
|
455
|
+
var _iteratorError9 = undefined;
|
|
453
456
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
+
try {
|
|
458
|
+
var _loop = function _loop() {
|
|
459
|
+
var ifaceArg = _step9.value;
|
|
460
|
+
var argName = ifaceArg.name;
|
|
461
|
+
var objectArg = (0, _find.default)(objectField.args, function (arg) {
|
|
462
|
+
return arg.name === argName;
|
|
463
|
+
}); // Assert interface field arg exists on object field.
|
|
464
|
+
|
|
465
|
+
if (!objectArg) {
|
|
466
|
+
context.reportError("Interface field argument ".concat(iface.name, ".").concat(fieldName, "(").concat(argName, ":) ") + "expected but ".concat(object.name, ".").concat(fieldName, " does not provide it."), [getFieldArgNode(iface, fieldName, argName), getFieldNode(object, fieldName)]);
|
|
467
|
+
return "continue";
|
|
468
|
+
} // Assert interface field arg type matches object field arg type.
|
|
469
|
+
// (invariant)
|
|
470
|
+
// TODO: change to contravariant?
|
|
457
471
|
|
|
458
|
-
try {
|
|
459
|
-
var _loop = function _loop() {
|
|
460
|
-
var ifaceArg = _step8.value;
|
|
461
|
-
var argName = ifaceArg.name;
|
|
462
|
-
var objectArg = (0, _find.default)(objectField.args, function (arg) {
|
|
463
|
-
return arg.name === argName;
|
|
464
|
-
}); // Assert interface field arg exists on object field.
|
|
465
472
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
} // Assert interface field arg type matches object field arg type.
|
|
470
|
-
// (invariant)
|
|
471
|
-
// TODO: change to contravariant?
|
|
473
|
+
if (!(0, _typeComparators.isEqualType)(ifaceArg.type, objectArg.type)) {
|
|
474
|
+
context.reportError("Interface field argument ".concat(iface.name, ".").concat(fieldName, "(").concat(argName, ":) ") + "expects type ".concat((0, _inspect.default)(ifaceArg.type), " but ") + "".concat(object.name, ".").concat(fieldName, "(").concat(argName, ":) is type ") + "".concat((0, _inspect.default)(objectArg.type), "."), [getFieldArgTypeNode(iface, fieldName, argName), getFieldArgTypeNode(object, fieldName, argName)]);
|
|
475
|
+
} // TODO: validate default values?
|
|
472
476
|
|
|
477
|
+
};
|
|
473
478
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
} // TODO: validate default values?
|
|
479
|
+
for (var _iterator9 = ifaceField.args[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
|
|
480
|
+
var _ret = _loop();
|
|
477
481
|
|
|
478
|
-
|
|
482
|
+
if (_ret === "continue") continue;
|
|
483
|
+
} // Assert additional arguments must not be required.
|
|
479
484
|
|
|
480
|
-
|
|
481
|
-
|
|
485
|
+
} catch (err) {
|
|
486
|
+
_didIteratorError9 = true;
|
|
487
|
+
_iteratorError9 = err;
|
|
488
|
+
} finally {
|
|
489
|
+
try {
|
|
490
|
+
if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
|
|
491
|
+
_iterator9.return();
|
|
492
|
+
}
|
|
493
|
+
} finally {
|
|
494
|
+
if (_didIteratorError9) {
|
|
495
|
+
throw _iteratorError9;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
482
499
|
|
|
483
|
-
|
|
484
|
-
|
|
500
|
+
var _iteratorNormalCompletion10 = true;
|
|
501
|
+
var _didIteratorError10 = false;
|
|
502
|
+
var _iteratorError10 = undefined;
|
|
485
503
|
|
|
486
|
-
} catch (err) {
|
|
487
|
-
_didIteratorError8 = true;
|
|
488
|
-
_iteratorError8 = err;
|
|
489
|
-
} finally {
|
|
490
504
|
try {
|
|
491
|
-
|
|
492
|
-
|
|
505
|
+
var _loop2 = function _loop2() {
|
|
506
|
+
var objectArg = _step10.value;
|
|
507
|
+
var argName = objectArg.name;
|
|
508
|
+
var ifaceArg = (0, _find.default)(ifaceField.args, function (arg) {
|
|
509
|
+
return arg.name === argName;
|
|
510
|
+
});
|
|
511
|
+
|
|
512
|
+
if (!ifaceArg && (0, _definition.isRequiredArgument)(objectArg)) {
|
|
513
|
+
context.reportError("Object field ".concat(object.name, ".").concat(fieldName, " includes required ") + "argument ".concat(argName, " that is missing from the Interface field ") + "".concat(iface.name, ".").concat(fieldName, "."), [getFieldArgNode(object, fieldName, argName), getFieldNode(iface, fieldName)]);
|
|
514
|
+
}
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
for (var _iterator10 = objectField.args[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
|
|
518
|
+
_loop2();
|
|
493
519
|
}
|
|
520
|
+
} catch (err) {
|
|
521
|
+
_didIteratorError10 = true;
|
|
522
|
+
_iteratorError10 = err;
|
|
494
523
|
} finally {
|
|
495
|
-
|
|
496
|
-
|
|
524
|
+
try {
|
|
525
|
+
if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
|
|
526
|
+
_iterator10.return();
|
|
527
|
+
}
|
|
528
|
+
} finally {
|
|
529
|
+
if (_didIteratorError10) {
|
|
530
|
+
throw _iteratorError10;
|
|
531
|
+
}
|
|
497
532
|
}
|
|
498
533
|
}
|
|
499
534
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
535
|
+
} catch (err) {
|
|
536
|
+
_didIteratorError8 = true;
|
|
537
|
+
_iteratorError8 = err;
|
|
538
|
+
} finally {
|
|
505
539
|
try {
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
var argName = objectArg.name;
|
|
509
|
-
var ifaceArg = (0, _find.default)(ifaceField.args, function (arg) {
|
|
510
|
-
return arg.name === argName;
|
|
511
|
-
});
|
|
512
|
-
|
|
513
|
-
if (!ifaceArg && (0, _definition.isRequiredArgument)(objectArg)) {
|
|
514
|
-
context.reportError("Object field ".concat(object.name, ".").concat(fieldName, " includes required ") + "argument ".concat(argName, " that is missing from the Interface field ") + "".concat(iface.name, ".").concat(fieldName, "."), [getFieldArgNode(object, fieldName, argName), getFieldNode(iface, fieldName)]);
|
|
515
|
-
}
|
|
516
|
-
};
|
|
517
|
-
|
|
518
|
-
for (var _iterator9 = objectField.args[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
|
|
519
|
-
_loop2();
|
|
540
|
+
if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
|
|
541
|
+
_iterator8.return();
|
|
520
542
|
}
|
|
521
|
-
} catch (err) {
|
|
522
|
-
_didIteratorError9 = true;
|
|
523
|
-
_iteratorError9 = err;
|
|
524
543
|
} finally {
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
_iterator9.return();
|
|
528
|
-
}
|
|
529
|
-
} finally {
|
|
530
|
-
if (_didIteratorError9) {
|
|
531
|
-
throw _iteratorError9;
|
|
532
|
-
}
|
|
544
|
+
if (_didIteratorError8) {
|
|
545
|
+
throw _iteratorError8;
|
|
533
546
|
}
|
|
534
547
|
}
|
|
535
548
|
}
|
|
@@ -543,13 +556,13 @@ function validateUnionMembers(context, union) {
|
|
|
543
556
|
}
|
|
544
557
|
|
|
545
558
|
var includedTypeNames = Object.create(null);
|
|
546
|
-
var
|
|
547
|
-
var
|
|
548
|
-
var
|
|
559
|
+
var _iteratorNormalCompletion11 = true;
|
|
560
|
+
var _didIteratorError11 = false;
|
|
561
|
+
var _iteratorError11 = undefined;
|
|
549
562
|
|
|
550
563
|
try {
|
|
551
|
-
for (var
|
|
552
|
-
var memberType =
|
|
564
|
+
for (var _iterator11 = memberTypes[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
|
|
565
|
+
var memberType = _step11.value;
|
|
553
566
|
|
|
554
567
|
if (includedTypeNames[memberType.name]) {
|
|
555
568
|
context.reportError("Union type ".concat(union.name, " can only include type ") + "".concat(memberType.name, " once."), getUnionMemberTypeNodes(union, memberType.name));
|
|
@@ -563,16 +576,16 @@ function validateUnionMembers(context, union) {
|
|
|
563
576
|
}
|
|
564
577
|
}
|
|
565
578
|
} catch (err) {
|
|
566
|
-
|
|
567
|
-
|
|
579
|
+
_didIteratorError11 = true;
|
|
580
|
+
_iteratorError11 = err;
|
|
568
581
|
} finally {
|
|
569
582
|
try {
|
|
570
|
-
if (!
|
|
571
|
-
|
|
583
|
+
if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
|
|
584
|
+
_iterator11.return();
|
|
572
585
|
}
|
|
573
586
|
} finally {
|
|
574
|
-
if (
|
|
575
|
-
throw
|
|
587
|
+
if (_didIteratorError11) {
|
|
588
|
+
throw _iteratorError11;
|
|
576
589
|
}
|
|
577
590
|
}
|
|
578
591
|
}
|
|
@@ -585,21 +598,14 @@ function validateEnumValues(context, enumType) {
|
|
|
585
598
|
context.reportError("Enum type ".concat(enumType.name, " must define one or more values."), getAllNodes(enumType));
|
|
586
599
|
}
|
|
587
600
|
|
|
588
|
-
var
|
|
589
|
-
var
|
|
590
|
-
var
|
|
601
|
+
var _iteratorNormalCompletion12 = true;
|
|
602
|
+
var _didIteratorError12 = false;
|
|
603
|
+
var _iteratorError12 = undefined;
|
|
591
604
|
|
|
592
605
|
try {
|
|
593
|
-
for (var
|
|
594
|
-
var enumValue =
|
|
595
|
-
var valueName = enumValue.name; // Ensure
|
|
596
|
-
|
|
597
|
-
var allNodes = getEnumValueNodes(enumType, valueName);
|
|
598
|
-
|
|
599
|
-
if (allNodes && allNodes.length > 1) {
|
|
600
|
-
context.reportError("Enum type ".concat(enumType.name, " can include value ").concat(valueName, " only once."), allNodes);
|
|
601
|
-
} // Ensure valid name.
|
|
602
|
-
|
|
606
|
+
for (var _iterator12 = enumValues[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
|
|
607
|
+
var enumValue = _step12.value;
|
|
608
|
+
var valueName = enumValue.name; // Ensure valid name.
|
|
603
609
|
|
|
604
610
|
validateName(context, enumValue);
|
|
605
611
|
|
|
@@ -608,16 +614,16 @@ function validateEnumValues(context, enumType) {
|
|
|
608
614
|
}
|
|
609
615
|
}
|
|
610
616
|
} catch (err) {
|
|
611
|
-
|
|
612
|
-
|
|
617
|
+
_didIteratorError12 = true;
|
|
618
|
+
_iteratorError12 = err;
|
|
613
619
|
} finally {
|
|
614
620
|
try {
|
|
615
|
-
if (!
|
|
616
|
-
|
|
621
|
+
if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
|
|
622
|
+
_iterator12.return();
|
|
617
623
|
}
|
|
618
624
|
} finally {
|
|
619
|
-
if (
|
|
620
|
-
throw
|
|
625
|
+
if (_didIteratorError12) {
|
|
626
|
+
throw _iteratorError12;
|
|
621
627
|
}
|
|
622
628
|
}
|
|
623
629
|
}
|
|
@@ -631,32 +637,31 @@ function validateInputFields(context, inputObj) {
|
|
|
631
637
|
} // Ensure the arguments are valid
|
|
632
638
|
|
|
633
639
|
|
|
634
|
-
var
|
|
635
|
-
var
|
|
636
|
-
var
|
|
640
|
+
var _iteratorNormalCompletion13 = true;
|
|
641
|
+
var _didIteratorError13 = false;
|
|
642
|
+
var _iteratorError13 = undefined;
|
|
637
643
|
|
|
638
644
|
try {
|
|
639
|
-
for (var
|
|
640
|
-
var field =
|
|
645
|
+
for (var _iterator13 = fields[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
|
|
646
|
+
var field = _step13.value;
|
|
641
647
|
// Ensure they are named correctly.
|
|
642
|
-
validateName(context, field); //
|
|
643
|
-
// Ensure the type is an input type
|
|
648
|
+
validateName(context, field); // Ensure the type is an input type
|
|
644
649
|
|
|
645
650
|
if (!(0, _definition.isInputType)(field.type)) {
|
|
646
651
|
context.reportError("The type of ".concat(inputObj.name, ".").concat(field.name, " must be Input Type ") + "but got: ".concat((0, _inspect.default)(field.type), "."), field.astNode && field.astNode.type);
|
|
647
652
|
}
|
|
648
653
|
}
|
|
649
654
|
} catch (err) {
|
|
650
|
-
|
|
651
|
-
|
|
655
|
+
_didIteratorError13 = true;
|
|
656
|
+
_iteratorError13 = err;
|
|
652
657
|
} finally {
|
|
653
658
|
try {
|
|
654
|
-
if (!
|
|
655
|
-
|
|
659
|
+
if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
|
|
660
|
+
_iterator13.return();
|
|
656
661
|
}
|
|
657
662
|
} finally {
|
|
658
|
-
if (
|
|
659
|
-
throw
|
|
663
|
+
if (_didIteratorError13) {
|
|
664
|
+
throw _iteratorError13;
|
|
660
665
|
}
|
|
661
666
|
}
|
|
662
667
|
}
|
|
@@ -670,13 +675,13 @@ function getAllNodes(object) {
|
|
|
670
675
|
|
|
671
676
|
function getAllSubNodes(object, getter) {
|
|
672
677
|
var result = [];
|
|
673
|
-
var
|
|
674
|
-
var
|
|
675
|
-
var
|
|
678
|
+
var _iteratorNormalCompletion14 = true;
|
|
679
|
+
var _didIteratorError14 = false;
|
|
680
|
+
var _iteratorError14 = undefined;
|
|
676
681
|
|
|
677
682
|
try {
|
|
678
|
-
for (var
|
|
679
|
-
var astNode =
|
|
683
|
+
for (var _iterator14 = getAllNodes(object)[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
|
|
684
|
+
var astNode = _step14.value;
|
|
680
685
|
|
|
681
686
|
if (astNode) {
|
|
682
687
|
var subNodes = getter(astNode);
|
|
@@ -687,16 +692,16 @@ function getAllSubNodes(object, getter) {
|
|
|
687
692
|
}
|
|
688
693
|
}
|
|
689
694
|
} catch (err) {
|
|
690
|
-
|
|
691
|
-
|
|
695
|
+
_didIteratorError14 = true;
|
|
696
|
+
_iteratorError14 = err;
|
|
692
697
|
} finally {
|
|
693
698
|
try {
|
|
694
|
-
if (!
|
|
695
|
-
|
|
699
|
+
if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
|
|
700
|
+
_iterator14.return();
|
|
696
701
|
}
|
|
697
702
|
} finally {
|
|
698
|
-
if (
|
|
699
|
-
throw
|
|
703
|
+
if (_didIteratorError14) {
|
|
704
|
+
throw _iteratorError14;
|
|
700
705
|
}
|
|
701
706
|
}
|
|
702
707
|
}
|
|
@@ -717,13 +722,9 @@ function getAllImplementsInterfaceNodes(type, iface) {
|
|
|
717
722
|
}
|
|
718
723
|
|
|
719
724
|
function getFieldNode(type, fieldName) {
|
|
720
|
-
return
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
function getAllFieldNodes(type, fieldName) {
|
|
724
|
-
return getAllSubNodes(type, function (typeNode) {
|
|
725
|
+
return (0, _find.default)(getAllSubNodes(type, function (typeNode) {
|
|
725
726
|
return typeNode.fields;
|
|
726
|
-
})
|
|
727
|
+
}), function (fieldNode) {
|
|
727
728
|
return fieldNode.name.value === fieldName;
|
|
728
729
|
});
|
|
729
730
|
}
|
|
@@ -742,29 +743,29 @@ function getAllFieldArgNodes(type, fieldName, argName) {
|
|
|
742
743
|
var fieldNode = getFieldNode(type, fieldName);
|
|
743
744
|
|
|
744
745
|
if (fieldNode && fieldNode.arguments) {
|
|
745
|
-
var
|
|
746
|
-
var
|
|
747
|
-
var
|
|
746
|
+
var _iteratorNormalCompletion15 = true;
|
|
747
|
+
var _didIteratorError15 = false;
|
|
748
|
+
var _iteratorError15 = undefined;
|
|
748
749
|
|
|
749
750
|
try {
|
|
750
|
-
for (var
|
|
751
|
-
var node =
|
|
751
|
+
for (var _iterator15 = fieldNode.arguments[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {
|
|
752
|
+
var node = _step15.value;
|
|
752
753
|
|
|
753
754
|
if (node.name.value === argName) {
|
|
754
755
|
argNodes.push(node);
|
|
755
756
|
}
|
|
756
757
|
}
|
|
757
758
|
} catch (err) {
|
|
758
|
-
|
|
759
|
-
|
|
759
|
+
_didIteratorError15 = true;
|
|
760
|
+
_iteratorError15 = err;
|
|
760
761
|
} finally {
|
|
761
762
|
try {
|
|
762
|
-
if (!
|
|
763
|
-
|
|
763
|
+
if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
|
|
764
|
+
_iterator15.return();
|
|
764
765
|
}
|
|
765
766
|
} finally {
|
|
766
|
-
if (
|
|
767
|
-
throw
|
|
767
|
+
if (_didIteratorError15) {
|
|
768
|
+
throw _iteratorError15;
|
|
768
769
|
}
|
|
769
770
|
}
|
|
770
771
|
}
|
|
@@ -797,12 +798,4 @@ function getUnionMemberTypeNodes(union, typeName) {
|
|
|
797
798
|
}).filter(function (typeNode) {
|
|
798
799
|
return typeNode.name.value === typeName;
|
|
799
800
|
});
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
function getEnumValueNodes(enumType, valueName) {
|
|
803
|
-
return getAllSubNodes(enumType, function (enumNode) {
|
|
804
|
-
return enumNode.values;
|
|
805
|
-
}).filter(function (valueNode) {
|
|
806
|
-
return valueNode.name.value === valueName;
|
|
807
|
-
});
|
|
808
801
|
}
|
package/type/validate.js.flow
CHANGED
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import find from '../polyfills/find';
|
|
11
|
+
import objectValues from '../polyfills/objectValues';
|
|
12
|
+
import objectEntries from '../polyfills/objectEntries';
|
|
10
13
|
import {
|
|
11
14
|
isObjectType,
|
|
12
15
|
isInterfaceType,
|
|
@@ -28,17 +31,13 @@ import type {
|
|
|
28
31
|
import { isDirective } from './directives';
|
|
29
32
|
import type { GraphQLDirective } from './directives';
|
|
30
33
|
import { isIntrospectionType } from './introspection';
|
|
31
|
-
import {
|
|
34
|
+
import { assertSchema } from './schema';
|
|
32
35
|
import type { GraphQLSchema } from './schema';
|
|
33
36
|
import inspect from '../jsutils/inspect';
|
|
34
|
-
import find from '../jsutils/find';
|
|
35
|
-
import invariant from '../jsutils/invariant';
|
|
36
|
-
import objectValues from '../jsutils/objectValues';
|
|
37
37
|
import { GraphQLError } from '../error/GraphQLError';
|
|
38
38
|
import type {
|
|
39
39
|
ASTNode,
|
|
40
40
|
FieldDefinitionNode,
|
|
41
|
-
EnumValueDefinitionNode,
|
|
42
41
|
InputValueDefinitionNode,
|
|
43
42
|
NamedTypeNode,
|
|
44
43
|
TypeNode,
|
|
@@ -57,10 +56,7 @@ export function validateSchema(
|
|
|
57
56
|
schema: GraphQLSchema,
|
|
58
57
|
): $ReadOnlyArray<GraphQLError> {
|
|
59
58
|
// First check to ensure the provided value is in fact a GraphQLSchema.
|
|
60
|
-
|
|
61
|
-
isSchema(schema),
|
|
62
|
-
`Expected ${inspect(schema)} to be a GraphQL schema.`,
|
|
63
|
-
);
|
|
59
|
+
assertSchema(schema);
|
|
64
60
|
|
|
65
61
|
// If this Schema has already been validated, return the previous results.
|
|
66
62
|
if (schema.__validationErrors) {
|
|
@@ -284,16 +280,6 @@ function validateFields(
|
|
|
284
280
|
// Ensure they are named correctly.
|
|
285
281
|
validateName(context, field);
|
|
286
282
|
|
|
287
|
-
// Ensure they were defined at most once.
|
|
288
|
-
const fieldNodes = getAllFieldNodes(type, field.name);
|
|
289
|
-
if (fieldNodes.length > 1) {
|
|
290
|
-
context.reportError(
|
|
291
|
-
`Field ${type.name}.${field.name} can only be defined once.`,
|
|
292
|
-
fieldNodes,
|
|
293
|
-
);
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
283
|
// Ensure the type is an output type
|
|
298
284
|
if (!isOutputType(field.type)) {
|
|
299
285
|
context.reportError(
|
|
@@ -369,9 +355,8 @@ function validateObjectImplementsInterface(
|
|
|
369
355
|
const ifaceFieldMap = iface.getFields();
|
|
370
356
|
|
|
371
357
|
// Assert each interface field is implemented.
|
|
372
|
-
for (const fieldName of
|
|
358
|
+
for (const [fieldName, ifaceField] of objectEntries(ifaceFieldMap)) {
|
|
373
359
|
const objectField = objectFieldMap[fieldName];
|
|
374
|
-
const ifaceField = ifaceFieldMap[fieldName];
|
|
375
360
|
|
|
376
361
|
// Assert interface field exists on object.
|
|
377
362
|
if (!objectField) {
|
|
@@ -503,15 +488,6 @@ function validateEnumValues(
|
|
|
503
488
|
for (const enumValue of enumValues) {
|
|
504
489
|
const valueName = enumValue.name;
|
|
505
490
|
|
|
506
|
-
// Ensure no duplicates.
|
|
507
|
-
const allNodes = getEnumValueNodes(enumType, valueName);
|
|
508
|
-
if (allNodes && allNodes.length > 1) {
|
|
509
|
-
context.reportError(
|
|
510
|
-
`Enum type ${enumType.name} can include value ${valueName} only once.`,
|
|
511
|
-
allNodes,
|
|
512
|
-
);
|
|
513
|
-
}
|
|
514
|
-
|
|
515
491
|
// Ensure valid name.
|
|
516
492
|
validateName(context, enumValue);
|
|
517
493
|
if (valueName === 'true' || valueName === 'false' || valueName === 'null') {
|
|
@@ -541,8 +517,6 @@ function validateInputFields(
|
|
|
541
517
|
// Ensure they are named correctly.
|
|
542
518
|
validateName(context, field);
|
|
543
519
|
|
|
544
|
-
// TODO: Ensure they are unique per field.
|
|
545
|
-
|
|
546
520
|
// Ensure the type is an input type
|
|
547
521
|
if (!isInputType(field.type)) {
|
|
548
522
|
context.reportError(
|
|
@@ -606,14 +580,8 @@ function getFieldNode(
|
|
|
606
580
|
type: GraphQLObjectType | GraphQLInterfaceType,
|
|
607
581
|
fieldName: string,
|
|
608
582
|
): ?FieldDefinitionNode {
|
|
609
|
-
return
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
function getAllFieldNodes(
|
|
613
|
-
type: GraphQLObjectType | GraphQLInterfaceType,
|
|
614
|
-
fieldName: string,
|
|
615
|
-
): $ReadOnlyArray<FieldDefinitionNode> {
|
|
616
|
-
return getAllSubNodes(type, typeNode => typeNode.fields).filter(
|
|
583
|
+
return find(
|
|
584
|
+
getAllSubNodes(type, typeNode => typeNode.fields),
|
|
617
585
|
fieldNode => fieldNode.name.value === fieldName,
|
|
618
586
|
);
|
|
619
587
|
}
|
|
@@ -686,12 +654,3 @@ function getUnionMemberTypeNodes(
|
|
|
686
654
|
typeNode => typeNode.name.value === typeName,
|
|
687
655
|
);
|
|
688
656
|
}
|
|
689
|
-
|
|
690
|
-
function getEnumValueNodes(
|
|
691
|
-
enumType: GraphQLEnumType,
|
|
692
|
-
valueName: string,
|
|
693
|
-
): ?$ReadOnlyArray<EnumValueDefinitionNode> {
|
|
694
|
-
return getAllSubNodes(enumType, enumNode => enumNode.values).filter(
|
|
695
|
-
valueNode => valueNode.name.value === valueName,
|
|
696
|
-
);
|
|
697
|
-
}
|