graphql 14.0.0 → 14.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) 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.js +4 -4
  15. package/execution/execute.js.flow +4 -6
  16. package/execution/execute.mjs +5 -5
  17. package/execution/index.mjs +1 -1
  18. package/execution/values.js +4 -4
  19. package/execution/values.js.flow +3 -3
  20. package/execution/values.mjs +3 -3
  21. package/graphql.js +1 -1
  22. package/graphql.mjs +1 -1
  23. package/index.js +12 -0
  24. package/index.js.flow +4 -0
  25. package/index.mjs +4 -4
  26. package/jsutils/dedent.js +2 -2
  27. package/jsutils/dedent.js.flow +1 -1
  28. package/jsutils/dedent.mjs +2 -2
  29. package/jsutils/defineToJSON.js +17 -6
  30. package/jsutils/defineToJSON.js.flow +14 -5
  31. package/jsutils/defineToJSON.mjs +14 -6
  32. package/jsutils/defineToStringTag.js +5 -5
  33. package/jsutils/defineToStringTag.js.flow +3 -3
  34. package/jsutils/defineToStringTag.mjs +4 -4
  35. package/jsutils/inspect.js +46 -12
  36. package/jsutils/inspect.js.flow +42 -15
  37. package/jsutils/inspect.mjs +45 -5
  38. package/jsutils/instanceOf.js +1 -1
  39. package/jsutils/instanceOf.mjs +1 -1
  40. package/jsutils/invariant.js +1 -1
  41. package/jsutils/invariant.mjs +1 -1
  42. package/jsutils/isInvalid.js +1 -1
  43. package/jsutils/isInvalid.mjs +1 -1
  44. package/jsutils/isNullish.js +1 -1
  45. package/jsutils/isNullish.mjs +1 -1
  46. package/jsutils/isPromise.js +1 -1
  47. package/jsutils/isPromise.mjs +1 -1
  48. package/jsutils/keyMap.js +1 -1
  49. package/jsutils/keyMap.mjs +1 -1
  50. package/jsutils/keyValMap.js +1 -1
  51. package/jsutils/keyValMap.mjs +1 -1
  52. package/jsutils/mapValue.js +54 -0
  53. package/jsutils/mapValue.js.flow +27 -0
  54. package/jsutils/mapValue.mjs +44 -0
  55. package/jsutils/memoize3.js +1 -1
  56. package/jsutils/memoize3.mjs +1 -1
  57. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  58. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  59. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  60. package/jsutils/orList.js +17 -4
  61. package/jsutils/orList.js.flow +13 -7
  62. package/jsutils/orList.mjs +14 -4
  63. package/jsutils/promiseForObject.js +1 -1
  64. package/jsutils/promiseForObject.mjs +1 -1
  65. package/jsutils/promiseReduce.js +1 -1
  66. package/jsutils/promiseReduce.mjs +1 -1
  67. package/jsutils/quotedOrList.js +1 -1
  68. package/jsutils/quotedOrList.mjs +1 -1
  69. package/jsutils/suggestionList.js +1 -1
  70. package/jsutils/suggestionList.mjs +1 -1
  71. package/language/blockStringValue.js +2 -2
  72. package/language/blockStringValue.js.flow +1 -1
  73. package/language/blockStringValue.mjs +2 -2
  74. package/language/directiveLocation.js +1 -1
  75. package/language/directiveLocation.mjs +1 -1
  76. package/language/index.mjs +1 -1
  77. package/language/kinds.js +1 -1
  78. package/language/kinds.mjs +1 -1
  79. package/language/lexer.js +29 -13
  80. package/language/lexer.js.flow +34 -20
  81. package/language/lexer.mjs +28 -13
  82. package/language/location.js +1 -1
  83. package/language/location.mjs +1 -1
  84. package/language/parser.js +31 -38
  85. package/language/parser.js.flow +32 -48
  86. package/language/parser.mjs +30 -38
  87. package/language/predicates.js +1 -1
  88. package/language/predicates.mjs +1 -1
  89. package/language/printer.js +13 -7
  90. package/language/printer.js.flow +19 -9
  91. package/language/printer.mjs +13 -7
  92. package/language/source.js +8 -7
  93. package/language/source.mjs +1 -9
  94. package/language/visitor.js +11 -20
  95. package/language/visitor.js.flow +4 -5
  96. package/language/visitor.mjs +8 -20
  97. package/package.json +10 -3
  98. package/polyfills/find.js +31 -0
  99. package/polyfills/find.js.flow +29 -0
  100. package/polyfills/find.mjs +23 -0
  101. package/{jsutils → polyfills}/isFinite.js +1 -1
  102. package/{jsutils → polyfills}/isFinite.js.flow +0 -0
  103. package/{jsutils → polyfills}/isFinite.mjs +1 -1
  104. package/{jsutils → polyfills}/isInteger.js +1 -1
  105. package/{jsutils → polyfills}/isInteger.js.flow +0 -0
  106. package/{jsutils → polyfills}/isInteger.mjs +1 -1
  107. package/polyfills/objectEntries.js +26 -0
  108. package/polyfills/objectEntries.js.flow +19 -0
  109. package/polyfills/objectEntries.mjs +18 -0
  110. package/{jsutils → polyfills}/objectValues.js +1 -1
  111. package/{jsutils → polyfills}/objectValues.js.flow +1 -1
  112. package/{jsutils → polyfills}/objectValues.mjs +1 -1
  113. package/subscription/asyncIteratorReject.mjs +1 -1
  114. package/subscription/index.mjs +1 -1
  115. package/subscription/mapAsyncIterator.mjs +1 -1
  116. package/subscription/subscribe.js +1 -1
  117. package/subscription/subscribe.js.flow +1 -1
  118. package/subscription/subscribe.mjs +2 -2
  119. package/type/definition.js +31 -130
  120. package/type/definition.js.flow +35 -47
  121. package/type/definition.mjs +30 -131
  122. package/type/directives.js +25 -29
  123. package/type/directives.js.flow +24 -20
  124. package/type/directives.mjs +22 -30
  125. package/type/index.js +12 -0
  126. package/type/index.js.flow +4 -0
  127. package/type/index.mjs +5 -3
  128. package/type/introspection.js +3 -3
  129. package/type/introspection.js.flow +1 -1
  130. package/type/introspection.mjs +2 -2
  131. package/type/scalars.js +45 -34
  132. package/type/scalars.js.flow +40 -26
  133. package/type/scalars.mjs +44 -26
  134. package/type/schema.js +82 -87
  135. package/type/schema.js.flow +17 -9
  136. package/type/schema.mjs +79 -86
  137. package/type/validate.js +168 -175
  138. package/type/validate.js.flow +8 -49
  139. package/type/validate.mjs +159 -175
  140. package/utilities/TypeInfo.js +10 -23
  141. package/utilities/TypeInfo.js.flow +1 -1
  142. package/utilities/TypeInfo.mjs +2 -24
  143. package/utilities/assertValidName.js +1 -1
  144. package/utilities/assertValidName.mjs +1 -1
  145. package/utilities/astFromValue.js +2 -2
  146. package/utilities/astFromValue.js.flow +1 -1
  147. package/utilities/astFromValue.mjs +2 -2
  148. package/utilities/buildASTSchema.js +169 -152
  149. package/utilities/buildASTSchema.js.flow +117 -113
  150. package/utilities/buildASTSchema.mjs +160 -152
  151. package/utilities/buildClientSchema.js +24 -14
  152. package/utilities/buildClientSchema.js.flow +24 -14
  153. package/utilities/buildClientSchema.mjs +23 -14
  154. package/utilities/coerceValue.js +38 -19
  155. package/utilities/coerceValue.js.flow +41 -47
  156. package/utilities/coerceValue.mjs +38 -20
  157. package/utilities/concatAST.js +1 -1
  158. package/utilities/concatAST.mjs +1 -1
  159. package/utilities/extendSchema.js +228 -312
  160. package/utilities/extendSchema.js.flow +27 -152
  161. package/utilities/extendSchema.mjs +229 -312
  162. package/utilities/findBreakingChanges.js +7 -5
  163. package/utilities/findBreakingChanges.js.flow +3 -2
  164. package/utilities/findBreakingChanges.mjs +6 -5
  165. package/utilities/findDeprecatedUsages.js +1 -1
  166. package/utilities/findDeprecatedUsages.mjs +1 -1
  167. package/utilities/getOperationAST.js +1 -1
  168. package/utilities/getOperationAST.mjs +1 -1
  169. package/utilities/getOperationRootType.js +1 -1
  170. package/utilities/getOperationRootType.mjs +1 -1
  171. package/utilities/index.mjs +1 -1
  172. package/utilities/introspectionFromSchema.js +1 -1
  173. package/utilities/introspectionFromSchema.mjs +1 -1
  174. package/utilities/introspectionQuery.js +1 -1
  175. package/utilities/introspectionQuery.mjs +1 -1
  176. package/utilities/isValidJSValue.js +1 -1
  177. package/utilities/isValidJSValue.mjs +1 -1
  178. package/utilities/isValidLiteralValue.js +1 -1
  179. package/utilities/isValidLiteralValue.mjs +1 -1
  180. package/utilities/lexicographicSortSchema.js +2 -2
  181. package/utilities/lexicographicSortSchema.js.flow +1 -1
  182. package/utilities/lexicographicSortSchema.mjs +2 -2
  183. package/utilities/schemaPrinter.js +3 -3
  184. package/utilities/schemaPrinter.js.flow +1 -1
  185. package/utilities/schemaPrinter.mjs +2 -2
  186. package/utilities/separateOperations.js +1 -1
  187. package/utilities/separateOperations.mjs +1 -1
  188. package/utilities/typeComparators.js +1 -1
  189. package/utilities/typeComparators.mjs +1 -1
  190. package/utilities/typeFromAST.js +1 -1
  191. package/utilities/typeFromAST.mjs +1 -1
  192. package/utilities/valueFromAST.js +3 -3
  193. package/utilities/valueFromAST.js.flow +1 -1
  194. package/utilities/valueFromAST.mjs +2 -2
  195. package/utilities/valueFromASTUntyped.js +1 -1
  196. package/utilities/valueFromASTUntyped.mjs +1 -1
  197. package/validation/ValidationContext.js +57 -82
  198. package/validation/ValidationContext.js.flow +52 -49
  199. package/validation/ValidationContext.mjs +52 -77
  200. package/validation/index.js.flow +1 -0
  201. package/validation/index.mjs +1 -1
  202. package/validation/rules/ExecutableDefinitions.js +1 -1
  203. package/validation/rules/ExecutableDefinitions.js.flow +1 -1
  204. package/validation/rules/ExecutableDefinitions.mjs +1 -1
  205. package/validation/rules/FieldsOnCorrectType.js +1 -1
  206. package/validation/rules/FieldsOnCorrectType.mjs +1 -1
  207. package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
  208. package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
  209. package/validation/rules/KnownArgumentNames.mjs +1 -1
  210. package/validation/rules/KnownDirectives.js +1 -1
  211. package/validation/rules/KnownDirectives.mjs +1 -1
  212. package/validation/rules/KnownFragmentNames.js +1 -1
  213. package/validation/rules/KnownFragmentNames.mjs +1 -1
  214. package/validation/rules/KnownTypeNames.js +59 -21
  215. package/validation/rules/KnownTypeNames.js.flow +54 -20
  216. package/validation/rules/KnownTypeNames.mjs +56 -21
  217. package/validation/rules/LoneAnonymousOperation.js +1 -1
  218. package/validation/rules/LoneAnonymousOperation.mjs +1 -1
  219. package/validation/rules/LoneSchemaDefinition.js +1 -1
  220. package/validation/rules/LoneSchemaDefinition.mjs +1 -1
  221. package/validation/rules/NoFragmentCycles.js +1 -1
  222. package/validation/rules/NoFragmentCycles.js.flow +2 -2
  223. package/validation/rules/NoFragmentCycles.mjs +1 -1
  224. package/validation/rules/NoUndefinedVariables.js +1 -1
  225. package/validation/rules/NoUndefinedVariables.mjs +1 -1
  226. package/validation/rules/NoUnusedFragments.js +1 -1
  227. package/validation/rules/NoUnusedFragments.js.flow +2 -2
  228. package/validation/rules/NoUnusedFragments.mjs +1 -1
  229. package/validation/rules/NoUnusedVariables.js +1 -1
  230. package/validation/rules/NoUnusedVariables.mjs +1 -1
  231. package/validation/rules/OverlappingFieldsCanBeMerged.js +57 -33
  232. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +5 -6
  233. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +48 -33
  234. package/validation/rules/PossibleFragmentSpreads.js +1 -1
  235. package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
  236. package/validation/rules/PossibleTypeExtensions.js +158 -0
  237. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  238. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  239. package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
  240. package/validation/rules/ScalarLeafs.js +1 -1
  241. package/validation/rules/ScalarLeafs.mjs +1 -1
  242. package/validation/rules/SingleFieldSubscriptions.js +1 -1
  243. package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
  244. package/validation/rules/UniqueArgumentNames.js +1 -1
  245. package/validation/rules/UniqueArgumentNames.mjs +1 -1
  246. package/validation/rules/UniqueDirectiveNames.js +55 -0
  247. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  248. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  249. package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
  250. package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
  251. package/validation/rules/UniqueEnumValueNames.js +94 -0
  252. package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
  253. package/validation/rules/UniqueEnumValueNames.mjs +81 -0
  254. package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
  255. package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
  256. package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
  257. package/validation/rules/UniqueFragmentNames.js +1 -1
  258. package/validation/rules/UniqueFragmentNames.mjs +1 -1
  259. package/validation/rules/UniqueInputFieldNames.js +1 -1
  260. package/validation/rules/UniqueInputFieldNames.mjs +1 -1
  261. package/validation/rules/UniqueOperationNames.js +1 -1
  262. package/validation/rules/UniqueOperationNames.mjs +1 -1
  263. package/validation/rules/UniqueOperationTypes.js +85 -0
  264. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  265. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  266. package/validation/rules/UniqueTypeNames.js +62 -0
  267. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  268. package/validation/rules/UniqueTypeNames.mjs +50 -0
  269. package/validation/rules/UniqueVariableNames.js +1 -1
  270. package/validation/rules/UniqueVariableNames.mjs +1 -1
  271. package/validation/rules/ValuesOfCorrectType.js +29 -13
  272. package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
  273. package/validation/rules/ValuesOfCorrectType.mjs +28 -13
  274. package/validation/rules/VariablesAreInputTypes.js +1 -1
  275. package/validation/rules/VariablesAreInputTypes.mjs +1 -1
  276. package/validation/rules/VariablesInAllowedPosition.js +4 -4
  277. package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
  278. package/validation/specifiedRules.js +14 -2
  279. package/validation/specifiedRules.js.flow +13 -0
  280. package/validation/specifiedRules.mjs +8 -2
  281. package/validation/validate.js +1 -1
  282. package/validation/validate.mjs +1 -1
  283. package/jsutils/find.js +0 -22
  284. package/jsutils/find.js.flow +0 -19
  285. package/jsutils/find.mjs +0 -15
