graphql 14.0.2 → 14.1.0

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.
Files changed (279) hide show
  1. package/README.md +4 -4
  2. package/error/GraphQLError.js +1 -1
  3. package/error/GraphQLError.js.flow +3 -3
  4. package/error/GraphQLError.mjs +1 -1
  5. package/error/formatError.js +1 -1
  6. package/error/formatError.mjs +1 -1
  7. package/error/index.mjs +1 -1
  8. package/error/locatedError.js +1 -1
  9. package/error/locatedError.mjs +1 -1
  10. package/error/printError.js +1 -1
  11. package/error/printError.mjs +1 -1
  12. package/error/syntaxError.js +1 -1
  13. package/error/syntaxError.mjs +1 -1
  14. package/execution/execute.mjs +1 -1
  15. package/execution/index.mjs +1 -1
  16. package/execution/values.js +3 -3
  17. package/execution/values.js.flow +1 -1
  18. package/execution/values.mjs +2 -2
  19. package/graphql.js +1 -1
  20. package/graphql.mjs +1 -1
  21. package/index.js +12 -0
  22. package/index.js.flow +2 -0
  23. package/index.mjs +2 -2
  24. package/jsutils/dedent.js +1 -1
  25. package/jsutils/dedent.mjs +1 -1
  26. package/jsutils/defineToJSON.js +17 -6
  27. package/jsutils/defineToJSON.js.flow +14 -5
  28. package/jsutils/defineToJSON.mjs +14 -6
  29. package/jsutils/defineToStringTag.js +5 -5
  30. package/jsutils/defineToStringTag.js.flow +3 -3
  31. package/jsutils/defineToStringTag.mjs +4 -4
  32. package/jsutils/inspect.js +22 -11
  33. package/jsutils/inspect.js.flow +22 -2
  34. package/jsutils/inspect.mjs +21 -4
  35. package/jsutils/instanceOf.js +1 -1
  36. package/jsutils/instanceOf.mjs +1 -1
  37. package/jsutils/invariant.js +1 -1
  38. package/jsutils/invariant.mjs +1 -1
  39. package/jsutils/isInvalid.js +1 -1
  40. package/jsutils/isInvalid.mjs +1 -1
  41. package/jsutils/isNullish.js +1 -1
  42. package/jsutils/isNullish.mjs +1 -1
  43. package/jsutils/isPromise.js +1 -1
  44. package/jsutils/isPromise.mjs +1 -1
  45. package/jsutils/keyMap.js +1 -1
  46. package/jsutils/keyMap.mjs +1 -1
  47. package/jsutils/keyValMap.js +1 -1
  48. package/jsutils/keyValMap.mjs +1 -1
  49. package/jsutils/mapValue.js +54 -0
  50. package/jsutils/mapValue.js.flow +27 -0
  51. package/jsutils/mapValue.mjs +44 -0
  52. package/jsutils/memoize3.js +1 -1
  53. package/jsutils/memoize3.mjs +1 -1
  54. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  55. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  56. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  57. package/jsutils/orList.js +17 -4
  58. package/jsutils/orList.js.flow +13 -7
  59. package/jsutils/orList.mjs +14 -4
  60. package/jsutils/promiseForObject.js +1 -1
  61. package/jsutils/promiseForObject.mjs +1 -1
  62. package/jsutils/promiseReduce.js +1 -1
  63. package/jsutils/promiseReduce.mjs +1 -1
  64. package/jsutils/quotedOrList.js +1 -1
  65. package/jsutils/quotedOrList.mjs +1 -1
  66. package/jsutils/suggestionList.js +1 -1
  67. package/jsutils/suggestionList.mjs +1 -1
  68. package/language/blockStringValue.js +1 -1
  69. package/language/blockStringValue.mjs +1 -1
  70. package/language/directiveLocation.js +1 -1
  71. package/language/directiveLocation.mjs +1 -1
  72. package/language/index.mjs +1 -1
  73. package/language/kinds.js +1 -1
  74. package/language/kinds.mjs +1 -1
  75. package/language/lexer.js +28 -12
  76. package/language/lexer.js.flow +33 -19
  77. package/language/lexer.mjs +27 -12
  78. package/language/location.js +1 -1
  79. package/language/location.mjs +1 -1
  80. package/language/parser.js +31 -38
  81. package/language/parser.js.flow +32 -48
  82. package/language/parser.mjs +30 -38
  83. package/language/predicates.js +1 -1
  84. package/language/predicates.mjs +1 -1
  85. package/language/printer.js +13 -7
  86. package/language/printer.js.flow +19 -9
  87. package/language/printer.mjs +13 -7
  88. package/language/source.js +8 -7
  89. package/language/source.mjs +1 -9
  90. package/language/visitor.js +6 -5
  91. package/language/visitor.js.flow +2 -4
  92. package/language/visitor.mjs +6 -5
  93. package/package.json +5 -2
  94. package/polyfills/find.js +31 -0
  95. package/polyfills/find.js.flow +29 -0
  96. package/polyfills/find.mjs +23 -0
  97. package/{jsutils → polyfills}/isFinite.js +1 -1
  98. package/{jsutils → polyfills}/isFinite.js.flow +0 -0
  99. package/{jsutils → polyfills}/isFinite.mjs +1 -1
  100. package/{jsutils → polyfills}/isInteger.js +1 -1
  101. package/{jsutils → polyfills}/isInteger.js.flow +0 -0
  102. package/{jsutils → polyfills}/isInteger.mjs +1 -1
  103. package/polyfills/objectEntries.js +26 -0
  104. package/polyfills/objectEntries.js.flow +19 -0
  105. package/polyfills/objectEntries.mjs +18 -0
  106. package/{jsutils → polyfills}/objectValues.js +1 -1
  107. package/{jsutils → polyfills}/objectValues.js.flow +1 -1
  108. package/{jsutils → polyfills}/objectValues.mjs +1 -1
  109. package/subscription/asyncIteratorReject.mjs +1 -1
  110. package/subscription/index.mjs +1 -1
  111. package/subscription/mapAsyncIterator.mjs +1 -1
  112. package/subscription/subscribe.js +1 -1
  113. package/subscription/subscribe.mjs +1 -1
  114. package/type/definition.js +31 -130
  115. package/type/definition.js.flow +35 -47
  116. package/type/definition.mjs +30 -131
  117. package/type/directives.js +25 -29
  118. package/type/directives.js.flow +24 -20
  119. package/type/directives.mjs +22 -30
  120. package/type/index.js +12 -0
  121. package/type/index.js.flow +4 -0
  122. package/type/index.mjs +5 -3
  123. package/type/introspection.js +3 -3
  124. package/type/introspection.js.flow +1 -1
  125. package/type/introspection.mjs +2 -2
  126. package/type/scalars.js +45 -34
  127. package/type/scalars.js.flow +40 -26
  128. package/type/scalars.mjs +44 -26
  129. package/type/schema.js +82 -87
  130. package/type/schema.js.flow +17 -9
  131. package/type/schema.mjs +79 -86
  132. package/type/validate.js +168 -175
  133. package/type/validate.js.flow +8 -49
  134. package/type/validate.mjs +159 -175
  135. package/utilities/TypeInfo.js +10 -23
  136. package/utilities/TypeInfo.js.flow +1 -1
  137. package/utilities/TypeInfo.mjs +2 -24
  138. package/utilities/assertValidName.js +1 -1
  139. package/utilities/assertValidName.mjs +1 -1
  140. package/utilities/astFromValue.js +2 -2
  141. package/utilities/astFromValue.js.flow +1 -1
  142. package/utilities/astFromValue.mjs +2 -2
  143. package/utilities/buildASTSchema.js +53 -53
  144. package/utilities/buildASTSchema.js.flow +14 -30
  145. package/utilities/buildASTSchema.mjs +45 -55
  146. package/utilities/buildClientSchema.js +3 -3
  147. package/utilities/buildClientSchema.js.flow +6 -2
  148. package/utilities/buildClientSchema.mjs +3 -3
  149. package/utilities/coerceValue.js +38 -19
  150. package/utilities/coerceValue.js.flow +41 -47
  151. package/utilities/coerceValue.mjs +38 -20
  152. package/utilities/concatAST.js +1 -1
  153. package/utilities/concatAST.mjs +1 -1
  154. package/utilities/extendSchema.js +228 -312
  155. package/utilities/extendSchema.js.flow +27 -152
  156. package/utilities/extendSchema.mjs +229 -312
  157. package/utilities/findBreakingChanges.js +7 -5
  158. package/utilities/findBreakingChanges.js.flow +3 -2
  159. package/utilities/findBreakingChanges.mjs +6 -5
  160. package/utilities/findDeprecatedUsages.js +1 -1
  161. package/utilities/findDeprecatedUsages.mjs +1 -1
  162. package/utilities/getOperationAST.js +1 -1
  163. package/utilities/getOperationAST.mjs +1 -1
  164. package/utilities/getOperationRootType.js +1 -1
  165. package/utilities/getOperationRootType.mjs +1 -1
  166. package/utilities/index.mjs +1 -1
  167. package/utilities/introspectionFromSchema.js +1 -1
  168. package/utilities/introspectionFromSchema.mjs +1 -1
  169. package/utilities/introspectionQuery.js +1 -1
  170. package/utilities/introspectionQuery.mjs +1 -1
  171. package/utilities/isValidJSValue.js +1 -1
  172. package/utilities/isValidJSValue.mjs +1 -1
  173. package/utilities/isValidLiteralValue.js +1 -1
  174. package/utilities/isValidLiteralValue.mjs +1 -1
  175. package/utilities/lexicographicSortSchema.js +2 -2
  176. package/utilities/lexicographicSortSchema.js.flow +1 -1
  177. package/utilities/lexicographicSortSchema.mjs +2 -2
  178. package/utilities/schemaPrinter.js +3 -3
  179. package/utilities/schemaPrinter.js.flow +1 -1
  180. package/utilities/schemaPrinter.mjs +2 -2
  181. package/utilities/separateOperations.js +1 -1
  182. package/utilities/separateOperations.mjs +1 -1
  183. package/utilities/typeComparators.js +1 -1
  184. package/utilities/typeComparators.mjs +1 -1
  185. package/utilities/typeFromAST.js +1 -1
  186. package/utilities/typeFromAST.mjs +1 -1
  187. package/utilities/valueFromAST.js +3 -3
  188. package/utilities/valueFromAST.js.flow +1 -1
  189. package/utilities/valueFromAST.mjs +2 -2
  190. package/utilities/valueFromASTUntyped.js +1 -1
  191. package/utilities/valueFromASTUntyped.mjs +1 -1
  192. package/validation/ValidationContext.js +57 -82
  193. package/validation/ValidationContext.js.flow +52 -49
  194. package/validation/ValidationContext.mjs +52 -77
  195. package/validation/index.mjs +1 -1
  196. package/validation/rules/ExecutableDefinitions.js +1 -1
  197. package/validation/rules/ExecutableDefinitions.js.flow +1 -1
  198. package/validation/rules/ExecutableDefinitions.mjs +1 -1
  199. package/validation/rules/FieldsOnCorrectType.js +1 -1
  200. package/validation/rules/FieldsOnCorrectType.mjs +1 -1
  201. package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
  202. package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
  203. package/validation/rules/KnownArgumentNames.mjs +1 -1
  204. package/validation/rules/KnownDirectives.js +1 -1
  205. package/validation/rules/KnownDirectives.mjs +1 -1
  206. package/validation/rules/KnownFragmentNames.js +1 -1
  207. package/validation/rules/KnownFragmentNames.mjs +1 -1
  208. package/validation/rules/KnownTypeNames.js +59 -21
  209. package/validation/rules/KnownTypeNames.js.flow +54 -20
  210. package/validation/rules/KnownTypeNames.mjs +56 -21
  211. package/validation/rules/LoneAnonymousOperation.js +1 -1
  212. package/validation/rules/LoneAnonymousOperation.mjs +1 -1
  213. package/validation/rules/LoneSchemaDefinition.js +1 -1
  214. package/validation/rules/LoneSchemaDefinition.mjs +1 -1
  215. package/validation/rules/NoFragmentCycles.js +1 -1
  216. package/validation/rules/NoFragmentCycles.js.flow +2 -2
  217. package/validation/rules/NoFragmentCycles.mjs +1 -1
  218. package/validation/rules/NoUndefinedVariables.js +1 -1
  219. package/validation/rules/NoUndefinedVariables.mjs +1 -1
  220. package/validation/rules/NoUnusedFragments.js +1 -1
  221. package/validation/rules/NoUnusedFragments.js.flow +2 -2
  222. package/validation/rules/NoUnusedFragments.mjs +1 -1
  223. package/validation/rules/NoUnusedVariables.js +1 -1
  224. package/validation/rules/NoUnusedVariables.mjs +1 -1
  225. package/validation/rules/OverlappingFieldsCanBeMerged.js +56 -32
  226. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +3 -3
  227. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +47 -32
  228. package/validation/rules/PossibleFragmentSpreads.js +1 -1
  229. package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
  230. package/validation/rules/PossibleTypeExtensions.js +158 -0
  231. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  232. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  233. package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
  234. package/validation/rules/ScalarLeafs.js +1 -1
  235. package/validation/rules/ScalarLeafs.mjs +1 -1
  236. package/validation/rules/SingleFieldSubscriptions.js +1 -1
  237. package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
  238. package/validation/rules/UniqueArgumentNames.js +1 -1
  239. package/validation/rules/UniqueArgumentNames.mjs +1 -1
  240. package/validation/rules/UniqueDirectiveNames.js +55 -0
  241. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  242. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  243. package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
  244. package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
  245. package/validation/rules/UniqueEnumValueNames.js +94 -0
  246. package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
  247. package/validation/rules/UniqueEnumValueNames.mjs +81 -0
  248. package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
  249. package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
  250. package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
  251. package/validation/rules/UniqueFragmentNames.js +1 -1
  252. package/validation/rules/UniqueFragmentNames.mjs +1 -1
  253. package/validation/rules/UniqueInputFieldNames.js +1 -1
  254. package/validation/rules/UniqueInputFieldNames.mjs +1 -1
  255. package/validation/rules/UniqueOperationNames.js +1 -1
  256. package/validation/rules/UniqueOperationNames.mjs +1 -1
  257. package/validation/rules/UniqueOperationTypes.js +85 -0
  258. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  259. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  260. package/validation/rules/UniqueTypeNames.js +62 -0
  261. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  262. package/validation/rules/UniqueTypeNames.mjs +50 -0
  263. package/validation/rules/UniqueVariableNames.js +1 -1
  264. package/validation/rules/UniqueVariableNames.mjs +1 -1
  265. package/validation/rules/ValuesOfCorrectType.js +29 -13
  266. package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
  267. package/validation/rules/ValuesOfCorrectType.mjs +28 -13
  268. package/validation/rules/VariablesAreInputTypes.js +1 -1
  269. package/validation/rules/VariablesAreInputTypes.mjs +1 -1
  270. package/validation/rules/VariablesInAllowedPosition.js +4 -4
  271. package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
  272. package/validation/specifiedRules.js +14 -2
  273. package/validation/specifiedRules.js.flow +13 -0
  274. package/validation/specifiedRules.mjs +8 -2
  275. package/validation/validate.js +1 -1
  276. package/validation/validate.mjs +1 -1
  277. package/jsutils/find.js +0 -22
  278. package/jsutils/find.js.flow +0 -19
  279. package/jsutils/find.mjs +0 -15
