graphql 14.0.2 → 14.2.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.
Files changed (361) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -5
  3. package/codecov.yml +14 -0
  4. package/error/GraphQLError.js +2 -2
  5. package/error/GraphQLError.js.flow +4 -4
  6. package/error/GraphQLError.mjs +2 -2
  7. package/error/formatError.js +2 -2
  8. package/error/formatError.js.flow +1 -1
  9. package/error/formatError.mjs +2 -2
  10. package/error/index.js.flow +1 -1
  11. package/error/index.mjs +2 -2
  12. package/error/locatedError.js +2 -2
  13. package/error/locatedError.js.flow +1 -1
  14. package/error/locatedError.mjs +2 -2
  15. package/error/printError.js +2 -2
  16. package/error/printError.js.flow +1 -1
  17. package/error/printError.mjs +2 -2
  18. package/error/syntaxError.js +2 -2
  19. package/error/syntaxError.js.flow +1 -1
  20. package/error/syntaxError.mjs +2 -2
  21. package/execution/execute.js +20 -11
  22. package/execution/execute.js.flow +41 -27
  23. package/execution/execute.mjs +19 -13
  24. package/execution/index.js +6 -0
  25. package/execution/index.js.flow +7 -2
  26. package/execution/index.mjs +3 -3
  27. package/execution/values.js +10 -10
  28. package/execution/values.js.flow +8 -8
  29. package/execution/values.mjs +9 -9
  30. package/graphql.js +8 -8
  31. package/graphql.js.flow +18 -4
  32. package/graphql.mjs +8 -8
  33. package/index.js +18 -0
  34. package/index.js.flow +4 -1
  35. package/index.mjs +4 -4
  36. package/jsutils/ObjMap.js.flow +1 -1
  37. package/jsutils/{MaybePromise.js → PromiseOrValue.js} +0 -0
  38. package/jsutils/{MaybePromise.js.flow → PromiseOrValue.js.flow} +2 -2
  39. package/jsutils/{MaybePromise.mjs → PromiseOrValue.mjs} +0 -0
  40. package/jsutils/dedent.js +2 -2
  41. package/jsutils/dedent.js.flow +1 -1
  42. package/jsutils/dedent.mjs +2 -2
  43. package/jsutils/defineToJSON.js +18 -7
  44. package/jsutils/defineToJSON.js.flow +15 -6
  45. package/jsutils/defineToJSON.mjs +15 -7
  46. package/jsutils/defineToStringTag.js +6 -6
  47. package/jsutils/defineToStringTag.js.flow +4 -4
  48. package/jsutils/defineToStringTag.mjs +5 -5
  49. package/jsutils/inspect.js +109 -23
  50. package/jsutils/inspect.js.flow +112 -14
  51. package/jsutils/inspect.mjs +108 -17
  52. package/jsutils/instanceOf.js +2 -2
  53. package/jsutils/instanceOf.js.flow +1 -1
  54. package/jsutils/instanceOf.mjs +2 -2
  55. package/jsutils/invariant.js +2 -2
  56. package/jsutils/invariant.js.flow +1 -1
  57. package/jsutils/invariant.mjs +2 -2
  58. package/jsutils/isInvalid.js +2 -2
  59. package/jsutils/isInvalid.js.flow +1 -1
  60. package/jsutils/isInvalid.mjs +2 -2
  61. package/jsutils/isNullish.js +2 -2
  62. package/jsutils/isNullish.js.flow +1 -1
  63. package/jsutils/isNullish.mjs +2 -2
  64. package/jsutils/isPromise.js +2 -2
  65. package/jsutils/isPromise.js.flow +1 -1
  66. package/jsutils/isPromise.mjs +2 -2
  67. package/jsutils/keyMap.js +2 -2
  68. package/jsutils/keyMap.js.flow +1 -1
  69. package/jsutils/keyMap.mjs +2 -2
  70. package/jsutils/keyValMap.js +2 -2
  71. package/jsutils/keyValMap.js.flow +1 -1
  72. package/jsutils/keyValMap.mjs +2 -2
  73. package/jsutils/mapValue.js +54 -0
  74. package/jsutils/mapValue.js.flow +27 -0
  75. package/jsutils/mapValue.mjs +44 -0
  76. package/jsutils/memoize3.js +2 -2
  77. package/jsutils/memoize3.js.flow +1 -1
  78. package/jsutils/memoize3.mjs +2 -2
  79. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  80. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  81. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  82. package/jsutils/orList.js +18 -5
  83. package/jsutils/orList.js.flow +14 -8
  84. package/jsutils/orList.mjs +15 -5
  85. package/jsutils/promiseForObject.js +2 -2
  86. package/jsutils/promiseForObject.js.flow +1 -1
  87. package/jsutils/promiseForObject.mjs +2 -2
  88. package/jsutils/promiseReduce.js +2 -2
  89. package/jsutils/promiseReduce.js.flow +5 -5
  90. package/jsutils/promiseReduce.mjs +2 -2
  91. package/jsutils/quotedOrList.js +2 -2
  92. package/jsutils/quotedOrList.js.flow +1 -1
  93. package/jsutils/quotedOrList.mjs +2 -2
  94. package/jsutils/suggestionList.js +2 -2
  95. package/jsutils/suggestionList.js.flow +1 -1
  96. package/jsutils/suggestionList.mjs +2 -2
  97. package/language/ast.js.flow +1 -1
  98. package/language/{blockStringValue.mjs → blockString.js} +39 -3
  99. package/language/{blockStringValue.js.flow → blockString.js.flow} +31 -2
  100. package/language/{blockStringValue.js → blockString.mjs} +31 -10
  101. package/language/directiveLocation.js +2 -2
  102. package/language/directiveLocation.js.flow +1 -1
  103. package/language/directiveLocation.mjs +2 -2
  104. package/language/index.js.flow +1 -1
  105. package/language/index.mjs +2 -2
  106. package/language/kinds.js +2 -2
  107. package/language/kinds.js.flow +1 -1
  108. package/language/kinds.mjs +2 -2
  109. package/language/lexer.js +60 -46
  110. package/language/lexer.js.flow +71 -69
  111. package/language/lexer.mjs +58 -45
  112. package/language/location.js +2 -2
  113. package/language/location.js.flow +1 -1
  114. package/language/location.mjs +2 -2
  115. package/language/parser.js +84 -83
  116. package/language/parser.js.flow +85 -94
  117. package/language/parser.mjs +83 -83
  118. package/language/predicates.js +2 -2
  119. package/language/predicates.js.flow +1 -1
  120. package/language/predicates.mjs +2 -2
  121. package/language/printer.js +15 -17
  122. package/language/printer.js.flow +21 -20
  123. package/language/printer.mjs +14 -17
  124. package/language/source.js +8 -7
  125. package/language/source.js.flow +1 -1
  126. package/language/source.mjs +2 -10
  127. package/language/visitor.js +7 -6
  128. package/language/visitor.js.flow +3 -5
  129. package/language/visitor.mjs +7 -6
  130. package/package.json +5 -2
  131. package/polyfills/find.js +31 -0
  132. package/polyfills/find.js.flow +29 -0
  133. package/polyfills/find.mjs +23 -0
  134. package/polyfills/flatMap.js +38 -0
  135. package/polyfills/flatMap.js.flow +34 -0
  136. package/polyfills/flatMap.mjs +30 -0
  137. package/{jsutils → polyfills}/isFinite.js +2 -2
  138. package/{jsutils → polyfills}/isFinite.js.flow +1 -1
  139. package/{jsutils → polyfills}/isFinite.mjs +2 -2
  140. package/{jsutils → polyfills}/isInteger.js +2 -2
  141. package/{jsutils → polyfills}/isInteger.js.flow +1 -1
  142. package/{jsutils → polyfills}/isInteger.mjs +2 -2
  143. package/polyfills/objectEntries.js +26 -0
  144. package/polyfills/objectEntries.js.flow +19 -0
  145. package/polyfills/objectEntries.mjs +18 -0
  146. package/{jsutils → polyfills}/objectValues.js +2 -2
  147. package/{jsutils → polyfills}/objectValues.js.flow +2 -2
  148. package/{jsutils → polyfills}/objectValues.mjs +2 -2
  149. package/subscription/asyncIteratorReject.js.flow +1 -1
  150. package/subscription/asyncIteratorReject.mjs +2 -2
  151. package/subscription/index.js.flow +1 -1
  152. package/subscription/index.mjs +2 -2
  153. package/subscription/mapAsyncIterator.js.flow +5 -5
  154. package/subscription/mapAsyncIterator.mjs +2 -2
  155. package/subscription/subscribe.js +2 -2
  156. package/subscription/subscribe.js.flow +1 -1
  157. package/subscription/subscribe.mjs +2 -2
  158. package/type/definition.js +161 -138
  159. package/type/definition.js.flow +193 -57
  160. package/type/definition.mjs +158 -140
  161. package/type/directives.js +35 -29
  162. package/type/directives.js.flow +39 -21
  163. package/type/directives.mjs +34 -31
  164. package/type/index.js +12 -0
  165. package/type/index.js.flow +5 -1
  166. package/type/index.mjs +6 -4
  167. package/type/introspection.js +11 -7
  168. package/type/introspection.js.flow +11 -8
  169. package/type/introspection.mjs +11 -7
  170. package/type/scalars.js +45 -34
  171. package/type/scalars.js.flow +41 -27
  172. package/type/scalars.mjs +45 -27
  173. package/type/schema.js +134 -88
  174. package/type/schema.js.flow +77 -11
  175. package/type/schema.mjs +132 -88
  176. package/type/validate.js +152 -187
  177. package/type/validate.js.flow +12 -61
  178. package/type/validate.mjs +143 -188
  179. package/utilities/TypeInfo.js +10 -23
  180. package/utilities/TypeInfo.js.flow +2 -2
  181. package/utilities/TypeInfo.mjs +3 -25
  182. package/utilities/assertValidName.js +2 -2
  183. package/utilities/assertValidName.js.flow +1 -1
  184. package/utilities/assertValidName.mjs +2 -2
  185. package/utilities/astFromValue.js +7 -6
  186. package/utilities/astFromValue.js.flow +7 -6
  187. package/utilities/astFromValue.mjs +9 -8
  188. package/utilities/buildASTSchema.js +213 -197
  189. package/utilities/buildASTSchema.js.flow +163 -173
  190. package/utilities/buildASTSchema.mjs +203 -198
  191. package/utilities/buildClientSchema.js +39 -47
  192. package/utilities/buildClientSchema.js.flow +49 -58
  193. package/utilities/buildClientSchema.mjs +38 -46
  194. package/utilities/coerceValue.js +41 -21
  195. package/utilities/coerceValue.js.flow +44 -49
  196. package/utilities/coerceValue.mjs +42 -23
  197. package/utilities/concatAST.js +9 -13
  198. package/utilities/concatAST.js.flow +3 -9
  199. package/utilities/concatAST.mjs +6 -13
  200. package/utilities/extendSchema.js +256 -630
  201. package/utilities/extendSchema.js.flow +190 -426
  202. package/utilities/extendSchema.mjs +256 -631
  203. package/utilities/findBreakingChanges.js +8 -6
  204. package/utilities/findBreakingChanges.js.flow +4 -3
  205. package/utilities/findBreakingChanges.mjs +7 -6
  206. package/utilities/findDeprecatedUsages.js +4 -4
  207. package/utilities/findDeprecatedUsages.js.flow +3 -3
  208. package/utilities/findDeprecatedUsages.mjs +4 -4
  209. package/utilities/getOperationAST.js +2 -2
  210. package/utilities/getOperationAST.js.flow +1 -1
  211. package/utilities/getOperationAST.mjs +2 -2
  212. package/utilities/getOperationRootType.js +6 -6
  213. package/utilities/getOperationRootType.js.flow +9 -7
  214. package/utilities/getOperationRootType.mjs +6 -6
  215. package/utilities/index.js.flow +1 -1
  216. package/utilities/index.mjs +2 -2
  217. package/utilities/introspectionFromSchema.js +2 -2
  218. package/utilities/introspectionFromSchema.js.flow +1 -1
  219. package/utilities/introspectionFromSchema.mjs +2 -2
  220. package/utilities/introspectionQuery.js +2 -2
  221. package/utilities/introspectionQuery.js.flow +1 -1
  222. package/utilities/introspectionQuery.mjs +2 -2
  223. package/utilities/isValidJSValue.js +4 -2
  224. package/utilities/isValidJSValue.js.flow +2 -1
  225. package/utilities/isValidJSValue.mjs +4 -2
  226. package/utilities/isValidLiteralValue.js +2 -2
  227. package/utilities/isValidLiteralValue.js.flow +1 -1
  228. package/utilities/isValidLiteralValue.mjs +2 -2
  229. package/utilities/lexicographicSortSchema.js +86 -124
  230. package/utilities/lexicographicSortSchema.js.flow +68 -96
  231. package/utilities/lexicographicSortSchema.mjs +86 -124
  232. package/utilities/schemaPrinter.js +47 -73
  233. package/utilities/schemaPrinter.js.flow +62 -111
  234. package/utilities/schemaPrinter.mjs +46 -73
  235. package/utilities/separateOperations.js +11 -10
  236. package/utilities/separateOperations.js.flow +1 -1
  237. package/utilities/separateOperations.mjs +11 -10
  238. package/utilities/typeComparators.js +2 -2
  239. package/utilities/typeComparators.js.flow +1 -1
  240. package/utilities/typeComparators.mjs +2 -2
  241. package/utilities/typeFromAST.js +9 -4
  242. package/utilities/typeFromAST.js.flow +5 -2
  243. package/utilities/typeFromAST.mjs +6 -4
  244. package/utilities/valueFromAST.js +9 -6
  245. package/utilities/valueFromAST.js.flow +5 -3
  246. package/utilities/valueFromAST.mjs +7 -5
  247. package/utilities/valueFromASTUntyped.js +7 -4
  248. package/utilities/valueFromASTUntyped.js.flow +5 -2
  249. package/utilities/valueFromASTUntyped.mjs +6 -4
  250. package/validation/ValidationContext.js +57 -82
  251. package/validation/ValidationContext.js.flow +53 -50
  252. package/validation/ValidationContext.mjs +53 -78
  253. package/validation/index.js.flow +1 -1
  254. package/validation/index.mjs +2 -2
  255. package/validation/rules/ExecutableDefinitions.js +3 -3
  256. package/validation/rules/ExecutableDefinitions.js.flow +3 -3
  257. package/validation/rules/ExecutableDefinitions.mjs +3 -3
  258. package/validation/rules/FieldsOnCorrectType.js +3 -3
  259. package/validation/rules/FieldsOnCorrectType.js.flow +2 -2
  260. package/validation/rules/FieldsOnCorrectType.mjs +3 -3
  261. package/validation/rules/FragmentsOnCompositeTypes.js +4 -4
  262. package/validation/rules/FragmentsOnCompositeTypes.js.flow +3 -3
  263. package/validation/rules/FragmentsOnCompositeTypes.mjs +4 -4
  264. package/validation/rules/KnownArgumentNames.js.flow +1 -1
  265. package/validation/rules/KnownArgumentNames.mjs +2 -2
  266. package/validation/rules/KnownDirectives.js +4 -4
  267. package/validation/rules/KnownDirectives.js.flow +5 -4
  268. package/validation/rules/KnownDirectives.mjs +4 -4
  269. package/validation/rules/KnownFragmentNames.js +3 -3
  270. package/validation/rules/KnownFragmentNames.js.flow +2 -2
  271. package/validation/rules/KnownFragmentNames.mjs +3 -3
  272. package/validation/rules/KnownTypeNames.js +60 -22
  273. package/validation/rules/KnownTypeNames.js.flow +55 -21
  274. package/validation/rules/KnownTypeNames.mjs +57 -22
  275. package/validation/rules/LoneAnonymousOperation.js +3 -3
  276. package/validation/rules/LoneAnonymousOperation.js.flow +2 -2
  277. package/validation/rules/LoneAnonymousOperation.mjs +3 -3
  278. package/validation/rules/LoneSchemaDefinition.js +2 -2
  279. package/validation/rules/LoneSchemaDefinition.js.flow +1 -1
  280. package/validation/rules/LoneSchemaDefinition.mjs +2 -2
  281. package/validation/rules/NoFragmentCycles.js +2 -2
  282. package/validation/rules/NoFragmentCycles.js.flow +3 -3
  283. package/validation/rules/NoFragmentCycles.mjs +2 -2
  284. package/validation/rules/NoUndefinedVariables.js +2 -2
  285. package/validation/rules/NoUndefinedVariables.js.flow +1 -1
  286. package/validation/rules/NoUndefinedVariables.mjs +2 -2
  287. package/validation/rules/NoUnusedFragments.js +10 -7
  288. package/validation/rules/NoUnusedFragments.js.flow +4 -4
  289. package/validation/rules/NoUnusedFragments.mjs +10 -7
  290. package/validation/rules/NoUnusedVariables.js +7 -5
  291. package/validation/rules/NoUnusedVariables.js.flow +4 -3
  292. package/validation/rules/NoUnusedVariables.mjs +7 -5
  293. package/validation/rules/OverlappingFieldsCanBeMerged.js +58 -33
  294. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +4 -4
  295. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +50 -34
  296. package/validation/rules/PossibleFragmentSpreads.js +4 -4
  297. package/validation/rules/PossibleFragmentSpreads.js.flow +3 -3
  298. package/validation/rules/PossibleFragmentSpreads.mjs +4 -4
  299. package/validation/rules/PossibleTypeExtensions.js +158 -0
  300. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  301. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  302. package/validation/rules/ProvidedRequiredArguments.js +3 -3
  303. package/validation/rules/ProvidedRequiredArguments.js.flow +4 -4
  304. package/validation/rules/ProvidedRequiredArguments.mjs +5 -5
  305. package/validation/rules/ScalarLeafs.js +4 -4
  306. package/validation/rules/ScalarLeafs.js.flow +3 -3
  307. package/validation/rules/ScalarLeafs.mjs +4 -4
  308. package/validation/rules/SingleFieldSubscriptions.js +2 -2
  309. package/validation/rules/SingleFieldSubscriptions.js.flow +1 -1
  310. package/validation/rules/SingleFieldSubscriptions.mjs +2 -2
  311. package/validation/rules/UniqueArgumentNames.js +2 -2
  312. package/validation/rules/UniqueArgumentNames.js.flow +1 -1
  313. package/validation/rules/UniqueArgumentNames.mjs +2 -2
  314. package/validation/rules/UniqueDirectiveNames.js +55 -0
  315. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  316. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  317. package/validation/rules/UniqueDirectivesPerLocation.js +2 -2
  318. package/validation/rules/UniqueDirectivesPerLocation.js.flow +1 -1
  319. package/validation/rules/UniqueDirectivesPerLocation.mjs +2 -2
  320. package/validation/rules/UniqueEnumValueNames.js +90 -0
  321. package/validation/rules/UniqueEnumValueNames.js.flow +85 -0
  322. package/validation/rules/UniqueEnumValueNames.mjs +77 -0
  323. package/validation/rules/UniqueFieldDefinitionNames.js +101 -0
  324. package/validation/rules/UniqueFieldDefinitionNames.js.flow +99 -0
  325. package/validation/rules/UniqueFieldDefinitionNames.mjs +88 -0
  326. package/validation/rules/UniqueFragmentNames.js +2 -2
  327. package/validation/rules/UniqueFragmentNames.js.flow +1 -1
  328. package/validation/rules/UniqueFragmentNames.mjs +2 -2
  329. package/validation/rules/UniqueInputFieldNames.js +2 -4
  330. package/validation/rules/UniqueInputFieldNames.js.flow +1 -2
  331. package/validation/rules/UniqueInputFieldNames.mjs +2 -4
  332. package/validation/rules/UniqueOperationNames.js +2 -2
  333. package/validation/rules/UniqueOperationNames.js.flow +1 -1
  334. package/validation/rules/UniqueOperationNames.mjs +2 -2
  335. package/validation/rules/UniqueOperationTypes.js +85 -0
  336. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  337. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  338. package/validation/rules/UniqueTypeNames.js +62 -0
  339. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  340. package/validation/rules/UniqueTypeNames.mjs +50 -0
  341. package/validation/rules/UniqueVariableNames.js +2 -2
  342. package/validation/rules/UniqueVariableNames.js.flow +1 -1
  343. package/validation/rules/UniqueVariableNames.mjs +2 -2
  344. package/validation/rules/ValuesOfCorrectType.js +30 -14
  345. package/validation/rules/ValuesOfCorrectType.js.flow +5 -6
  346. package/validation/rules/ValuesOfCorrectType.mjs +29 -14
  347. package/validation/rules/VariablesAreInputTypes.js +3 -3
  348. package/validation/rules/VariablesAreInputTypes.js.flow +2 -2
  349. package/validation/rules/VariablesAreInputTypes.mjs +3 -3
  350. package/validation/rules/VariablesInAllowedPosition.js +5 -5
  351. package/validation/rules/VariablesInAllowedPosition.js.flow +1 -1
  352. package/validation/rules/VariablesInAllowedPosition.mjs +5 -5
  353. package/validation/specifiedRules.js +15 -3
  354. package/validation/specifiedRules.js.flow +14 -1
  355. package/validation/specifiedRules.mjs +9 -3
  356. package/validation/validate.js +2 -2
  357. package/validation/validate.js.flow +1 -1
  358. package/validation/validate.mjs +2 -2
  359. package/jsutils/find.js +0 -22
  360. package/jsutils/find.js.flow +0 -19
  361. package/jsutils/find.mjs +0 -15