@@ -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() {
@@ -4,23 +4,23 @@
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,22 +5,56 @@ 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 }; }
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); }
18
13
 
19
14
  /**
20
15
  * Used to print values in error messages.
21
16
  */
22
17
  function inspect(value) {
23
- return value && _typeof(value) === 'object' ? typeof value.inspect === 'function' ? value.inspect() : Array.isArray(value) ? '[' + value.map(inspect).join(', ') + ']' : '{' + Object.keys(value).map(function (k) {
24
- return "".concat(k, ": ").concat(inspect(value[k]));
25
- }).join(', ') + '}' : typeof value === 'string' ? '"' + value + '"' : typeof value === 'function' ? "[function ".concat(value.name, "]") : String(value);
18
+ switch (_typeof(value)) {
19
+ case 'string':
20
+ return JSON.stringify(value);
21
+
22
+ case 'function':
23
+ return value.name ? "[function ".concat(value.name, "]") : '[function]';
24
+
25
+ case 'object':
26
+ if (value) {
27
+ var customInspectFn = getCustomFn(value);
28
+
29
+ if (customInspectFn) {
30
+ // $FlowFixMe(>=0.90.0)
31
+ var customValue = customInspectFn.call(value);
32
+ return typeof customValue === 'string' ? customValue : inspect(customValue);
33
+ } else if (Array.isArray(value)) {
34
+ return '[' + value.map(inspect).join(', ') + ']';
35
+ }
36
+
37
+ var properties = Object.keys(value).map(function (k) {
38
+ return "".concat(k, ": ").concat(inspect(value[k]));
39
+ }).join(', ');
40
+ return properties ? '{ ' + properties + ' }' : '{}';
41
+ }
42
+
43
+ return String(value);
44
+
45
+ default:
46
+ return String(value);
47
+ }
48
+ }
49
+
50
+ function getCustomFn(object) {
51
+ var customInspectFn = object[String(_nodejsCustomInspectSymbol.default)];
52
+
53
+ if (typeof customInspectFn === 'function') {
54
+ return customInspectFn;
55
+ }
56
+
57
+ if (typeof object.inspect === 'function') {
58
+ return object.inspect;
59
+ }
26
60
  }
