graphql 14.1.1 → 14.3.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 (377) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/error/GraphQLError.js +12 -10
  4. package/error/GraphQLError.js.flow +11 -6
  5. package/error/GraphQLError.mjs +20 -3
  6. package/error/formatError.js +2 -2
  7. package/error/formatError.js.flow +3 -3
  8. package/error/formatError.mjs +2 -2
  9. package/error/index.js +1 -1
  10. package/error/index.js.flow +5 -2
  11. package/error/index.mjs +2 -2
  12. package/error/locatedError.js +2 -2
  13. package/error/locatedError.js.flow +2 -2
  14. package/error/locatedError.mjs +2 -2
  15. package/error/printError.js +2 -2
  16. package/error/printError.js.flow +4 -5
  17. package/error/printError.mjs +2 -2
  18. package/error/syntaxError.js +2 -2
  19. package/error/syntaxError.js.flow +2 -2
  20. package/error/syntaxError.mjs +2 -2
  21. package/execution/execute.js +52 -37
  22. package/execution/execute.js.flow +66 -51
  23. package/execution/execute.mjs +50 -38
  24. package/execution/index.js +7 -1
  25. package/execution/index.js.flow +9 -4
  26. package/execution/index.mjs +3 -3
  27. package/execution/values.js +11 -11
  28. package/execution/values.js.flow +23 -19
  29. package/execution/values.mjs +11 -11
  30. package/graphql.js +13 -9
  31. package/graphql.js.flow +28 -10
  32. package/graphql.mjs +10 -9
  33. package/index.js +83 -53
  34. package/index.js.flow +60 -47
  35. package/index.mjs +26 -23
  36. package/jsutils/ObjMap.js +1 -1
  37. package/jsutils/ObjMap.js.flow +1 -1
  38. package/jsutils/ObjMap.mjs +1 -0
  39. package/jsutils/PromiseOrValue.js +1 -0
  40. package/jsutils/{MaybePromise.js.flow → PromiseOrValue.js.flow} +2 -2
  41. package/jsutils/PromiseOrValue.mjs +1 -0
  42. package/jsutils/dedent.js +2 -2
  43. package/jsutils/dedent.js.flow +1 -1
  44. package/jsutils/dedent.mjs +2 -2
  45. package/jsutils/defineToJSON.js +2 -2
  46. package/jsutils/defineToJSON.js.flow +1 -1
  47. package/jsutils/defineToJSON.mjs +2 -2
  48. package/jsutils/defineToStringTag.js +2 -2
  49. package/jsutils/defineToStringTag.js.flow +1 -1
  50. package/jsutils/defineToStringTag.mjs +2 -2
  51. package/jsutils/inspect.js +94 -19
  52. package/jsutils/inspect.js.flow +98 -20
  53. package/jsutils/inspect.mjs +94 -20
  54. package/jsutils/instanceOf.js +2 -2
  55. package/jsutils/instanceOf.js.flow +1 -1
  56. package/jsutils/instanceOf.mjs +2 -2
  57. package/jsutils/invariant.js +5 -3
  58. package/jsutils/invariant.js.flow +3 -2
  59. package/jsutils/invariant.mjs +5 -3
  60. package/jsutils/isInvalid.js +2 -2
  61. package/jsutils/isInvalid.js.flow +1 -1
  62. package/jsutils/isInvalid.mjs +2 -2
  63. package/jsutils/isNullish.js +2 -2
  64. package/jsutils/isNullish.js.flow +1 -1
  65. package/jsutils/isNullish.mjs +2 -2
  66. package/jsutils/isPromise.js +2 -2
  67. package/jsutils/isPromise.js.flow +1 -1
  68. package/jsutils/isPromise.mjs +2 -2
  69. package/jsutils/keyMap.js +4 -3
  70. package/jsutils/keyMap.js.flow +6 -6
  71. package/jsutils/keyMap.mjs +4 -3
  72. package/jsutils/keyValMap.js +4 -3
  73. package/jsutils/keyValMap.js.flow +6 -6
  74. package/jsutils/keyValMap.mjs +4 -3
  75. package/jsutils/mapValue.js +2 -2
  76. package/jsutils/mapValue.js.flow +2 -2
  77. package/jsutils/mapValue.mjs +2 -2
  78. package/jsutils/memoize3.js +3 -3
  79. package/jsutils/memoize3.js.flow +2 -2
  80. package/jsutils/memoize3.mjs +3 -3
  81. package/jsutils/nodejsCustomInspectSymbol.js +2 -2
  82. package/jsutils/nodejsCustomInspectSymbol.js.flow +1 -1
  83. package/jsutils/nodejsCustomInspectSymbol.mjs +2 -2
  84. package/jsutils/orList.js +2 -2
  85. package/jsutils/orList.js.flow +1 -1
  86. package/jsutils/orList.mjs +2 -2
  87. package/jsutils/promiseForObject.js +2 -2
  88. package/jsutils/promiseForObject.js.flow +2 -2
  89. package/jsutils/promiseForObject.mjs +2 -2
  90. package/jsutils/promiseReduce.js +2 -2
  91. package/jsutils/promiseReduce.js.flow +5 -5
  92. package/jsutils/promiseReduce.mjs +2 -2
  93. package/jsutils/quotedOrList.js +2 -2
  94. package/jsutils/quotedOrList.js.flow +1 -1
  95. package/jsutils/quotedOrList.mjs +2 -2
  96. package/jsutils/suggestionList.js +2 -2
  97. package/jsutils/suggestionList.js.flow +1 -1
  98. package/jsutils/suggestionList.mjs +2 -2
  99. package/language/ast.js +1 -1
  100. package/language/ast.js.flow +3 -3
  101. package/language/ast.mjs +1 -0
  102. package/language/blockString.js +114 -0
  103. package/language/blockString.js.flow +102 -0
  104. package/language/blockString.mjs +104 -0
  105. package/language/directiveLocation.js +2 -2
  106. package/language/directiveLocation.js.flow +1 -1
  107. package/language/directiveLocation.mjs +2 -2
  108. package/language/index.js +9 -9
  109. package/language/index.js.flow +10 -5
  110. package/language/index.mjs +3 -3
  111. package/language/kinds.js +2 -2
  112. package/language/kinds.js.flow +1 -1
  113. package/language/kinds.mjs +2 -2
  114. package/language/lexer.js +52 -44
  115. package/language/lexer.js.flow +65 -54
  116. package/language/lexer.mjs +49 -43
  117. package/language/location.js +2 -2
  118. package/language/location.js.flow +2 -2
  119. package/language/location.mjs +2 -2
  120. package/language/parser.js +75 -67
  121. package/language/parser.js.flow +138 -127
  122. package/language/parser.mjs +76 -68
  123. package/language/predicates.js +2 -2
  124. package/language/predicates.js.flow +2 -2
  125. package/language/predicates.mjs +2 -2
  126. package/language/printer.js +6 -14
  127. package/language/printer.js.flow +8 -17
  128. package/language/printer.mjs +5 -14
  129. package/language/source.js +2 -2
  130. package/language/source.js.flow +1 -1
  131. package/language/source.mjs +2 -2
  132. package/language/visitor.js +4 -6
  133. package/language/visitor.js.flow +3 -3
  134. package/language/visitor.mjs +4 -6
  135. package/package.json +1 -1
  136. package/polyfills/find.js +2 -2
  137. package/polyfills/find.js.flow +1 -1
  138. package/polyfills/find.mjs +2 -2
  139. package/polyfills/flatMap.js +38 -0
  140. package/polyfills/flatMap.js.flow +34 -0
  141. package/polyfills/flatMap.mjs +30 -0
  142. package/polyfills/isFinite.js +2 -2
  143. package/polyfills/isFinite.js.flow +1 -1
  144. package/polyfills/isFinite.mjs +2 -2
  145. package/polyfills/isInteger.js +2 -2
  146. package/polyfills/isInteger.js.flow +1 -1
  147. package/polyfills/isInteger.mjs +2 -2
  148. package/polyfills/objectEntries.js +2 -2
  149. package/polyfills/objectEntries.js.flow +2 -2
  150. package/polyfills/objectEntries.mjs +2 -2
  151. package/polyfills/objectValues.js +2 -2
  152. package/polyfills/objectValues.js.flow +2 -2
  153. package/polyfills/objectValues.mjs +2 -2
  154. package/subscription/asyncIteratorReject.js +1 -1
  155. package/subscription/asyncIteratorReject.js.flow +1 -1
  156. package/subscription/asyncIteratorReject.mjs +2 -2
  157. package/subscription/index.js +1 -1
  158. package/subscription/index.js.flow +1 -1
  159. package/subscription/index.mjs +2 -2
  160. package/subscription/mapAsyncIterator.js +1 -1
  161. package/subscription/mapAsyncIterator.js.flow +5 -5
  162. package/subscription/mapAsyncIterator.mjs +2 -2
  163. package/subscription/subscribe.js +2 -2
  164. package/subscription/subscribe.js.flow +6 -6
  165. package/subscription/subscribe.mjs +2 -2
  166. package/type/definition.js +138 -22
  167. package/type/definition.js.flow +184 -36
  168. package/type/definition.mjs +136 -23
  169. package/type/directives.js +14 -3
  170. package/type/directives.js.flow +24 -11
  171. package/type/directives.mjs +16 -5
  172. package/type/index.js +7 -7
  173. package/type/index.js.flow +8 -4
  174. package/type/index.mjs +10 -6
  175. package/type/introspection.js +14 -9
  176. package/type/introspection.js.flow +12 -18
  177. package/type/introspection.mjs +14 -9
  178. package/type/scalars.js +5 -4
  179. package/type/scalars.js.flow +4 -10
  180. package/type/scalars.mjs +7 -6
  181. package/type/schema.js +55 -3
  182. package/type/schema.js.flow +73 -17
  183. package/type/schema.mjs +56 -4
  184. package/type/validate.js +19 -47
  185. package/type/validate.js.flow +17 -29
  186. package/type/validate.mjs +18 -47
  187. package/utilities/TypeInfo.js +93 -73
  188. package/utilities/TypeInfo.js.flow +30 -23
  189. package/utilities/TypeInfo.mjs +93 -73
  190. package/utilities/assertValidName.js +2 -2
  191. package/utilities/assertValidName.js.flow +2 -2
  192. package/utilities/assertValidName.mjs +2 -2
  193. package/utilities/astFromValue.js +5 -4
  194. package/utilities/astFromValue.js.flow +8 -7
  195. package/utilities/astFromValue.mjs +7 -6
  196. package/utilities/buildASTSchema.js +63 -62
  197. package/utilities/buildASTSchema.js.flow +92 -108
  198. package/utilities/buildASTSchema.mjs +61 -62
  199. package/utilities/buildClientSchema.js +38 -45
  200. package/utilities/buildClientSchema.js.flow +66 -79
  201. package/utilities/buildClientSchema.mjs +37 -44
  202. package/utilities/coerceValue.js +6 -7
  203. package/utilities/coerceValue.js.flow +5 -4
  204. package/utilities/coerceValue.mjs +7 -8
  205. package/utilities/concatAST.js +9 -13
  206. package/utilities/concatAST.js.flow +4 -10
  207. package/utilities/concatAST.mjs +6 -13
  208. package/utilities/extendSchema.js +219 -511
  209. package/utilities/extendSchema.js.flow +195 -304
  210. package/utilities/extendSchema.mjs +218 -512
  211. package/utilities/findBreakingChanges.js +54 -95
  212. package/utilities/findBreakingChanges.js.flow +49 -47
  213. package/utilities/findBreakingChanges.mjs +80 -95
  214. package/utilities/findDeprecatedUsages.js +4 -4
  215. package/utilities/findDeprecatedUsages.js.flow +5 -5
  216. package/utilities/findDeprecatedUsages.mjs +4 -4
  217. package/utilities/getOperationAST.js +2 -2
  218. package/utilities/getOperationAST.js.flow +5 -2
  219. package/utilities/getOperationAST.mjs +2 -2
  220. package/utilities/getOperationRootType.js +24 -24
  221. package/utilities/getOperationRootType.js.flow +40 -35
  222. package/utilities/getOperationRootType.mjs +24 -24
  223. package/utilities/index.js +9 -1
  224. package/utilities/index.js.flow +13 -6
  225. package/utilities/index.mjs +13 -8
  226. package/utilities/introspectionFromSchema.js +6 -4
  227. package/utilities/introspectionFromSchema.js.flow +8 -7
  228. package/utilities/introspectionFromSchema.mjs +6 -5
  229. package/utilities/introspectionQuery.js +2 -2
  230. package/utilities/introspectionQuery.js.flow +2 -2
  231. package/utilities/introspectionQuery.mjs +2 -2
  232. package/utilities/isValidJSValue.js +4 -2
  233. package/utilities/isValidJSValue.js.flow +3 -2
  234. package/utilities/isValidJSValue.mjs +4 -2
  235. package/utilities/isValidLiteralValue.js +2 -2
  236. package/utilities/isValidLiteralValue.js.flow +4 -4
  237. package/utilities/isValidLiteralValue.mjs +2 -2
  238. package/utilities/lexicographicSortSchema.js +84 -123
  239. package/utilities/lexicographicSortSchema.js.flow +68 -96
  240. package/utilities/lexicographicSortSchema.mjs +84 -123
  241. package/utilities/schemaPrinter.js +47 -73
  242. package/utilities/schemaPrinter.js.flow +69 -120
  243. package/utilities/schemaPrinter.mjs +45 -72
  244. package/utilities/separateOperations.js +8 -12
  245. package/utilities/separateOperations.js.flow +6 -3
  246. package/utilities/separateOperations.mjs +8 -12
  247. package/utilities/stripIgnoredCharacters.js +140 -0
  248. package/utilities/stripIgnoredCharacters.js.flow +129 -0
  249. package/utilities/stripIgnoredCharacters.mjs +127 -0
  250. package/utilities/typeComparators.js +2 -2
  251. package/utilities/typeComparators.js.flow +4 -3
  252. package/utilities/typeComparators.mjs +2 -2
  253. package/utilities/typeFromAST.js +9 -4
  254. package/utilities/typeFromAST.js.flow +15 -9
  255. package/utilities/typeFromAST.mjs +6 -4
  256. package/utilities/valueFromAST.js +7 -4
  257. package/utilities/valueFromAST.js.flow +7 -5
  258. package/utilities/valueFromAST.mjs +6 -4
  259. package/utilities/valueFromASTUntyped.js +11 -6
  260. package/utilities/valueFromASTUntyped.js.flow +9 -5
  261. package/utilities/valueFromASTUntyped.mjs +10 -6
  262. package/validation/ValidationContext.js +1 -1
  263. package/validation/ValidationContext.js.flow +19 -20
  264. package/validation/ValidationContext.mjs +2 -2
  265. package/validation/index.js +1 -1
  266. package/validation/index.js.flow +2 -1
  267. package/validation/index.mjs +3 -2
  268. package/validation/rules/ExecutableDefinitions.js +3 -3
  269. package/validation/rules/ExecutableDefinitions.js.flow +4 -4
  270. package/validation/rules/ExecutableDefinitions.mjs +3 -3
  271. package/validation/rules/FieldsOnCorrectType.js +3 -3
  272. package/validation/rules/FieldsOnCorrectType.js.flow +7 -7
  273. package/validation/rules/FieldsOnCorrectType.mjs +3 -3
  274. package/validation/rules/FragmentsOnCompositeTypes.js +4 -4
  275. package/validation/rules/FragmentsOnCompositeTypes.js.flow +5 -5
  276. package/validation/rules/FragmentsOnCompositeTypes.mjs +4 -4
  277. package/validation/rules/KnownArgumentNames.js +1 -1
  278. package/validation/rules/KnownArgumentNames.js.flow +5 -5
  279. package/validation/rules/KnownArgumentNames.mjs +2 -2
  280. package/validation/rules/KnownDirectives.js +8 -6
  281. package/validation/rules/KnownDirectives.js.flow +11 -9
  282. package/validation/rules/KnownDirectives.mjs +8 -6
  283. package/validation/rules/KnownFragmentNames.js +3 -3
  284. package/validation/rules/KnownFragmentNames.js.flow +4 -4
  285. package/validation/rules/KnownFragmentNames.mjs +3 -3
  286. package/validation/rules/KnownTypeNames.js +2 -2
  287. package/validation/rules/KnownTypeNames.js.flow +6 -6
  288. package/validation/rules/KnownTypeNames.mjs +2 -2
  289. package/validation/rules/LoneAnonymousOperation.js +3 -3
  290. package/validation/rules/LoneAnonymousOperation.js.flow +4 -4
  291. package/validation/rules/LoneAnonymousOperation.mjs +3 -3
  292. package/validation/rules/LoneSchemaDefinition.js +2 -2
  293. package/validation/rules/LoneSchemaDefinition.js.flow +3 -3
  294. package/validation/rules/LoneSchemaDefinition.mjs +2 -2
  295. package/validation/rules/NoFragmentCycles.js +2 -2
  296. package/validation/rules/NoFragmentCycles.js.flow +4 -4
  297. package/validation/rules/NoFragmentCycles.mjs +2 -2
  298. package/validation/rules/NoUndefinedVariables.js +2 -2
  299. package/validation/rules/NoUndefinedVariables.js.flow +3 -3
  300. package/validation/rules/NoUndefinedVariables.mjs +2 -2
  301. package/validation/rules/NoUnusedFragments.js +7 -7
  302. package/validation/rules/NoUnusedFragments.js.flow +4 -4
  303. package/validation/rules/NoUnusedFragments.mjs +7 -7
  304. package/validation/rules/NoUnusedVariables.js +5 -5
  305. package/validation/rules/NoUnusedVariables.js.flow +6 -5
  306. package/validation/rules/NoUnusedVariables.mjs +5 -5
  307. package/validation/rules/OverlappingFieldsCanBeMerged.js +26 -23
  308. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +17 -17
  309. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +26 -23
  310. package/validation/rules/PossibleFragmentSpreads.js +4 -4
  311. package/validation/rules/PossibleFragmentSpreads.js.flow +5 -5
  312. package/validation/rules/PossibleFragmentSpreads.mjs +4 -4
  313. package/validation/rules/PossibleTypeExtensions.js +3 -3
  314. package/validation/rules/PossibleTypeExtensions.js.flow +5 -5
  315. package/validation/rules/PossibleTypeExtensions.mjs +4 -4
  316. package/validation/rules/ProvidedRequiredArguments.js +6 -8
  317. package/validation/rules/ProvidedRequiredArguments.js.flow +8 -8
  318. package/validation/rules/ProvidedRequiredArguments.mjs +7 -9
  319. package/validation/rules/ScalarLeafs.js +4 -4
  320. package/validation/rules/ScalarLeafs.js.flow +6 -6
  321. package/validation/rules/ScalarLeafs.mjs +4 -4
  322. package/validation/rules/SingleFieldSubscriptions.js +2 -2
  323. package/validation/rules/SingleFieldSubscriptions.js.flow +4 -4
  324. package/validation/rules/SingleFieldSubscriptions.mjs +2 -2
  325. package/validation/rules/UniqueArgumentNames.js +2 -2
  326. package/validation/rules/UniqueArgumentNames.js.flow +3 -3
  327. package/validation/rules/UniqueArgumentNames.mjs +2 -2
  328. package/validation/rules/UniqueDirectiveNames.js +2 -2
  329. package/validation/rules/UniqueDirectiveNames.js.flow +3 -3
  330. package/validation/rules/UniqueDirectiveNames.mjs +2 -2
  331. package/validation/rules/UniqueDirectivesPerLocation.js +3 -2
  332. package/validation/rules/UniqueDirectivesPerLocation.js.flow +4 -4
  333. package/validation/rules/UniqueDirectivesPerLocation.mjs +3 -2
  334. package/validation/rules/UniqueEnumValueNames.js +4 -8
  335. package/validation/rules/UniqueEnumValueNames.js.flow +6 -8
  336. package/validation/rules/UniqueEnumValueNames.mjs +4 -8
  337. package/validation/rules/UniqueFieldDefinitionNames.js +4 -8
  338. package/validation/rules/UniqueFieldDefinitionNames.js.flow +6 -8
  339. package/validation/rules/UniqueFieldDefinitionNames.mjs +4 -8
  340. package/validation/rules/UniqueFragmentNames.js +2 -2
  341. package/validation/rules/UniqueFragmentNames.js.flow +3 -3
  342. package/validation/rules/UniqueFragmentNames.mjs +2 -2
  343. package/validation/rules/UniqueInputFieldNames.js +2 -4
  344. package/validation/rules/UniqueInputFieldNames.js.flow +3 -4
  345. package/validation/rules/UniqueInputFieldNames.mjs +2 -4
  346. package/validation/rules/UniqueOperationNames.js +2 -2
  347. package/validation/rules/UniqueOperationNames.js.flow +3 -3
  348. package/validation/rules/UniqueOperationNames.mjs +2 -2
  349. package/validation/rules/UniqueOperationTypes.js +2 -2
  350. package/validation/rules/UniqueOperationTypes.js.flow +3 -3
  351. package/validation/rules/UniqueOperationTypes.mjs +2 -2
  352. package/validation/rules/UniqueTypeNames.js +2 -2
  353. package/validation/rules/UniqueTypeNames.js.flow +4 -4
  354. package/validation/rules/UniqueTypeNames.mjs +2 -2
  355. package/validation/rules/UniqueVariableNames.js +2 -2
  356. package/validation/rules/UniqueVariableNames.js.flow +4 -4
  357. package/validation/rules/UniqueVariableNames.mjs +2 -2
  358. package/validation/rules/ValuesOfCorrectType.js +2 -2
  359. package/validation/rules/ValuesOfCorrectType.js.flow +5 -5
  360. package/validation/rules/ValuesOfCorrectType.mjs +2 -2
  361. package/validation/rules/VariablesAreInputTypes.js +3 -3
  362. package/validation/rules/VariablesAreInputTypes.js.flow +5 -5
  363. package/validation/rules/VariablesAreInputTypes.mjs +3 -3
  364. package/validation/rules/VariablesInAllowedPosition.js +3 -3
  365. package/validation/rules/VariablesInAllowedPosition.js.flow +7 -8
  366. package/validation/rules/VariablesInAllowedPosition.mjs +3 -3
  367. package/validation/specifiedRules.js +2 -2
  368. package/validation/specifiedRules.js.flow +13 -6
  369. package/validation/specifiedRules.mjs +7 -7
  370. package/validation/validate.js +2 -2
  371. package/validation/validate.js.flow +10 -6
  372. package/validation/validate.mjs +2 -2
  373. package/jsutils/MaybePromise.js +0 -1
  374. package/jsutils/MaybePromise.mjs +0 -0
  375. package/language/blockStringValue.js +0 -73
  376. package/language/blockStringValue.js.flow +0 -64
  377. package/language/blockStringValue.mjs +0 -66
