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
@@ -4,9 +4,10 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
  import inspect from '../jsutils/inspect';
10
+ import defineToJSON from '../jsutils/defineToJSON';
10
11
  import { Source } from './source';
11
12
  import { syntaxError } from '../error';
12
13
  import { createLexer, TokenKind, getTokenDesc } from './lexer';
@@ -232,23 +233,12 @@ function parseVariableDefinitions(lexer) {
232
233
 
233
234
  function parseVariableDefinition(lexer) {
234
235
  var start = lexer.token;
235
-
236
- if (lexer.options.experimentalVariableDefinitionDirectives) {
237
- return {
238
- kind: Kind.VARIABLE_DEFINITION,
239
- variable: parseVariable(lexer),
240
- type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),
241
- defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,
242
- directives: parseDirectives(lexer, true),
243
- loc: loc(lexer, start)
244
- };
245
- }
246
-
247
236
  return {
248
237
  kind: Kind.VARIABLE_DEFINITION,
249
238
  variable: parseVariable(lexer),
250
239
  type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),
251
240
  defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,
241
+ directives: parseDirectives(lexer, true),
252
242
  loc: loc(lexer, start)
253
243
  };
254
244
  }
@@ -366,8 +356,9 @@ function parseConstArgument(lexer) {
366
356
  function parseFragment(lexer) {
367
357
  var start = lexer.token;
368
358
  expect(lexer, TokenKind.SPREAD);
359
+ var hasTypeCondition = skipKeyword(lexer, 'on');
369
360
 
370
- if (peek(lexer, TokenKind.NAME) && lexer.token.value !== 'on') {
361
+ if (!hasTypeCondition && peek(lexer, TokenKind.NAME)) {
371
362
  return {
372
363
  kind: Kind.FRAGMENT_SPREAD,
373
364
  name: parseFragmentName(lexer),
@@ -376,16 +367,9 @@ function parseFragment(lexer) {
376
367
  };
377
368
  }
378
369
 
379
- var typeCondition;
380
-
381
- if (lexer.token.value === 'on') {
382
- lexer.advance();
383
- typeCondition = parseNamedType(lexer);
384
- }
385
-
386
370
  return {
387
371
  kind: Kind.INLINE_FRAGMENT,
388
- typeCondition: typeCondition,
372
+ typeCondition: hasTypeCondition ? parseNamedType(lexer) : undefined,
389
373
  directives: parseDirectives(lexer, false),
390
374
  selectionSet: parseSelectionSet(lexer),
391
375
  loc: loc(lexer, start)
@@ -822,9 +806,8 @@ function parseObjectTypeDefinition(lexer) {
822
806
  function parseImplementsInterfaces(lexer) {
823
807
  var types = [];
824
808
 
825
- if (lexer.token.value === 'implements') {
826
- lexer.advance(); // Optional leading ampersand
827
-
809
+ if (skipKeyword(lexer, 'implements')) {
810
+ // Optional leading ampersand
828
811
  skip(lexer, TokenKind.AMP);
829
812
 
830
813
  do {
@@ -1395,17 +1378,16 @@ function Loc(startToken, endToken, source) {
1395
1378
  } // Print a simplified form when appearing in JSON/util.inspect.
1396
1379
 
1397
1380
 
1398
- Loc.prototype.toJSON = Loc.prototype.inspect = function toJSON() {
1381
+ defineToJSON(Loc, function () {
1399
1382
  return {
1400
1383
  start: this.start,
1401
1384
  end: this.end
1402
1385
  };
1403
- };
1386
+ });
1404
1387
  /**
1405
1388
  * Determines if the next token is of a given kind
1406
1389
  */
1407
1390
 
1408
-
1409
1391
  function peek(lexer, kind) {
1410
1392
  return lexer.token.kind === kind;
1411
1393
  }
@@ -1416,13 +1398,12 @@ function peek(lexer, kind) {
1416
1398
 
1417
1399
 
1418
1400
  function skip(lexer, kind) {
1419
- var match = lexer.token.kind === kind;
1420
-
1421
- if (match) {
1401
+ if (lexer.token.kind === kind) {
1422
1402
  lexer.advance();
1403
+ return true;
1423
1404
  }
1424
1405
 
1425
- return match;
1406
+ return false;
1426
1407
  }
1427
1408
  /**
1428
1409
  * If the next token is of the given kind, return that token after advancing
@@ -1441,21 +1422,32 @@ function expect(lexer, kind) {
1441
1422
  throw syntaxError(lexer.source, token.start, "Expected ".concat(kind, ", found ").concat(getTokenDesc(token)));
1442
1423
  }
1443
1424
  /**
1444
- * If the next token is a keyword with the given value, return that token after
1445
- * advancing the lexer. Otherwise, do not change the parser state and return
1446
- * false.
1425
+ * If the next token is a keyword with the given value, return true after advancing
1426
+ * the lexer. Otherwise, do not change the parser state and return false.
1447
1427
  */
1448
1428
 
1449
1429
 
1450
- function expectKeyword(lexer, value) {
1430
+ function skipKeyword(lexer, value) {
1451
1431
  var token = lexer.token;
1452
1432
 
1453
1433
  if (token.kind === TokenKind.NAME && token.value === value) {
1454
1434
  lexer.advance();
1455
- return token;
1435
+ return true;
1456
1436
  }
1457
1437
 
1458
- throw syntaxError(lexer.source, token.start, "Expected \"".concat(value, "\", found ").concat(getTokenDesc(token)));
1438
+ return false;
1439
+ }
1440
+ /**
1441
+ * If the next token is a keyword with the given value, return that token after
1442
+ * advancing the lexer. Otherwise, do not change the parser state and throw
1443
+ * an error.
1444
+ */
1445
+
1446
+
1447
+ function expectKeyword(lexer, value) {
1448
+ if (!skipKeyword(lexer, value)) {
1449
+ throw syntaxError(lexer.source, lexer.token.start, "Expected \"".concat(value, "\", found ").concat(getTokenDesc(lexer.token)));
1450
+ }
1459
1451
  }
1460
1452
  /**
1461
1453
  * Helper function for creating an error when an unexpected lexed token
@@ -21,7 +21,7 @@ var _kinds = require("./kinds");
21
21
  * This source code is licensed under the MIT license found in the
22
22
  * LICENSE file in the root directory of this source tree.
23
23
  *
24
- * strict
24
+ *
25
25
  */
26
26
  function isDefinitionNode(node) {
27
27
  return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
  import { Kind } from './kinds';
10
10
  export function isDefinitionNode(node) {
@@ -12,6 +12,8 @@ var _visitor = require("./visitor");
12
12
  *
13
13
  * This source code is licensed under the MIT license found in the
14
14
  * LICENSE file in the root directory of this source tree.
15
+ *
16
+ *
15
17
  */
16
18
 
17
19
  /**
@@ -177,9 +179,7 @@ var printDocASTReducer = {
177
179
  args = _ref24.arguments,
178
180
  type = _ref24.type,
179
181
  directives = _ref24.directives;
180
- return name + (args.every(function (arg) {
181
- return arg.indexOf('\n') === -1;
182
- }) ? wrap('(', join(args, ', '), ')') : wrap('(\n', indent(join(args, '\n')), '\n)')) + ': ' + type + wrap(' ', join(directives, ' '));
182
+ return name + (hasMultilineItems(args) ? wrap('(\n', indent(join(args, '\n')), '\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));
183
183
  }),
184
184
  InputValueDefinition: addDescription(function (_ref25) {
185
185
  var name = _ref25.name,
@@ -221,9 +221,7 @@ var printDocASTReducer = {
221
221
  var name = _ref31.name,
222
222
  args = _ref31.arguments,
223
223
  locations = _ref31.locations;
224
- return 'directive @' + name + (args.every(function (arg) {
225
- return arg.indexOf('\n') === -1;
226
- }) ? wrap('(', join(args, ', '), ')') : wrap('(\n', indent(join(args, '\n')), '\n)')) + ' on ' + join(locations, ' | ');
224
+ return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\n', indent(join(args, '\n')), '\n)') : wrap('(', join(args, ', '), ')')) + ' on ' + join(locations, ' | ');
227
225
  }),
228
226
  SchemaExtension: function SchemaExtension(_ref32) {
229
227
  var directives = _ref32.directives,
@@ -306,6 +304,14 @@ function wrap(start, maybeString, end) {
306
304
  function indent(maybeString) {
307
305
  return maybeString && ' ' + maybeString.replace(/\n/g, '\n ');
308
306
  }
307
+
308
+ function isMultiline(string) {
309
+ return string.indexOf('\n') !== -1;
310
+ }
311
+
312
+ function hasMultilineItems(maybeArray) {
313
+ return maybeArray && maybeArray.some(isMultiline);
314
+ }
309
315
  /**
310
316
  * Print a block string in the indented block form by adding a leading and
311
317
  * trailing blank line. However, if a block string starts with whitespace and is
@@ -315,5 +321,5 @@ function indent(maybeString) {
315
321
 
316
322
  function printBlockString(value, isDescription) {
317
323
  var escaped = value.replace(/"""/g, '\\"""');
318
- return (value[0] === ' ' || value[0] === '\t') && value.indexOf('\n') === -1 ? "\"\"\"".concat(escaped.replace(/"$/, '"\n'), "\"\"\"") : "\"\"\"\n".concat(isDescription ? escaped : indent(escaped), "\n\"\"\"");
324
+ return isMultiline(value) || value[0] !== ' ' && value[0] !== '\t' ? "\"\"\"\n".concat(isDescription ? escaped : indent(escaped), "\n\"\"\"") : "\"\"\"".concat(escaped.replace(/"$/, '"\n'), "\"\"\"");
319
325
  }
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @noflow
6
8
  */
7
9
 
8
10
  import { visit } from './visitor';
@@ -134,9 +136,9 @@ const printDocASTReducer = {
134
136
  FieldDefinition: addDescription(
135
137
  ({ name, arguments: args, type, directives }) =>
136
138
  name +
137
- (args.every(arg => arg.indexOf('\n') === -1)
138
- ? wrap('(', join(args, ', '), ')')
139
- : wrap('(\n', indent(join(args, '\n')), '\n)')) +
139
+ (hasMultilineItems(args)
140
+ ? wrap('(\n', indent(join(args, '\n')), '\n)')
141
+ : wrap('(', join(args, ', '), ')')) +
140
142
  ': ' +
141
143
  type +
142
144
  wrap(' ', join(directives, ' ')),
@@ -182,9 +184,9 @@ const printDocASTReducer = {
182
184
  ({ name, arguments: args, locations }) =>
183
185
  'directive @' +
184
186
  name +
185
- (args.every(arg => arg.indexOf('\n') === -1)
186
- ? wrap('(', join(args, ', '), ')')
187
- : wrap('(\n', indent(join(args, '\n')), '\n)')) +
187
+ (hasMultilineItems(args)
188
+ ? wrap('(\n', indent(join(args, '\n')), '\n)')
189
+ : wrap('(', join(args, ', '), ')')) +
188
190
  ' on ' +
189
191
  join(locations, ' | '),
190
192
  ),
@@ -262,6 +264,14 @@ function indent(maybeString) {
262
264
  return maybeString && ' ' + maybeString.replace(/\n/g, '\n ');
263
265
  }
264
266
 
267
+ function isMultiline(string) {
268
+ return string.indexOf('\n') !== -1;
269
+ }
270
+
271
+ function hasMultilineItems(maybeArray) {
272
+ return maybeArray && maybeArray.some(isMultiline);
273
+ }
274
+
265
275
  /**
266
276
  * Print a block string in the indented block form by adding a leading and
267
277
  * trailing blank line. However, if a block string starts with whitespace and is
@@ -269,7 +279,7 @@ function indent(maybeString) {
269
279
  */
270
280
  function printBlockString(value, isDescription) {
271
281
  const escaped = value.replace(/"""/g, '\\"""');
272
- return (value[0] === ' ' || value[0] === '\t') && value.indexOf('\n') === -1
273
- ? `"""${escaped.replace(/"$/, '"\n')}"""`
274
- : `"""\n${isDescription ? escaped : indent(escaped)}\n"""`;
282
+ return isMultiline(value) || (value[0] !== ' ' && value[0] !== '\t')
283
+ ? `"""\n${isDescription ? escaped : indent(escaped)}\n"""`
284
+ : `"""${escaped.replace(/"$/, '"\n')}"""`;
275
285
  }
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
6
8
  */
7
9
  import { visit } from './visitor';
8
10
  /**
@@ -168,9 +170,7 @@ var printDocASTReducer = {
168
170
  args = _ref24.arguments,
169
171
  type = _ref24.type,
170
172
  directives = _ref24.directives;
171
- return name + (args.every(function (arg) {
172
- return arg.indexOf('\n') === -1;
173
- }) ? wrap('(', join(args, ', '), ')') : wrap('(\n', indent(join(args, '\n')), '\n)')) + ': ' + type + wrap(' ', join(directives, ' '));
173
+ return name + (hasMultilineItems(args) ? wrap('(\n', indent(join(args, '\n')), '\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));
174
174
  }),
175
175
  InputValueDefinition: addDescription(function (_ref25) {
176
176
  var name = _ref25.name,
@@ -212,9 +212,7 @@ var printDocASTReducer = {
212
212
  var name = _ref31.name,
213
213
  args = _ref31.arguments,
214
214
  locations = _ref31.locations;
215
- return 'directive @' + name + (args.every(function (arg) {
216
- return arg.indexOf('\n') === -1;
217
- }) ? wrap('(', join(args, ', '), ')') : wrap('(\n', indent(join(args, '\n')), '\n)')) + ' on ' + join(locations, ' | ');
215
+ return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\n', indent(join(args, '\n')), '\n)') : wrap('(', join(args, ', '), ')')) + ' on ' + join(locations, ' | ');
218
216
  }),
219
217
  SchemaExtension: function SchemaExtension(_ref32) {
220
218
  var directives = _ref32.directives,
@@ -297,6 +295,14 @@ function wrap(start, maybeString, end) {
297
295
  function indent(maybeString) {
298
296
  return maybeString && ' ' + maybeString.replace(/\n/g, '\n ');
299
297
  }
298
+
299
+ function isMultiline(string) {
300
+ return string.indexOf('\n') !== -1;
301
+ }
302
+
303
+ function hasMultilineItems(maybeArray) {
304
+ return maybeArray && maybeArray.some(isMultiline);
305
+ }
300
306
  /**
301
307
  * Print a block string in the indented block form by adding a leading and
302
308
  * trailing blank line. However, if a block string starts with whitespace and is
@@ -306,5 +312,5 @@ function indent(maybeString) {
306
312
 
307
313
  function printBlockString(value, isDescription) {
308
314
  var escaped = value.replace(/"""/g, '\\"""');
309
- return (value[0] === ' ' || value[0] === '\t') && value.indexOf('\n') === -1 ? "\"\"\"".concat(escaped.replace(/"$/, '"\n'), "\"\"\"") : "\"\"\"\n".concat(isDescription ? escaped : indent(escaped), "\n\"\"\"");
315
+ return isMultiline(value) || value[0] !== ' ' && value[0] !== '\t' ? "\"\"\"\n".concat(isDescription ? escaped : indent(escaped), "\n\"\"\"") : "\"\"\"".concat(escaped.replace(/"$/, '"\n'), "\"\"\"");
310
316
  }
@@ -11,7 +11,14 @@ var _defineToStringTag = _interopRequireDefault(require("../jsutils/defineToStri
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- 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; }
14
+ /**
15
+ * Copyright (c) 2015-present, Facebook, Inc.
16
+ *
17
+ * This source code is licensed under the MIT license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ *
20
+ *
21
+ */
15
22
 
16
23
  /**
17
24
  * A representation of source input to GraphQL.
@@ -22,12 +29,6 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
22
29
  * line and column in locationOffset are 1-indexed
23
30
  */
24
31
  var Source = function Source(body, name, locationOffset) {
25
- _defineProperty(this, "body", void 0);
26
-
27
- _defineProperty(this, "name", void 0);
28
-
29
- _defineProperty(this, "locationOffset", void 0);
30
-
31
32
  this.body = body;
32
33
  this.name = name || 'GraphQL request';
33
34
  this.locationOffset = locationOffset || {
@@ -1,12 +1,10 @@
1
- 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; }
2
-
3
1
  /**
4
2
  * Copyright (c) 2015-present, Facebook, Inc.
5
3
  *
6
4
  * This source code is licensed under the MIT license found in the
7
5
  * LICENSE file in the root directory of this source tree.
8
6
  *
9
- * strict
7
+ *
10
8
  */
11
9
  import invariant from '../jsutils/invariant';
12
10
  import defineToStringTag from '../jsutils/defineToStringTag';
@@ -20,12 +18,6 @@ import defineToStringTag from '../jsutils/defineToStringTag';
20
18
  * line and column in locationOffset are 1-indexed
21
19
  */
22
20
  export var Source = function Source(body, name, locationOffset) {
23
- _defineProperty(this, "body", void 0);
24
-
25
- _defineProperty(this, "name", void 0);
26
-
27
- _defineProperty(this, "locationOffset", void 0);
28
-
29
21
  this.body = body;
30
22
  this.name = name || 'GraphQL request';
31
23
  this.locationOffset = locationOffset || {
@@ -19,7 +19,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
19
  * This source code is licensed under the MIT license found in the
20
20
  * LICENSE file in the root directory of this source tree.
21
21
  *
22
- * strict
22
+ *
23
23
  */
24
24
  var QueryDocumentKeys = {
25
25
  Name: [],
@@ -192,10 +192,11 @@ function visit(root, visitor) {
192
192
  } else {
193
193
  var clone = {};
194
194
 
195
- for (var k in node) {
196
- if (node.hasOwnProperty(k)) {
197
- clone[k] = node[k];
198
- }
195
+ var _arr = Object.keys(node);
196
+
197
+ for (var _i = 0; _i < _arr.length; _i++) {
198
+ var k = _arr[_i];
199
+ clone[k] = node[k];
199
200
  }
200
201
 
201
202
  node = clone;
@@ -256,10 +256,8 @@ export function visit(
256
256
  node = node.slice();
257
257
  } else {
258
258
  const clone = {};
259
- for (const k in node) {
260
- if (node.hasOwnProperty(k)) {
261
- clone[k] = node[k];
262
- }
259
+ for (const k of Object.keys(node)) {
260
+ clone[k] = node[k];
263
261
  }
264
262
  node = clone;
265
263
  }
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
  import inspect from '../jsutils/inspect';
10
10
  export var QueryDocumentKeys = {
@@ -175,10 +175,11 @@ export function visit(root, visitor) {
175
175
  } else {
176
176
  var clone = {};
177
177
 
178
- for (var k in node) {
179
- if (node.hasOwnProperty(k)) {
180
- clone[k] = node[k];
181
- }
178
+ var _arr = Object.keys(node);
179
+
180
+ for (var _i = 0; _i < _arr.length; _i++) {
181
+ var k = _arr[_i];
182
+ clone[k] = node[k];
182
183
  }
183
184
 
184
185
  node = clone;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql",
3
- "version": "14.0.2",
3
+ "version": "14.1.0",
4
4
  "description": "A Query Language and Runtime which can target any service.",
5
5
  "license": "MIT",
6
6
  "main": "index",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "http://github.com/graphql/graphql-js.git"
15
+ "url": "https://github.com/graphql/graphql-js.git"
16
16
  },
17
17
  "keywords": [
18
18
  "graphql",
@@ -23,5 +23,8 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "iterall": "^1.2.2"
26
+ },
27
+ "publishConfig": {
28
+ "tag": "latest"
26
29
  }
27
30
  }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ /**
9
+ * Copyright (c) 2015-present, Facebook, Inc.
10
+ *
11
+ * This source code is licensed under the MIT license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ *
14
+ *
15
+ */
16
+
17
+ /* eslint-disable no-redeclare */
18
+ // $FlowFixMe
19
+ var find = Array.prototype.find ? function (list, predicate) {
20
+ return Array.prototype.find.call(list, predicate);
21
+ } : function (list, predicate) {
22
+ for (var i = 0; i < list.length; i++) {
23
+ var value = list[i];
24
+
25
+ if (predicate(value)) {
26
+ return value;
27
+ }
28
+ }
29
+ };
30
+ var _default = find;
31
+ exports.default = _default;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ declare function find<T>(
11
+ list: $ReadOnlyArray<T>,
12
+ predicate: (item: T) => boolean,
13
+ ): T | void;
14
+
15
+ /* eslint-disable no-redeclare */
16
+ // $FlowFixMe
17
+ const find = Array.prototype.find
18
+ ? function(list, predicate) {
19
+ return Array.prototype.find.call(list, predicate);
20
+ }
21
+ : function(list, predicate) {
22
+ for (let i = 0; i < list.length; i++) {
23
+ const value = list[i];
24
+ if (predicate(value)) {
25
+ return value;
26
+ }
27
+ }
28
+ };
29
+ export default find;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2015-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ */
9
+
10
+ /* eslint-disable no-redeclare */
11
+ // $FlowFixMe
12
+ var find = Array.prototype.find ? function (list, predicate) {
13
+ return Array.prototype.find.call(list, predicate);
14
+ } : function (list, predicate) {
15
+ for (var i = 0; i < list.length; i++) {
16
+ var value = list[i];
17
+
18
+ if (predicate(value)) {
19
+ return value;
20
+ }
21
+ }
22
+ };
23
+ export default find;
@@ -11,7 +11,7 @@ exports.default = void 0;
11
11
  * This source code is licensed under the MIT license found in the
12
12
  * LICENSE file in the root directory of this source tree.
13
13
  *
14
- * strict
14
+ *
15
15
  */
16
16
 
17
17
  /* eslint-disable no-redeclare */
File without changes
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
 
10
10
  /* eslint-disable no-redeclare */
@@ -11,7 +11,7 @@ exports.default = void 0;
11
11
  * This source code is licensed under the MIT license found in the
12
12
  * LICENSE file in the root directory of this source tree.
13
13
  *
14
- * strict
14
+ *
15
15
  */
16
16
 
17
17
  /* eslint-disable no-redeclare */
File without changes
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
 
10
10
  /* eslint-disable no-redeclare */
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ /**
9
+ * Copyright (c) 2019-present, Facebook, Inc.
10
+ *
11
+ * This source code is licensed under the MIT license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ *
14
+ *
15
+ */
16
+
17
+ /* eslint-disable no-redeclare */
18
+ // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838
19
+ var objectEntries = Object.entries || function (obj) {
20
+ return Object.keys(obj).map(function (key) {
21
+ return [key, obj[key]];
22
+ });
23
+ };
24
+
25
+ var _default = objectEntries;
26
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) 2019-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ import type { ObjMap } from '../jsutils/ObjMap';
11
+
12
+ declare function objectEntries<T>(obj: ObjMap<T>): Array<[string, T]>;
13
+
14
+ /* eslint-disable no-redeclare */
15
+ // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838
16
+ const objectEntries =
17
+ Object.entries || (obj => Object.keys(obj).map(key => [key, obj[key]]));
18
+
19
+ export default objectEntries;