@@ -7,23 +7,50 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';
11
+
10
12
  /**
11
13
  * Used to print values in error messages.
12
14
  */
13
15
  export default function inspect(value: mixed): string {
14
- return value && typeof value === 'object'
15
- ? typeof value.inspect === 'function'
16
- ? value.inspect()
17
- : Array.isArray(value)
18
- ? '[' + value.map(inspect).join(', ') + ']'
19
- : '{' +
20
- Object.keys(value)
21
- .map(k => `${k}: ${inspect(value[k])}`)
22
- .join(', ') +
23
- '}'
24
- : typeof value === 'string'
25
- ? '"' + value + '"'
26
- : typeof value === 'function'
27
- ? `[function ${value.name}]`
28
- : String(value);
16
+ switch (typeof value) {
17
+ case 'string':
18
+ return JSON.stringify(value);
19
+ case 'function':
20
+ return value.name ? `[function ${value.name}]` : '[function]';
21
+ case 'object':
22
+ if (value) {
23
+ const customInspectFn = getCustomFn(value);
24
+
25
+ if (customInspectFn) {
26
+ // $FlowFixMe(>=0.90.0)
27
+ const customValue = customInspectFn.call(value);
28
+ return typeof customValue === 'string'
29
+ ? customValue
30
+ : inspect(customValue);
31
+ } else if (Array.isArray(value)) {
32
+ return '[' + value.map(inspect).join(', ') + ']';
33
+ }
34
+
35
+ const properties = Object.keys(value)
36
+ .map(k => `${k}: ${inspect(value[k])}`)
37
+ .join(', ');
38
+ return properties ? '{ ' + properties + ' }' : '{}';
39
+ }
40
+ return String(value);
41
+ default:
42
+ return String(value);
43
+ }
44
+ }
45
+
46
+ function getCustomFn(object) {
47
+ const customInspectFn = object[String(nodejsCustomInspectSymbol)];
48
+
49
+ if (typeof customInspectFn === 'function') {
50
+ return customInspectFn;
51
+ }
52
+
53
+ if (typeof object.inspect === 'function') {
54
+ return object.inspect;
55
+ }
29
56
  }