package/type/scalars.js CHANGED
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.isSpecifiedScalarType = isSpecifiedScalarType;
7
7
  exports.specifiedScalarTypes = exports.GraphQLID = exports.GraphQLBoolean = exports.GraphQLString = exports.GraphQLFloat = exports.GraphQLInt = void 0;
8
8
 
9
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
9
+ var _isFinite = _interopRequireDefault(require("../polyfills/isFinite"));
10
10
 
11
- var _isFinite = _interopRequireDefault(require("../jsutils/isFinite"));
11
+ var _isInteger = _interopRequireDefault(require("../polyfills/isInteger"));
12
12
 
13
- var _isInteger = _interopRequireDefault(require("../jsutils/isInteger"));
13
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
14
14
 
15
15
  var _definition = require("./definition");
16
16
 
@@ -18,14 +18,8 @@ var _kinds = require("../language/kinds");
18
18
 
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
 
21
- /**
22
- * Copyright (c) 2015-present, Facebook, Inc.
23
- *
24
- * This source code is licensed under the MIT license found in the
25
- * LICENSE file in the root directory of this source tree.
26
- *
27
- * strict
28
- */
21
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22
+
29
23
  // As per the GraphQL Spec, Integers are only treated as valid when a valid
30
24
  // 32-bit signed integer, providing the broadest support across platforms.