package/language/lexer.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createLexer = createLexer;
7
+ exports.isPunctuatorToken = isPunctuatorToken;
7
8
  exports.getTokenDesc = getTokenDesc;
8
9
  exports.TokenKind = void 0;
9
10
 
@@ -11,12 +12,12 @@ var _defineToJSON = _interopRequireDefault(require("../jsutils/defineToJSON"));
11
12
 
12
13
  var _error = require("../error");
13
14
 
14
- var _blockStringValue = _interopRequireDefault(require("./blockStringValue"));
15
+ var _blockString = require("./blockString");
15
16
 
16
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18
 
18
19
  /**
19
- * Copyright (c) 2015-present, Facebook, Inc.
20
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
21
  *
21
22
  * This source code is licensed under the MIT license found in the
22
23
  * LICENSE file in the root directory of this source tree.
@@ -104,20 +105,25 @@ var TokenKind = Object.freeze({
104
105
 
105
106
  exports.TokenKind = TokenKind;
106
107
 
108
+ // @internal
109
+ function isPunctuatorToken(token) {
110
+ var kind = token.kind;
111
+ return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;
112
+ }
107
113
  /**
108
114
  * A helper function to describe a token as a string for debugging
109
115
  */
116
+
117
+
110
118
  function getTokenDesc(token) {
111
119
  var value = token.value;
112
120
  return value ? "".concat(token.kind, " \"").concat(value, "\"") : token.kind;
113
121
  }