@@ -6,14 +6,54 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  *
9
- * strict
9
+ *
10
10
  */
11
-
11
+ import nodejsCustomInspectSymbol from './nodejsCustomInspectSymbol';
12
12
  /**
13
13
  * Used to print values in error messages.
14
14
  */
15
+
15
16
  export default function inspect(value) {
16
- return value && _typeof(value) === 'object' ? typeof value.inspect === 'function' ? value.inspect() : Array.isArray(value) ? '[' + value.map(inspect).join(', ') + ']' : '{' + Object.keys(value).map(function (k) {
17
- return "".concat(k, ": ").concat(inspect(value[k]));
18
- }).join(', ') + '}' : typeof value === 'string' ? '"' + value + '"' : typeof value === 'function' ? "[function ".concat(value.name, "]") : String(value);
17
+ switch (_typeof(value)) {
18
+ case 'string':
19
+ return JSON.stringify(value);
20
+
21
+ case 'function':
22
+ return value.name ? "[function ".concat(value.name, "]") : '[function]';
23
+
24
+ case 'object':
25
+ if (value) {
26
+ var customInspectFn = getCustomFn(value);
27
+
28
+ if (customInspectFn) {
29
+ // $FlowFixMe(>=0.90.0)
30
+ var customValue = customInspectFn.call(value);
31
+ return typeof customValue === 'string' ? customValue : inspect(customValue);
32
+ } else if (Array.isArray(value)) {
33
+ return '[' + value.map(inspect).join(', ') + ']';
34
+ }
35
+
36
+ var properties = Object.keys(value).map(function (k) {
37
+ return "".concat(k, ": ").concat(inspect(value[k]));
38
+ }).join(', ');
39
+ return properties ? '{ ' + properties + ' }' : '{}';
40
+ }
41
+
42
+ return String(value);
43
+
44
+ default:
45
+ return String(value);
46
+ }
47
+ }
48
+
49
+ function getCustomFn(object) {
50
+ var customInspectFn = object[String(nodejsCustomInspectSymbol)];
51
+
52
+ if (typeof customInspectFn === 'function') {
53
+ return customInspectFn;
54
+ }
55
+
56
+ if (typeof object.inspect === 'function') {
57
+ return object.inspect;
58
+ }
19
59
  }