package/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
 
10
10
  /**
@@ -42,7 +42,7 @@ DEFAULT_DEPRECATION_REASON, // Meta-field definitions.
42
42
  SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, // GraphQL Types for introspection.
43
43
  introspectionTypes, __Schema, __Directive, __DirectiveLocation, __Type, __Field, __InputValue, __EnumValue, __TypeKind, // Predicates
44
44
  isSchema, isDirective, isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, isSpecifiedScalarType, isIntrospectionType, isSpecifiedDirective, // Assertions
45
- assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType, // Un-modifiers
45
+ assertSchema, assertDirective, assertType, assertScalarType, assertObjectType, assertInterfaceType, assertUnionType, assertEnumType, assertInputObjectType, assertListType, assertNonNullType, assertInputType, assertOutputType, assertLeafType, assertCompositeType, assertAbstractType, assertWrappingType, assertNullableType, assertNamedType, // Un-modifiers
46
46
  getNullableType, getNamedType, // Validate GraphQL schema.
47
47
  validateSchema, assertValidSchema } from './type';
48
48
  // Parse and operate on GraphQL language source files.
@@ -52,7 +52,7 @@ print, // Visit
52
52
  visit, visitInParallel, visitWithTypeInfo, getVisitFn, Kind, TokenKind, DirectiveLocation, BREAK, // Predicates
53
53
  isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './language';
54
54
  // Execute GraphQL queries.
55
- export { execute, defaultFieldResolver, responsePathAsArray, getDirectiveValues } from './execution';
55
+ export { execute, defaultFieldResolver, defaultTypeResolver, responsePathAsArray, getDirectiveValues } from './execution';
56
56
  export { subscribe, createSourceEventStream } from './subscription'; // Validate GraphQL queries.
57
57
 
58
58
  export { validate, ValidationContext, // All validation rules in the GraphQL Specification.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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.
File without changes
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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.
@@ -7,4 +7,4 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
- export type MaybePromise<+T> = Promise<T> | T;
10
+ export type PromiseOrValue<+T> = Promise<T> | T;
File without changes
package/jsutils/dedent.js CHANGED
@@ -10,12 +10,12 @@ var _invariant = _interopRequireDefault(require("./invariant"));
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
12
  /**
13
- * Copyright (c) 2017-present, Facebook, Inc.
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
17
  *
18
- * strict
18
+ *
19
19
  */