114
-
115
- var charCodeAt = String.prototype.charCodeAt;
116
- var slice = String.prototype.slice;
117
122
  /**
118
123
  * Helper function for constructing the Token object.
119
124
  */
120
125
 
126
+
121
127
  function Tok(kind, start, end, line, column, prev, value) {
122
128
  this.kind = kind;
123
129
  this.start = start;
@@ -167,7 +173,7 @@ function readToken(lexer, prev) {
167
173
  return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);
168
174
  }
169
175
 
170
- var code = charCodeAt.call(body, pos); // SourceCharacter
176
+ var code = body.charCodeAt(pos); // SourceCharacter
171
177
 
172
178
  switch (code) {
173
179
  // !
@@ -196,7 +202,7 @@ function readToken(lexer, prev) {
196
202
  // .
197
203
 
198
204
  case 46:
199
- if (charCodeAt.call(body, pos + 1) === 46 && charCodeAt.call(body, pos + 2) === 46) {
205
+ if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {
200
206
  return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);
201
207
  }
202
208
 
@@ -306,7 +312,7 @@ function readToken(lexer, prev) {
306
312
  // "
307
313
 
308
314
  case 34:
309
- if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {
315
+ if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {
310
316
  return readBlockString(source, pos, line, col, prev, lexer);
311
317
  }
312
318
 
@@ -343,7 +349,7 @@ function positionAfterWhitespace(body, startPosition, lexer) {
343
349
  var position = startPosition;
344
350
 
345
351
  while (position < bodyLength) {
346
- var code = charCodeAt.call(body, position); // tab | space | comma | BOM
352
+ var code = body.charCodeAt(position); // tab | space | comma | BOM
347
353
 
348
354
  if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {
349
355
  ++position;
@@ -354,7 +360,7 @@ function positionAfterWhitespace(body, startPosition, lexer) {
354
360
  lexer.lineStart = position;
355
361
  } else if (code === 13) {
356
362
  // carriage return
357
- if (charCodeAt.call(body, position + 1) === 10) {
363
+ if (body.charCodeAt(position + 1) === 10) {
358
364
  position += 2;
359
365
  } else {
360
366
  ++position;
@@ -382,11 +388,11 @@ function readComment(source, start, line, col, prev) {
382
388
  var position = start;
383
389
 
384
390
  do {
385
- code = charCodeAt.call(body, ++position);
386
- } while (code !== null && ( // SourceCharacter but not LineTerminator
391
+ code = body.charCodeAt(++position);
392
+ } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator
387
393
  code > 0x001f || code === 0x0009));
388
394
 
389
- return new Tok(TokenKind.COMMENT, start, position, line, col, prev, slice.call(body, start + 1, position));
395
+ return new Tok(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));
390
396
  }
391
397
  /**
392
398
  * Reads a number token from the source file, either a float
@@ -405,43 +411,43 @@ function readNumber(source, start, firstCode, line, col, prev) {
405
411
 
406
412
  if (code === 45) {
407
413
  // -
408
- code = charCodeAt.call(body, ++position);
414
+ code = body.charCodeAt(++position);
409
415
  }
410
416
 
411
417
  if (code === 48) {
412
418
  // 0
413
- code = charCodeAt.call(body, ++position);
419
+ code = body.charCodeAt(++position);
414
420
 
415
421
  if (code >= 48 && code <= 57) {
416
422
  throw (0, _error.syntaxError)(source, position, "Invalid number, unexpected digit after 0: ".concat(printCharCode(code), "."));
417
423
  }
418
424
  } else {
419
425
  position = readDigits(source, position, code);
420
- code = charCodeAt.call(body, position);
426
+ code = body.charCodeAt(position);
421
427
  }
422
428
 
423
429
  if (code === 46) {
424
430
  // .
425
431
  isFloat = true;
426
- code = charCodeAt.call(body, ++position);
432
+ code = body.charCodeAt(++position);
427
433
  position = readDigits(source, position, code);
428
- code = charCodeAt.call(body, position);
434
+ code = body.charCodeAt(position);
429
435
  }
430
436
 
431
437
  if (code === 69 || code === 101) {
432
438
  // E e
433
439
  isFloat = true;
434
- code = charCodeAt.call(body, ++position);
440
+ code = body.charCodeAt(++position);
435
441
 
436
442
  if (code === 43 || code === 45) {
437
443
  // + -
438
- code = charCodeAt.call(body, ++position);
444
+ code = body.charCodeAt(++position);
439
445
  }
440
446
 
441
447
  position = readDigits(source, position, code);
442
448
  }
443
449
 
444
- return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, slice.call(body, start, position));
450
+ return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));
445
451
  }
446
452
  /**
447
453
  * Returns the new position in the source after reading digits.
@@ -456,7 +462,7 @@ function readDigits(source, start, firstCode) {
456
462
  if (code >= 48 && code <= 57) {
457
463
  // 0 - 9
458
464
  do {
459
- code = charCodeAt.call(body, ++position);
465
+ code = body.charCodeAt(++position);
460
466
  } while (code >= 48 && code <= 57); // 0 - 9
461
467
 
462
468
 
@@ -479,11 +485,11 @@ function readString(source, start, line, col, prev) {
479
485
  var code = 0;
480
486
  var value = '';
481
487
 
482
- while (position < body.length && (code = charCodeAt.call(body, position)) !== null && // not LineTerminator
488
+ while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator
483
489
  code !== 0x000a && code !== 0x000d) {
484
490
  // Closing Quote (")
485
491
  if (code === 34) {
486
- value += slice.call(body, chunkStart, position);
492
+ value += body.slice(chunkStart, position);
487
493
  return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);
488
494
  } // SourceCharacter
489
495
 
@@ -496,8 +502,8 @@ function readString(source, start, line, col, prev) {
496
502
 
497
503
  if (code === 92) {
498
504
  // \
499
- value += slice.call(body, chunkStart, position - 1);
500
- code = charCodeAt.call(body, position);
505
+ value += body.slice(chunkStart, position - 1);
506
+ code = body.charCodeAt(position);
501
507
 
502
508
  switch (code) {
503
509
  case 34:
@@ -533,16 +539,18 @@ function readString(source, start, line, col, prev) {
533
539
  break;
534
540
 
535
541
  case 117:
536
- // u
537
- var charCode = uniCharCode(charCodeAt.call(body, position + 1), charCodeAt.call(body, position + 2), charCodeAt.call(body, position + 3), charCodeAt.call(body, position + 4));
542
+ {
543
+ // uXXXX
544
+ var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));
538
545
 
539
- if (charCode < 0) {
540
- throw (0, _error.syntaxError)(source, position, 'Invalid character escape sequence: ' + "\\u".concat(body.slice(position + 1, position + 5), "."));
541
- }
546
+ if (charCode < 0) {
547
+ throw (0, _error.syntaxError)(source, position, 'Invalid character escape sequence: ' + "\\u".concat(body.slice(position + 1, position + 5), "."));
548
+ }
542
549
 
543
- value += String.fromCharCode(charCode);
544
- position += 4;
545
- break;
550
+ value += String.fromCharCode(charCode);
551
+ position += 4;
552
+ break;
553
+ }
546
554
 
547
555
  default:
548
556
  throw (0, _error.syntaxError)(source, position, "Invalid character escape sequence: \\".concat(String.fromCharCode(code), "."));
@@ -569,11 +577,11 @@ function readBlockString(source, start, line, col, prev, lexer) {
569
577
  var code = 0;
570
578
  var rawValue = '';
571
579
 
572
- while (position < body.length && (code = charCodeAt.call(body, position)) !== null) {
580
+ while (position < body.length && !isNaN(code = body.charCodeAt(position))) {
573
581
  // Closing Triple-Quote (""")
574
- if (code === 34 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34) {
575
- rawValue += slice.call(body, chunkStart, position);
576
- return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, (0, _blockStringValue.default)(rawValue));
582
+ if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {
583
+ rawValue += body.slice(chunkStart, position);
584
+ return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, (0, _blockString.dedentBlockStringValue)(rawValue));
577
585
  } // SourceCharacter
578
586
 
579
587
 
@@ -588,7 +596,7 @@ function readBlockString(source, start, line, col, prev, lexer) {
588
596
  lexer.lineStart = position;
589
597
  } else if (code === 13) {
590
598
  // carriage return
591
- if (charCodeAt.call(body, position + 1) === 10) {
599
+ if (body.charCodeAt(position + 1) === 10) {
592
600
  position += 2;
593
601
  } else {
594
602
  ++position;
@@ -597,8 +605,8 @@ function readBlockString(source, start, line, col, prev, lexer) {
597
605
  ++lexer.line;
598
606
  lexer.lineStart = position;
599
607
  } else if ( // Escape Triple-Quote (\""")
600
- code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {
601
- rawValue += slice.call(body, chunkStart, position) + '"""';
608
+ code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {
609
+ rawValue += body.slice(chunkStart, position) + '"""';
602
610
  position += 4;
603
611
  chunkStart = position;
604
612
  } else {
@@ -652,7 +660,7 @@ function readName(source, start, line, col, prev) {
652
660
  var position = start + 1;
653
661
  var code = 0;
654
662
 
655
- while (position !== bodyLength && (code = charCodeAt.call(body, position)) !== null && (code === 95 || // _
663
+ while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _
656
664
  code >= 48 && code <= 57 || // 0-9
657
665
  code >= 65 && code <= 90 || // A-Z
658
666
  code >= 97 && code <= 122) // a-z
@@ -660,5 +668,5 @@ function readName(source, start, line, col, prev) {
660
668
  ++position;
661
669
  }
662
670
 
663
- return new Tok(TokenKind.NAME, start, position, line, col, prev, slice.call(body, start, position));
664
- }
671
+ return new Tok(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));
672
+ }
@@ -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,10 +8,10 @@
8
8
  */
9
9
 
10
10
  import defineToJSON from '../jsutils/defineToJSON';
11
- import type { Token } from './ast';
12
- import type { Source } from './source';
11
+ import { type Token } from './ast';
12
+ import { type Source } from './source';
13
13
  import { syntaxError } from '../error';
14
- import blockStringValue from './blockStringValue';
14
+ import { dedentBlockStringValue } from './blockString';
15
15
 
16
16
  /**
17
17
  * Given a Source object, this returns a Lexer for that source.
@@ -129,6 +129,27 @@ export const TokenKind = Object.freeze({
129
129
  */
130
130
  export type TokenKindEnum = $Values<typeof TokenKind>;
131
131
 
132
+ // @internal
133
+ export function isPunctuatorToken(token: Token) {
134
+ const kind = token.kind;
135
+ return (
136
+ kind === TokenKind.BANG ||
137
+ kind === TokenKind.DOLLAR ||
138
+ kind === TokenKind.AMP ||
139
+ kind === TokenKind.PAREN_L ||
140
+ kind === TokenKind.PAREN_R ||
141
+ kind === TokenKind.SPREAD ||
142
+ kind === TokenKind.COLON ||
143
+ kind === TokenKind.EQUALS ||
144
+ kind === TokenKind.AT ||
145
+ kind === TokenKind.BRACKET_L ||
146
+ kind === TokenKind.BRACKET_R ||
147
+ kind === TokenKind.BRACE_L ||
148
+ kind === TokenKind.PIPE ||
149
+ kind === TokenKind.BRACE_R
150
+ );
151
+ }
152
+
132
153
  /**
133
154
  * A helper function to describe a token as a string for debugging
134
155
  */
@@ -137,9 +158,6 @@ export function getTokenDesc(token: Token): string {
137
158
  return value ? `${token.kind} "${value}"` : token.kind;
138
159
  }
139
160
 
140
- const charCodeAt = String.prototype.charCodeAt;
141
- const slice = String.prototype.slice;
142
-
143
161
  /**
144
162
  * Helper function for constructing the Token object.
145
163
  */
@@ -205,7 +223,7 @@ function readToken(lexer: Lexer<*>, prev: Token): Token {
205
223
  return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);
206
224
  }
207
225
 
208
- const code = charCodeAt.call(body, pos);
226
+ const code = body.charCodeAt(pos);
209
227
 
210
228
  // SourceCharacter
211
229
  switch (code) {
@@ -229,10 +247,7 @@ function readToken(lexer: Lexer<*>, prev: Token): Token {
229
247
  return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);
230
248
  // .
231
249
  case 46:
232
- if (
233
- charCodeAt.call(body, pos + 1) === 46 &&
234
- charCodeAt.call(body, pos + 2) === 46
235
- ) {
250
+ if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {
236
251
  return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);
237
252
  }
238
253
  break;
@@ -330,10 +345,7 @@ function readToken(lexer: Lexer<*>, prev: Token): Token {
330
345
  return readNumber(source, pos, code, line, col, prev);
331
346
  // "
332
347
  case 34:
333
- if (
334
- charCodeAt.call(body, pos + 1) === 34 &&
335
- charCodeAt.call(body, pos + 2) === 34
336
- ) {
348
+ if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {
337
349
  return readBlockString(source, pos, line, col, prev, lexer);
338
350
  }
339
351
  return readString(source, pos, line, col, prev);
@@ -373,7 +385,7 @@ function positionAfterWhitespace(
373
385
  const bodyLength = body.length;
374
386
  let position = startPosition;
375
387
  while (position < bodyLength) {
376
- const code = charCodeAt.call(body, position);
388
+ const code = body.charCodeAt(position);
377
389
  // tab | space | comma | BOM
378
390
  if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {
379
391
  ++position;
@@ -384,7 +396,7 @@ function positionAfterWhitespace(
384
396
  lexer.lineStart = position;
385
397
  } else if (code === 13) {
386
398
  // carriage return
387
- if (charCodeAt.call(body, position + 1) === 10) {
399
+ if (body.charCodeAt(position + 1) === 10) {
388
400
  position += 2;
389
401
  } else {
390
402
  ++position;
@@ -409,9 +421,9 @@ function readComment(source, start, line, col, prev): Token {
409
421
  let position = start;
410
422
 
411
423
  do {
412
- code = charCodeAt.call(body, ++position);
424
+ code = body.charCodeAt(++position);
413
425
  } while (
414
- code !== null &&
426
+ !isNaN(code) &&
415
427
  // SourceCharacter but not LineTerminator
416
428
  (code > 0x001f || code === 0x0009)
417
429
  );
@@ -423,7 +435,7 @@ function readComment(source, start, line, col, prev): Token {
423
435
  line,
424
436
  col,
425
437
  prev,
426
- slice.call(body, start + 1, position),
438
+ body.slice(start + 1, position),
427
439
  );
428
440
  }
429
441
 
@@ -442,12 +454,12 @@ function readNumber(source, start, firstCode, line, col, prev): Token {
442
454
 
443
455
  if (code === 45) {
444
456
  // -
445
- code = charCodeAt.call(body, ++position);
457
+ code = body.charCodeAt(++position);
446
458
  }
447
459
 
448
460
  if (code === 48) {
449
461
  // 0
450
- code = charCodeAt.call(body, ++position);
462
+ code = body.charCodeAt(++position);
451
463
  if (code >= 48 && code <= 57) {
452
464
  throw syntaxError(
453
465
  source,
@@ -457,26 +469,26 @@ function readNumber(source, start, firstCode, line, col, prev): Token {
457
469
  }
458
470
  } else {
459
471
  position = readDigits(source, position, code);
460
- code = charCodeAt.call(body, position);
472
+ code = body.charCodeAt(position);
461
473
  }
462
474
 
463
475
  if (code === 46) {
464
476
  // .
465
477
  isFloat = true;
466
478
 
467
- code = charCodeAt.call(body, ++position);
479
+ code = body.charCodeAt(++position);
468
480
  position = readDigits(source, position, code);
469
- code = charCodeAt.call(body, position);
481
+ code = body.charCodeAt(position);
470
482
  }
471
483
 
472
484
  if (code === 69 || code === 101) {
473
485
  // E e
474
486
  isFloat = true;
475
487
 
476
- code = charCodeAt.call(body, ++position);
488
+ code = body.charCodeAt(++position);
477
489
  if (code === 43 || code === 45) {
478
490
  // + -
479
- code = charCodeAt.call(body, ++position);
491
+ code = body.charCodeAt(++position);
480
492
  }
481
493
  position = readDigits(source, position, code);
482
494
  }
@@ -488,7 +500,7 @@ function readNumber(source, start, firstCode, line, col, prev): Token {
488
500
  line,
489
501
  col,
490
502
  prev,
491
- slice.call(body, start, position),
503
+ body.slice(start, position),
492
504
  );
493
505
  }
494
506
 
@@ -502,7 +514,7 @@ function readDigits(source, start, firstCode) {
502
514
  if (code >= 48 && code <= 57) {
503
515
  // 0 - 9
504
516
  do {
505
- code = charCodeAt.call(body, ++position);
517
+ code = body.charCodeAt(++position);
506
518
  } while (code >= 48 && code <= 57); // 0 - 9
507
519
  return position;
508
520
  }
@@ -527,14 +539,14 @@ function readString(source, start, line, col, prev): Token {
527
539
 
528
540
  while (
529
541
  position < body.length &&
530
- (code = charCodeAt.call(body, position)) !== null &&
542
+ !isNaN((code = body.charCodeAt(position))) &&
531
543
  // not LineTerminator
532
544
  code !== 0x000a &&
533
545
  code !== 0x000d
534
546
  ) {
535
547
  // Closing Quote (")
536
548
  if (code === 34) {
537
- value += slice.call(body, chunkStart, position);
549
+ value += body.slice(chunkStart, position);
538
550
  return new Tok(
539
551
  TokenKind.STRING,
540
552
  start,
@@ -558,8 +570,8 @@ function readString(source, start, line, col, prev): Token {
558
570
  ++position;
559
571
  if (code === 92) {
560
572
  // \
561
- value += slice.call(body, chunkStart, position - 1);
562
- code = charCodeAt.call(body, position);
573
+ value += body.slice(chunkStart, position - 1);
574
+ code = body.charCodeAt(position);
563
575
  switch (code) {
564
576
  case 34:
565
577
  value += '"';
@@ -585,12 +597,13 @@ function readString(source, start, line, col, prev): Token {
585
597
  case 116:
586
598
  value += '\t';
587
599
  break;
588
- case 117: // u
600
+ case 117: {
601
+ // uXXXX
589
602
  const charCode = uniCharCode(
590
- charCodeAt.call(body, position + 1),
591
- charCodeAt.call(body, position + 2),
592
- charCodeAt.call(body, position + 3),
593
- charCodeAt.call(body, position + 4),
603
+ body.charCodeAt(position + 1),
604
+ body.charCodeAt(position + 2),
605
+ body.charCodeAt(position + 3),
606
+ body.charCodeAt(position + 4),
594
607
  );
595
608
  if (charCode < 0) {
596
609
  throw syntaxError(
@@ -603,6 +616,7 @@ function readString(source, start, line, col, prev): Token {
603
616
  value += String.fromCharCode(charCode);
604
617
  position += 4;
605
618
  break;
619
+ }
606
620
  default:
607
621
  throw syntaxError(
608
622
  source,
@@ -632,17 +646,14 @@ function readBlockString(source, start, line, col, prev, lexer): Token {
632
646
  let code = 0;
633
647
  let rawValue = '';
634
648
 
635
- while (
636
- position < body.length &&
637
- (code = charCodeAt.call(body, position)) !== null
638
- ) {
649
+ while (position < body.length && !isNaN((code = body.charCodeAt(position)))) {
639
650
  // Closing Triple-Quote (""")
640
651
  if (
641
652
  code === 34 &&
642
- charCodeAt.call(body, position + 1) === 34 &&
643
- charCodeAt.call(body, position + 2) === 34
653
+ body.charCodeAt(position + 1) === 34 &&
654
+ body.charCodeAt(position + 2) === 34
644
655
  ) {
645
- rawValue += slice.call(body, chunkStart, position);
656
+ rawValue += body.slice(chunkStart, position);
646
657
  return new Tok(
647
658
  TokenKind.BLOCK_STRING,
648
659
  start,
@@ -650,7 +661,7 @@ function readBlockString(source, start, line, col, prev, lexer): Token {
650
661
  line,
651
662
  col,
652
663
  prev,
653
- blockStringValue(rawValue),
664
+ dedentBlockStringValue(rawValue),
654
665
  );
655
666
  }
656
667
 
@@ -675,7 +686,7 @@ function readBlockString(source, start, line, col, prev, lexer): Token {
675
686
  lexer.lineStart = position;
676
687
  } else if (code === 13) {
677
688
  // carriage return
678
- if (charCodeAt.call(body, position + 1) === 10) {
689
+ if (body.charCodeAt(position + 1) === 10) {
679
690
  position += 2;
680
691
  } else {
681
692
  ++position;
@@ -685,11 +696,11 @@ function readBlockString(source, start, line, col, prev, lexer): Token {
685
696
  } else if (
686
697
  // Escape Triple-Quote (\""")
687
698
  code === 92 &&
688
- charCodeAt.call(body, position + 1) === 34 &&
689
- charCodeAt.call(body, position + 2) === 34 &&
690
- charCodeAt.call(body, position + 3) === 34
699
+ body.charCodeAt(position + 1) === 34 &&
700
+ body.charCodeAt(position + 2) === 34 &&
701
+ body.charCodeAt(position + 3) === 34
691
702
  ) {
692
- rawValue += slice.call(body, chunkStart, position) + '"""';
703
+ rawValue += body.slice(chunkStart, position) + '"""';
693
704
  position += 4;
694
705
  chunkStart = position;
695
706
  } else {
@@ -746,7 +757,7 @@ function readName(source, start, line, col, prev): Token {
746
757
  let code = 0;
747
758
  while (
748
759
  position !== bodyLength &&
749
- (code = charCodeAt.call(body, position)) !== null &&
760
+ !isNaN((code = body.charCodeAt(position))) &&
750
761
  (code === 95 || // _
751
762
  (code >= 48 && code <= 57) || // 0-9
752
763
  (code >= 65 && code <= 90) || // A-Z
@@ -761,6 +772,6 @@ function readName(source, start, line, col, prev): Token {
761
772
  line,
762
773
  col,
763
774
  prev,
764
- slice.call(body, start, position),
775
+ body.slice(start, position),
765
776
  );
766
777
  }