@@ -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
  /**
@@ -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
  /**
@@ -11,7 +11,7 @@ exports.default = invariant;
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
  function invariant(condition, message) {
17
17
  /* istanbul ignore else */
@@ -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
  export default function invariant(condition, message) {
10
10
  /* istanbul ignore else */
@@ -11,7 +11,7 @@ exports.default = isInvalid;
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
  /**
@@ -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
  /**
@@ -11,7 +11,7 @@ exports.default = isNullish;
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
  /**
@@ -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
  /**
@@ -11,7 +11,7 @@ exports.default = isPromise;
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
  /**
@@ -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
  /**
package/jsutils/keyMap.js CHANGED
@@ -11,7 +11,7 @@ exports.default = keyMap;
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
  /**
@@ -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
  /**
@@ -11,7 +11,7 @@ exports.default = keyValMap;
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
  /**
@@ -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
  /**
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = mapValue;
7
+
8
+ var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ /**
13
+ * Copyright (c) 2019-present, Facebook, Inc.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ *
18
+ *
19
+ */
20
+
21
+ /**
22
+ * Creates an object map with the same keys as `map` and values generated by
23
+ * running each value of `map` thru `fn`.
24
+ */
25
+ function mapValue(map, fn) {
26
+ var result = Object.create(null);
27
+ var _iteratorNormalCompletion = true;
28
+ var _didIteratorError = false;
29
+ var _iteratorError = undefined;
30
+
31
+ try {
32
+ for (var _iterator = (0, _objectEntries.default)(map)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
33
+ var _ref2 = _step.value;
34
+ var _key = _ref2[0];
35
+ var _value = _ref2[1];
36
+ result[_key] = fn(_value, _key);
37
+ }
38
+ } catch (err) {
39
+ _didIteratorError = true;
40
+ _iteratorError = err;
41
+ } finally {
42
+ try {
43
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
44
+ _iterator.return();
45
+ }
46
+ } finally {
47
+ if (_didIteratorError) {
48
+ throw _iteratorError;
49
+ }
50
+ }
51
+ }
52
+
53
+ return result;
54
+ }
@@ -0,0 +1,27 @@
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 './ObjMap';
11
+ import objectEntries from '../polyfills/objectEntries';
12
+
13
+ /**
14
+ * Creates an object map with the same keys as `map` and values generated by
15
+ * running each value of `map` thru `fn`.
16
+ */
17
+ export default function mapValue<T, V>(
18
+ map: ObjMap<T>,
19
+ fn: (value: T, key: string) => V,
20
+ ): ObjMap<V> {
21
+ const result = Object.create(null);
22
+
23
+ for (const [key, value] of objectEntries(map)) {
24
+ result[key] = fn(value, key);
25
+ }
26
+ return result;
27
+ }
@@ -0,0 +1,44 @@
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
+ *
8
+ */
9
+ import objectEntries from '../polyfills/objectEntries';
10
+ /**
11
+ * Creates an object map with the same keys as `map` and values generated by
12
+ * running each value of `map` thru `fn`.
13
+ */
14
+
15
+ export default function mapValue(map, fn) {
16
+ var result = Object.create(null);
17
+ var _iteratorNormalCompletion = true;
18
+ var _didIteratorError = false;
19
+ var _iteratorError = undefined;
20
+
21
+ try {
22
+ for (var _iterator = objectEntries(map)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
23
+ var _ref2 = _step.value;
24
+ var _key = _ref2[0];
25
+ var _value = _ref2[1];
26
+ result[_key] = fn(_value, _key);
27
+ }
28
+ } catch (err) {
29
+ _didIteratorError = true;
30
+ _iteratorError = err;
31
+ } finally {
32
+ try {
33
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
34
+ _iterator.return();
35
+ }
36
+ } finally {
37
+ if (_didIteratorError) {
38
+ throw _iteratorError;
39
+ }
40
+ }
41
+ }
42
+
43
+ return result;
44
+ }
@@ -11,7 +11,7 @@ exports.default = memoize3;
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
  /**
@@ -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
  /**
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ /**
9
+ * Copyright (c) 2018-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
+ var nodejsCustomInspectSymbol = typeof Symbol === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;
17
+ var _default = nodejsCustomInspectSymbol;
18
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) 2018-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
+ const nodejsCustomInspectSymbol =
11
+ typeof Symbol === 'function'
12
+ ? Symbol.for('nodejs.util.inspect.custom')
13
+ : undefined;
14
+
15
+ export default nodejsCustomInspectSymbol;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) 2018-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
+ var nodejsCustomInspectSymbol = typeof Symbol === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;
10
+ export default nodejsCustomInspectSymbol;
package/jsutils/orList.js CHANGED
@@ -5,13 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = orList;
7
7
 
8
+ var _invariant = _interopRequireDefault(require("./invariant"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
8
12
  /**
9
13
  * Copyright (c) 2015-present, Facebook, Inc.
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
  var MAX_LENGTH = 5;
17
21
  /**
@@ -19,8 +23,17 @@ var MAX_LENGTH = 5;
19
23
  */