20
20
 
21
21
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2017-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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.
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Copyright (c) 2017-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
  import invariant from './invariant';
10
10
  /**
@@ -3,21 +3,32 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = applyToJSON;
6
+ exports.default = defineToJSON;
7
+
8
+ var _nodejsCustomInspectSymbol = _interopRequireDefault(require("./nodejsCustomInspectSymbol"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
11
 
8
12
  /**
9
- * Copyright (c) 2015-present, Facebook, Inc.
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
10
14
  *
11
15
  * This source code is licensed under the MIT license found in the
12
16
  * LICENSE file in the root directory of this source tree.
13
17
  *
14
- * strict
18
+ *
15
19
  */
16
20
 
17
21
  /**
18
- * The `applyToJSON()` function defines toJSON() and inspect() prototype
19
- * methods which are aliases for toString().
22
+ * The `defineToJSON()` function defines toJSON() and inspect() prototype
23
+ * methods, if no function provided they become aliases for toString().
20
24
  */
21
- function applyToJSON(classObject) {
22
- classObject.prototype.toJSON = classObject.prototype.inspect = classObject.prototype.toString;
25
+ function defineToJSON( // eslint-disable-next-line flowtype/no-weak-types
26
+ classObject) {
27
+ var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : classObject.prototype.toString;
28
+ classObject.prototype.toJSON = fn;
29
+ classObject.prototype.inspect = fn;
30
+
31
+ if (_nodejsCustomInspectSymbol.default) {
32
+ classObject.prototype[_nodejsCustomInspectSymbol.default] = fn;
33
+ }
23
34
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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.
@@ -7,11 +7,20 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';
11
+
10
12
  /**
11
- * The `applyToJSON()` function defines toJSON() and inspect() prototype
12
- * methods which are aliases for toString().
13
+ * The `defineToJSON()` function defines toJSON() and inspect() prototype
14
+ * methods, if no function provided they become aliases for toString().
13
15
  */
14
- export default function applyToJSON(classObject: Class<any>): void {
15
- classObject.prototype.toJSON = classObject.prototype.inspect =
16
- classObject.prototype.toString;
16
+ export default function defineToJSON(
17
+ // eslint-disable-next-line flowtype/no-weak-types
18
+ classObject: Class<any> | Function,
19
+ fn?: () => any = classObject.prototype.toString,
20
+ ): void {
21
+ classObject.prototype.toJSON = fn;
22
+ classObject.prototype.inspect = fn;
23
+ if (nodejsCustomInspectSymbol) {
24
+ classObject.prototype[nodejsCustomInspectSymbol] = fn;
25
+ }
17
26
  }
@@ -1,16 +1,24 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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
6
  *
7
- * strict
7
+ *
8
8
  */
9
-
9
+ import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';
10
10
  /**
11
- * The `applyToJSON()` function defines toJSON() and inspect() prototype
12
- * methods which are aliases for toString().
11
+ * The `defineToJSON()` function defines toJSON() and inspect() prototype
12
+ * methods, if no function provided they become aliases for toString().
13
13
  */
14
- export default function applyToJSON(classObject) {
15
- classObject.prototype.toJSON = classObject.prototype.inspect = classObject.prototype.toString;
14
+
15
+ export default function defineToJSON( // eslint-disable-next-line flowtype/no-weak-types
16
+ classObject) {
17
+ var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : classObject.prototype.toString;
18
+ classObject.prototype.toJSON = fn;
19
+ classObject.prototype.inspect = fn;
20
+
21
+ if (nodejsCustomInspectSymbol) {
22
+ classObject.prototype[nodejsCustomInspectSymbol] = fn;
23
+ }
16
24
  }
@@ -3,31 +3,31 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = applyToStringTag;
6
+ exports.default = defineToStringTag;
7
7
 
8
8
  /**
9
- * Copyright (c) 2015-present, Facebook, Inc.
9
+ * Copyright (c) Facebook, Inc. and its affiliates.
10
10
  *
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
  /**
18
- * The `applyToStringTag()` function checks first to see if the runtime
18
+ * The `defineToStringTag()` function checks first to see if the runtime
19
19
  * supports the `Symbol` class and then if the `Symbol.toStringTag` constant
20
20
  * is defined as a `Symbol` instance. If both conditions are met, the
21
21
  * Symbol.toStringTag property is defined as a getter that returns the
22
22
  * supplied class constructor's name.
23
23
  *
24
- * @method applyToStringTag
24
+ * @method defineToStringTag
25
25
  *
26
26
  * @param {Class<any>} classObject a class such as Object, String, Number but
27
27
  * typically one of your own creation through the class keyword; `class A {}`,
28
28
  * for example.
29
29
  */
30
- function applyToStringTag(classObject) {
30
+ function defineToStringTag(classObject) {
31
31
  if (typeof Symbol === 'function' && Symbol.toStringTag) {
32
32
  Object.defineProperty(classObject.prototype, Symbol.toStringTag, {
33
33
  get: function get() {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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.
@@ -8,19 +8,19 @@
8
8
  */
9
9
 
10
10
  /**
11
- * The `applyToStringTag()` function checks first to see if the runtime
11
+ * The `defineToStringTag()` function checks first to see if the runtime
12
12
  * supports the `Symbol` class and then if the `Symbol.toStringTag` constant
13
13
  * is defined as a `Symbol` instance. If both conditions are met, the
14
14
  * Symbol.toStringTag property is defined as a getter that returns the
15
15
  * supplied class constructor's name.
16
16
  *
17
- * @method applyToStringTag
17
+ * @method defineToStringTag
18
18
  *
19
19
  * @param {Class<any>} classObject a class such as Object, String, Number but
20
20
  * typically one of your own creation through the class keyword; `class A {}`,
21
21
  * for example.
22
22
  */
23
- export default function applyToStringTag(classObject: Class<any>): void {
23
+ export default function defineToStringTag(classObject: Class<any>): void {
24
24
  if (typeof Symbol === 'function' && Symbol.toStringTag) {
25
25
  Object.defineProperty(classObject.prototype, Symbol.toStringTag, {
26
26
  get() {
@@ -1,26 +1,26 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
 
10
10
  /**
11
- * The `applyToStringTag()` function checks first to see if the runtime
11
+ * The `defineToStringTag()` function checks first to see if the runtime
12
12
  * supports the `Symbol` class and then if the `Symbol.toStringTag` constant
13
13
  * is defined as a `Symbol` instance. If both conditions are met, the
14
14
  * Symbol.toStringTag property is defined as a getter that returns the
15
15
  * supplied class constructor's name.
16
16
  *
17
- * @method applyToStringTag
17
+ * @method defineToStringTag
18
18
  *
19
19
  * @param {Class<any>} classObject a class such as Object, String, Number but
20
20
  * typically one of your own creation through the class keyword; `class A {}`,
21
21
  * for example.
22
22
  */
23
- export default function applyToStringTag(classObject) {
23
+ export default function defineToStringTag(classObject) {
24
24
  if (typeof Symbol === 'function' && Symbol.toStringTag) {
25
25
  Object.defineProperty(classObject.prototype, Symbol.toStringTag, {
26
26
  get: function get() {
@@ -5,21 +5,23 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = inspect;
7
7
 
8
- 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); }
8
+ var _nodejsCustomInspectSymbol = _interopRequireDefault(require("./nodejsCustomInspectSymbol"));
9
9
 
10
- /**
11
- * Copyright (c) 2015-present, Facebook, Inc.
12
- *
13
- * This source code is licensed under the MIT license found in the
14
- * LICENSE file in the root directory of this source tree.
15
- *
16
- * strict
17
- */
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
11
 
12
+ 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); }
13
+
14
+ var MAX_ARRAY_LENGTH = 10;
15
+ var MAX_RECURSIVE_DEPTH = 2;
19
16
  /**
20
17
  * Used to print values in error messages.
21
18
  */
19
+
22
20
  function inspect(value) {
21
+ return formatValue(value, []);
22
+ }
23
+
24
+ function formatValue(value, seenValues) {
23
25
  switch (_typeof(value)) {
24
26
  case 'string':
25
27
  return JSON.stringify(value);
@@ -28,22 +30,106 @@ function inspect(value) {
28
30
  return value.name ? "[function ".concat(value.name, "]") : '[function]';
29
31
 
30
32
  case 'object':
31
- if (value) {
32
- if (typeof value.inspect === 'function') {
33
- return value.inspect();
34
- } else if (Array.isArray(value)) {
35
- return '[' + value.map(inspect).join(', ') + ']';
36
- }
37
-
38
- var properties = Object.keys(value).map(function (k) {
39
- return "".concat(k, ": ").concat(inspect(value[k]));
40
- }).join(', ');
41
- return properties ? '{ ' + properties + ' }' : '{}';
42
- }
43
-
44
- return String(value);
33
+ return formatObjectValue(value, seenValues);
45
34
 
46
35
  default:
47
36
  return String(value);
48
37
  }
38
+ }
39
+
40
+ function formatObjectValue(value, previouslySeenValues) {
41
+ if (previouslySeenValues.indexOf(value) !== -1) {
42
+ return '[Circular]';
43
+ }
44
+
45
+ var seenValues = [].concat(previouslySeenValues, [value]);
46
+
47
+ if (value) {
48
+ var customInspectFn = getCustomFn(value);
49
+
50
+ if (customInspectFn) {
51
+ // $FlowFixMe(>=0.90.0)
52
+ var customValue = customInspectFn.call(value); // check for infinite recursion
53
+
54
+ if (customValue !== value) {
55
+ return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);
56
+ }
57
+ } else if (Array.isArray(value)) {
58
+ return formatArray(value, seenValues);
59
+ }
60
+
61
+ return formatObject(value, seenValues);
62
+ }
63
+
64
+ return String(value);
65
+ }
66
+
67
+ function formatObject(object, seenValues) {
68
+ var keys = Object.keys(object);
69
+
70
+ if (keys.length === 0) {
71
+ return '{}';
72
+ }
73
+
74
+ if (seenValues.length > MAX_RECURSIVE_DEPTH) {
75
+ return '[' + getObjectTag(object) + ']';
76
+ }
77
+
78
+ var properties = keys.map(function (key) {
79
+ var value = formatValue(object[key], seenValues);
80
+ return key + ': ' + value;
81
+ });
82
+ return '{ ' + properties.join(', ') + ' }';
83
+ }
84
+
85
+ function formatArray(array, seenValues) {
86
+ if (array.length === 0) {
87
+ return '[]';
88
+ }
89
+
90
+ if (seenValues.length > MAX_RECURSIVE_DEPTH) {
91
+ return '[Array]';
92
+ }
93
+
94
+ var len = Math.min(MAX_ARRAY_LENGTH, array.length);
95
+ var remaining = array.length - len;
96
+ var items = [];
97
+
98
+ for (var i = 0; i < len; ++i) {
99
+ items.push(formatValue(array[i], seenValues));
100
+ }
101
+
102
+ if (remaining === 1) {
103
+ items.push('... 1 more item');
104
+ } else if (remaining > 1) {
105
+ items.push("... ".concat(remaining, " more items"));
106
+ }
107
+
108
+ return '[' + items.join(', ') + ']';
109
+ }
110
+
111
+ function getCustomFn(object) {
112
+ var customInspectFn = object[String(_nodejsCustomInspectSymbol.default)];
113
+
114
+ if (typeof customInspectFn === 'function') {
115
+ return customInspectFn;
116
+ }
117
+
118
+ if (typeof object.inspect === 'function') {
119
+ return object.inspect;
120
+ }
121
+ }
122
+
123
+ function getObjectTag(object) {
124
+ var tag = Object.prototype.toString.call(object).replace(/^\[object /, '').replace(/]$/, '');
125
+
126
+ if (tag === 'Object' && typeof object.constructor === 'function') {
127
+ var name = object.constructor.name;
128
+
129
+ if (typeof name === 'string') {
130
+ return name;
131
+ }
132
+ }
133
+
134
+ return tag;
49
135
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
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.
@@ -7,30 +7,128 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';
11
+
12
+ const MAX_ARRAY_LENGTH = 10;
13
+ const MAX_RECURSIVE_DEPTH = 2;
14
+
10
15
  /**
11
16
  * Used to print values in error messages.
12
17
  */
13
18
  export default function inspect(value: mixed): string {
19
+ return formatValue(value, []);
20
+ }
21
+
22
+ function formatValue(value, seenValues) {
14
23
  switch (typeof value) {
15
24
  case 'string':
16
25
  return JSON.stringify(value);
17
26
  case 'function':
18
27
  return value.name ? `[function ${value.name}]` : '[function]';
19
28
  case 'object':
20
- if (value) {
21
- if (typeof value.inspect === 'function') {
22
- return value.inspect();
23
- } else if (Array.isArray(value)) {
24
- return '[' + value.map(inspect).join(', ') + ']';
25
- }
26
-
27
- const properties = Object.keys(value)
28
- .map(k => `${k}: ${inspect(value[k])}`)
29
- .join(', ');
30
- return properties ? '{ ' + properties + ' }' : '{}';
31
- }
32
- return String(value);
29
+ return formatObjectValue(value, seenValues);
33
30
  default:
34
31
  return String(value);
35
32
  }
36
33
  }
34
+
35
+ function formatObjectValue(value, previouslySeenValues) {
36
+ if (previouslySeenValues.indexOf(value) !== -1) {
37
+ return '[Circular]';
38
+ }
39
+ const seenValues = [...previouslySeenValues, value];
40
+
41
+ if (value) {
42
+ const customInspectFn = getCustomFn(value);
43
+
44
+ if (customInspectFn) {
45
+ // $FlowFixMe(>=0.90.0)
46
+ const customValue = customInspectFn.call(value);
47
+
48
+ // check for infinite recursion
49
+ if (customValue !== value) {
50
+ return typeof customValue === 'string'
51
+ ? customValue
52
+ : formatValue(customValue, seenValues);
53
+ }
54
+ } else if (Array.isArray(value)) {
55
+ return formatArray(value, seenValues);
56
+ }
57
+
58
+ return formatObject(value, seenValues);
59
+ }
60
+
61
+ return String(value);
62
+ }
63
+
64
+ function formatObject(object, seenValues) {
65
+ const keys = Object.keys(object);
66
+ if (keys.length === 0) {
67
+ return '{}';
68
+ }
69
+
70
+ if (seenValues.length > MAX_RECURSIVE_DEPTH) {
71
+ return '[' + getObjectTag(object) + ']';
72
+ }
73
+
74
+ const properties = keys.map(key => {
75
+ const value = formatValue(object[key], seenValues);
76
+ return key + ': ' + value;
77
+ });
78
+
79
+ return '{ ' + properties.join(', ') + ' }';
80
+ }
81
+
82
+ function formatArray(array, seenValues) {
83
+ if (array.length === 0) {
84
+ return '[]';
85
+ }
86
+
87
+ if (seenValues.length > MAX_RECURSIVE_DEPTH) {
88
+ return '[Array]';
89
+ }
90
+
91
+ const len = Math.min(MAX_ARRAY_LENGTH, array.length);
92
+ const remaining = array.length - len;
93
+ const items = [];
94
+
95
+ for (let i = 0; i < len; ++i) {
96
+ items.push(formatValue(array[i], seenValues));
97
+ }
98
+
99
+ if (remaining === 1) {
100
+ items.push('... 1 more item');
101
+ } else if (remaining > 1) {
102
+ items.push(`... ${remaining} more items`);
103
+ }
104
+
105
+ return '[' + items.join(', ') + ']';
106
+ }
107
+
108
+ function getCustomFn(object) {
109
+ const customInspectFn = object[String(nodejsCustomInspectSymbol)];
110
+
111
+ if (typeof customInspectFn === 'function') {
112
+ return customInspectFn;
113
+ }
114
+
115
+ if (typeof object.inspect === 'function') {
116
+ return object.inspect;
117
+ }
118
+ }
119
+
120
+ function getObjectTag(object) {
121
+ const tag = Object.prototype.toString
122
+ .call(object)
123
+ .replace(/^\[object /, '')
124
+ .replace(/]$/, '');
125
+
126
+ if (tag === 'Object' && typeof object.constructor === 'function') {
127
+ const name = object.constructor.name;
128
+ if (typeof name === 'string') {
129
+ return name;
130
+ }
131
+ }
132
+
133
+ return tag;
134
+ }