31
25
  //
@@ -115,35 +109,54 @@ function coerceFloat(value) {
115
109
 
116
110
  var GraphQLFloat = new _definition.GraphQLScalarType({
117
111
  name: 'Float',
118
- description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point). ',
112
+ description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). ',
119
113
  serialize: serializeFloat,
120
114
  parseValue: coerceFloat,
121
115
  parseLiteral: function parseLiteral(ast) {
122
116
  return ast.kind === _kinds.Kind.FLOAT || ast.kind === _kinds.Kind.INT ? parseFloat(ast.value) : undefined;
123
117
  }
124
- });
118
+ }); // Support serializing objects with custom valueOf() or toJSON() functions -
119
+ // a common way to represent a complex value which can be represented as
120
+ // a string (ex: MongoDB id objects).
121
+
125
122
  exports.GraphQLFloat = GraphQLFloat;
126
123
 
127
- function serializeString(value) {
128
- // Support serializing objects with custom valueOf() functions - a common way
129
- // to represent an complex value which can be represented as a string
130
- // (ex: MongoDB id objects).
131
- var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value; // Serialize string, boolean and number values to a string, but do not
124
+ function serializeObject(value) {
125
+ if (_typeof(value) === 'object' && value !== null) {
126
+ if (typeof value.valueOf === 'function') {
127
+ var valueOfResult = value.valueOf();
128
+
129
+ if (_typeof(valueOfResult) !== 'object') {
130
+ return valueOfResult;
131
+ }
132
+ }
133
+
134
+ if (typeof value.toJSON === 'function') {
135
+ // $FlowFixMe(>=0.90.0)
136
+ return value.toJSON();
137
+ }
138
+ }
139
+
140
+ return value;
141
+ }
142
+
143
+ function serializeString(rawValue) {
144
+ var value = serializeObject(rawValue); // Serialize string, boolean and number values to a string, but do not
132
145
  // attempt to coerce object, function, symbol, or other types as strings.
133
146
 
134
- if (typeof result === 'string') {
135
- return result;
147
+ if (typeof value === 'string') {
148
+ return value;
136
149
  }
137
150
 
138
- if (typeof result === 'boolean') {
139
- return result ? 'true' : 'false';
151
+ if (typeof value === 'boolean') {
152
+ return value ? 'true' : 'false';
140
153
  }
141
154
 
142
- if ((0, _isFinite.default)(result)) {
143
- return result.toString();
155
+ if ((0, _isFinite.default)(value)) {
156
+ return value.toString();
144
157
  }
145
158
 
146
- throw new TypeError("String cannot represent value: ".concat((0, _inspect.default)(value)));
159
+ throw new TypeError("String cannot represent value: ".concat((0, _inspect.default)(rawValue)));
147
160
  }
148
161
 
149
162
  function coerceString(value) {
@@ -196,20 +209,18 @@ var GraphQLBoolean = new _definition.GraphQLScalarType({
196
209
  });
197
210
  exports.GraphQLBoolean = GraphQLBoolean;
198
211
 
199
- function serializeID(value) {
200
- // Support serializing objects with custom valueOf() functions - a common way
201
- // to represent an object identifier (ex. MongoDB).
202
- var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value;
212
+ function serializeID(rawValue) {
213
+ var value = serializeObject(rawValue);
203
214
 
204
- if (typeof result === 'string') {
205
- return result;
215
+ if (typeof value === 'string') {
216
+ return value;
206
217
  }
207
218
 
208
- if ((0, _isInteger.default)(result)) {
209
- return String(result);
219
+ if ((0, _isInteger.default)(value)) {
220
+ return String(value);
210
221
  }
211
222
 
212
- throw new TypeError("ID cannot represent value: ".concat((0, _inspect.default)(value)));
223
+ throw new TypeError("ID cannot represent value: ".concat((0, _inspect.default)(rawValue)));
213
224
  }
214
225
 
215
226
  function coerceID(value) {
@@ -7,9 +7,9 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import isFinite from '../polyfills/isFinite';
11
+ import isInteger from '../polyfills/isInteger';
10
12
  import inspect from '../jsutils/inspect';
11
- import isFinite from '../jsutils/isFinite';
12
- import isInteger from '../jsutils/isInteger';
13
13
  import { GraphQLScalarType, isNamedType } from './definition';
14
14
  import { Kind } from '../language/kinds';
15
15
 
@@ -107,7 +107,7 @@ export const GraphQLFloat = new GraphQLScalarType({
107
107
  description:
108
108
  'The `Float` scalar type represents signed double-precision fractional ' +
109
109
  'values as specified by ' +
110
- '[IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point). ',
110
+ '[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). ',
111
111
  serialize: serializeFloat,
112
112
  parseValue: coerceFloat,
113
113
  parseLiteral(ast) {
@@ -117,24 +117,40 @@ export const GraphQLFloat = new GraphQLScalarType({
117
117
  },
118
118
  });
119
119
 
120
- function serializeString(value: mixed): string {
121
- // Support serializing objects with custom valueOf() functions - a common way
122
- // to represent an complex value which can be represented as a string
123
- // (ex: MongoDB id objects).
124
- const result =
125
- value && typeof value.valueOf === 'function' ? value.valueOf() : value;
120
+ // Support serializing objects with custom valueOf() or toJSON() functions -
121
+ // a common way to represent a complex value which can be represented as
122
+ // a string (ex: MongoDB id objects).
123
+ function serializeObject(value: mixed): mixed {
124
+ if (typeof value === 'object' && value !== null) {
125
+ if (typeof value.valueOf === 'function') {
126
+ const valueOfResult = value.valueOf();
127
+ if (typeof valueOfResult !== 'object') {
128
+ return valueOfResult;
129
+ }
130
+ }
131
+ if (typeof value.toJSON === 'function') {
132
+ // $FlowFixMe(>=0.90.0)
133
+ return value.toJSON();
134
+ }
135
+ }
136
+ return value;
137
+ }
138
+
139
+ function serializeString(rawValue: mixed): string {
140
+ const value = serializeObject(rawValue);
141
+
126
142
  // Serialize string, boolean and number values to a string, but do not
127
143
  // attempt to coerce object, function, symbol, or other types as strings.
128
- if (typeof result === 'string') {
129
- return result;
144
+ if (typeof value === 'string') {
145
+ return value;
130
146
  }
131
- if (typeof result === 'boolean') {
132
- return result ? 'true' : 'false';
147
+ if (typeof value === 'boolean') {
148
+ return value ? 'true' : 'false';
133
149
  }
134
- if (isFinite(result)) {
135
- return result.toString();
150
+ if (isFinite(value)) {
151
+ return value.toString();
136
152
  }
137
- throw new TypeError(`String cannot represent value: ${inspect(value)}`);
153
+ throw new TypeError(`String cannot represent value: ${inspect(rawValue)}`);
138
154
  }
139
155
 
140
156
  function coerceString(value: mixed): string {
@@ -190,18 +206,16 @@ export const GraphQLBoolean = new GraphQLScalarType({
190
206
  },
191
207
  });
192
208
 
193
- function serializeID(value: mixed): string {
194
- // Support serializing objects with custom valueOf() functions - a common way
195
- // to represent an object identifier (ex. MongoDB).
196
- const result =
197
- value && typeof value.valueOf === 'function' ? value.valueOf() : value;
198
- if (typeof result === 'string') {
199
- return result;
209
+ function serializeID(rawValue: mixed): string {
210
+ const value = serializeObject(rawValue);
211
+
212
+ if (typeof value === 'string') {
213
+ return value;
200
214
  }
201
- if (isInteger(result)) {
202
- return String(result);
215
+ if (isInteger(value)) {
216
+ return String(value);
203
217
  }
204
- throw new TypeError(`ID cannot represent value: ${inspect(value)}`);
218
+ throw new TypeError(`ID cannot represent value: ${inspect(rawValue)}`);
205
219
  }
206
220
 
207
221
  function coerceID(value: mixed): string {
package/type/scalars.mjs CHANGED
@@ -1,14 +1,16 @@
1
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
+
1
3
  /**
2
4
  * Copyright (c) 2015-present, Facebook, Inc.
3
5
  *
4
6
  * This source code is licensed under the MIT license found in the
5
7
  * LICENSE file in the root directory of this source tree.
6
8
  *
7
- * strict
9
+ *
8
10
  */
11
+ import isFinite from '../polyfills/isFinite';
12
+ import isInteger from '../polyfills/isInteger';
9
13
  import inspect from '../jsutils/inspect';
10
- import isFinite from '../jsutils/isFinite';
11
- import isInteger from '../jsutils/isInteger';
12
14
  import { GraphQLScalarType, isNamedType } from './definition';
13
15
  import { Kind } from '../language/kinds'; // As per the GraphQL Spec, Integers are only treated as valid when a valid
14
16
  // 32-bit signed integer, providing the broadest support across platforms.
@@ -99,34 +101,52 @@ function coerceFloat(value) {
99
101
 
100
102
  export var GraphQLFloat = new GraphQLScalarType({
101
103
  name: 'Float',
102
- description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point). ',
104
+ description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). ',
103
105
  serialize: serializeFloat,
104
106
  parseValue: coerceFloat,
105
107
  parseLiteral: function parseLiteral(ast) {
106
108
  return ast.kind === Kind.FLOAT || ast.kind === Kind.INT ? parseFloat(ast.value) : undefined;
107
109
  }
108
- });
110
+ }); // Support serializing objects with custom valueOf() or toJSON() functions -
111
+ // a common way to represent a complex value which can be represented as
112
+ // a string (ex: MongoDB id objects).
113
+
114
+ function serializeObject(value) {
115
+ if (_typeof(value) === 'object' && value !== null) {
116
+ if (typeof value.valueOf === 'function') {
117
+ var valueOfResult = value.valueOf();
118
+
119
+ if (_typeof(valueOfResult) !== 'object') {
120
+ return valueOfResult;
121
+ }
122
+ }
109
123
 
110
- function serializeString(value) {
111
- // Support serializing objects with custom valueOf() functions - a common way
112
- // to represent an complex value which can be represented as a string
113
- // (ex: MongoDB id objects).
114
- var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value; // Serialize string, boolean and number values to a string, but do not
124
+ if (typeof value.toJSON === 'function') {
125
+ // $FlowFixMe(>=0.90.0)
126
+ return value.toJSON();
127
+ }
128
+ }
129
+
130
+ return value;
131
+ }
132
+
133
+ function serializeString(rawValue) {
134
+ var value = serializeObject(rawValue); // Serialize string, boolean and number values to a string, but do not
115
135
  // attempt to coerce object, function, symbol, or other types as strings.
116
136
 
117
- if (typeof result === 'string') {
118
- return result;
137
+ if (typeof value === 'string') {
138
+ return value;
119
139
  }
120
140
 
121
- if (typeof result === 'boolean') {
122
- return result ? 'true' : 'false';
141
+ if (typeof value === 'boolean') {
142
+ return value ? 'true' : 'false';
123
143
  }
124
144
 
125
- if (isFinite(result)) {
126
- return result.toString();
145
+ if (isFinite(value)) {
146
+ return value.toString();
127
147
  }
128
148
 
129
- throw new TypeError("String cannot represent value: ".concat(inspect(value)));
149
+ throw new TypeError("String cannot represent value: ".concat(inspect(rawValue)));
130
150
  }
131
151
 
132
152
  function coerceString(value) {
@@ -177,20 +197,18 @@ export var GraphQLBoolean = new GraphQLScalarType({
177
197
  }
178
198
  });
179
199
 
180
- function serializeID(value) {
181
- // Support serializing objects with custom valueOf() functions - a common way
182
- // to represent an object identifier (ex. MongoDB).
183
- var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value;
200
+ function serializeID(rawValue) {
201
+ var value = serializeObject(rawValue);
184
202
 
185
- if (typeof result === 'string') {
186
- return result;
203
+ if (typeof value === 'string') {
204
+ return value;
187
205
  }
188
206
 
189
- if (isInteger(result)) {
190
- return String(result);
207
+ if (isInteger(value)) {
208
+ return String(value);
191
209
  }
192
210
 
193
- throw new TypeError("ID cannot represent value: ".concat(inspect(value)));
211
+ throw new TypeError("ID cannot represent value: ".concat(inspect(rawValue)));
194
212
  }
195
213
 
196
214
  function coerceID(value) {
package/type/schema.js CHANGED
@@ -4,8 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isSchema = isSchema;
7
+ exports.assertSchema = assertSchema;
7
8
  exports.GraphQLSchema = void 0;
8
9
 
10
+ var _find = _interopRequireDefault(require("../polyfills/find"));
11
+
12
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
13
+
9
14
  var _definition = require("./definition");
10
15
 
11
16
  var _directives = require("./directives");
@@ -16,24 +21,23 @@ var _introspection = require("./introspection");
16
21
 
17
22
  var _defineToStringTag = _interopRequireDefault(require("../jsutils/defineToStringTag"));
18
23
 
19
- var _find = _interopRequireDefault(require("../jsutils/find"));
20
-
21
24
  var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf"));
22
25
 
23
26
  var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
24
27
 
25
- var _objectValues = _interopRequireDefault(require("../jsutils/objectValues"));
26
-
27
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29
 
29
30
  function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
30
31
 
31
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
32
-
33
32
  // eslint-disable-next-line no-redeclare
34
33
  function isSchema(schema) {
35
34
  return (0, _instanceOf.default)(schema, GraphQLSchema);
36
35
  }
36
+
37
+ function assertSchema(schema) {
38
+ !isSchema(schema) ? (0, _invariant.default)(0, "Expected ".concat((0, _inspect.default)(schema), " to be a GraphQL schema.")) : void 0;
39
+ return schema;
40
+ }
37
41
  /**
38
42
  * Schema Definition
39
43
  *
@@ -68,35 +72,14 @@ function () {
68
72
  // Used as a cache for validateSchema().
69
73
  // Referenced by validateSchema().
70
74
  function GraphQLSchema(config) {
71
- _defineProperty(this, "astNode", void 0);
72
-
73
- _defineProperty(this, "extensionASTNodes", void 0);
74
-
75
- _defineProperty(this, "_queryType", void 0);
76
-
77
- _defineProperty(this, "_mutationType", void 0);
78
-
79
- _defineProperty(this, "_subscriptionType", void 0);
80
-
81
- _defineProperty(this, "_directives", void 0);
82
-
83
- _defineProperty(this, "_typeMap", void 0);
84
-
85
- _defineProperty(this, "_implementations", void 0);
86
-
87
- _defineProperty(this, "_possibleTypeMap", void 0);
88
-
89
- _defineProperty(this, "__validationErrors", void 0);
90
-
91
- _defineProperty(this, "__allowedLegacyNames", void 0);
92
-
93
75
  // If this schema was built from a source known to be valid, then it may be
94
76
  // marked with assumeValid to avoid an additional type system validation.
95
77
  if (config && config.assumeValid) {
96
78
  this.__validationErrors = [];
97
79
  } else {
98
- // Otherwise check for common mistakes during construction to produce
80
+ this.__validationErrors = undefined; // Otherwise check for common mistakes during construction to produce
99
81
  // clear and early error messages.
82
+
100
83
  !(_typeof(config) === 'object') ? (0, _invariant.default)(0, 'Must provide configuration object.') : void 0;
101
84
  !(!config.types || Array.isArray(config.types)) ? (0, _invariant.default)(0, "\"types\" must be Array if provided but got: ".concat((0, _inspect.default)(config.types), ".")) : void 0;
102
85
  !(!config.directives || Array.isArray(config.directives)) ? (0, _invariant.default)(0, '"directives" must be Array if provided but got: ' + "".concat((0, _inspect.default)(config.directives), ".")) : void 0;
@@ -126,51 +109,67 @@ function () {
126
109
 
127
110
  typeMap = this._directives.reduce(typeMapDirectiveReducer, typeMap); // Storing the resulting map for reference by the schema.
128
111
 
129
- this._typeMap = typeMap; // Keep track of all implementations by interface name.
112
+ this._typeMap = typeMap;
113
+ this._possibleTypeMap = Object.create(null); // Keep track of all implementations by interface name.
130
114
 
131
115
  this._implementations = Object.create(null);
116
+ var _iteratorNormalCompletion = true;
117
+ var _didIteratorError = false;
118
+ var _iteratorError = undefined;
132
119
 
133
- var _arr = Object.keys(this._typeMap);
134
-
135
- for (var _i = 0; _i < _arr.length; _i++) {
136
- var typeName = _arr[_i];
137
- var type = this._typeMap[typeName];
120
+ try {
121
+ for (var _iterator = (0, _objectValues.default)(this._typeMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
122
+ var type = _step.value;
138
123
 
139
- if ((0, _definition.isObjectType)(type)) {
140
- var _iteratorNormalCompletion = true;
141
- var _didIteratorError = false;
142
- var _iteratorError = undefined;
124
+ if ((0, _definition.isObjectType)(type)) {
125
+ var _iteratorNormalCompletion2 = true;
126
+ var _didIteratorError2 = false;
127
+ var _iteratorError2 = undefined;
143
128
 
144
- try {
145
- for (var _iterator = type.getInterfaces()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
146
- var iface = _step.value;
129
+ try {
130
+ for (var _iterator2 = type.getInterfaces()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
131
+ var iface = _step2.value;
147
132
 
148
- if ((0, _definition.isInterfaceType)(iface)) {
149
- var impls = this._implementations[iface.name];
133
+ if ((0, _definition.isInterfaceType)(iface)) {
134
+ var impls = this._implementations[iface.name];
150
135
 
151
- if (impls) {
152
- impls.push(type);
153
- } else {
154
- this._implementations[iface.name] = [type];
136
+ if (impls) {
137
+ impls.push(type);
138
+ } else {
139
+ this._implementations[iface.name] = [type];
140
+ }
155
141
  }
156
142
  }
157
- }
158
- } catch (err) {
159
- _didIteratorError = true;
160
- _iteratorError = err;
161
- } finally {
162
- try {
163
- if (!_iteratorNormalCompletion && _iterator.return != null) {
164
- _iterator.return();
165
- }
143
+ } catch (err) {
144
+ _didIteratorError2 = true;
145
+ _iteratorError2 = err;
166
146
  } finally {
167
- if (_didIteratorError) {
168
- throw _iteratorError;
147
+ try {
148
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
149
+ _iterator2.return();
150
+ }
151
+ } finally {
152
+ if (_didIteratorError2) {
153
+ throw _iteratorError2;
154
+ }
169
155
  }
170
156
  }
157
+ } else if ((0, _definition.isAbstractType)(type) && !this._implementations[type.name]) {
158
+ this._implementations[type.name] = [];
159
+ }
160
+ }
161
+ } catch (err) {
162
+ _didIteratorError = true;
163
+ _iteratorError = err;
164
+ } finally {
165
+ try {
166
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
167
+ _iterator.return();
168
+ }
169
+ } finally {
170
+ if (_didIteratorError) {
171
+ throw _iteratorError;
171
172
  }
172
- } else if ((0, _definition.isAbstractType)(type) && !this._implementations[type.name]) {
173
- this._implementations[type.name] = [];
174
173
  }
175
174
  }
176
175
  }
@@ -208,10 +207,6 @@ function () {
208
207
  _proto.isPossibleType = function isPossibleType(abstractType, possibleType) {
209
208
  var possibleTypeMap = this._possibleTypeMap;
210
209
 
211
- if (!possibleTypeMap) {
212
- this._possibleTypeMap = possibleTypeMap = Object.create(null);
213
- }
214
-
215
210
  if (!possibleTypeMap[abstractType.name]) {
216
211
  var possibleTypes = this.getPossibleTypes(abstractType);
217
212
  possibleTypeMap[abstractType.name] = possibleTypes.reduce(function (map, type) {
@@ -265,13 +260,13 @@ function typeMapReducer(map, type) {
265
260
  }
266
261
 
267
262
  if ((0, _definition.isObjectType)(type) || (0, _definition.isInterfaceType)(type)) {
268
- var _iteratorNormalCompletion2 = true;
269
- var _didIteratorError2 = false;
270
- var _iteratorError2 = undefined;
263
+ var _iteratorNormalCompletion3 = true;
264
+ var _didIteratorError3 = false;
265
+ var _iteratorError3 = undefined;
271
266
 
272
267
  try {
273
- for (var _iterator2 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
274
- var field = _step2.value;
268
+ for (var _iterator3 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
269
+ var field = _step3.value;
275
270
 
276
271
  if (field.args) {
277
272
  var fieldArgTypes = field.args.map(function (arg) {
@@ -283,42 +278,42 @@ function typeMapReducer(map, type) {
283
278
  reducedMap = typeMapReducer(reducedMap, field.type);
284
279
  }
285
280
  } catch (err) {
286
- _didIteratorError2 = true;
287
- _iteratorError2 = err;
281
+ _didIteratorError3 = true;
282
+ _iteratorError3 = err;
288
283
  } finally {
289
284
  try {
290
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
291
- _iterator2.return();
285
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
286
+ _iterator3.return();
292
287
  }
293
288
  } finally {
294
- if (_didIteratorError2) {
295
- throw _iteratorError2;
289
+ if (_didIteratorError3) {
290
+ throw _iteratorError3;
296
291
  }
297
292
  }
298
293
  }
299
294
  }
300
295
 
301
296
  if ((0, _definition.isInputObjectType)(type)) {
302
- var _iteratorNormalCompletion3 = true;
303
- var _didIteratorError3 = false;
304
- var _iteratorError3 = undefined;
297
+ var _iteratorNormalCompletion4 = true;
298
+ var _didIteratorError4 = false;
299
+ var _iteratorError4 = undefined;
305
300
 
306
301
  try {
307
- for (var _iterator3 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
308
- var _field = _step3.value;
302
+ for (var _iterator4 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
303
+ var _field = _step4.value;
309
304
  reducedMap = typeMapReducer(reducedMap, _field.type);
310
305
  }
311
306
  } catch (err) {
312
- _didIteratorError3 = true;
313
- _iteratorError3 = err;
307
+ _didIteratorError4 = true;
308
+ _iteratorError4 = err;
314
309
  } finally {
315
310
  try {
316
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
317
- _iterator3.return();
311
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
312
+ _iterator4.return();
318
313
  }
319
314
  } finally {
320
- if (_didIteratorError3) {
321
- throw _iteratorError3;
315
+ if (_didIteratorError4) {
316
+ throw _iteratorError4;
322
317
  }
323
318
  }
324
319
  }