20
24
 
21
25
  function orList(items) {
26
+ !(items.length !== 0) ? (0, _invariant.default)(0) : void 0;
27
+
28
+ if (items.length === 1) {
29
+ return items[0];
30
+ }
31
+
32
+ if (items.length === 2) {
33
+ return items[0] + ' or ' + items[1];
34
+ }
35
+
22
36
  var selected = items.slice(0, MAX_LENGTH);
23
- return selected.reduce(function (list, quoted, index) {
24
- return list + (selected.length > 2 ? ', ' : ' ') + (index === selected.length - 1 ? 'or ' : '') + quoted;
25
- });
37
+ var lastItem = selected.pop();
38
+ return selected.join(', ') + ', or ' + lastItem;
26
39
  }
@@ -7,18 +7,24 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import invariant from './invariant';
11
+
10
12
  const MAX_LENGTH = 5;
11
13
 
12
14
  /**
13
15
  * Given [ A, B, C ] return 'A, B, or C'.
14
16
  */
15
17
  export default function orList(items: $ReadOnlyArray<string>): string {
18
+ invariant(items.length !== 0);
19
+
20
+ if (items.length === 1) {
21
+ return items[0];
22
+ }
23
+ if (items.length === 2) {
24
+ return items[0] + ' or ' + items[1];
25
+ }
26
+
16
27
  const selected = items.slice(0, MAX_LENGTH);
17
- return selected.reduce(
18
- (list, quoted, index) =>
19
- list +
20
- (selected.length > 2 ? ', ' : ' ') +
21
- (index === selected.length - 1 ? 'or ' : '') +
22
- quoted,
23
- );
28
+ const lastItem = selected.pop();
29
+ return selected.join(', ') + ', or ' + lastItem;
24
30
  }